IGGE Power board

Dependencies:   mbed ADS1015 USBDevice MCP4725

main.cpp

Committer:
jamesdem1123
Date:
2014-04-01
Revision:
3:a01ea06ca9ab
Parent:
2:321c8783ea30
Child:
4:d29a7b77b1c6

File content as of revision 3:a01ea06ca9ab:


#include "mbed.h"
#include "Adafruit_ADS1015.h"
#include "USBSerial.h"

#define SERIAL_BAUD_RATE    9600

//library function setup
I2C i2c(p28, p27);
Adafruit_ADS1015 ads(&i2c);
USBSerial pc; // USB CDC serial port
CAN cantbus(p30, p29);
Ticker graph;

//leds
DigitalOut led0(LED1);
DigitalOut led1(LED2);
DigitalOut led2(LED3);
DigitalOut led3(LED4);

//current readings
AnalogIn iBat(p15); //75a
AnalogIn iTwelve(p17); //31a
AnalogIn iFive(p18);//31a
AnalogIn iMot(p16);//75a
AnalogIn iCpu(p20);//31a
AnalogIn iPeri(p19);//31a

//voltage scalers
#define batScal 12.2
#define motScal 12.2
#define twelveScal 12.2
#define fiveScal 12.2

//Relays
DigitalOut relSens(p21);
DigitalOut relUsr(p22);
DigitalOut relNet(p23);
DigitalOut relCpuRst(p24);
DigitalOut relCpuPower(p25);


//30 minute graph arrays
uint16_t iBatArr [180];
uint16_t vBatArr [180];
uint16_t iTwelveArr [180];
uint16_t vTwelveArr [180];
uint16_t iFiveArr [180];
uint16_t vFiveArr [180];
uint16_t iMotArr [180];
uint16_t vMotArr [180];
uint16_t iCpuArr [180];
uint16_t iPeriArr [180];


//volt
uint16_t vBat, vTwelve,vFive,vMot ;


void updateArray (void)
{
    vBat = ads.readADC_SingleEnded(0); // read channel 0
    vTwelve = ads.readADC_SingleEnded(1); // read channel 0
    vFive = ads.readADC_SingleEnded(2); // read channel 0
    vMot = ads.readADC_SingleEnded(3); // read channel 0


    for(int i =179; i >0; i--) {
        iBatArr[i] =iBatArr[i-1];
    }
    iBatArr[0]= iBat.read_u16();

    for(int i =179; i >0; i--) {
        vBatArr[i] =vBatArr[i-1];
    }
    vBatArr[0]= vBat;

    for(int i =179; i >0; i--) {
        iTwelveArr[i] =iTwelveArr[i-1];
    }
    iTwelveArr[0]= iTwelve.read_u16();

    for(int i =179; i >0; i--) {
        vTwelveArr[i] =vTwelveArr[i-1];
    }
    vTwelveArr[0]= vTwelve;

    for(int i =179; i >0; i--) {
        iFiveArr[i] =iFiveArr[i-1];
    }
    iFiveArr[0]= iFive.read_u16();

    for(int i =179; i >0; i--) {
        vFiveArr[i] =vFiveArr[i-1];
    }
    vFiveArr[0]= vFive;

    for(int i =179; i >0; i--) {
        iMotArr[i] =iMotArr[i-1];
    }
    iMotArr[0]= iMot.read_u16();

    for(int i =179; i >0; i--) {
        vMotArr[i] =vMotArr[i-1];
    }
    vMotArr[0]= vMot;

    for(int i =179; i >0; i--) {
        iCpuArr[i] =iCpuArr[i-1];
    }
    iCpuArr[0]= iCpu.read_u16();

    for(int i =179; i >0; i--) {
        iPeriArr[i] =iPeriArr[i-1];
    }
    iPeriArr[0]= iPeri.read_u16();
    led0= !led0;

}

void setup(void)
{
    graph.attach(&updateArray, 10); //update array every 10 seconds
    cantbus.frequency(500000);
    CANMessage can_MsgRx;
    
    //initialize relays
    relSens= 0;
    relNet =0;
    relCpuPower=0;
    relCpuRst =0;
    relUsr=0;

}



int main()
{
    setup();
    
        graph.attach(updateArray, 1); //update array every 10 seconds
    cantbus.frequency(500000);
    CANMessage can_MsgRx;
    
    //initialize relays
    relSens= 0;
    relNet =0;
    relCpuPower=0;
    relCpuRst =0;
    relUsr=0;
    while (1) {


        pc.printf("reading: %d\r\n", vBat); // print reading
        pc.printf("reading: %d\r\n", vTwelve); // print reading
        pc.printf("reading: %d\r\n", vFive); // print reading
        pc.printf("reading: %d\r\n", vMot); // print reading

        wait(2);
    }
}