Takeuchi Kouichi
/
2ak1009_avg_I_Solar
エレキジャックweb mbed入門用です。 太陽光発電MPPT電流計測ユニット付きの改良型です。
main.cpp@0:ac36f334a560, 2010-10-10 (annotated)
- Committer:
- takeuchi
- Date:
- Sun Oct 10 11:25:41 2010 +0000
- Revision:
- 0:ac36f334a560
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
takeuchi | 0:ac36f334a560 | 1 | //2ak1009_Solar_VI |
takeuchi | 0:ac36f334a560 | 2 | // for Solar charger Copyright by K.Takeuchi |
takeuchi | 0:ac36f334a560 | 3 | |
takeuchi | 0:ac36f334a560 | 4 | #include "mbed.h" |
takeuchi | 0:ac36f334a560 | 5 | #include "TextLCD2004.h" |
takeuchi | 0:ac36f334a560 | 6 | |
takeuchi | 0:ac36f334a560 | 7 | #define ON 1 |
takeuchi | 0:ac36f334a560 | 8 | #define OFF 0 |
takeuchi | 0:ac36f334a560 | 9 | #define max_minutes 1 |
takeuchi | 0:ac36f334a560 | 10 | #define I_trim 0.15 |
takeuchi | 0:ac36f334a560 | 11 | |
takeuchi | 0:ac36f334a560 | 12 | AnalogIn Vbat_adc(p20); |
takeuchi | 0:ac36f334a560 | 13 | AnalogIn Vsolar_adc(p19); |
takeuchi | 0:ac36f334a560 | 14 | AnalogIn Isolar_adc(p18); |
takeuchi | 0:ac36f334a560 | 15 | |
takeuchi | 0:ac36f334a560 | 16 | TextLCD lcd(p24, p25, p26, p27, p28, p29, p30,20,4); // rs, rw, e, d0, d1, d2, d3 |
takeuchi | 0:ac36f334a560 | 17 | LocalFileSystem local("local"); |
takeuchi | 0:ac36f334a560 | 18 | |
takeuchi | 0:ac36f334a560 | 19 | int main() { |
takeuchi | 0:ac36f334a560 | 20 | float Vbat,Vsolar,Isolar; |
takeuchi | 0:ac36f334a560 | 21 | float Isolar_sum,Isolar_avg,Vsolar_sum,Vsolar_avg,Wsolar; |
takeuchi | 0:ac36f334a560 | 22 | int k=0; |
takeuchi | 0:ac36f334a560 | 23 | lcd.cls(); |
takeuchi | 0:ac36f334a560 | 24 | lcd.locate(0,0); |
takeuchi | 0:ac36f334a560 | 25 | lcd.printf("=Solar MPPT Sys.="); |
takeuchi | 0:ac36f334a560 | 26 | lcd.locate(0,1); |
takeuchi | 0:ac36f334a560 | 27 | lcd.printf("System start!!"); |
takeuchi | 0:ac36f334a560 | 28 | wait(2.0); |
takeuchi | 0:ac36f334a560 | 29 | |
takeuchi | 0:ac36f334a560 | 30 | while(1){ |
takeuchi | 0:ac36f334a560 | 31 | Vbat=Vbat_adc.read()*30; |
takeuchi | 0:ac36f334a560 | 32 | Vsolar=Vsolar_adc.read()*30; |
takeuchi | 0:ac36f334a560 | 33 | Isolar=(Isolar_adc.read()*3.3-2.5)/185*1000; |
takeuchi | 0:ac36f334a560 | 34 | Wsolar=Vsolar_avg*Isolar_avg; |
takeuchi | 0:ac36f334a560 | 35 | lcd.cls(); |
takeuchi | 0:ac36f334a560 | 36 | lcd.locate(0,0); |
takeuchi | 0:ac36f334a560 | 37 | lcd.printf("=Solar MPPT Sys.="); |
takeuchi | 0:ac36f334a560 | 38 | lcd.locate(0,1); |
takeuchi | 0:ac36f334a560 | 39 | lcd.printf("Sp V:%2.1fV,I:%1.2fA",Vsolar_avg,Isolar_avg); |
takeuchi | 0:ac36f334a560 | 40 | lcd.locate(0,2); |
takeuchi | 0:ac36f334a560 | 41 | lcd.printf("Vbat:%2.1fV",Vbat); |
takeuchi | 0:ac36f334a560 | 42 | lcd.locate(0,3); |
takeuchi | 0:ac36f334a560 | 43 | lcd.printf("W:%2.2f",Wsolar); |
takeuchi | 0:ac36f334a560 | 44 | wait(0.5); |
takeuchi | 0:ac36f334a560 | 45 | lcd.locate(0,0); |
takeuchi | 0:ac36f334a560 | 46 | lcd.printf("=Solar MPPT Sys ="); |
takeuchi | 0:ac36f334a560 | 47 | wait(0.5); |
takeuchi | 0:ac36f334a560 | 48 | Vsolar_sum=Vsolar_sum+Vsolar; |
takeuchi | 0:ac36f334a560 | 49 | Isolar_sum=Isolar_sum+Isolar; |
takeuchi | 0:ac36f334a560 | 50 | k++; |
takeuchi | 0:ac36f334a560 | 51 | if(k==10){ |
takeuchi | 0:ac36f334a560 | 52 | k=0; |
takeuchi | 0:ac36f334a560 | 53 | Vsolar_avg=Vsolar_sum/10; |
takeuchi | 0:ac36f334a560 | 54 | Isolar_avg=Isolar_sum/10-I_trim; |
takeuchi | 0:ac36f334a560 | 55 | Vsolar_sum=0; |
takeuchi | 0:ac36f334a560 | 56 | Isolar_sum=0; |
takeuchi | 0:ac36f334a560 | 57 | } |
takeuchi | 0:ac36f334a560 | 58 | }//while |
takeuchi | 0:ac36f334a560 | 59 | }//main |
takeuchi | 0:ac36f334a560 | 60 | |
takeuchi | 0:ac36f334a560 | 61 |