Simulacija rada Žcp-a
Dependencies: mbed TextLCD ULN2003_StepperDriver
Revision 1:a49b3c29aeb2, committed 2019-11-16
- Comitter:
- dkrajacic
- Date:
- Sat Nov 16 11:03:27 2019 +0000
- Parent:
- 0:e1ee9ea8436b
- Commit message:
- Konstrukcijski rad - zadnja verzija
Changed in this revision
ULN2003_StepperDriver.lib | Show annotated file Show diff for this revision Revisions of this file |
main.cpp | Show annotated file Show diff for this revision Revisions of this file |
diff -r e1ee9ea8436b -r a49b3c29aeb2 ULN2003_StepperDriver.lib --- a/ULN2003_StepperDriver.lib Thu Nov 14 16:39:38 2019 +0000 +++ b/ULN2003_StepperDriver.lib Sat Nov 16 11:03:27 2019 +0000 @@ -1,1 +1,1 @@ -https://os.mbed.com/users/dkrajacic/code/ULN2003_StepperDriver/#ab23c6e49545 +https://os.mbed.com/teams/TVZ2019/code/ULN2003_StepperDriver/#e1500f54f6a4
diff -r e1ee9ea8436b -r a49b3c29aeb2 main.cpp --- a/main.cpp Thu Nov 14 16:39:38 2019 +0000 +++ b/main.cpp Sat Nov 16 11:03:27 2019 +0000 @@ -19,6 +19,8 @@ DigitalOut ledi(PC_2); //LED stanja isključenja DigitalOut ledu(PC_3); //LED stanja uključeno DigitalOut ledk(PA_1); //LED kvara +DigitalOut leds(PA_0); //LED kvara +DigitalIn gp(PB_1); //LED k //Analogni ulazi za mjerenje struje: AnalogIn strujaCS1(PC_0); @@ -30,9 +32,11 @@ InterruptIn k_uklj2(PA_14); //uklj. kontakt 2 InterruptIn k_isklj(PA_15); //isklj. kontakt InterruptIn kv_isklj(PD_2); //isključenje kvara (tipka) +InterruptIn lom(PA_8); PwmOut zvono1(PC_6); //pinovi za zvona -PwmOut zvono2(PC_8); +PwmOut zvono2(PC_8); +PwmOut alarm(PA_9); //Timeri: Timer osnovno; //za vraćanje u osnovno nakon isključenja @@ -62,6 +66,8 @@ float struja4; bool U=0; //pomoćna varijabla za uključenje bool aisk=0; //pomoćna varijabla za automatsko isključenje (vremensko) +bool kvar_l=0; +bool alarm_i=0; void ukljucenje1(); //funkcija (potprogram) uključenja sa strane 1 void ukljucenje2(); //funkcija (potprogram) za uključenje sa strane 2 @@ -77,6 +83,9 @@ void mjerenja(); //funkcija za struje LED void T_iskljucenje(); //funkcija za automatsko isključenje (vremensko) void osnovno_st(); +void lom_m(); +void lom_m_k(); +void alarm_u(); int main() { lcd.setBacklight(TextLCD::LightOn); //uključenje pozadinskog svjetla na LCD @@ -96,10 +105,17 @@ k_uklj2.rise(&ukljucenje2); k_isklj.fall(&iskljucenje); kv_isklj.fall(&kvar_isklj); + lom.fall(&lom_m); + lom.rise(&lom_m_k); lcd.cls(); //čišćenje displeja lcd.printf("Kvar %i\nSmetnja %i", bkvar, bsmetnja); //prikaz broja kvara i smetnje na lcd + if(gp==0){ + postav_gore(); + wait(8); + } + //glavna petlja while(1) { //uvjeti za LED uključenja, isključenja i kvara @@ -118,7 +134,12 @@ if(kvar==1) { ledk=1;} else { - ledk=0;} + ledk=0; + alarm_i=0;} + if(smetnja==1) { + leds=1;} + else { + leds=0;} //uključenje: @@ -130,12 +151,13 @@ if(U==0){ zvona(); + led3=1; led1=1; tcs.attach(&cs, 0.5); //mjere.attach(&mjerenja, 1.5); //start tickera za CS, treptanje dioda - Tukljucenje.attach(&T_iskljucenje, 20.0); - wait(6); //predzvonjenje + Tukljucenje.attach(&T_iskljucenje, 40.0); + wait(8); //predzvonjenje postav_dolje(); pr_zv(); U=1; @@ -145,6 +167,7 @@ if(aisk==1) { smetnja=1; + leds=1; bsmetnja=bsmetnja+1; postav_gore(); wait(0.2); @@ -152,35 +175,49 @@ //mjere.detach(); tcs.detach(); //isključenje signala led1=0; - led2=0; + led2=0; + led3=0; + led4=0; uklj1=0; uklj2=0; U=0; aisk=0; + alarm_u(); + if(gp==0){ + kvar=1; + } } //Isključenje na isključnom kontaktu if((uklj1==1 || uklj2==1) && (isklj==1)) { //isključenje za stranu 1 - Tukljucenje.detach(); + + wait(2); if(p_gore==0) { postav_gore(); wait(0.1); p_gore=1; + if(gp==0){ + kvar=1; } - + } + Tukljucenje.detach(); tcs.detach(); //isključenje signala led1=0; - led2=0; + led2=0; + led3=0; + led4=0; osnovno.start(); //pokretanje timera osnovno } //Dovođenje u osnovno stanje - if(osnovno.read()>=20 || (uklj2==1 && uklj1==1)) { - if(osnovno.read()>=20) { + if(osnovno.read()>=40 || (uklj2==1 && uklj1==1)) { + if(osnovno.read()>=40) { smetnja=1; + leds=1; bsmetnja=bsmetnja+1; osnovno_st(); + alarm_u(); } else { osovine.start(); @@ -193,9 +230,12 @@ wait(0.1); //Uključenje kvara kod aktivacije isklj. kontakta bez uključenja: - if((uklj1==0 && uklj2==0) && (isklj==1)) { //kvar kod isključnog kontakta bez uključenja + if(((uklj1==0 && uklj2==0) && (isklj==1)) || lom==0){ //kvar kod isključnog kontakta bez uključenja kvar=1; + alarm_u(); + } + kvar_lcd(); } //kraj while(1) } //kraj int main() @@ -265,11 +305,17 @@ void kvar_isklj(void) { - if(uklj1==0 && uklj2==0) - kvar=0; + + if(uklj1==0 && uklj2==0) { + if(kvar_l==0) { + kvar=0; + } smetnja=0; wait(0.2); deaktiv_lcd=1; + //alarm=0; + alarm_u(); + } } void postav_dolje() { @@ -284,6 +330,8 @@ void cs(void) { led1=!led1; led2=!led2; + led3=!led3; + led4=!led4; mjerenja(); } @@ -304,18 +352,21 @@ if(led1==1) { struja1=strujaCS1; struja3=strujaCS3; - if(struja1<=0.2f || struja1>=0.8f || struja3<=0.2f || struja3>=0.8f) { + if(struja1<=0.2f || struja1>=0.55f || struja3<=0.2f || struja3>=0.55f) { kvar=1; ledk=1; + alarm_u(); } } if(led2==1) { struja2=strujaCS2; struja4=strujaCS4; - if(struja2<=0.2f || struja2>=0.8f || struja4<=0.2f || struja4>=0.8f) { + if(struja2<=0.2f || struja2>=0.55f || struja4<=0.2f || struja4>=0.55f) { kvar=1; ledk=1; + alarm_i=1; + alarm_u(); } } if(uklj1==0 && uklj2==0){ @@ -337,6 +388,30 @@ osnovno.reset(); p_gore=0; osovine.stop(); - } + } + +void lom_m() { + kvar=1; + kvar_l=1; + alarm_u(); + } + +void lom_m_k() { + kvar_l=0; + } + +void alarm_u() { + if(kvar==1 && alarm_i==0) { + alarm.period(2); // set PWM period to 10 ms + alarm=0.9; + wait(0.1); + } + + else { + alarm=0;} + + } + + \ No newline at end of file