Dependencies:   mbed

Committer:
DaveStyles
Date:
Fri Oct 30 17:55:27 2009 +0000
Revision:
0:c42f357675ed

        

Who changed what in which revision?

UserRevisionLine numberNew contents of line
DaveStyles 0:c42f357675ed 1 #include "mbed.h"
DaveStyles 0:c42f357675ed 2
DaveStyles 0:c42f357675ed 3 DigitalOut relay1(p24);
DaveStyles 0:c42f357675ed 4 DigitalOut chargeLED(p30);
DaveStyles 0:c42f357675ed 5 DigitalOut dumpLED(p29);
DaveStyles 0:c42f357675ed 6 AnalogIn load1 (p16);
DaveStyles 0:c42f357675ed 7
DaveStyles 0:c42f357675ed 8
DaveStyles 0:c42f357675ed 9 #define rRatio 6.6355
DaveStyles 0:c42f357675ed 10 #define EMPTY 12.2000
DaveStyles 0:c42f357675ed 11 #define UPPER_CHARGE_LIMIT 13.0
DaveStyles 0:c42f357675ed 12
DaveStyles 0:c42f357675ed 13 int justConnected = 0;
DaveStyles 0:c42f357675ed 14
DaveStyles 0:c42f357675ed 15 void flash(void) {
DaveStyles 0:c42f357675ed 16 for (int i=0;i<5;i++) {
DaveStyles 0:c42f357675ed 17 dumpLED = 1;
DaveStyles 0:c42f357675ed 18 chargeLED = 1;
DaveStyles 0:c42f357675ed 19 wait(0.5);
DaveStyles 0:c42f357675ed 20 dumpLED = 0;
DaveStyles 0:c42f357675ed 21 chargeLED = 0;
DaveStyles 0:c42f357675ed 22 wait(0.5);
DaveStyles 0:c42f357675ed 23 }
DaveStyles 0:c42f357675ed 24
DaveStyles 0:c42f357675ed 25 }
DaveStyles 0:c42f357675ed 26
DaveStyles 0:c42f357675ed 27 //chargeLED = RED
DaveStyles 0:c42f357675ed 28 //dumpLED = Green
DaveStyles 0:c42f357675ed 29
DaveStyles 0:c42f357675ed 30 void chargeOne() {
DaveStyles 0:c42f357675ed 31
DaveStyles 0:c42f357675ed 32 justConnected = 0;
DaveStyles 0:c42f357675ed 33
DaveStyles 0:c42f357675ed 34 //with latch
DaveStyles 0:c42f357675ed 35 relay1=1;
DaveStyles 0:c42f357675ed 36 chargeLED=1;
DaveStyles 0:c42f357675ed 37 dumpLED = 0;
DaveStyles 0:c42f357675ed 38
DaveStyles 0:c42f357675ed 39 while (1) {
DaveStyles 0:c42f357675ed 40
DaveStyles 0:c42f357675ed 41 float voltage1 = load1*rRatio*3.3000;
DaveStyles 0:c42f357675ed 42
DaveStyles 0:c42f357675ed 43 float delay = 0.2;
DaveStyles 0:c42f357675ed 44 if (UPPER_CHARGE_LIMIT > voltage1) {
DaveStyles 0:c42f357675ed 45 delay=0.2+(UPPER_CHARGE_LIMIT - voltage1);
DaveStyles 0:c42f357675ed 46 }
DaveStyles 0:c42f357675ed 47
DaveStyles 0:c42f357675ed 48 wait (delay);
DaveStyles 0:c42f357675ed 49 chargeLED=1;
DaveStyles 0:c42f357675ed 50 wait (0.25);
DaveStyles 0:c42f357675ed 51 chargeLED=0;
DaveStyles 0:c42f357675ed 52
DaveStyles 0:c42f357675ed 53 // When the battery is charged to the limit, switch the relay off and return
DaveStyles 0:c42f357675ed 54 voltage1 = load1*rRatio*3.3000;
DaveStyles 0:c42f357675ed 55 if (voltage1 >= UPPER_CHARGE_LIMIT ) {
DaveStyles 0:c42f357675ed 56 flash();
DaveStyles 0:c42f357675ed 57 relay1=0;
DaveStyles 0:c42f357675ed 58 chargeLED=0;
DaveStyles 0:c42f357675ed 59 return;
DaveStyles 0:c42f357675ed 60 }
DaveStyles 0:c42f357675ed 61
DaveStyles 0:c42f357675ed 62 } //loop
DaveStyles 0:c42f357675ed 63
DaveStyles 0:c42f357675ed 64 }
DaveStyles 0:c42f357675ed 65
DaveStyles 0:c42f357675ed 66 void init(void) {
DaveStyles 0:c42f357675ed 67 for (int i=0;i<10;i++) {
DaveStyles 0:c42f357675ed 68 dumpLED = 1;
DaveStyles 0:c42f357675ed 69 wait(0.5);
DaveStyles 0:c42f357675ed 70 dumpLED = 0;
DaveStyles 0:c42f357675ed 71 chargeLED = 1;
DaveStyles 0:c42f357675ed 72 wait(0.5);
DaveStyles 0:c42f357675ed 73 chargeLED = 0;
DaveStyles 0:c42f357675ed 74 }
DaveStyles 0:c42f357675ed 75 for (int i=0;i<1;i++) {
DaveStyles 0:c42f357675ed 76 dumpLED = 1;
DaveStyles 0:c42f357675ed 77 chargeLED = 1;
DaveStyles 0:c42f357675ed 78 wait(0.5);
DaveStyles 0:c42f357675ed 79 dumpLED = 0;
DaveStyles 0:c42f357675ed 80 chargeLED = 0;
DaveStyles 0:c42f357675ed 81 wait(0.5);
DaveStyles 0:c42f357675ed 82 }
DaveStyles 0:c42f357675ed 83
DaveStyles 0:c42f357675ed 84 justConnected = 1;
DaveStyles 0:c42f357675ed 85
DaveStyles 0:c42f357675ed 86 }
DaveStyles 0:c42f357675ed 87
DaveStyles 0:c42f357675ed 88
DaveStyles 0:c42f357675ed 89 void dump() {
DaveStyles 0:c42f357675ed 90
DaveStyles 0:c42f357675ed 91 dumpLED = 1;
DaveStyles 0:c42f357675ed 92 wait(0.5);
DaveStyles 0:c42f357675ed 93 dumpLED = 0;
DaveStyles 0:c42f357675ed 94
DaveStyles 0:c42f357675ed 95 }
DaveStyles 0:c42f357675ed 96
DaveStyles 0:c42f357675ed 97 int main() {
DaveStyles 0:c42f357675ed 98 init();
DaveStyles 0:c42f357675ed 99 while(1) {
DaveStyles 0:c42f357675ed 100 wait(1);
DaveStyles 0:c42f357675ed 101 float voltage1 = load1*rRatio*3.3000;
DaveStyles 0:c42f357675ed 102 if ((voltage1 <= EMPTY) || ((justConnected == 1) && (voltage1 < UPPER_CHARGE_LIMIT))) {
DaveStyles 0:c42f357675ed 103 chargeOne();
DaveStyles 0:c42f357675ed 104 } else {
DaveStyles 0:c42f357675ed 105 dump();
DaveStyles 0:c42f357675ed 106 }
DaveStyles 0:c42f357675ed 107
DaveStyles 0:c42f357675ed 108 }
DaveStyles 0:c42f357675ed 109 }