LCD related
PID integral railing indicator
could be a 1 or 2-char indicator:
state | 2-char version | 1-char |
rail negative | '- ' | '-' |
not railing | ' ' | ' ' |
railing positive | ' +' | '+' |
Would be very useful when tuning PIDs, such as
- BoostControl
- iac
- wbow_pump
- wbo2_heater
- ...
Each on the relevant tuning page.
An extract-display could show all PIDs, eg.
- wbo2_pump rails +, boost rails -
- wbo2_heater does not rail
- iac rails -
- boost-integral is unknown (maybe the network went down with the ECM responsible for boost, or boostcontrol not enabled)
PHIB
'+ -?'
(above looks reasonable with proportional fonts only)
common maintenance for 4x20 and 2x20 displays - commited to STABLE1_0 , ready for review and testing
- store (and maintain) arrays of function pointers in flash for one line at a time (not 1 page)
- lcd_disp.firstline; // index of the line at the top of the displayed page eg. lcd_disp.firstline=8 for mlp02 command (page2)
- lcd_disp.funcarridx; // upper nibble: lineidx (add to firstline to get absolute address); lower nibble: funcidx in side the line used to track the point of the update
- goto handled by code at line beginnings (no function in the function pointer array that just jumps to line beginning)
- line endings: check LINEEND1 or LINEEND2 keywords; for now clear end of line always called, it's smart when nothing to do
- when ++funcidx sees a NULL pointer, lineidx increased
- when lineidx reaches LCD_LINES it is reset to 0
- update of position (next_pos) to match lineidx ...Glx() function
- menu.c changed so up/down arrow keys can step display in 1 line steps; eg 1 line of page 1 and 3 lines of page2 if you like
DONE: Change lcd_pw() to display in 10usec units - commited to head and STABLE1_0
Originally 4 usec resolution.
Something like this (you can commit to CVS after testing):\n
uint16_t t = inj_port[0].pwcalc; int2BCDn( mult16_8( t, 102) >> 8, lcd.next_pos, BCD_DIGIT4);
There was a proposal to display duty, not PW.
PW is better IMHO (10 usec resolution, not 4) because duty will flicker with RPM or MAP change (quite unreadable, I had it earlier).
Consider PW at low power and duty above 4000 RPM and 60kPa, with a % sign making difference.
Since one knows the RPM at max power, it's very easy to know which is the limit PW value:
Keep 93.0 in head (max duty %) or 920 (max PW for same in 10 usec resolution) costs the same, but PW is readable, duty is not. If (on a system with a digital display) duty does not change irritatingly for any RPM / MAP it's a cheat. Duty would be good on analog display though.
- ROUGHLY DONE: EGT temperature displaying on the LCD - There are 2 EGT circuits on the board. It could be very usefull to display the EGT temperatures and/or voltages on the LCD display. The EGT is absolutely needed for tune a turbocharged engine. Sounds reasonable. Do you still use the rare 4x16 display? (or the 4x20 by now?) Do you have a proposal for which page and which part of the display, what format? --- I'm using 4x20 LCD. I think we could remove the last line of the first page(i think, it's numbered as page 0), and write out the EGT temperatures into that last line, instead of the IAC settings. Cause if you set the IAC setting once, than you'll never watching it while driving the car. But you have to watch the EGT.For example:
Or somethig like this:
EGT:xxxx C x.xx V (This is only displays the EGT1 channel.)
Or there could be made a new page, that is the same as the page0, only the last line could be modified to display the EGT temperatures. I think this could be the best solution. EGT is very necessary, you should always be watching it, while driving/tuning.
Emil had a good thought (unfortunately instead of writing here, he wrote it on a piece of paper and put into a bottle that he threw into the sea /irc/.. I was lucky to find it.. ) : the max EGT (in the last ... time-window /consumes RAM/ or a peak function that climbs immediately, but falls slowly /RAM friendly/) should be displayed, because short peaks of EGT should NOT be unnoticed.
That might suit other variables as well, ideas?
This idea is brilliant!Displaying the current EGT, and the max EGT of the last few minutes.Great!Congratulation:))
proposed config variables:
- filter speed when increasing (4 bit, default F)
- filter speed when increasing (4 bit, default 1)
- scale (so C, or Fahrenheit etc..) for LCD, 8 bit
- offset (not sure if needed) 8 bit
- alarm threshold (for when egt text changes to EGT on LCD and output activates). Hysteresis can be compile-time.
- alarm channel (digitalout)
- Extra pressure sensors - Would be nice to enable LCD and logging output of for example fuel/oil/exhaust-pressure
- Extra temperature sensor for oil temperature - This could be very usefull for racing engines, and street engines as well.
- Measured WBO table? - I just got another, probably bad idea, Can we keep a table with measured A/F-ratio? like a simple logging to display.. setup the same way as the fueltable?
Suggestion for Page0 layout:
RPM:1503 T32 P175
AFR:13.5 (13.7) <diag>
alt:
RPM:1503 T32 P175
L:0.92 (0.93) <diag>
Where L is the lambda symbol if it is available in the LCD.
The target value is in parenthesis like (0.93).
Maybe we can change to 32C (instead of T32) and 175k instead of P175. I'm really not sure which is eaiest to read.
Inj= Injector duty, %.
IGN= Ignition advance, degrees.
KR= Knock retard, degrees.
<diag>= some flags that can be of interest:
- crankinG
- Idle : engine.tps < idle_threshold
- Overrun (instead of I at higher RPM)
- Knock or Retard ?
- Egt alarm
- Warning (other warning: same time as check engine light)
- Cold enrichment
- ...
This looks like a good page layout, but i would prefer this line
C:42C T:45% E:1000C , where E either is current EGT or peak EGT
And i also like the lambda output instead of AFR..
//Emil
I had a thought about LCD pages, and about how to deal with different LCD sizes. One possibility is to limit pages to 2x16 size, and have the larger displays combine them x2 or x4. The advantage being the same pages can be used regardless of LCD size selected. The disadvantage is less effective use of screen area. More concise labels might help, but readability can become a factor.
These 4 pages on 2x16...\n
|----------------| |----------------| | Water: 76°C | | IAT: 25°C | | Oil: 52°C | | IC: 45°C | |----------------| |----------------| |----------------| |----------------| | EGT: 600°C | | AFR: 13.2 | | CHT: 400°C | | Adv: 4° | |----------------| |----------------|
Would becomes this one page on 4x40...\n
|----------------------------------------| | Water: 76°C IAT: 25°C | | Oil: 52°C IC: 45°C | | EGT: 600°C AFR: 13.2 | | CHT: 400°C Adv: 4° | |----------------------------------------|
Maybe it would be better to target 2x20 as the smallest size, or aim for 3 columns of 12 instead...
//Rich.
Combined Output Light - COL
Not strictly LCD related, but ... Proposal for an output (eg. to drive a 10mm LED) that combines several functions
- CEL : after powerup, lights up for some time to ease the inspector
- very-very dim during normal running ( PWM-ed 2..3% from mainloop )
- light up bright as a shiftlight according to RPM (considering RPMdot, so sooner in 1st gear!)
- flashes when some variable is beyond treshold (EGT too high, knock or wheel-error...)
- I propose a rarely used p259 output (that is available on EC36) wired in (not confiurable). p259-ch5 is used for fuelpump, so pick sg. else. Suggestions ?
- A piezoelectric buzzer could be used instead of a light too. One could then keep his eyes on the road. Would be usefull for shift light or turbo overboost.
AIM dash
http://www.vems.hu/files/MembersPage/NanassyPeter/AIM_support/AIM-ECU%20protocol.pdf
Unclear thing in the RS232 specs:
- the sum is normal sum or the more usual XOR sum ?
- must there be a gap between the 5 byte packets (such a packet is appr 5/1920 = 2.6 msec long at 19200 baud), or can they come continuous ? (I know that continuous would be more frequent than 10msec, would aim tolerate it?)
What discount they provide if we buy a few dashes, include the support in released firmware and advertise as compatible ?
Notes:
- for debug purposes (also useful if temporarily MegaTune is connected to the RS232 port instead of the dash):
- a command would start to dump the stream
- another command would stop the stream (mdd.. or mde.. ?)
- how to enable automatic start of this stream in config ? A config bit near LCD ?
- how can MegaTune be used ? Maybe a small wrapper that
- sends the command to stop the stream (how will this know the COM-port?)
- starts MegaTune
- Who will test it? Where is a dash like that available ?
We plan to buy one in the "near" future,so we will be able to test it.used AIM is avaible sometimes at duen.hu, or at www.034efi.com as new.