Konstrukcijski rad, simulator rada uređaja za osiguranje željezničko-cestovnog prijelaza

Dependencies:   mbed TextLCD ULN2003_StepperDriver

Simulator rada uređaja za osiguranje željezničko-cestovnog prijelaza

1. Uvod

Uređaji za osiguranje željezničko-cestovnih prijelaza (ŽCP) ugrađuju se na željezničke pruge kako bi se umanjila mogućnost naleta vlaka na cestovna vozila ili pješake. Pri tome takvi uređaji moraju udovoljiti strogim tehničkim uvjetima za siguran rad. Ovaj konstrukcijski rad daje prikaz automatskog uređaja za osiguranje ŽCP-a na otvorenoj pruzi. Automatski uređaj uključuje i isključuje sam vlak prelaskom preko uključno-isključnih elemenata.

2. Opis 2.1. Elementi simulatora

Uređaj koji je simuliran ovim konstrukcijskim radom sastoji se od sljedećih osnovnih funkcionalnih elemenata: • središnja upravljačka i nadzorna jedinica • uključni i isključni elemanti • cestovni svjetlosni i zvučni signali • postavljač polubranika • nadzorno sučelje.

Središnja upravljačko-nadzorna jedinica je MBED mikroupravljač NUCLEO F411RE. Na modul NUCLEO dodani su ulazno-izlazni elementi: • 3 reed releja za uključenje i isključenje uređaja • 4 LED za cestovne signale (dva signala) • piezzo zvučnik • integrirani krug ULN2003 za upravljanje stepper motorom • stepper motor 17PM-M012 • LCD 16x2 s I2C komunikacijom • LED za javljanje stanja uređaja uključenje, isključenje, kvar, smetnja • tipkalo za reset kvara i smetnje.

2.2. Način rada

Dovođenjem napona napajanja uređaj ja uključen u osnovnom stanju u kojem su svjetlosni signali i zvučnik isključeni, a motka polubranika u gornjem položaju. Aktiviranjem jednog od releja uključenja (k_uklj1 ili k_uklj2) uključuju se trepćuće svjetlo na cestovnim signali i zvučnik. Nakon proteka vremena predzvonjenja (potrebno da prijelaz napuste vozila i pješaci) pokreće se motor i postavlja motku polubranika u donji položaj kako bi se zaštitio prijelaz. Uređaj ostaje u ovom stanju sve dok se ne aktivira isključni relej ili dok ne protekne programirano vrijeme uključenog stanja. Pojavom jednog od navedenih uvjeta pokreće se motor i postavlja motku polubranika u gornji položaj, a nakon toga se isključuju svjetlosni signali. Po isključenju uređaj ne dolazi odmah u osnovno stanje već ostaje u stanju u kojem se ne može uključiti aktiviranjem uključnih elemenata kako bi se spriječilo ponovno uključenje kad se aktivira (prolaskom vlaka) uključni element u odlaznom smjeru (element koji nije uključio. Osnovno stanje nastaje kada se aktivira uključni element u odlaznom smjeru ili istekom programiranog vremena nakon čega je uređaj spreman za novo uključenje.

Funkcija kvara uključuje stanje „kvar“ u slučaju: • aktiviranja isključnog elementa za vrijeme osnovnog stanja • loma motke polubranika • struje LED izvan zadanog prozora Funkcija smetnje uključuje stanje „smetnja“ u slučaju: • automatskog isključenja uređaja nakon isteka vremena bez aktiviranja isključnog elementa • automatskog osnovnog stanja nakon isteka vremena bez aktiviranja uključnog elementa

Na LCD se prikazuju broj nastalih smetnji, broj nastalih kvarova te aktivno stanje smetnje i kvara. Prijenos informacija na LCD odvija se I2C komunikacijom. Kod uređaja ŽCP-a ugrađenih na pruzi ova javljanja koriste se za regulaciju prometa vlakova i za provjeru postupanja prometnih radnika u slučaju nastanka smetnje ili kvara.

3. Zaključak

U radu stvarnog uređaja pojavljuju se još neke situacije koje nisu obuhvaćene ovim konstrukcijskim radom, ali njihovo rješavanje nadilazi okvire ovog projektnog zadatka.

Committer:
dkrajacic
Date:
Thu Nov 14 16:39:38 2019 +0000
Revision:
0:e1ee9ea8436b
Child:
1:a49b3c29aeb2
Verzija 0.0 od 14.11.2019.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
dkrajacic 0:e1ee9ea8436b 1 #include "mbed.h"
dkrajacic 0:e1ee9ea8436b 2 #include "TextLCD.h" //ovo je head za LCD
dkrajacic 0:e1ee9ea8436b 3 #include "ULN2003.h" //ovo je head za motor
dkrajacic 0:e1ee9ea8436b 4
dkrajacic 0:e1ee9ea8436b 5 Serial pc(USBTX, USBRX); // tx, rx
dkrajacic 0:e1ee9ea8436b 6 ULN2003 postavljac(PB_10, PB_4, PB_5, PB_3, 4096); //definiranje izlaza za stepper
dkrajacic 0:e1ee9ea8436b 7
dkrajacic 0:e1ee9ea8436b 8 I2C i2c_lcd(I2C_SDA, I2C_SCL); // SDA, SCL, I2C komunikacija za LCD
dkrajacic 0:e1ee9ea8436b 9 TextLCD_I2C lcd(&i2c_lcd, 0x4e, TextLCD::LCD16x2); // I2C bus, PCF8574 Slaveaddress, LCD Type; LCD na I2C komunikaciji:
dkrajacic 0:e1ee9ea8436b 10
dkrajacic 0:e1ee9ea8436b 11 //TextLCD lcd(PA_0, PA_1, PA_4, PB_0, PC_1, PC_0); // RS, E, D4-D7, LCDType=LCD16x2, BL=NC, E2=NC, LCDTCtrl=HD44780; spajanje lcd-a na pinove (ako zatreba)
dkrajacic 0:e1ee9ea8436b 12
dkrajacic 0:e1ee9ea8436b 13 //SPI spi_lcd(P_, P_NC, P_); // MOSI, MISO, SCLK; // SPI komunikacija (ako zatreba):
dkrajacic 0:e1ee9ea8436b 14
dkrajacic 0:e1ee9ea8436b 15 DigitalOut led1(PC_10); //LED c.s. 1-4
dkrajacic 0:e1ee9ea8436b 16 DigitalOut led2(PC_12);
dkrajacic 0:e1ee9ea8436b 17 DigitalOut led3(PA_6);
dkrajacic 0:e1ee9ea8436b 18 DigitalOut led4(PA_7);
dkrajacic 0:e1ee9ea8436b 19 DigitalOut ledi(PC_2); //LED stanja isključenja
dkrajacic 0:e1ee9ea8436b 20 DigitalOut ledu(PC_3); //LED stanja uključeno
dkrajacic 0:e1ee9ea8436b 21 DigitalOut ledk(PA_1); //LED kvara
dkrajacic 0:e1ee9ea8436b 22
dkrajacic 0:e1ee9ea8436b 23 //Analogni ulazi za mjerenje struje:
dkrajacic 0:e1ee9ea8436b 24 AnalogIn strujaCS1(PC_0);
dkrajacic 0:e1ee9ea8436b 25 AnalogIn strujaCS2(PC_1);
dkrajacic 0:e1ee9ea8436b 26 AnalogIn strujaCS3(PB_0);
dkrajacic 0:e1ee9ea8436b 27 AnalogIn strujaCS4(PA_4);
dkrajacic 0:e1ee9ea8436b 28 //Interrupt pinovi:
dkrajacic 0:e1ee9ea8436b 29 InterruptIn k_uklj1(PA_13); //uklj. kontakt 1
dkrajacic 0:e1ee9ea8436b 30 InterruptIn k_uklj2(PA_14); //uklj. kontakt 2
dkrajacic 0:e1ee9ea8436b 31 InterruptIn k_isklj(PA_15); //isklj. kontakt
dkrajacic 0:e1ee9ea8436b 32 InterruptIn kv_isklj(PD_2); //isključenje kvara (tipka)
dkrajacic 0:e1ee9ea8436b 33
dkrajacic 0:e1ee9ea8436b 34 PwmOut zvono1(PC_6); //pinovi za zvona
dkrajacic 0:e1ee9ea8436b 35 PwmOut zvono2(PC_8);
dkrajacic 0:e1ee9ea8436b 36
dkrajacic 0:e1ee9ea8436b 37 //Timeri:
dkrajacic 0:e1ee9ea8436b 38 Timer osnovno; //za vraćanje u osnovno nakon isključenja
dkrajacic 0:e1ee9ea8436b 39 Ticker tcs; //ticker za blink signala
dkrajacic 0:e1ee9ea8436b 40 Timeout Tukljucenje; //time out za trajanje uključenja
dkrajacic 0:e1ee9ea8436b 41 Timer debounce; //timer za debounce
dkrajacic 0:e1ee9ea8436b 42 Ticker mjere; //ticker za mjerenje struje LED
dkrajacic 0:e1ee9ea8436b 43 Timer osovine; //timer za blokadu osnovnog stanja za više osovina
dkrajacic 0:e1ee9ea8436b 44 Ticker ispis_LCD;
dkrajacic 0:e1ee9ea8436b 45 //Varijable:
dkrajacic 0:e1ee9ea8436b 46 bool uklj1=0; //uključenje po kontaktu 1
dkrajacic 0:e1ee9ea8436b 47 bool uklj2=0; //uključenje po kontaktu 2
dkrajacic 0:e1ee9ea8436b 48 bool isklj=0; //isključenje po isključnom kontaktu
dkrajacic 0:e1ee9ea8436b 49 bool kvar=0; //kvar: stanje ima-nema
dkrajacic 0:e1ee9ea8436b 50 bool smetnja=0; //smetnja: stanje ima-nema
dkrajacic 0:e1ee9ea8436b 51 int bkvar=0; //brojač kvarova
dkrajacic 0:e1ee9ea8436b 52 int bsmetnja=0; //brojač smetnji
dkrajacic 0:e1ee9ea8436b 53 bool upis_k=0; //pomoćna varijabla za upis kvara na LCD samo kad se poajvi kvar)
dkrajacic 0:e1ee9ea8436b 54 bool upis_s=0; //pomoćna varijabla za upis smetnje na LCD samo kad se poajvi)
dkrajacic 0:e1ee9ea8436b 55 char s_aktiv; //varijabla za ispis aktivnog kvara na LCD
dkrajacic 0:e1ee9ea8436b 56 char k_aktiv; //varijabla za ispis aktivnog kvara na LCD
dkrajacic 0:e1ee9ea8436b 57 bool deaktiv_lcd=0; //varijabla za ispis na LCD nakon poništenja kvara/smetnje
dkrajacic 0:e1ee9ea8436b 58 bool p_gore=0; //pomoćna varijabla za dizanje postavljača kod isključenja
dkrajacic 0:e1ee9ea8436b 59 float struja1; //varijable vrijednosti analognog ulaza za kontrolu LED CS
dkrajacic 0:e1ee9ea8436b 60 float struja2;
dkrajacic 0:e1ee9ea8436b 61 float struja3;
dkrajacic 0:e1ee9ea8436b 62 float struja4;
dkrajacic 0:e1ee9ea8436b 63 bool U=0; //pomoćna varijabla za uključenje
dkrajacic 0:e1ee9ea8436b 64 bool aisk=0; //pomoćna varijabla za automatsko isključenje (vremensko)
dkrajacic 0:e1ee9ea8436b 65
dkrajacic 0:e1ee9ea8436b 66 void ukljucenje1(); //funkcija (potprogram) uključenja sa strane 1
dkrajacic 0:e1ee9ea8436b 67 void ukljucenje2(); //funkcija (potprogram) za uključenje sa strane 2
dkrajacic 0:e1ee9ea8436b 68 void iskljucenje(); //funkcija (potpogram) za isključenje
dkrajacic 0:e1ee9ea8436b 69 void kvar_lcd(void); //funkcija za ispis na lcd
dkrajacic 0:e1ee9ea8436b 70 void kvar_isklj(void); //funkcija za kvar kod aktivacije isklj. kontakta
dkrajacic 0:e1ee9ea8436b 71 void postav_gore(void); //funkcija za dizanje motke
dkrajacic 0:e1ee9ea8436b 72 void postav_dolje(void); //funkcija za spuštanje motke
dkrajacic 0:e1ee9ea8436b 73 void cs(void); //funkcija za cestovni signal
dkrajacic 0:e1ee9ea8436b 74 void upis_kvara(); //funkcija ispisa na LCD
dkrajacic 0:e1ee9ea8436b 75 void zvona(); //funkcija za buzzer
dkrajacic 0:e1ee9ea8436b 76 void pr_zv(); //gašenje zvona
dkrajacic 0:e1ee9ea8436b 77 void mjerenja(); //funkcija za struje LED
dkrajacic 0:e1ee9ea8436b 78 void T_iskljucenje(); //funkcija za automatsko isključenje (vremensko)
dkrajacic 0:e1ee9ea8436b 79 void osnovno_st();
dkrajacic 0:e1ee9ea8436b 80
dkrajacic 0:e1ee9ea8436b 81 int main() {
dkrajacic 0:e1ee9ea8436b 82 lcd.setBacklight(TextLCD::LightOn); //uključenje pozadinskog svjetla na LCD
dkrajacic 0:e1ee9ea8436b 83
dkrajacic 0:e1ee9ea8436b 84 k_uklj1.mode(PullDown); //konfiguracija tastera na PullDown
dkrajacic 0:e1ee9ea8436b 85 k_uklj2.mode(PullDown);
dkrajacic 0:e1ee9ea8436b 86 k_isklj.mode(PullDown);
dkrajacic 0:e1ee9ea8436b 87 kv_isklj.mode(PullDown);
dkrajacic 0:e1ee9ea8436b 88
dkrajacic 0:e1ee9ea8436b 89 led1=0; led2=0;
dkrajacic 0:e1ee9ea8436b 90
dkrajacic 0:e1ee9ea8436b 91 lcd.setCursor(TextLCD::CurOn_BlkOn); // Uključenje i blinkanje kursora na LCD
dkrajacic 0:e1ee9ea8436b 92
dkrajacic 0:e1ee9ea8436b 93 //debounce.start();
dkrajacic 0:e1ee9ea8436b 94 //konfiguracija interrupt kontakata na uzlazni/silazni brid
dkrajacic 0:e1ee9ea8436b 95 k_uklj1.rise(&ukljucenje1);
dkrajacic 0:e1ee9ea8436b 96 k_uklj2.rise(&ukljucenje2);
dkrajacic 0:e1ee9ea8436b 97 k_isklj.fall(&iskljucenje);
dkrajacic 0:e1ee9ea8436b 98 kv_isklj.fall(&kvar_isklj);
dkrajacic 0:e1ee9ea8436b 99
dkrajacic 0:e1ee9ea8436b 100 lcd.cls(); //čišćenje displeja
dkrajacic 0:e1ee9ea8436b 101 lcd.printf("Kvar %i\nSmetnja %i", bkvar, bsmetnja); //prikaz broja kvara i smetnje na lcd
dkrajacic 0:e1ee9ea8436b 102
dkrajacic 0:e1ee9ea8436b 103 //glavna petlja
dkrajacic 0:e1ee9ea8436b 104 while(1) {
dkrajacic 0:e1ee9ea8436b 105 //uvjeti za LED uključenja, isključenja i kvara
dkrajacic 0:e1ee9ea8436b 106 if(uklj1==1 || uklj2==1) {
dkrajacic 0:e1ee9ea8436b 107 ledu=1;
dkrajacic 0:e1ee9ea8436b 108 }
dkrajacic 0:e1ee9ea8436b 109 else {
dkrajacic 0:e1ee9ea8436b 110 ledu=0;
dkrajacic 0:e1ee9ea8436b 111 }
dkrajacic 0:e1ee9ea8436b 112 if(isklj==1) {
dkrajacic 0:e1ee9ea8436b 113 ledi=1;
dkrajacic 0:e1ee9ea8436b 114 }
dkrajacic 0:e1ee9ea8436b 115 else {
dkrajacic 0:e1ee9ea8436b 116 ledi=0;
dkrajacic 0:e1ee9ea8436b 117 }
dkrajacic 0:e1ee9ea8436b 118 if(kvar==1) {
dkrajacic 0:e1ee9ea8436b 119 ledk=1;}
dkrajacic 0:e1ee9ea8436b 120 else {
dkrajacic 0:e1ee9ea8436b 121 ledk=0;}
dkrajacic 0:e1ee9ea8436b 122
dkrajacic 0:e1ee9ea8436b 123
dkrajacic 0:e1ee9ea8436b 124 //uključenje:
dkrajacic 0:e1ee9ea8436b 125
dkrajacic 0:e1ee9ea8436b 126 if((uklj1==1 || uklj2==1) && isklj==0){
dkrajacic 0:e1ee9ea8436b 127
dkrajacic 0:e1ee9ea8436b 128
dkrajacic 0:e1ee9ea8436b 129 //mjerenja();
dkrajacic 0:e1ee9ea8436b 130 if(U==0){
dkrajacic 0:e1ee9ea8436b 131
dkrajacic 0:e1ee9ea8436b 132 zvona();
dkrajacic 0:e1ee9ea8436b 133 led1=1;
dkrajacic 0:e1ee9ea8436b 134 tcs.attach(&cs, 0.5);
dkrajacic 0:e1ee9ea8436b 135 //mjere.attach(&mjerenja, 1.5);
dkrajacic 0:e1ee9ea8436b 136 //start tickera za CS, treptanje dioda
dkrajacic 0:e1ee9ea8436b 137 Tukljucenje.attach(&T_iskljucenje, 20.0);
dkrajacic 0:e1ee9ea8436b 138 wait(6); //predzvonjenje
dkrajacic 0:e1ee9ea8436b 139 postav_dolje();
dkrajacic 0:e1ee9ea8436b 140 pr_zv();
dkrajacic 0:e1ee9ea8436b 141 U=1;
dkrajacic 0:e1ee9ea8436b 142 }
dkrajacic 0:e1ee9ea8436b 143 }
dkrajacic 0:e1ee9ea8436b 144 //Automatsko isključenje ako je proteklo vrijeme
dkrajacic 0:e1ee9ea8436b 145 if(aisk==1) {
dkrajacic 0:e1ee9ea8436b 146
dkrajacic 0:e1ee9ea8436b 147 smetnja=1;
dkrajacic 0:e1ee9ea8436b 148 bsmetnja=bsmetnja+1;
dkrajacic 0:e1ee9ea8436b 149 postav_gore();
dkrajacic 0:e1ee9ea8436b 150 wait(0.2);
dkrajacic 0:e1ee9ea8436b 151 Tukljucenje.detach();
dkrajacic 0:e1ee9ea8436b 152 //mjere.detach();
dkrajacic 0:e1ee9ea8436b 153 tcs.detach(); //isključenje signala
dkrajacic 0:e1ee9ea8436b 154 led1=0;
dkrajacic 0:e1ee9ea8436b 155 led2=0;
dkrajacic 0:e1ee9ea8436b 156 uklj1=0;
dkrajacic 0:e1ee9ea8436b 157 uklj2=0;
dkrajacic 0:e1ee9ea8436b 158 U=0;
dkrajacic 0:e1ee9ea8436b 159 aisk=0;
dkrajacic 0:e1ee9ea8436b 160 }
dkrajacic 0:e1ee9ea8436b 161 //Isključenje na isključnom kontaktu
dkrajacic 0:e1ee9ea8436b 162
dkrajacic 0:e1ee9ea8436b 163 if((uklj1==1 || uklj2==1) && (isklj==1)) { //isključenje za stranu 1
dkrajacic 0:e1ee9ea8436b 164 Tukljucenje.detach();
dkrajacic 0:e1ee9ea8436b 165 if(p_gore==0) {
dkrajacic 0:e1ee9ea8436b 166 postav_gore();
dkrajacic 0:e1ee9ea8436b 167 wait(0.1);
dkrajacic 0:e1ee9ea8436b 168 p_gore=1;
dkrajacic 0:e1ee9ea8436b 169 }
dkrajacic 0:e1ee9ea8436b 170
dkrajacic 0:e1ee9ea8436b 171 tcs.detach(); //isključenje signala
dkrajacic 0:e1ee9ea8436b 172 led1=0;
dkrajacic 0:e1ee9ea8436b 173 led2=0;
dkrajacic 0:e1ee9ea8436b 174
dkrajacic 0:e1ee9ea8436b 175 osnovno.start(); //pokretanje timera osnovno
dkrajacic 0:e1ee9ea8436b 176 }
dkrajacic 0:e1ee9ea8436b 177 //Dovođenje u osnovno stanje
dkrajacic 0:e1ee9ea8436b 178
dkrajacic 0:e1ee9ea8436b 179 if(osnovno.read()>=20 || (uklj2==1 && uklj1==1)) {
dkrajacic 0:e1ee9ea8436b 180 if(osnovno.read()>=20) {
dkrajacic 0:e1ee9ea8436b 181 smetnja=1;
dkrajacic 0:e1ee9ea8436b 182 bsmetnja=bsmetnja+1;
dkrajacic 0:e1ee9ea8436b 183 osnovno_st();
dkrajacic 0:e1ee9ea8436b 184 }
dkrajacic 0:e1ee9ea8436b 185 else {
dkrajacic 0:e1ee9ea8436b 186 osovine.start();
dkrajacic 0:e1ee9ea8436b 187 if(osovine.read()>=2) {
dkrajacic 0:e1ee9ea8436b 188 osnovno_st();
dkrajacic 0:e1ee9ea8436b 189 }
dkrajacic 0:e1ee9ea8436b 190 }
dkrajacic 0:e1ee9ea8436b 191 }
dkrajacic 0:e1ee9ea8436b 192
dkrajacic 0:e1ee9ea8436b 193 wait(0.1);
dkrajacic 0:e1ee9ea8436b 194 //Uključenje kvara kod aktivacije isklj. kontakta bez uključenja:
dkrajacic 0:e1ee9ea8436b 195
dkrajacic 0:e1ee9ea8436b 196 if((uklj1==0 && uklj2==0) && (isklj==1)) { //kvar kod isključnog kontakta bez uključenja
dkrajacic 0:e1ee9ea8436b 197 kvar=1;
dkrajacic 0:e1ee9ea8436b 198 }
dkrajacic 0:e1ee9ea8436b 199 kvar_lcd();
dkrajacic 0:e1ee9ea8436b 200 } //kraj while(1)
dkrajacic 0:e1ee9ea8436b 201 } //kraj int main()
dkrajacic 0:e1ee9ea8436b 202
dkrajacic 0:e1ee9ea8436b 203
dkrajacic 0:e1ee9ea8436b 204 void ukljucenje1(void){
dkrajacic 0:e1ee9ea8436b 205 uklj1=1;
dkrajacic 0:e1ee9ea8436b 206 osovine.reset();
dkrajacic 0:e1ee9ea8436b 207 if(uklj2==0) {
dkrajacic 0:e1ee9ea8436b 208 isklj=0;
dkrajacic 0:e1ee9ea8436b 209 }
dkrajacic 0:e1ee9ea8436b 210 ledu=1;
dkrajacic 0:e1ee9ea8436b 211 }
dkrajacic 0:e1ee9ea8436b 212
dkrajacic 0:e1ee9ea8436b 213 void ukljucenje2(void){
dkrajacic 0:e1ee9ea8436b 214 uklj2=1;
dkrajacic 0:e1ee9ea8436b 215 osovine.reset();
dkrajacic 0:e1ee9ea8436b 216 if(uklj1==0) {
dkrajacic 0:e1ee9ea8436b 217 isklj=0;
dkrajacic 0:e1ee9ea8436b 218 }
dkrajacic 0:e1ee9ea8436b 219 ledu=1;
dkrajacic 0:e1ee9ea8436b 220 }
dkrajacic 0:e1ee9ea8436b 221
dkrajacic 0:e1ee9ea8436b 222 void iskljucenje(void){
dkrajacic 0:e1ee9ea8436b 223 isklj=1;
dkrajacic 0:e1ee9ea8436b 224 ledi=1;
dkrajacic 0:e1ee9ea8436b 225 }
dkrajacic 0:e1ee9ea8436b 226
dkrajacic 0:e1ee9ea8436b 227 void kvar_lcd(void) {
dkrajacic 0:e1ee9ea8436b 228 if(kvar==1){
dkrajacic 0:e1ee9ea8436b 229 k_aktiv=65;
dkrajacic 0:e1ee9ea8436b 230 }
dkrajacic 0:e1ee9ea8436b 231 else {
dkrajacic 0:e1ee9ea8436b 232 k_aktiv=73;
dkrajacic 0:e1ee9ea8436b 233 }
dkrajacic 0:e1ee9ea8436b 234 if(kvar==1 && upis_k==0) {
dkrajacic 0:e1ee9ea8436b 235 bkvar=bkvar+1;
dkrajacic 0:e1ee9ea8436b 236 lcd.cls();
dkrajacic 0:e1ee9ea8436b 237 lcd.printf("Kvar %i %c\nSmetnja %i %c", bkvar, k_aktiv, bsmetnja, s_aktiv);
dkrajacic 0:e1ee9ea8436b 238 upis_k=1;
dkrajacic 0:e1ee9ea8436b 239 }
dkrajacic 0:e1ee9ea8436b 240 else if(kvar==0) {
dkrajacic 0:e1ee9ea8436b 241 upis_k=0;
dkrajacic 0:e1ee9ea8436b 242 }
dkrajacic 0:e1ee9ea8436b 243
dkrajacic 0:e1ee9ea8436b 244 if(smetnja==1){
dkrajacic 0:e1ee9ea8436b 245 s_aktiv=65;
dkrajacic 0:e1ee9ea8436b 246 }
dkrajacic 0:e1ee9ea8436b 247 else {
dkrajacic 0:e1ee9ea8436b 248 s_aktiv=73;
dkrajacic 0:e1ee9ea8436b 249 }
dkrajacic 0:e1ee9ea8436b 250 if(smetnja==1 && upis_s==0) { //ispis smetnje
dkrajacic 0:e1ee9ea8436b 251 //bsmetnja=bsmetnja+1;
dkrajacic 0:e1ee9ea8436b 252 lcd.cls();
dkrajacic 0:e1ee9ea8436b 253 lcd.printf("Kvar %i %c\nSmetnja %i %c", bkvar, k_aktiv, bsmetnja, s_aktiv);
dkrajacic 0:e1ee9ea8436b 254 upis_s=1;
dkrajacic 0:e1ee9ea8436b 255 }
dkrajacic 0:e1ee9ea8436b 256 else if(smetnja==0) {
dkrajacic 0:e1ee9ea8436b 257 upis_s=0;
dkrajacic 0:e1ee9ea8436b 258 }
dkrajacic 0:e1ee9ea8436b 259 if (deaktiv_lcd==1) {
dkrajacic 0:e1ee9ea8436b 260 lcd.cls();
dkrajacic 0:e1ee9ea8436b 261 lcd.printf("Kvar %i %c\nSmetnja %i %c", bkvar, k_aktiv, bsmetnja, s_aktiv);
dkrajacic 0:e1ee9ea8436b 262 deaktiv_lcd=0;
dkrajacic 0:e1ee9ea8436b 263 }
dkrajacic 0:e1ee9ea8436b 264 }
dkrajacic 0:e1ee9ea8436b 265
dkrajacic 0:e1ee9ea8436b 266
dkrajacic 0:e1ee9ea8436b 267 void kvar_isklj(void) {
dkrajacic 0:e1ee9ea8436b 268 if(uklj1==0 && uklj2==0)
dkrajacic 0:e1ee9ea8436b 269 kvar=0;
dkrajacic 0:e1ee9ea8436b 270 smetnja=0;
dkrajacic 0:e1ee9ea8436b 271 wait(0.2);
dkrajacic 0:e1ee9ea8436b 272 deaktiv_lcd=1;
dkrajacic 0:e1ee9ea8436b 273 }
dkrajacic 0:e1ee9ea8436b 274
dkrajacic 0:e1ee9ea8436b 275 void postav_dolje() {
dkrajacic 0:e1ee9ea8436b 276 postavljac.moveForward(100,20);
dkrajacic 0:e1ee9ea8436b 277 pr_zv();
dkrajacic 0:e1ee9ea8436b 278 }
dkrajacic 0:e1ee9ea8436b 279
dkrajacic 0:e1ee9ea8436b 280 void postav_gore() {
dkrajacic 0:e1ee9ea8436b 281 postavljac.moveReverse(100,15);
dkrajacic 0:e1ee9ea8436b 282 }
dkrajacic 0:e1ee9ea8436b 283
dkrajacic 0:e1ee9ea8436b 284 void cs(void) {
dkrajacic 0:e1ee9ea8436b 285 led1=!led1;
dkrajacic 0:e1ee9ea8436b 286 led2=!led2;
dkrajacic 0:e1ee9ea8436b 287 mjerenja();
dkrajacic 0:e1ee9ea8436b 288 }
dkrajacic 0:e1ee9ea8436b 289
dkrajacic 0:e1ee9ea8436b 290 void zvona() {
dkrajacic 0:e1ee9ea8436b 291 zvono1.period(1); // set PWM period to 10 ms
dkrajacic 0:e1ee9ea8436b 292 zvono1=0.5; // set duty cycle to 80%
dkrajacic 0:e1ee9ea8436b 293 zvono2.period(1); // set PWM period to 10 ms
dkrajacic 0:e1ee9ea8436b 294 zvono2=0.5; // set duty cycle to 80%
dkrajacic 0:e1ee9ea8436b 295 }
dkrajacic 0:e1ee9ea8436b 296
dkrajacic 0:e1ee9ea8436b 297 void pr_zv() {
dkrajacic 0:e1ee9ea8436b 298 zvono1=0;
dkrajacic 0:e1ee9ea8436b 299 zvono2=0;
dkrajacic 0:e1ee9ea8436b 300 }
dkrajacic 0:e1ee9ea8436b 301
dkrajacic 0:e1ee9ea8436b 302 void mjerenja() {
dkrajacic 0:e1ee9ea8436b 303
dkrajacic 0:e1ee9ea8436b 304 if(led1==1) {
dkrajacic 0:e1ee9ea8436b 305 struja1=strujaCS1;
dkrajacic 0:e1ee9ea8436b 306 struja3=strujaCS3;
dkrajacic 0:e1ee9ea8436b 307 if(struja1<=0.2f || struja1>=0.8f || struja3<=0.2f || struja3>=0.8f) {
dkrajacic 0:e1ee9ea8436b 308 kvar=1;
dkrajacic 0:e1ee9ea8436b 309 ledk=1;
dkrajacic 0:e1ee9ea8436b 310 }
dkrajacic 0:e1ee9ea8436b 311 }
dkrajacic 0:e1ee9ea8436b 312
dkrajacic 0:e1ee9ea8436b 313 if(led2==1) {
dkrajacic 0:e1ee9ea8436b 314 struja2=strujaCS2;
dkrajacic 0:e1ee9ea8436b 315 struja4=strujaCS4;
dkrajacic 0:e1ee9ea8436b 316 if(struja2<=0.2f || struja2>=0.8f || struja4<=0.2f || struja4>=0.8f) {
dkrajacic 0:e1ee9ea8436b 317 kvar=1;
dkrajacic 0:e1ee9ea8436b 318 ledk=1;
dkrajacic 0:e1ee9ea8436b 319 }
dkrajacic 0:e1ee9ea8436b 320 }
dkrajacic 0:e1ee9ea8436b 321 if(uklj1==0 && uklj2==0){
dkrajacic 0:e1ee9ea8436b 322 mjere.detach();}
dkrajacic 0:e1ee9ea8436b 323 }
dkrajacic 0:e1ee9ea8436b 324
dkrajacic 0:e1ee9ea8436b 325 void T_iskljucenje() {
dkrajacic 0:e1ee9ea8436b 326 aisk=1;
dkrajacic 0:e1ee9ea8436b 327 }
dkrajacic 0:e1ee9ea8436b 328
dkrajacic 0:e1ee9ea8436b 329 void osnovno_st() {
dkrajacic 0:e1ee9ea8436b 330
dkrajacic 0:e1ee9ea8436b 331 uklj1=0;
dkrajacic 0:e1ee9ea8436b 332 uklj2=0;
dkrajacic 0:e1ee9ea8436b 333 isklj=0;
dkrajacic 0:e1ee9ea8436b 334 wait(0.05);
dkrajacic 0:e1ee9ea8436b 335 U=0;
dkrajacic 0:e1ee9ea8436b 336 osnovno.stop();
dkrajacic 0:e1ee9ea8436b 337 osnovno.reset();
dkrajacic 0:e1ee9ea8436b 338 p_gore=0;
dkrajacic 0:e1ee9ea8436b 339 osovine.stop();
dkrajacic 0:e1ee9ea8436b 340 }
dkrajacic 0:e1ee9ea8436b 341
dkrajacic 0:e1ee9ea8436b 342