tow INA226 devices
Dependencies: C12832_lcd app-board-logger-v1 INA226 LM75B MMA7660 MSCFileSystem mbed
Diff: main.cpp
- Revision:
- 0:a30d570f6e08
- Child:
- 1:a8c8b3ba71ff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Mon Jun 17 14:38:11 2013 +0000 @@ -0,0 +1,215 @@ +#include "mbed.h" +#include "MSCFileSystem.h" +#include "INA226.hpp" +//#include "EthernetInterface.h" +//#include "NTPClient.h" +#include "C12832_lcd.h" +#include "MMA7660.h" +#include "LM75B.h" + +Serial debug(USBTX,USBRX); +DigitalOut ntpLed(LED1); +DigitalOut mmaLed(LED2); +DigitalOut inaLed(LED3); +DigitalOut usbLed(LED4); + +time_t ctTime; + +// gloval variavle +unsigned short val; +double V1,V2,C1,C2; +char strTimeMsg[16]; +float xyz[3]; +float r_V1,r_V2,r_C1,r_C2; +float r_rpm; + +// INA226 +I2C i2c(p28,p27); +INA226 VCmonitor1(i2c,0x80); +INA226 VCmonitor2(i2c,0x83); + +// Analog In +AnalogIn rpm_in(p17); + +// mbed application board LCD +C12832_LCD lcd; + +// for NTP Client +//EthernetInterface eth; +//NTPClient ntp; + +// MMA7660 accelerometer 0x98 +MMA7660 MMA(p28,p27); + +// LM75B Temperture +LM75B tmp(p28,p27); + +//USB Flash +MSCFileSystem msc("fs"); + +// set INA226 +void setINA226(){ + lcd.cls(); + lcd.locate(0,0); + lcd.printf("Please waite...INA226"); + inaLed = 1; + + // VCmonitor1 + if ( !VCmonitor1.isExist() ){ + lcd.printf("VCmonitor1 INA226 Not Found.\n"); + inaLed = 0; + } + lcd.printf("VCmonitor1 INA226 Found\n"); + val = 0; + if ( VCmonitor1.rawRead(0x00,&val) != 0){ + lcd.printf("VCmonitor1 INA226 Read Error\n"); + debug.printf("VCmonitor1 INA226 Read Error\n"); + } + lcd.printf("VCmonitor1 Reg 0x00 : 0x%04x\n",val); + debug.printf("VCmonitor1 Reg 0x00 : 0x%04x\r\n",val); + + VCmonitor1.setCurrentCalibration(); + +// VCmonitor2 + if ( !VCmonitor2.isExist() ){ + lcd.printf("VCmonitor2 INA226 Not Found.\n"); + inaLed = 0; + } + lcd.printf("VCmonitor2 INA226 Found\n"); + val = 0; + if ( VCmonitor2.rawRead(0x00,&val) != 0){ + lcd.printf("VCmonitor2 INA226 Read Error\n"); + debug.printf("VCmonitor2 INA226 Read Error\n"); + } + lcd.printf("VCmonitor2 Reg 0x00 : 0x04x\n",val); + debug.printf("VCmonitor2 Reg 0x00 : 0x04x\r\n",val); + + VCmonitor2.setCurrentCalibration(); +} + +// set MMA7660 +void setMMA7660(){ + if ( MMA.testConnection() ){ + mmaLed = 1; + } +} + +// update LCD Display +void updateLCD() { + + lcd.cls(); + lcd.locate(0,0); + lcd.printf("%s",strTimeMsg); + + lcd.locate(0,10); + lcd.printf("%3.2f ",xyz[0]); + lcd.printf("%3.2f ",xyz[1]); + lcd.printf("%3.2f ",xyz[2]); + + lcd.locate(0,20); + lcd.printf("%3.2f ",r_V1); + lcd.printf("%3.2f ",r_C1); + lcd.printf("%3.2f ",r_rpm); + + debug.printf("%s,%4.3f,%4.3f,%4.3f,%f,%f,%f,%f,%f\r\n",strTimeMsg,xyz[0],xyz[1],xyz[2],r_V1,r_C1,r_V2,r_C2,r_rpm); + +} + +/* ----- Set RTC by NTP ----- */ +/* ---------------- +void setRTC_NTP() +{ + + lcd.cls(); + lcd.locate(0,0); + lcd.printf("Get IP addr ..."); + + EthernetErr ethErr = eth.setup(); + + if (ethErr) { + lcd.cls(); + lcd.printf("Network Error \n\r %d",ethErr); + return ; + } + + Host server(IpAddr(), 123, "0,pool.ntp.org"); + ntp.setTime(server); + lcd.printf("Set time successfully"); + ctTime = time(NULL); + ntpLed = 1; + // eth.disconnect(); + } + ----------- */ + +int main() { + + char strTimeFile[8]; + int intTimeFile=0; + char filepath[256]; + double V,C; + + lcd.cls(); + lcd.locate(0,0); + lcd.printf("init..."); + + time_t ctTime; + +// set RTC by NTP +// setRTC_NTP(); + +// set INA226 + setINA226(); + +// set MMA7660 + setMMA7660(); + + while(1){ + + ctTime = time(NULL) + 32400; + strftime(strTimeFile,8,"%d%H%M%S",localtime(&ctTime)); + + lcd.cls(); + lcd.printf("USB File Create...\n"); + debug.printf("%s\r\n",strTimeFile); + + intTimeFile = atoi(strTimeFile); + sprintf(filepath,"/fs/%08u.csv",intTimeFile); + lcd.printf("%.16s ",filepath); + debug.printf("filepath %s\r\n",filepath); + FILE *fp = fopen(filepath,"w"); + usbLed = 1; + if (fp == NULL ) { + lcd.locate(0,12); + lcd.printf("Create Failed.") ; +// exit(0); + } + + for (int i=0; i<600; i++) { + VCmonitor1.getVoltage(&V1); + VCmonitor1.getCurrent(&C1); + r_V1 = V1 / 1000 ; + r_C1 = C1 / 1000 ; + VCmonitor2.getVoltage(&V2); + VCmonitor2.getCurrent(&C2); + r_V2 = V2 / 1000 ; + r_C2 = C2 / 1000 ; + + r_rpm = rpm_in.read() * 18500 ; + + xyz[0] = MMA.x(); + xyz[1] = MMA.y(); + xyz[2] = MMA.z(); + + ctTime = time(NULL) + 32400; + strftime(strTimeMsg,16,"%m/%d %H:%M:%S",localtime(&ctTime)); + + fprintf(fp,"%s,%4.3f,%4.3f,%4.3f,%f,%f,%f,%f,%f\r\n",strTimeMsg,xyz[0],xyz[1],xyz[2],r_V1,r_C1,r_V2,r_C2,r_rpm); + updateLCD(); + + wait(1); + } + + fclose(fp); + usbLed = 0; + } +}