_ _ | | | | | |__| | | __ | | | | | |_| |_|
_ __ | |/ / | ' / | < | . \ |_|\_\
# # # # # ## ### # # ####
## # # # ##### # # #
_ | \ /\ | \ / / | (_/ / | _ ( | ( \ \ | / \ \ |_/ \/
IMPORTANT: enter the case-INsensitive alphabetic (no numbers) code AND WRITE SOME SHORT summary of changes (below) if you are saving changes. (not required for previewing changes). Wiki-spamming is not tolerated, will be removed, so it does NOT even show up in history. Spammers go away now. Visit Preferences to set your user name Summary of change: '''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. if wbo2_pump rails +, boost rails -, while iac and wbo2_heater does not rail: PHIB '+ - ' ---- '''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): <code> uint16_t t = inj_port[0].pwcalc; int2BCDn( mult16_8( t, 102) >> 8, lcd.next_pos, BCD_DIGIT4); </code> 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: EGT1:xxxx Egt2:xxxx (celsius) 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 CLT:35C TPS:47% Inj:67% IGN:22 KR:0 AFR:13.5 (13.7) <diag> alt: RPM:1503 T32 P175 CLT:35C TPS:47% Inj:67% IGN:22 KR:0 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... <code> |----------------| |----------------| | Water: 76°C | | IAT: 25°C | | Oil: 52°C | | IC: 45°C | |----------------| |----------------| |----------------| |----------------| | EGT: 600°C | | AFR: 13.2 | | CHT: 400°C | | Adv: 4° | |----------------| |----------------| </code> Would becomes this one page on 4x40... <code> |----------------------------------------| | Water: 76°C IAT: 25°C | | Oil: 52°C IC: 45°C | | EGT: 600°C AFR: 13.2 | | CHT: 400°C Adv: 4° | |----------------------------------------| </code> Maybe it would be better to target 2x20 as the smallest size, or aim for 3 columns of 12 instead... //Rich. Optional: Add document to category: Wiki formatting: * is Bullet list ** Bullet list subentry ... '''Bold''', ---- is horizontal ruler, <code> preformatted text... </code> See wiki editing HELP for tables and other formatting tips and tricks.