Les bros de la fst
/
TP5P3
Régulateur de type proportionnel
main.cpp@0:cabc061cb9e7, 2018-12-18 (annotated)
- Committer:
- Bleiz038
- Date:
- Tue Dec 18 19:16:30 2018 +0000
- Revision:
- 0:cabc061cb9e7
d
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Bleiz038 | 0:cabc061cb9e7 | 1 | #include "mbed.h" |
Bleiz038 | 0:cabc061cb9e7 | 2 | #include "C12832.h" |
Bleiz038 | 0:cabc061cb9e7 | 3 | C12832 lcd(p5,p7,p6,p8,p11); |
Bleiz038 | 0:cabc061cb9e7 | 4 | AnalogIn Vcapt(p17); |
Bleiz038 | 0:cabc061cb9e7 | 5 | AnalogOut Vcde(p18); |
Bleiz038 | 0:cabc061cb9e7 | 6 | AnalogIn p1(p19); |
Bleiz038 | 0:cabc061cb9e7 | 7 | Ticker cadence; |
Bleiz038 | 0:cabc061cb9e7 | 8 | float E; |
Bleiz038 | 0:cabc061cb9e7 | 9 | int Tc = 35; |
Bleiz038 | 0:cabc061cb9e7 | 10 | float T; |
Bleiz038 | 0:cabc061cb9e7 | 11 | float K=1; |
Bleiz038 | 0:cabc061cb9e7 | 12 | Serial pc(USBTX, USBRX); |
Bleiz038 | 0:cabc061cb9e7 | 13 | char x; |
Bleiz038 | 0:cabc061cb9e7 | 14 | |
Bleiz038 | 0:cabc061cb9e7 | 15 | void regulation() { |
Bleiz038 | 0:cabc061cb9e7 | 16 | T=330*Vcapt; |
Bleiz038 | 0:cabc061cb9e7 | 17 | E=Tc-T; |
Bleiz038 | 0:cabc061cb9e7 | 18 | Vcde=K*E; |
Bleiz038 | 0:cabc061cb9e7 | 19 | if(Vcde>1){ |
Bleiz038 | 0:cabc061cb9e7 | 20 | Vcde=1; |
Bleiz038 | 0:cabc061cb9e7 | 21 | } |
Bleiz038 | 0:cabc061cb9e7 | 22 | if(Vcde<0){ |
Bleiz038 | 0:cabc061cb9e7 | 23 | Vcde=0; |
Bleiz038 | 0:cabc061cb9e7 | 24 | } |
Bleiz038 | 0:cabc061cb9e7 | 25 | } |
Bleiz038 | 0:cabc061cb9e7 | 26 | |
Bleiz038 | 0:cabc061cb9e7 | 27 | int main(){ |
Bleiz038 | 0:cabc061cb9e7 | 28 | cadence.attach(®ulation,0.001); |
Bleiz038 | 0:cabc061cb9e7 | 29 | while (1){ |
Bleiz038 | 0:cabc061cb9e7 | 30 | if (pc.readable()){ |
Bleiz038 | 0:cabc061cb9e7 | 31 | x= pc.getc(); |
Bleiz038 | 0:cabc061cb9e7 | 32 | if (x=='p'){ |
Bleiz038 | 0:cabc061cb9e7 | 33 | Tc++; |
Bleiz038 | 0:cabc061cb9e7 | 34 | } |
Bleiz038 | 0:cabc061cb9e7 | 35 | if (x=='m'){ |
Bleiz038 | 0:cabc061cb9e7 | 36 | Tc--; |
Bleiz038 | 0:cabc061cb9e7 | 37 | } |
Bleiz038 | 0:cabc061cb9e7 | 38 | } |
Bleiz038 | 0:cabc061cb9e7 | 39 | K = 0.1; |
Bleiz038 | 0:cabc061cb9e7 | 40 | lcd.cls(); |
Bleiz038 | 0:cabc061cb9e7 | 41 | lcd.locate(0,0); |
Bleiz038 | 0:cabc061cb9e7 | 42 | lcd.printf("Temprature : %4.3f",T); |
Bleiz038 | 0:cabc061cb9e7 | 43 | lcd.locate(0,8); |
Bleiz038 | 0:cabc061cb9e7 | 44 | lcd.printf("Tc : %d",Tc); |
Bleiz038 | 0:cabc061cb9e7 | 45 | lcd.locate(0,16); |
Bleiz038 | 0:cabc061cb9e7 | 46 | lcd.printf("K : %4.2f",K); |
Bleiz038 | 0:cabc061cb9e7 | 47 | wait(0.1); |
Bleiz038 | 0:cabc061cb9e7 | 48 | } |
Bleiz038 | 0:cabc061cb9e7 | 49 | } |