Earlier, the in-firmware (mst.. msp.. commands) OutputTrigger was used to drive trigger signals.
To test MembersPage/FiatStilo trigger code, we wrote new code
NOTE: signalgen on win32 platform does not produce a usable wav file, do not bother trying to use it
What we need is a set of standard test wav files, one for each trigger type, revving from 300rpm to 7000rpm. These should compress well with zip as the patterns are repetative. I can host them easily...
- download signalgen from UsabiLity/GenBoard/WinTools
- old: since the original compile [signalgen.zip] had some problem on win32 (sources in SVN firmware testing; it's used on linux in the main testing lab) to use PC soundcard as trigger signal generator.
- yet another crank wheel trigger generator: http://www.starshadow.com/~koabi/carstuff/cranktriggers.php
For the real VR signal, polarity is important. Because of the edge positions, the polarity of the generated signal does not effect the relative time of the edges. This makes testing much easier. The polarity of the generated signal can be inverted (by using capital type-char like M,C,F instead of m,c,f - see below) but it shouldn't be needed.
To generate a wav of 60-2 (58+2) multitooth wheel, at 1740 RPM, 200 rotations (and amplitude=65535 which is don't care for now), execute: \n
signalgen.exe m582 1740 200 65535 > m582_1740.wav
The code supports
Primary trigger
- multitooth
- m582: multitooth 60-2
- m351: multitooth 36-1
- m631: multitooth 64-1 - such real wheel is not common, but we use a 64-1 (and a 16cyl wasted spark-like ignition) config setup during hardware testing to test all 8 output (8 inj + 8 ign) channels.
- coiltype. eg.
- c004: coiltype with 4 cyl
- c008: coiltype with 8 cyl
- c270: 270 tooth, AudiTrigger pulsetrain
- fiat stilo
- f000: fiatstilo
Secondary_trigger
- default simple type (1 pulse /camrot)
- fiat stilo cam (planned)
TODO: make secondary trigger (edge positions) parametrizable from commandline
Particuarly useful for GenBoard/Manual/InputTriggerCamSync. See [shop round testlight] item that is also very useful.
Testing on the table can save hours or days of - sometimes frustrating - work. Small config or other errors can be very frustrating and difficult to find. If one knows that his config and ECM inputs and firmware are fine, she eliminated 70% of the problem-sources, and cut the number of possible problem-combinations to 1/10th.
The cost is unfairly small, a few simple and cheap HW, and some work in the warm room.
TODO:
- DONE: document (easy usage)
- DONE: release win binary
- porting was simple, currently only uses very basic C libraries and outputs stereo 44100 sample/sec (like CD) wav file (on stdout)
- integrate with full duplex recording code, to record at the same time as outputting trigger
- useful to record some output (eg. ign output)
- should be easy on linux, as the record+play full duplex code is commited to same dir in SVN. But not yet integrated to the trigger generation code
Hardware - direct connection
I simply connected the soundcard output to the ECM inputs, without any capacitor or resistor (the ECM has protection for the inputs anyway).
- GND - GND (EC36pin26). The case of the jack connector.
- left channel goes to primary trigger (EC36pin27). The tip of the jack male connector, if I'm right (TODO: check it)
- right channel goes to secondary trigger
- EC36pin13 for secondary HALL
- EC18pin12 for secondary VR ("auditrigger")
I listened via a headphone to both channels to tell crank from cam, before inserting the econoseal receptacles.
With VR, there is no doubt it should work.
With HALL input, maybe I was just lucky. The output level for the soundcard is 2V peak to peak, which is lower than the 0V/5V input that HALL is designed for. While it worked for me fine for first try, maybe I was lucky, and one needs to use 1..2 resistors to divide signal towards GND (1 resistor in the 10k range from input to GND should be enough to bias the input, the soundcard output is likely capacitively decoupled anyway). If in doubt, run mdf01mdkff menu-command, and in output watch for B.=.... benchstats. That should reveal if primary/secondary trigger pulses are detected with the right frequency.
I use [audacity] to play the wavs, but any program should do. It triggerred either HALL or VR. I used max soundcard volume, both PCM and master. If it does not trigger your HALL input, a pulldown resistor on the input with the right value (10..20k?) should help. This is because of the capacitor on the soundcard output can only pass AC, not DC.
Note on waveform
- LM1815 triggers on the negative going falling edge, basically any reasonable periodic function is fine
- square: the problem with square is the capacitive highpass filter at the soundcard: sine or trapezoid or triangle is not affected that much
- triangle is not good because the peaks are not the same amplitude, because of the finite sampling rate (implementation could change, of course)
- trapezoid and sine are just as good for either VR or HALL, just sine takes more CPU
Feel free to tweak signalgen if you like, takes only a few lines.
See also
- OutputTrigger - almost same purpuse
- ElectronicDesign/SoundRecorder
- ElectronicDesign