エレキジャックweb mbed入門用です。 太陽光発電MPPT電力測定 ファイル記録システム用プログラムです。

Dependencies:   mbed

main.cpp

Committer:
takeuchi
Date:
2010-10-10
Revision:
0:989432420ed6

File content as of revision 0:989432420ed6:

//2ak1009_Solar_VI
// for Solar charger Copyright by K.Takeuchi

#include "mbed.h"
#include "TextLCD2004.h"

#define ON 1
#define OFF 0
#define max_minutes 210
#define I_trim 0.15

AnalogIn Vbat_adc(p20);
AnalogIn Vsolar_adc(p19);
AnalogIn Isolar_adc(p18);

TextLCD lcd(p24, p25, p26, p27, p28, p29, p30,20,4); // rs, rw, e, d0, d1, d2, d3
LocalFileSystem local("local");

int main() {
      float Vbat,Vsolar,Isolar;
      float Isolar_sum,Isolar_avg,Vsolar_sum,Vsolar_avg,Wsolar;
      int k=0,s_count=60,m_count=max_minutes;
      lcd.cls();
      lcd.locate(0,0);
      lcd.printf("=Solar MPPT Sys.=");
      lcd.locate(0,1);
      lcd.printf("File open...");
      FILE *fp=fopen("/local/Solar.txt","a");
      if(!fp){
        lcd.locate(0,2);
        fprintf(stderr,"File/local/Solar.txt cant't opened");
        exit(1);
      }
      lcd.locate(0,1);
      lcd.printf("System start!!");
      fprintf(fp,"\n");
      wait(2.0);

      while(1){
        Vbat=Vbat_adc.read()*30;
        Vsolar=Vsolar_adc.read()*30;
        Isolar=(Isolar_adc.read()*3.3-2.5)/185*1000;
        Wsolar=Vsolar_avg*Isolar_avg;
        lcd.cls();
        lcd.locate(0,0);
        lcd.printf("=Solar MPPT Sys.=");
        lcd.locate(0,1);
        lcd.printf("Sp V:%2.1fV,I:%1.2fA",Vsolar_avg,Isolar_avg);
        lcd.locate(0,2);
        lcd.printf("Vbat:%2.1fV",Vbat);
        lcd.locate(0,3);
        lcd.printf("W:%2.1fW %d:%d",Wsolar,m_count,s_count);
        wait(0.5);
        lcd.locate(0,0);
        lcd.printf("=Solar MPPT Sys =");
        wait(0.5);
        Vsolar_sum=Vsolar_sum+Vsolar;
        Isolar_sum=Isolar_sum+Isolar;
        k++;
        if(k==10){
          k=0;
          Vsolar_avg=Vsolar_sum/10;
          Isolar_avg=Isolar_sum/10-I_trim;
          Vsolar_sum=0;
          Isolar_sum=0;
        }
        s_count--;
        if(s_count==0){
          s_count=60;
          m_count--;
          fprintf(fp,"%2d, %2.1f, %2.2f, %2.2f, %2.1f\n",m_count,Vsolar_avg,Isolar_avg,Wsolar,Vbat);
        }
        if(m_count ==0){
          lcd.cls();
          lcd.locate(0,0);
          lcd.printf("=Solar MPPT Sys.=");wait(0.2);
          lcd.locate(0,1);
          lcd.printf("File close...");wait(0.2);
          fprintf(fp,"\n");
          fclose(fp);
          lcd.locate(0,2);
          lcd.printf("Recording Finish!");
          wait(5.0);
          exit(1);
        }      
  }//while
}//main