IGGE Power board
Dependencies: mbed ADS1015 USBDevice MCP4725
main.cpp@2:321c8783ea30, 2014-03-26 (annotated)
- Committer:
- jamesdem1123
- Date:
- Wed Mar 26 03:36:02 2014 +0000
- Revision:
- 2:321c8783ea30
- Parent:
- 1:dd6f8dc1e54e
- Child:
- 3:a01ea06ca9ab
Nightly 25 Mar v2
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
jamesdem1123 | 1:dd6f8dc1e54e | 1 | |
jamesdem1123 | 0:54d5ccfcb14c | 2 | #include "mbed.h" |
jamesdem1123 | 1:dd6f8dc1e54e | 3 | #include "Adafruit_ADS1015.h" |
jamesdem1123 | 1:dd6f8dc1e54e | 4 | #include "USBSerial.h" |
jamesdem1123 | 1:dd6f8dc1e54e | 5 | |
jamesdem1123 | 1:dd6f8dc1e54e | 6 | #define SERIAL_BAUD_RATE 9600 |
jamesdem1123 | 1:dd6f8dc1e54e | 7 | |
jamesdem1123 | 1:dd6f8dc1e54e | 8 | //library function setup |
jamesdem1123 | 1:dd6f8dc1e54e | 9 | I2C i2c(p28, p27); |
jamesdem1123 | 1:dd6f8dc1e54e | 10 | Adafruit_ADS1015 ads(&i2c); |
jamesdem1123 | 1:dd6f8dc1e54e | 11 | USBSerial pc; // USB CDC serial port |
jamesdem1123 | 1:dd6f8dc1e54e | 12 | CAN cantbus(p30, p29); |
jamesdem1123 | 2:321c8783ea30 | 13 | Ticker graph; |
jamesdem1123 | 1:dd6f8dc1e54e | 14 | |
jamesdem1123 | 1:dd6f8dc1e54e | 15 | //leds |
jamesdem1123 | 1:dd6f8dc1e54e | 16 | DigitalOut led0(LED1); |
jamesdem1123 | 1:dd6f8dc1e54e | 17 | DigitalOut led1(LED2); |
jamesdem1123 | 1:dd6f8dc1e54e | 18 | DigitalOut led2(LED3); |
jamesdem1123 | 1:dd6f8dc1e54e | 19 | DigitalOut led3(LED4); |
jamesdem1123 | 0:54d5ccfcb14c | 20 | |
jamesdem1123 | 1:dd6f8dc1e54e | 21 | //current readings |
jamesdem1123 | 1:dd6f8dc1e54e | 22 | AnalogIn iBat(p15); //75a |
jamesdem1123 | 1:dd6f8dc1e54e | 23 | AnalogIn iTwelve(p17); //31a |
jamesdem1123 | 1:dd6f8dc1e54e | 24 | AnalogIn iFive(p18);//31a |
jamesdem1123 | 1:dd6f8dc1e54e | 25 | AnalogIn iMot(p16);//75a |
jamesdem1123 | 1:dd6f8dc1e54e | 26 | AnalogIn iCpu(p20);//31a |
jamesdem1123 | 1:dd6f8dc1e54e | 27 | AnalogIn iPeri(p19);//31a |
jamesdem1123 | 1:dd6f8dc1e54e | 28 | |
jamesdem1123 | 1:dd6f8dc1e54e | 29 | //voltage scalers |
jamesdem1123 | 1:dd6f8dc1e54e | 30 | #define batScal 12.2 |
jamesdem1123 | 1:dd6f8dc1e54e | 31 | #define motScal 12.2 |
jamesdem1123 | 1:dd6f8dc1e54e | 32 | #define twelveScal 12.2 |
jamesdem1123 | 1:dd6f8dc1e54e | 33 | #define fiveScal 12.2 |
jamesdem1123 | 1:dd6f8dc1e54e | 34 | |
jamesdem1123 | 1:dd6f8dc1e54e | 35 | //Relays |
jamesdem1123 | 1:dd6f8dc1e54e | 36 | DigitalOut relSens(p21); |
jamesdem1123 | 1:dd6f8dc1e54e | 37 | DigitalOut relUsr(p22); |
jamesdem1123 | 1:dd6f8dc1e54e | 38 | DigitalOut relNet(p23); |
jamesdem1123 | 1:dd6f8dc1e54e | 39 | DigitalOut relCpuPower(p25); |
jamesdem1123 | 1:dd6f8dc1e54e | 40 | DigitalOut relCpuRst(p24); |
jamesdem1123 | 1:dd6f8dc1e54e | 41 | |
jamesdem1123 | 0:54d5ccfcb14c | 42 | |
jamesdem1123 | 1:dd6f8dc1e54e | 43 | //30 minute graph arrays |
jamesdem1123 | 2:321c8783ea30 | 44 | uint16_t iBatArr [180]; |
jamesdem1123 | 2:321c8783ea30 | 45 | uint16_t vBatArr [180]; |
jamesdem1123 | 2:321c8783ea30 | 46 | uint16_t iTwelveArr [180]; |
jamesdem1123 | 2:321c8783ea30 | 47 | uint16_t vTwelveArr [180]; |
jamesdem1123 | 2:321c8783ea30 | 48 | uint16_t iFiveArr [180]; |
jamesdem1123 | 2:321c8783ea30 | 49 | uint16_t vFiveArr [180]; |
jamesdem1123 | 2:321c8783ea30 | 50 | uint16_t iMotArr [180]; |
jamesdem1123 | 2:321c8783ea30 | 51 | uint16_t vMotArr [180]; |
jamesdem1123 | 2:321c8783ea30 | 52 | uint16_t iCpuArr [180]; |
jamesdem1123 | 2:321c8783ea30 | 53 | uint16_t iPeriArr [180]; |
jamesdem1123 | 1:dd6f8dc1e54e | 54 | |
jamesdem1123 | 1:dd6f8dc1e54e | 55 | |
jamesdem1123 | 1:dd6f8dc1e54e | 56 | //volt |
jamesdem1123 | 1:dd6f8dc1e54e | 57 | uint16_t vBat, vTwelve,vFive,vMot ; |
jamesdem1123 | 1:dd6f8dc1e54e | 58 | |
jamesdem1123 | 2:321c8783ea30 | 59 | |
jamesdem1123 | 2:321c8783ea30 | 60 | void updateArray (void) |
jamesdem1123 | 2:321c8783ea30 | 61 | { |
jamesdem1123 | 2:321c8783ea30 | 62 | vBat = ads.readADC_SingleEnded(0); // read channel 0 |
jamesdem1123 | 2:321c8783ea30 | 63 | vTwelve = ads.readADC_SingleEnded(1); // read channel 0 |
jamesdem1123 | 2:321c8783ea30 | 64 | vFive = ads.readADC_SingleEnded(2); // read channel 0 |
jamesdem1123 | 2:321c8783ea30 | 65 | vMot = ads.readADC_SingleEnded(3); // read channel 0 |
jamesdem1123 | 2:321c8783ea30 | 66 | |
jamesdem1123 | 2:321c8783ea30 | 67 | |
jamesdem1123 | 2:321c8783ea30 | 68 | for(int i =179; i >0; i--) { |
jamesdem1123 | 2:321c8783ea30 | 69 | iBatArr[i] =iBatArr[i-1]; |
jamesdem1123 | 2:321c8783ea30 | 70 | } |
jamesdem1123 | 2:321c8783ea30 | 71 | iBatArr[0]= iBat.read_u16(); |
jamesdem1123 | 2:321c8783ea30 | 72 | |
jamesdem1123 | 2:321c8783ea30 | 73 | for(int i =179; i >0; i--) { |
jamesdem1123 | 2:321c8783ea30 | 74 | vBatArr[i] =vBatArr[i-1]; |
jamesdem1123 | 2:321c8783ea30 | 75 | } |
jamesdem1123 | 2:321c8783ea30 | 76 | vBatArr[0]= vBat; |
jamesdem1123 | 2:321c8783ea30 | 77 | |
jamesdem1123 | 2:321c8783ea30 | 78 | for(int i =179; i >0; i--) { |
jamesdem1123 | 2:321c8783ea30 | 79 | iTwelveArr[i] =iTwelveArr[i-1]; |
jamesdem1123 | 2:321c8783ea30 | 80 | } |
jamesdem1123 | 2:321c8783ea30 | 81 | iTwelveArr[0]= iTwelve.read_u16(); |
jamesdem1123 | 2:321c8783ea30 | 82 | |
jamesdem1123 | 2:321c8783ea30 | 83 | for(int i =179; i >0; i--) { |
jamesdem1123 | 2:321c8783ea30 | 84 | vTwelveArr[i] =vTwelveArr[i-1]; |
jamesdem1123 | 2:321c8783ea30 | 85 | } |
jamesdem1123 | 2:321c8783ea30 | 86 | vTwelveArr[0]= vTwelve; |
jamesdem1123 | 2:321c8783ea30 | 87 | |
jamesdem1123 | 2:321c8783ea30 | 88 | for(int i =179; i >0; i--) { |
jamesdem1123 | 2:321c8783ea30 | 89 | iFiveArr[i] =iFiveArr[i-1]; |
jamesdem1123 | 2:321c8783ea30 | 90 | } |
jamesdem1123 | 2:321c8783ea30 | 91 | iFiveArr[0]= iFive.read_u16(); |
jamesdem1123 | 2:321c8783ea30 | 92 | |
jamesdem1123 | 2:321c8783ea30 | 93 | for(int i =179; i >0; i--) { |
jamesdem1123 | 2:321c8783ea30 | 94 | vFiveArr[i] =vFiveArr[i-1]; |
jamesdem1123 | 2:321c8783ea30 | 95 | } |
jamesdem1123 | 2:321c8783ea30 | 96 | vFiveArr[0]= vFive; |
jamesdem1123 | 2:321c8783ea30 | 97 | |
jamesdem1123 | 2:321c8783ea30 | 98 | for(int i =179; i >0; i--) { |
jamesdem1123 | 2:321c8783ea30 | 99 | iMotArr[i] =iMotArr[i-1]; |
jamesdem1123 | 2:321c8783ea30 | 100 | } |
jamesdem1123 | 2:321c8783ea30 | 101 | iMotArr[0]= iMot.read_u16(); |
jamesdem1123 | 2:321c8783ea30 | 102 | |
jamesdem1123 | 2:321c8783ea30 | 103 | for(int i =179; i >0; i--) { |
jamesdem1123 | 2:321c8783ea30 | 104 | vMotArr[i] =vMotArr[i-1]; |
jamesdem1123 | 2:321c8783ea30 | 105 | } |
jamesdem1123 | 2:321c8783ea30 | 106 | vMotArr[0]= vMot; |
jamesdem1123 | 2:321c8783ea30 | 107 | |
jamesdem1123 | 2:321c8783ea30 | 108 | for(int i =179; i >0; i--) { |
jamesdem1123 | 2:321c8783ea30 | 109 | iCpuArr[i] =iCpuArr[i-1]; |
jamesdem1123 | 2:321c8783ea30 | 110 | } |
jamesdem1123 | 2:321c8783ea30 | 111 | iCpuArr[0]= iCpu.read_u16(); |
jamesdem1123 | 2:321c8783ea30 | 112 | |
jamesdem1123 | 2:321c8783ea30 | 113 | for(int i =179; i >0; i--) { |
jamesdem1123 | 2:321c8783ea30 | 114 | iPeriArr[i] =iPeriArr[i-1]; |
jamesdem1123 | 2:321c8783ea30 | 115 | } |
jamesdem1123 | 2:321c8783ea30 | 116 | iPeriArr[0]= iPeri.read_u16(); |
jamesdem1123 | 2:321c8783ea30 | 117 | |
jamesdem1123 | 2:321c8783ea30 | 118 | } |
jamesdem1123 | 2:321c8783ea30 | 119 | |
jamesdem1123 | 1:dd6f8dc1e54e | 120 | void setup(void) |
jamesdem1123 | 1:dd6f8dc1e54e | 121 | { |
jamesdem1123 | 2:321c8783ea30 | 122 | graph.attach(&updateArray, 10); //update array every 10 seconds |
jamesdem1123 | 2:321c8783ea30 | 123 | |
jamesdem1123 | 1:dd6f8dc1e54e | 124 | //initialize relays |
jamesdem1123 | 1:dd6f8dc1e54e | 125 | relSens= 0; |
jamesdem1123 | 1:dd6f8dc1e54e | 126 | relNet =0; |
jamesdem1123 | 1:dd6f8dc1e54e | 127 | relCpuPower=0; |
jamesdem1123 | 1:dd6f8dc1e54e | 128 | relCpuRst =0; |
jamesdem1123 | 1:dd6f8dc1e54e | 129 | relUsr=0; |
jamesdem1123 | 1:dd6f8dc1e54e | 130 | |
jamesdem1123 | 1:dd6f8dc1e54e | 131 | } |
jamesdem1123 | 1:dd6f8dc1e54e | 132 | |
jamesdem1123 | 1:dd6f8dc1e54e | 133 | |
jamesdem1123 | 2:321c8783ea30 | 134 | |
jamesdem1123 | 1:dd6f8dc1e54e | 135 | int main() |
jamesdem1123 | 1:dd6f8dc1e54e | 136 | { |
jamesdem1123 | 1:dd6f8dc1e54e | 137 | setup(); |
jamesdem1123 | 1:dd6f8dc1e54e | 138 | while (1) { |
jamesdem1123 | 2:321c8783ea30 | 139 | |
jamesdem1123 | 1:dd6f8dc1e54e | 140 | |
jamesdem1123 | 1:dd6f8dc1e54e | 141 | pc.printf("reading: %d\r\n", vBat); // print reading |
jamesdem1123 | 1:dd6f8dc1e54e | 142 | pc.printf("reading: %d\r\n", vTwelve); // print reading |
jamesdem1123 | 1:dd6f8dc1e54e | 143 | pc.printf("reading: %d\r\n", vFive); // print reading |
jamesdem1123 | 1:dd6f8dc1e54e | 144 | pc.printf("reading: %d\r\n", vMot); // print reading |
jamesdem1123 | 1:dd6f8dc1e54e | 145 | |
jamesdem1123 | 1:dd6f8dc1e54e | 146 | wait(2); // loop 2 sek |
jamesdem1123 | 1:dd6f8dc1e54e | 147 | led0 = 1; |
jamesdem1123 | 0:54d5ccfcb14c | 148 | wait(0.2); |
jamesdem1123 | 1:dd6f8dc1e54e | 149 | led0 = 0; |
jamesdem1123 | 0:54d5ccfcb14c | 150 | wait(0.2); |
jamesdem1123 | 0:54d5ccfcb14c | 151 | } |
jamesdem1123 | 0:54d5ccfcb14c | 152 | } |
jamesdem1123 | 1:dd6f8dc1e54e | 153 | |
jamesdem1123 | 1:dd6f8dc1e54e | 154 | |
jamesdem1123 | 1:dd6f8dc1e54e | 155 | |
jamesdem1123 | 1:dd6f8dc1e54e | 156 | |
jamesdem1123 | 1:dd6f8dc1e54e | 157 | |
jamesdem1123 | 1:dd6f8dc1e54e | 158 | |
jamesdem1123 | 1:dd6f8dc1e54e | 159 | |
jamesdem1123 | 1:dd6f8dc1e54e | 160 | |
jamesdem1123 | 1:dd6f8dc1e54e | 161 | |
jamesdem1123 | 1:dd6f8dc1e54e | 162 | |
jamesdem1123 | 1:dd6f8dc1e54e | 163 | |
jamesdem1123 | 1:dd6f8dc1e54e | 164 | |
jamesdem1123 | 1:dd6f8dc1e54e | 165 |