AFreshTiny
Formerly known as Smart-Round-Dual
Warning: the WBO2 sensor in the exhaust is ruined quickly if not heated. When the engine is running, keep the controller running too (so it keeps the sensor heated) or remove the sensor from the exhaust (and use a M18x1.5 mm plug).
- AfreshTiny/FirmwareUpgrade
- AfreshTiny/VoltageOutput
- AfreshTiny/WidebandCalibration
- AfreshTiny/EgtCalibration
- AfreshTiny/RpmInput
Mounting
Allows mounting even with the tightest available space:
- +12V must be connected to the fuses (the wideband sensor internal heater consumes 1..3A). Red wire on the picture.
- GND must be connected to the DSUB15 connector (blue wire on the picture)
To connect for the WBO2 and EGT functionality is trivial (including datalogging with PC). The RPM input and voltage output has some options, detailed below (these functions are rarely used, but sometimes very useful).
U-bracket mounting bracket:
The manufactured version:
Features:
- 3 digit 7 segment LED (with dots)
- 4 digit 7 segment LED (with dots)
- Voltage output. High resolution (up to 5V, 12bit, programmable output curve)
- RS232 level
- directly plugs into PC
- or USB-RS232 adapter
- or small dongle for CAN-physical layer bus (will not need to be removed from network even for firmware reflash!)
- free outputs
- power
- signal level (0..5V high resolution, external ground referenced)
- extra inputs
- analog input
- RPM input, or vehicle-speed (kmh / mph) or other frequency signal
- button
Firmware features
Since this is ment as an easy-to-use device, first only very few features are supported.
- WBO2. Lambda value matches Bosch (manufacturer of the LSU4 sensor) specifications. Tested against very expensive 6-gas analyzers (with 2 - different - sensors in same exhaust stream) with very good match (showing 0.86 / 0.87 when the high-end analyzer displayed 0.86 lambda)
- EGT (with cold-junction measurement)
- null-offset calibration (egt_cal, mttg01mttc.. where replace .. with hexa number: C0 is default, 00 is maximum subtracted offset, 96C)
- onboard-temp
- Data can be logged to PC for further analysis
- Self-calibrating (no setup required, just plug and play)
RPM input (VR or HALL, several trigger-types)
- for logging
- or (RPM-dependent) boost-target
- or vehicle-speed sensor data can be sent over the network to GenBoard/VerThree even when both primary and secondary VR inputs of the v3.x are used up for the engine (the vehicle-speed and fuel consumption can be displayed and logged; also allows much better street-dyno implementation than without vehicle-speed)
Connector Pinouts
RS232 - DSUB9 female. Note that any extension cable needs to be straight through and not cross-over.
- 2: RX
- 3: TX
- 5: GND
Main connector - DSUB15 male. Note that the (now standard) flying loom version has the WBO2 pins on the WBO2 connector, so those 5 pins (pin 2,3,4,5 and 7) of the DSUB15 are NOT connected:
- 1: Vout (Lambda output signal +) - configurable as either Narrow band, wideband 0-1v through to 0-5v.
- 6: VBatt+ (12V)
- 8: analog input for conditioned signal or NTC-type temperature sensor. The input has internal pullup to 4V. As a side-effect, an unconditioned signal (TPS) can slightly be raised (recalibrate TPS, or use 10k series resistor to decrease this effect). Pressure-sensors (MAP and boost) and MAF are usually conditioned (though we heard that a certain MAF was not)
- 9: Vout-gndref (voltage output signal) -. Connect to GND or max 2..5V potential (with higher voltage on this pin, max output voltage on Vout will be limited).
- 10: RPM/Wheel Speed input
- 11: RPM reference (input threshold can be adjusted; leave open)
- 12: 5A Power control
- 13: Power GND connect all GND-s
- 14: Power GND connect all GND-s
- 15: GND (Power or signal) connect all GND-s. If you connect this ground to the EGT- (sensor - white wire) than this can be separate from the pin14 and pin14 (pin12 and pin14 always used for powerGND)
- Also wire supply voltage to WBO2 Heater to sensor pin 3 through 5A fuse (already wired this way in the supplied harness)
Note that the DSUB connectors are flying loom style, which allows installation in much less space (depth). This was original:(not sold)
Lambda Output Signal
Linear WBO2 lambda output
vout_conf set to 0x20 (=decimal 32 if set in MegaTune) or higher (0x33, 0x66 or 0x99 for 1V/lambda, 2V/lambda or 3V/lambda, respectively)
Useful with ECU-s that has no embedded WBO2 controller, but can accept linear WBO2 signal! Also useful if the other ECU has real WBO2 input but you don't want to use 2 WBO2 sensor.
This was tried with 3V/lambda wired in (connected to a motec).
0V (well, say < 0.2V) used for unknown (eg. sensor not heated yet)
- vout_conf=0x33 1V / lambda 0.65v@lambda=0.65, 1.5v@Lambda=1.5
- only when this is the only choice; or when viewing with a handheld DVM
- vout_conf=0x99 (appr. 153 in MegaTune, but you can finetune with DVM or readings from the connected device) 3V / lambda was successfully tried with motec input. The input curve in Motec can be configured (allows 0..5V input range);
- 0.8 lambda => 2.4V obviously
- 1.0 lambda => 3.0V obviously
- (Man)mttg13mttc99(mcs) to set vout_conf (position 0x13) to value 0x99 manually
- not recommended (proportionally higher vout_conf):
- 4V / lambda : maximum practical (max 1.25 lambda limited by output range)
- 5V / lambda could be useful with -1.5V offset (0.6 lambda => 1.5 V ; 1.3 lambda => 5V). This would allow the best interfacing precision (although 3V / lambda is already very good).
What is the "factory default" settingg? It seems to work with Link ECU when the Link is set up for TechEdge lambda curve.
NBO2
- NB sensor simulator, LSM11 reference curve. This curve is mostly useful for old type NBO2 input equipped factory ECU-s only, since it has very low slope (=> hard to tune, prone to noise) at lambda=0.8 which is kindof unfortunate vout_conf=01
Special
- Autronic standard, 0-1v= AFR10-30
- using the near 0V part of the curve is very unfortunate (much better is 0V = error or unknown)
- 10 AFR (0.68 lambda) minimum is a bit unfortunate as well
- old diy style 0..5V: 2.08V best power, 2.5V stoich. (this is Ip based, vout_conf=02)
- Linear 0-5V EGT output (0V at -50C; 4mV/C, so 4.8V = 1150C). vout_conf=00 It could be also good usable with other ECU-s that can't accept the k-thermocouple signal directly.
Note: besides the vout curve, the vout filter frequency would be nice if adjustable (when using it with other aftermarket systems, sometimes you want it almost unfiltered and sometimes you want it as slow as 1Hz.)
Firmware Releases
The current release is listed first, other releases may remain for historical reasons.
Firmware upgrade does not change the factory configuration saved in EEPROM. Even if we add new variables to firmware, we keep the old variables in place.
You can revert to default config (wbo2, EGT, etc...) if you write 00 or 255 into wbo2_pump_pw_zero, save and reboot. However, that should not be necessary. It reverts to wbo2_pump_pw_zero=0x65 and egt_offset=0xC0 so you might want to adjust pump_pw_zero (best values vary from 0x62..0x68 for a certain controller) and egt_offset (easy, looking at the temp, especially if the sensor is room-temp or an alligator clip is used on the EGT terminals)
Current Release
- [OLD RoundFirmware01.zip] Includes the 2006-04-11 Firmware, MegaTune, and the User Readme
- [NEW round_2007-04-25.zip]
- DONE: vout_conf=4 fully configurable lambda output (even very sharp curves possible near 1.0 lambda, for custom NBO2 output)
- megatune round.ini TODO: 0..5V (currently 0..255 must be specified in megatune instead of the more userfriendly 0..5V). Also, graphical curve editor
- DONE: vout_conf=5 0..5V is 0.68 .. 1.36 lambda linear (negative curve would make more sense: if 5V would be assigned to 0.68 lambda, not to 1.36 ... but this was how a customer specified:
- Volt lambda
- 0,00 0,68
- 0,50 0,75
- 1,00 0,82
- 1,50 0,95
- 2,00 0,95
- 2,50 1,02
- 3,00 1,09
- 3,50 1,16
- 4,00 1,22
- 4,50 1,29
- 5,00 1,36
- TODO: more RPM-input tests (for noisy signals)
- TODO: lower heater frequency (so lower radio emittance)
- DONE: vout_conf=4 fully configurable lambda output (even very sharp curves possible near 1.0 lambda, for custom NBO2 output)
Testing
RPM input testing shows improvement, but not a solution.
Tested with this signal file:
http://vems.hu/www.vems.co.uk/VEMSWB/Testing/C006_800_60_5_1000_1000.zip
The following datalog was produced:
http://vems.hu/www.vems.co.uk/VEMSWB/Testing/Round_2007-04-24_beta_RPMTest.xls
The tests were done using my soundcard and speaker playing the wav file that is in C006_800_60_5_1000_1000.zip. The RPM ref was left open, and the input voltage was around 2.1vpp
- [OLD RoundLoader_firmware01.zip] includes
- 2006-04-11 firmware, that supports RPM input
- roundloader_beta native win32 binary (roundloader.exe and bat files). You will need to adjust to your COMx port
- eg. replace COM3 => COM2 (or whatever applies).
- roundloader.exe -p COM3 -s 19200 -f C:\tmp\STABLE1_0\minrtest\round.chex -c write
- change C:\tmp\STABLE1_0\minrtest\round.chex to round.chex in the command (sorry, the absolute reference will be dropped in next release)
- start it from a "run -> cmd" shell, not by clicking on it so you see the output (success or error)
Please report any roundloader.exe problem (it seems fine, so success need not be reported from now)
- XP with pl2303 USB-RS232 adapter cable from WebShop: success
- Successfully upgraded/verified firmware with roundloader on WinXp sp2, notebook with USB/RS232 adapter. Seems fine. (MembersPage/GergelyLezsak)
- Successfully used roundloader to upload new firmware. Used on Dell D810 laptop on com 1. (Stefcross)
The oldschool method: prog.pl Works (similar to BootLoader) with new (included in the zip) prog.pl version (PERL and serialport module required). Prog.pl only recommended on linux, or if roundloader does not work for some reason. Ask for a linux roundloader native executable if you need it.
- Read the README file for display configuration
- (lambda/afr; Celsius/Fahrenheit; internal temp/EGT; soon RPM in upcoming release) through config.disp_state (also changed via button);
- comm.c if you want to improve MegaTune round.ini
- global.h if you want to improve MegaTune round.ini or configure manually through (Man)mttg..mttc..(mcs)(bye) commands
Previous Releases
http://www.vems.hu/files/Firmware/Round/RoundFirmware00.zip (see the beta release below that has the same files included, along with other useful stuff such as megatune!)
Since the new firmware has many nice configurable features, unaware users can be tricked easily if not aware of the configuration. Damage to the controller device is extremely unlikely, but it's possible to damage the sensor with bad configuration.
Other Related Software
- MegaTune
- released version (EGT -50C applied, and added RPM dialog): [round_MegaTune_2006-04-18.zip]
- obsolete: (without RPM dialog, and EGT gauge shows +50C higher): [old, obsolete version], should not be needed
- log data the same way as with v3.x (megatune -> File -> Datalog)
- log analysis: vemslog viewer (or any LogAnalysis program that can take xls input)
- the shown EGT temp is 50C higher than real. 50C should be subtracted from the EGT and internal temp before display to compensate the offset, since minimal temp that can be logged is -50C (a one-liner round.ini change to be done in next release)
- [round logger v001] (needs .exe and dll's to startup properly, download into the same dir)
- unknown quality
- free air calibration
- the RCal resistor in the sensor is supported, so calibration is not necessary (it's not possible in current firmware release, although a new finetune config variable can be made for it if necessary). The optimal PID parameters are different in the exhaust stream and free air, so don't worry if free air reading is slightly off or even floating somewhat. Note that toleration in the lamdba range is very good: 5% error means (actual => reading) 0.8 => 0.81 lambda (since the difference from lambda=1.0 counts, which is 0.2 and 0.19 respectively).
Documentation
Guide development here:
http://vems.hu/www.vems.co.uk/VEMSWB/UserGuide/README.html
A 'consumer grade' download for Windows users is in development here: http://vems.hu/www.vems.co.uk/VEMSWB/VEMSWideband.zip
RPM and wheelspeed input
Devices shipped after 2006 March have the RPM input HW tested. (it's implemented from the start, but earlier it wasn't part of the testing.)
Beware that using the RPM input might require input voltage threshold adjustment with a simple pullup / pulldown resistor in some cases, depending on input voltage level. It is easy, but not plugandplay in all cases.
RPM input HW
rpm_input measures 5V if left open
- connect the signal input here
rpm_gndref to adjust voltage threshold with pullup/pulldown resistor
- Devices with serial_nr >= 100 have appr 0.6V threshold by default that is suitable for the common voltage level thresholds (notably VR / HALL / logiclevel) without pullup/pulldown resistor applied to rpm_gndref.
- pulldown (eg. 100k to GND) for lower voltage threshold (hardly ever needed)
- pullup (eg. 510k to +12V for higher voltage threshold): might be needed in very rare cases when the negative peak of the input signal is higher than +0.55V, like: 2V / 10V squarewave input signal.
- devices with serial_nr < 100 measures 2.5V on rpm_gndref input if left open
- if the zero-crossing negative edge is to be detected (standard VR sensor, eg. typical magnetic wheel-speed sensor or 60-2 wheel), leave it open.
- if you want higher threshold, eg. for a 0V / 5V HALL sensor, connect rpm_gndref with a 220k pullup resistor to a 5V (or 510k to 12V)
RPM input config
Known as "RPM settings" in megatune.
- rpm_toothcount. The number of pulses per crank rotation.
- 02 for a 4 cyl 2 events per rotation
- 3a (decimal 58) for a 60-2 wheel
- or 23 (decimal 35) for a 35-1 wheel
- set with (Man)mttg19c.. like mttg19c02 or with MegaTune
- rpm_multiplier
- set with (Man)mttg1amttc.. like mttg1amttce5 or with MegaTune
- 229 - 0xe5 default for RPM display. Different value can be used to cheat, or for vehicle-speed.
The precision is 1 RPM. Note that display from 230 .. 15999 is possible. Above 9999 the first digit is hexa, so
- a845 (=10845 RPM)
- b231 (=11231 RPM)
- c000 (=12000 RPM)
- d888 (=13888 RPM)
- e792 (=14792 RPM)
- f999 (=15999 RPM)
- fffu (above 16000 RPM)
For wheelspeed input
- set rpm_multiplier=FF (255) first, than adjust according to shown value (calibrate)
- Or you can calculate from the pulses / km.
- example: 10 pulses / m = 10000 pulses / km
- => 1km/h = 10000 pulses / hour = 166.67 pulses / minute (to be displayed as "0001")
- with tooth_count=0xa7 (decimal 167)
- and rpm_multiplier=0xe5 (decimal 229, same as used for RPM)
To support 1 pulse per cam-rotation: experimental [doubleRPM-firmware]
- rpm_toothcount=1, rpm_multiplier=229 needed for 1 pulse per camrot.
- rpm_multiplier=114 for rpm_toothcount pulse per (crank-)rotation.
RPM tricks
- don't forget to adjust toothcount according to the trigger pattern (pulses per rotation)
- if displayed RPM with toothcount=01 is half of real, see double-RPM experimental firmware that supports 1 pulse every second crankrot (1 every camrot). Normally it shouldn't be needed
The sensing voltage-level-threshold is adjusted with RPM-gndref pulldown/pullup resistor (yes, soldered; not configurable in software) value. Depending on the input signal specs, you might not need to connect RPM-gndref at all (eg. for 5..10V amplitude AC signal). The round device will not be harmed if you first try with RPM-gndref not connected.
First measure DC voltage on the output RPM signal (that you want to measure) when connected to nothing, but engine running.
Measure DC voltage
- between GND and the RPM-input pin. With nothing connected expect 4.8 .. 5.2V.
- between GND and RPM-gndref pin. With nothing connected expect 2.4 .. 2.8V
- if the voltage is below 2.6V, you likely need pullup resistor (old standard)
- if the voltage is appr 2.8V, you don't need pullup nor pulldown in most cases. Low amplitude VR-type signal might become more stable with 100..270k pulldown resistor (pulldown means between RPM-gndref and GND).
Mega Tune Setup
RPM gauge range (max RPM) can be increased in round.ini file, change the line:\nÿ1ÿ
or whatever max RPM you find appropriate if 11000 is not enough. The last values are responsible for the color-"alarms".
Other Information
The AfreshTiny was the working name for our first round 52mm WBo2 meter design.
Same circuit can also be used for other functions, see AfreshTiny/OtherUses
Input from user
- How do we choose between Lambda and AFR display? (or Celsius/Fahrenheit)
- display_state variable (eg. decimal 10 means RPM)
- How do we choose vout curve without RS232 ?
- currently not possible
- How to insert "markpoints" in the datalog
- the button is logged at the most significant bit of the ADC input
- Lenne egy kerdesem az analog bemenettel kapcsolatban. A folytoszelep jelet akartam logolni vele. A jel alapban 0.5V-3.5V mozog, ha rakotom az analog bementre akkor 0.9V-tol 4V-ig. Emelett a programban sem a Misc1 sem a Misc2 nem mutat semmit, feltetelezem ezeknek kellene. Lehet vmi beallitas? Hogy lehetne orvosolni ezt.
Demo round
To display 0.87 lambda (eg. for photo), the command Manmdc00mdlb0mdc01mdl38mdc02mdl37 can be used. The displayed text is lost on powerdown. It is also possible to display constant text (that remains after power-cycle) for demo purposes. Yell if you need it
Recover from interrupted firmware upgrade
For round, if firmware upgrade is interrupted, the serial loopback method will NOT work. Either it will stay in bootloader by itself, or only 'S' flooding will work: send a file from TerminalProgram full of "SSSSSSSSSSSSSSSSSSSSSSSSSSSSS" (make it 6..30kbyte to be convenient, because it sends appr 2kbyte/sec) in 19200,8n1 while the round is powered up; than any standard firmware upgrade tool like roundloader should be able to communicate and upgrade firmware