Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: SPI_TFTx2_ILI9341 TFT_fonts TOUCH_TFTx2_ILI9341 mbed
Fork of CANary_corrupt by
Revision 171:355e284f5201, committed 2013-12-28
- Comitter:
- TickTock
- Date:
- Sat Dec 28 14:53:14 2013 +0000
- Parent:
- 170:7ee98e3611bc
- Child:
- 172:53548bf8bf85
- Commit message:
- // Converted dte display braking bargraph to kW;
Changed in this revision
--- a/displayModes.cpp Tue Dec 24 12:20:50 2013 +0000
+++ b/displayModes.cpp Sat Dec 28 14:53:14 2013 +0000
@@ -1153,8 +1153,7 @@
static unsigned short lgids=0;
static unsigned char leff[39]={0};
CANMessage msg;
- unsigned long targetBraking, regenBraking, temp;
- static unsigned long maxTarget = 1000, tardivreg_x1000 = 1400;
+ unsigned long targetBraking, regenBraking, motorSpeed, motorAmps, frictionBraking;
static unsigned char lr=0, lt=0, lar=0;
msg = lastMsg[indexLastMsg[0x5bc]]; //Get gids
@@ -1315,52 +1314,59 @@
leff[i-1]=y;
}
+ // Plot Braking friction/regen bar graph
+ msg = lastMsg[indexLastMsg[0x176]]; //Get RPMs
+ motorSpeed = (msg.data[2]<<8)+msg.data[3];
msg = lastMsg[indexLastMsg[0x260]]; //Get available regen
- availableRegen = msg.data[1]*2;
+ availableRegen = msg.data[1]*4;
+ msg = lastMsg[indexLastMsg[0x1cb]]; //Get target total braking
+ targetBraking = (msg.data[2]<<3)+(msg.data[3]>>5);
+ msg = lastMsg[indexLastMsg[0x292]]; //Get friction braking
+ frictionBraking = msg.data[6];
+ msg = lastMsg[indexLastMsg[0x180]]; //Get motor amps
+ motorAmps = (msg.data[2]<<4)+(msg.data[3]>>4);
+ if(motorAmps>0x7ff){ // invert and chop positive current
+ motorAmps=0x1000-motorAmps;
+ }else{
+ motorAmps=0;
+ }
+ targetBraking *= motorSpeed;
+ targetBraking /= tbScalar; //0.0000345 * 4
+ regenBraking = motorAmps;
+ regenBraking *= motorSpeed;
+ regenBraking /= rbScalar; //0.00002875 * 4
+ frictionBraking *= motorSpeed;
+ frictionBraking /= fbScalar; //0.0019 * 4
+
+ // Plot available regen brackets
if(availableRegen>lar){
- tt.fillrect(264,240-availableRegen,266,239-lar,White);
- tt.fillrect(308,240-availableRegen,310,239-lar,White);
+ tt.fillrect(273,238-availableRegen,275,239-lar,White);
+ tt.fillrect(317,238-availableRegen,319,239-lar,White);
+ if(availableRegen>=24){
+ for(i=24;i<=availableRegen;i+=24){
+ tt.fillrect(270,238-i,272,239-i,White);
+ }
+ }
lar=availableRegen;
}else if(availableRegen<lar){
- tt.fillrect(264,240-lar,266,239-availableRegen,Navy);
- tt.fillrect(308,240-lar,310,239-availableRegen,Navy);
+ tt.fillrect(270,238-lar,275,239-availableRegen,Navy);
+ tt.fillrect(317,238-lar,319,239-availableRegen,Navy);
lar=availableRegen;
}
- msg = lastMsg[indexLastMsg[0x1cb]]; //Get Target total braking
- targetBraking = (msg.data[2]<<3)+(msg.data[3]>>5);
-
- msg = lastMsg[indexLastMsg[0x1d4]]; //Get Motor Amps - simlar to 1d5/1.4 but includes coast regen
- temp = (msg.data[2]<<4)+(msg.data[3]>>4);
- if(temp>0x7ff){ // invert and chop positive current
- regenBraking=0x1000-temp;
- }else{
- regenBraking=0;
+ t = (unsigned char) regenBraking+frictionBraking;
+ if (t>160) t=160;
+ r = (unsigned char) regenBraking;
+ if (r>160) r=160;
+ if (r>t) t=r; //Should never happen
+ if(lr!=r||lt!=t){
+ if (t<160) tt.fillrect(277,239-160,315,238-t,Navy);
+ if (r<t) tt.fillrect(277,239-t,315,238-r,Red);
+ if (0<r) tt.fillrect(277,239-r,315,238,Green);
}
-
- if (targetBraking<2045){
- if (targetBraking>maxTarget) maxTarget=targetBraking;
- temp = targetBraking;
- temp *=167;
- temp /= maxTarget;
- t = (char) temp;
- if (t>160) t=160;
- temp = regenBraking;
- temp *= tardivreg_x1000;
- temp /= maxTarget;
- temp /= 6; // 1000/167=6
- r = (char) temp;
- if (r>160) r=160;
- if (r>t) t=r; //Should never happen
- if(lr!=r||lt!=t){
- if (t<160) tt.fillrect(268,239-160,306,238-t,Navy);
- if (r<t) tt.fillrect(268,239-t,306,238-r,Red);
- if (0<r) tt.fillrect(268,239-r,306,238,Green);
- }
- lt=t;
- lr=r;
- }
+ lt=t;
+ lr=r;
}
void testDisplay (bool force, bool showButtons){
@@ -1382,18 +1388,6 @@
tt.locate(10,10);
printf("%d maxT\n",maxTarget);
}
- /*msg = lastMsg[indexLastMsg[0x5fa]];
- month = msg.data[5]>>4;
- day = msg.data[2]>>3;
- msg = lastMsg[indexLastMsg[0x5fb]];
- year = msg.data[1];
- msg = lastMsg[indexLastMsg[0x5fc]];
- hour = msg.data[0]>>3;
- minute = (msg.data[1]<<4&0x30)+(msg.data[2]>>4);
- second = msg.data[1]>>2;
- tt.locate(0,40);
- printf("%02d%02d%02d %02d%02d%03d\n",hour,minute,second,month,day,year);*/
- //printf("%4.2fV %4.2fV \n",accV,accV2);
for (i=0; i<8; i++){
msg = lastMsg[indexLastMsg[(uMsgId[i]>>4)]];
--- a/displayModes.h Tue Dec 24 12:20:50 2013 +0000
+++ b/displayModes.h Sat Dec 28 14:53:14 2013 +0000
@@ -76,6 +76,9 @@
extern bool CCon;
extern float kWperGid;
extern unsigned short startGids;
+extern unsigned long tbScalar;
+extern unsigned long rbScalar;
+extern unsigned long fbScalar;
extern "C" {
void printLast (bool force, bool showButtons);
--- a/main.cpp Tue Dec 24 12:20:50 2013 +0000
+++ b/main.cpp Sat Dec 28 14:53:14 2013 +0000
@@ -11,10 +11,8 @@
// * Add climate control impact to main max/min dte and new trip display
// * Be more efficient with write buffer (use msgLen instead of always storing 8 bytes)
-// rev170
-// Added kWperGid scalar to config file. .075 appears to be too small
-// Added CCkWh_trip to TripLog (after kWh_trip)
-// Added uncalibrated available regen bars to dte screen
+// rev171
+// Converted dte display braking bargraph to kW
#include "mbed.h"
#include "CAN.h"
@@ -24,7 +22,7 @@
#include "utility.h"
#include "displayModes.h"
#include "TOUCH_TFTx2.h"
-char revStr[7] = "170"; // gg - revision string, max 6 characters
+char revStr[7] = "171"; // gg - revision string, max 6 characters
unsigned long maxTarget = 1000;
FATFS USBdrive;
LocalFileSystem local("local");
@@ -177,6 +175,9 @@
bool idir, lidir;
bool enableSound=false;
bool clearTest=true;
+unsigned long tbScalar = 72464;
+unsigned long rbScalar = 8696;
+unsigned long fbScalar = 132;
int main() {
char sTemp[40];
--- a/utility.h Tue Dec 24 12:20:50 2013 +0000
+++ b/utility.h Sat Dec 28 14:53:14 2013 +0000
@@ -82,6 +82,9 @@
extern unsigned short modelYear;
extern bool enableSound;
extern const unsigned char Arial12x12[];
+extern unsigned long tbScalar;
+extern unsigned long rbScalar;
+extern unsigned long fbScalar;
extern "C" {
void mbed_reset();
