Control PID para seguimiento de consigna de Horno, entrada de parámetros a través de un encoder.
Dependencies: Debounced QEI RTC-DS1307 TextLCD mbed
Fork of Reloj_alarma by
main.cpp@2:a4b764672482, 2018-06-05 (annotated)
- Committer:
- SantiagoUnal97
- Date:
- Tue Jun 05 05:39:25 2018 +0000
- Revision:
- 2:a4b764672482
- Parent:
- 1:0639f31dd59f
Control PID para Horno
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
SantiagoUnal97 | 2:a4b764672482 | 1 | /* |
SantiagoUnal97 | 2:a4b764672482 | 2 | ESTE PROGRAMA PERMITE CONFIGURAR EL SIGUMINETO DE UNA CONSIGNA A TRAVES DE CONTROLADOR PID,PARA UN HORNO DE REFLUJO |
SantiagoUnal97 | 2:a4b764672482 | 3 | SE USA LA SALIDA ANALOGA Y PWM DE LA TARJETA, SEGUN SE DESEE. |
SantiagoUnal97 | 2:a4b764672482 | 4 | ESTA TAREA FUE DESARROLLADA POR SANTIAGO GOMEZ ESTRADA,JUAN FERNANDO ZAPATA Y MATEO |
SantiagoUnal97 | 2:a4b764672482 | 5 | PARA LA MATERIA DE PROCESADORES DE LA UNIVERSIDAD NACIONAL DE COLOMBIA SEDE MEDELLÍN, PRIMER SEMESTRE DEL AÑO 2018 |
SantiagoUnal97 | 2:a4b764672482 | 6 | */ |
Jepalacioh | 0:c2ed510ee88d | 7 | #include "mbed.h" |
Jepalacioh | 0:c2ed510ee88d | 8 | #include "DebouncedIn.h" |
Jepalacioh | 0:c2ed510ee88d | 9 | #include "TextLCD.h" |
Jepalacioh | 0:c2ed510ee88d | 10 | #include "QEI.h" |
Jepalacioh | 0:c2ed510ee88d | 11 | #include "Rtc_Ds1307.h" |
SantiagoUnal97 | 2:a4b764672482 | 12 | #include "string.h" |
SantiagoUnal97 | 2:a4b764672482 | 13 | |
SantiagoUnal97 | 2:a4b764672482 | 14 | Serial pc(USBTX, USBRX); |
Jepalacioh | 0:c2ed510ee88d | 15 | |
Jepalacioh | 0:c2ed510ee88d | 16 | TextLCD lcd(PTB10, PTB11, PTE2, PTE3, PTE4, PTE5); // rs, e, d4-d7 |
Jepalacioh | 0:c2ed510ee88d | 17 | Rtc_Ds1307 rtc(PTE0, PTE1); |
Jepalacioh | 0:c2ed510ee88d | 18 | QEI wheel (PTA16, PTA17, NC, 48); |
SantiagoUnal97 | 2:a4b764672482 | 19 | DebouncedIn button_enco(PTC5); |
SantiagoUnal97 | 2:a4b764672482 | 20 | DigitalOut myled(LED3); |
SantiagoUnal97 | 2:a4b764672482 | 21 | AnalogIn y(PTB3);//entrada analoga |
SantiagoUnal97 | 2:a4b764672482 | 22 | AnalogOut u(PTE30);//salida analoga OJO solo se le pueden drenar 1.5mA en circuitos use un Buffer |
SantiagoUnal97 | 2:a4b764672482 | 23 | PwmOut Upwm(PTE29); |
Jepalacioh | 0:c2ed510ee88d | 24 | |
SantiagoUnal97 | 2:a4b764672482 | 25 | int dato; // tiempo de cada dato que se lee |
SantiagoUnal97 | 2:a4b764672482 | 26 | int pul_low; |
Jepalacioh | 0:c2ed510ee88d | 27 | |
SantiagoUnal97 | 2:a4b764672482 | 28 | char r; |
SantiagoUnal97 | 2:a4b764672482 | 29 | |
Jepalacioh | 0:c2ed510ee88d | 30 | |
SantiagoUnal97 | 2:a4b764672482 | 31 | int mode=0; |
SantiagoUnal97 | 2:a4b764672482 | 32 | int code; |
SantiagoUnal97 | 2:a4b764672482 | 33 | |
SantiagoUnal97 | 2:a4b764672482 | 34 | |
SantiagoUnal97 | 2:a4b764672482 | 35 | // |
Jepalacioh | 0:c2ed510ee88d | 36 | int C1=0x0C; |
tony63 | 1:0639f31dd59f | 37 | int m; |
Jepalacioh | 0:c2ed510ee88d | 38 | int Conf=0; // 0: Alarma y 1:Reloj |
Jepalacioh | 0:c2ed510ee88d | 39 | int Lugar=0; // Definen el punto en el cual va el programa |
Jepalacioh | 0:c2ed510ee88d | 40 | int i=0; |
SantiagoUnal97 | 2:a4b764672482 | 41 | int j=1; |
SantiagoUnal97 | 2:a4b764672482 | 42 | float periodo; |
SantiagoUnal97 | 2:a4b764672482 | 43 | float Frecuencia = 2000; |
SantiagoUnal97 | 2:a4b764672482 | 44 | int cont=0; |
Jepalacioh | 0:c2ed510ee88d | 45 | int visual=0; |
SantiagoUnal97 | 2:a4b764672482 | 46 | int alarma=0; |
SantiagoUnal97 | 2:a4b764672482 | 47 | float pid,o,ai,ad,ap,med,err; |
SantiagoUnal97 | 2:a4b764672482 | 48 | float err_v; |
SantiagoUnal97 | 2:a4b764672482 | 49 | int sp=0,Ki=0,Kp=0,Kd=0,pos=1; |
SantiagoUnal97 | 2:a4b764672482 | 50 | int t1=0,t2=0,t3=0,T1=0,T2=0,T3=0; |
Jepalacioh | 0:c2ed510ee88d | 51 | |
Jepalacioh | 0:c2ed510ee88d | 52 | int main() |
Jepalacioh | 0:c2ed510ee88d | 53 | { |
SantiagoUnal97 | 2:a4b764672482 | 54 | myled=1; |
SantiagoUnal97 | 2:a4b764672482 | 55 | j=1; |
SantiagoUnal97 | 2:a4b764672482 | 56 | Rtc_Ds1307::Time_rtc tm2 = {}; |
SantiagoUnal97 | 2:a4b764672482 | 57 | |
SantiagoUnal97 | 2:a4b764672482 | 58 | |
Jepalacioh | 0:c2ed510ee88d | 59 | lcd.cls(); |
Jepalacioh | 0:c2ed510ee88d | 60 | lcd.writeCommand(C1);//escribimos un comando segun el manual del modulo LCD |
Jepalacioh | 0:c2ed510ee88d | 61 | lcd.locate(0,0); |
SantiagoUnal97 | 2:a4b764672482 | 62 | lcd.printf("--Control --Consig"); |
Jepalacioh | 0:c2ed510ee88d | 63 | |
Jepalacioh | 0:c2ed510ee88d | 64 | periodo=(1/Frecuencia); |
SantiagoUnal97 | 2:a4b764672482 | 65 | Upwm.period(periodo); |
SantiagoUnal97 | 2:a4b764672482 | 66 | Upwm.pulsewidth(0); |
Jepalacioh | 0:c2ed510ee88d | 67 | |
SantiagoUnal97 | 2:a4b764672482 | 68 | |
Jepalacioh | 0:c2ed510ee88d | 69 | while(1) |
Jepalacioh | 0:c2ed510ee88d | 70 | { |
SantiagoUnal97 | 2:a4b764672482 | 71 | |
Jepalacioh | 0:c2ed510ee88d | 72 | switch (Lugar) |
Jepalacioh | 0:c2ed510ee88d | 73 | { |
Jepalacioh | 0:c2ed510ee88d | 74 | case 0: |
tony63 | 1:0639f31dd59f | 75 | m=wheel.getPulses(); // m son los datos del encoder |
Jepalacioh | 0:c2ed510ee88d | 76 | if(m!=0 && Conf==0){ |
Jepalacioh | 0:c2ed510ee88d | 77 | Conf=1; |
Jepalacioh | 0:c2ed510ee88d | 78 | wheel.reset(); |
Jepalacioh | 0:c2ed510ee88d | 79 | m=0; |
Jepalacioh | 0:c2ed510ee88d | 80 | } |
Jepalacioh | 0:c2ed510ee88d | 81 | |
SantiagoUnal97 | 2:a4b764672482 | 82 | if(m!=0 && Conf==1){ |
Jepalacioh | 0:c2ed510ee88d | 83 | Conf=0; |
Jepalacioh | 0:c2ed510ee88d | 84 | wheel.reset(); |
Jepalacioh | 0:c2ed510ee88d | 85 | m=0; |
Jepalacioh | 0:c2ed510ee88d | 86 | } |
Jepalacioh | 0:c2ed510ee88d | 87 | |
Jepalacioh | 0:c2ed510ee88d | 88 | if(Conf==0){ |
Jepalacioh | 0:c2ed510ee88d | 89 | |
Jepalacioh | 0:c2ed510ee88d | 90 | lcd.locate(11,0); |
Jepalacioh | 0:c2ed510ee88d | 91 | lcd.printf("-"); |
Jepalacioh | 0:c2ed510ee88d | 92 | lcd.locate(1,0); |
Jepalacioh | 0:c2ed510ee88d | 93 | lcd.printf(">"); |
Jepalacioh | 0:c2ed510ee88d | 94 | lcd.locate(0,1); |
Jepalacioh | 0:c2ed510ee88d | 95 | wait(0.1); |
Jepalacioh | 0:c2ed510ee88d | 96 | |
Jepalacioh | 0:c2ed510ee88d | 97 | } |
Jepalacioh | 0:c2ed510ee88d | 98 | |
Jepalacioh | 0:c2ed510ee88d | 99 | if(Conf==1){ |
Jepalacioh | 0:c2ed510ee88d | 100 | |
Jepalacioh | 0:c2ed510ee88d | 101 | lcd.locate(1,0); |
Jepalacioh | 0:c2ed510ee88d | 102 | lcd.printf("-"); |
Jepalacioh | 0:c2ed510ee88d | 103 | lcd.locate(11,0); |
Jepalacioh | 0:c2ed510ee88d | 104 | lcd.printf(">"); |
Jepalacioh | 0:c2ed510ee88d | 105 | lcd.locate(0,1); |
Jepalacioh | 0:c2ed510ee88d | 106 | wait(0.1); |
Jepalacioh | 0:c2ed510ee88d | 107 | } |
Jepalacioh | 0:c2ed510ee88d | 108 | |
tony63 | 1:0639f31dd59f | 109 | if (button_enco.falling()){ //si se pulsa boton encoder |
Jepalacioh | 0:c2ed510ee88d | 110 | Lugar++; |
Jepalacioh | 0:c2ed510ee88d | 111 | m=0; |
Jepalacioh | 0:c2ed510ee88d | 112 | } |
Jepalacioh | 0:c2ed510ee88d | 113 | |
Jepalacioh | 0:c2ed510ee88d | 114 | break; |
Jepalacioh | 0:c2ed510ee88d | 115 | |
Jepalacioh | 0:c2ed510ee88d | 116 | case 1: |
Jepalacioh | 0:c2ed510ee88d | 117 | switch(i) |
Jepalacioh | 0:c2ed510ee88d | 118 | { |
SantiagoUnal97 | 2:a4b764672482 | 119 | case 0: |
SantiagoUnal97 | 2:a4b764672482 | 120 | if(Conf==0) // control |
Jepalacioh | 0:c2ed510ee88d | 121 | { |
Jepalacioh | 0:c2ed510ee88d | 122 | lcd.cls(); |
Jepalacioh | 0:c2ed510ee88d | 123 | lcd.locate(0,0); |
SantiagoUnal97 | 2:a4b764672482 | 124 | lcd.printf("Config. Control "); |
Jepalacioh | 0:c2ed510ee88d | 125 | wait(1); |
SantiagoUnal97 | 2:a4b764672482 | 126 | lcd.cls(); |
Jepalacioh | 0:c2ed510ee88d | 127 | i++; |
Jepalacioh | 0:c2ed510ee88d | 128 | lcd.locate(0,0); |
SantiagoUnal97 | 2:a4b764672482 | 129 | lcd.printf("Kp: "); |
SantiagoUnal97 | 2:a4b764672482 | 130 | m=0; |
Jepalacioh | 0:c2ed510ee88d | 131 | } |
Jepalacioh | 0:c2ed510ee88d | 132 | |
SantiagoUnal97 | 2:a4b764672482 | 133 | if(Conf==1) //consignas |
Jepalacioh | 0:c2ed510ee88d | 134 | { |
Jepalacioh | 0:c2ed510ee88d | 135 | lcd.cls(); |
Jepalacioh | 0:c2ed510ee88d | 136 | lcd.locate(0,0); |
SantiagoUnal97 | 2:a4b764672482 | 137 | lcd.printf("Config.consig "); |
Jepalacioh | 0:c2ed510ee88d | 138 | wait(1); |
SantiagoUnal97 | 2:a4b764672482 | 139 | i=5; |
Jepalacioh | 0:c2ed510ee88d | 140 | lcd.cls(); |
Jepalacioh | 0:c2ed510ee88d | 141 | lcd.locate(0,0); |
SantiagoUnal97 | 2:a4b764672482 | 142 | lcd.printf("t1: "); |
SantiagoUnal97 | 2:a4b764672482 | 143 | m=0; |
tony63 | 1:0639f31dd59f | 144 | |
Jepalacioh | 0:c2ed510ee88d | 145 | } |
Jepalacioh | 0:c2ed510ee88d | 146 | |
Jepalacioh | 0:c2ed510ee88d | 147 | break; |
Jepalacioh | 0:c2ed510ee88d | 148 | |
SantiagoUnal97 | 2:a4b764672482 | 149 | case 1: //Kp |
Jepalacioh | 0:c2ed510ee88d | 150 | m=wheel.getPulses(); |
Jepalacioh | 0:c2ed510ee88d | 151 | if (m!=0) |
Jepalacioh | 0:c2ed510ee88d | 152 | { |
SantiagoUnal97 | 2:a4b764672482 | 153 | Kp=Kp+m; |
SantiagoUnal97 | 2:a4b764672482 | 154 | |
SantiagoUnal97 | 2:a4b764672482 | 155 | |
Jepalacioh | 0:c2ed510ee88d | 156 | |
Jepalacioh | 0:c2ed510ee88d | 157 | wheel.reset(); |
Jepalacioh | 0:c2ed510ee88d | 158 | m=0; |
Jepalacioh | 0:c2ed510ee88d | 159 | } |
SantiagoUnal97 | 2:a4b764672482 | 160 | |
Jepalacioh | 0:c2ed510ee88d | 161 | lcd.locate(5,0); |
SantiagoUnal97 | 2:a4b764672482 | 162 | lcd.printf("%d ",Kp); |
SantiagoUnal97 | 2:a4b764672482 | 163 | |
SantiagoUnal97 | 2:a4b764672482 | 164 | |
Jepalacioh | 0:c2ed510ee88d | 165 | |
Jepalacioh | 0:c2ed510ee88d | 166 | if (button_enco.falling()) |
Jepalacioh | 0:c2ed510ee88d | 167 | { |
Jepalacioh | 0:c2ed510ee88d | 168 | i++; |
Jepalacioh | 0:c2ed510ee88d | 169 | m=0; |
Jepalacioh | 0:c2ed510ee88d | 170 | lcd.cls(); |
Jepalacioh | 0:c2ed510ee88d | 171 | lcd.locate(0,0); |
SantiagoUnal97 | 2:a4b764672482 | 172 | lcd.printf("Ki: "); |
Jepalacioh | 0:c2ed510ee88d | 173 | } |
Jepalacioh | 0:c2ed510ee88d | 174 | |
Jepalacioh | 0:c2ed510ee88d | 175 | break; |
SantiagoUnal97 | 2:a4b764672482 | 176 | case 2: // Ki |
SantiagoUnal97 | 2:a4b764672482 | 177 | m=0; |
Jepalacioh | 0:c2ed510ee88d | 178 | m=wheel.getPulses(); |
Jepalacioh | 0:c2ed510ee88d | 179 | if (m!=0) |
Jepalacioh | 0:c2ed510ee88d | 180 | { |
SantiagoUnal97 | 2:a4b764672482 | 181 | Ki=Ki+m; |
SantiagoUnal97 | 2:a4b764672482 | 182 | |
Jepalacioh | 0:c2ed510ee88d | 183 | |
Jepalacioh | 0:c2ed510ee88d | 184 | wheel.reset(); |
Jepalacioh | 0:c2ed510ee88d | 185 | m=0; |
Jepalacioh | 0:c2ed510ee88d | 186 | } |
Jepalacioh | 0:c2ed510ee88d | 187 | lcd.locate(5,0); |
SantiagoUnal97 | 2:a4b764672482 | 188 | lcd.printf("%d ",Ki); |
Jepalacioh | 0:c2ed510ee88d | 189 | |
Jepalacioh | 0:c2ed510ee88d | 190 | if (button_enco.falling()) |
Jepalacioh | 0:c2ed510ee88d | 191 | { |
Jepalacioh | 0:c2ed510ee88d | 192 | i++; |
Jepalacioh | 0:c2ed510ee88d | 193 | m=0; |
Jepalacioh | 0:c2ed510ee88d | 194 | lcd.cls(); |
Jepalacioh | 0:c2ed510ee88d | 195 | lcd.locate(0,0); |
SantiagoUnal97 | 2:a4b764672482 | 196 | lcd.printf("Kd: "); |
tony63 | 1:0639f31dd59f | 197 | |
Jepalacioh | 0:c2ed510ee88d | 198 | } |
Jepalacioh | 0:c2ed510ee88d | 199 | break; |
SantiagoUnal97 | 2:a4b764672482 | 200 | case 3: // Kd |
Jepalacioh | 0:c2ed510ee88d | 201 | m=wheel.getPulses(); |
Jepalacioh | 0:c2ed510ee88d | 202 | if (m!=0) |
Jepalacioh | 0:c2ed510ee88d | 203 | { |
SantiagoUnal97 | 2:a4b764672482 | 204 | Kd=Kd+m; |
Jepalacioh | 0:c2ed510ee88d | 205 | |
Jepalacioh | 0:c2ed510ee88d | 206 | |
Jepalacioh | 0:c2ed510ee88d | 207 | wheel.reset(); |
Jepalacioh | 0:c2ed510ee88d | 208 | m=0; |
Jepalacioh | 0:c2ed510ee88d | 209 | } |
SantiagoUnal97 | 2:a4b764672482 | 210 | lcd.locate(7,0); |
SantiagoUnal97 | 2:a4b764672482 | 211 | lcd.printf("%d",Kd); |
Jepalacioh | 0:c2ed510ee88d | 212 | |
Jepalacioh | 0:c2ed510ee88d | 213 | if (button_enco.falling()) |
Jepalacioh | 0:c2ed510ee88d | 214 | { |
Jepalacioh | 0:c2ed510ee88d | 215 | i++; |
Jepalacioh | 0:c2ed510ee88d | 216 | m=0; |
Jepalacioh | 0:c2ed510ee88d | 217 | lcd.cls(); |
Jepalacioh | 0:c2ed510ee88d | 218 | lcd.locate(0,0); |
SantiagoUnal97 | 2:a4b764672482 | 219 | lcd.printf("sp: "); |
tony63 | 1:0639f31dd59f | 220 | |
Jepalacioh | 0:c2ed510ee88d | 221 | } |
Jepalacioh | 0:c2ed510ee88d | 222 | |
Jepalacioh | 0:c2ed510ee88d | 223 | break; |
Jepalacioh | 0:c2ed510ee88d | 224 | |
SantiagoUnal97 | 2:a4b764672482 | 225 | case 4: //set point |
SantiagoUnal97 | 2:a4b764672482 | 226 | m=wheel.getPulses(); |
Jepalacioh | 0:c2ed510ee88d | 227 | if (m!=0) |
Jepalacioh | 0:c2ed510ee88d | 228 | { |
SantiagoUnal97 | 2:a4b764672482 | 229 | sp=sp+m; |
SantiagoUnal97 | 2:a4b764672482 | 230 | |
SantiagoUnal97 | 2:a4b764672482 | 231 | |
Jepalacioh | 0:c2ed510ee88d | 232 | |
Jepalacioh | 0:c2ed510ee88d | 233 | wheel.reset(); |
Jepalacioh | 0:c2ed510ee88d | 234 | m=0; |
Jepalacioh | 0:c2ed510ee88d | 235 | } |
Jepalacioh | 0:c2ed510ee88d | 236 | lcd.locate(6,0); |
SantiagoUnal97 | 2:a4b764672482 | 237 | lcd.printf("%d",sp); |
Jepalacioh | 0:c2ed510ee88d | 238 | |
Jepalacioh | 0:c2ed510ee88d | 239 | if (button_enco.falling()) |
Jepalacioh | 0:c2ed510ee88d | 240 | { |
SantiagoUnal97 | 2:a4b764672482 | 241 | |
Jepalacioh | 0:c2ed510ee88d | 242 | lcd.cls(); |
Jepalacioh | 0:c2ed510ee88d | 243 | lcd.locate(0,0); |
SantiagoUnal97 | 2:a4b764672482 | 244 | lcd.printf("Control config. "); |
SantiagoUnal97 | 2:a4b764672482 | 245 | wait(1); |
SantiagoUnal97 | 2:a4b764672482 | 246 | i=0; |
SantiagoUnal97 | 2:a4b764672482 | 247 | m=0; |
SantiagoUnal97 | 2:a4b764672482 | 248 | Lugar=0; |
SantiagoUnal97 | 2:a4b764672482 | 249 | lcd.locate(0,0); |
SantiagoUnal97 | 2:a4b764672482 | 250 | lcd.printf("--Control --Consig"); |
SantiagoUnal97 | 2:a4b764672482 | 251 | |
Jepalacioh | 0:c2ed510ee88d | 252 | } |
Jepalacioh | 0:c2ed510ee88d | 253 | |
Jepalacioh | 0:c2ed510ee88d | 254 | break; |
Jepalacioh | 0:c2ed510ee88d | 255 | |
SantiagoUnal97 | 2:a4b764672482 | 256 | |
SantiagoUnal97 | 2:a4b764672482 | 257 | |
SantiagoUnal97 | 2:a4b764672482 | 258 | |
SantiagoUnal97 | 2:a4b764672482 | 259 | |
SantiagoUnal97 | 2:a4b764672482 | 260 | |
SantiagoUnal97 | 2:a4b764672482 | 261 | case 5: //t1 |
Jepalacioh | 0:c2ed510ee88d | 262 | m=wheel.getPulses(); |
Jepalacioh | 0:c2ed510ee88d | 263 | if (m!=0) |
Jepalacioh | 0:c2ed510ee88d | 264 | { |
SantiagoUnal97 | 2:a4b764672482 | 265 | t1=t1+m; |
SantiagoUnal97 | 2:a4b764672482 | 266 | |
SantiagoUnal97 | 2:a4b764672482 | 267 | |
SantiagoUnal97 | 2:a4b764672482 | 268 | wheel.reset(); |
SantiagoUnal97 | 2:a4b764672482 | 269 | m=0; |
SantiagoUnal97 | 2:a4b764672482 | 270 | } |
SantiagoUnal97 | 2:a4b764672482 | 271 | lcd.locate(8,0); |
SantiagoUnal97 | 2:a4b764672482 | 272 | lcd.printf("%d",t1); |
SantiagoUnal97 | 2:a4b764672482 | 273 | |
SantiagoUnal97 | 2:a4b764672482 | 274 | if (button_enco.falling()) |
SantiagoUnal97 | 2:a4b764672482 | 275 | { |
SantiagoUnal97 | 2:a4b764672482 | 276 | /////////////////// |
SantiagoUnal97 | 2:a4b764672482 | 277 | i++; |
SantiagoUnal97 | 2:a4b764672482 | 278 | m=0; |
SantiagoUnal97 | 2:a4b764672482 | 279 | lcd.cls(); |
SantiagoUnal97 | 2:a4b764672482 | 280 | lcd.locate(0,0); |
SantiagoUnal97 | 2:a4b764672482 | 281 | lcd.printf("t2: "); |
SantiagoUnal97 | 2:a4b764672482 | 282 | |
SantiagoUnal97 | 2:a4b764672482 | 283 | /////////////////// |
SantiagoUnal97 | 2:a4b764672482 | 284 | } |
SantiagoUnal97 | 2:a4b764672482 | 285 | |
SantiagoUnal97 | 2:a4b764672482 | 286 | break; |
SantiagoUnal97 | 2:a4b764672482 | 287 | case 6: //t2 |
SantiagoUnal97 | 2:a4b764672482 | 288 | m=wheel.getPulses(); |
SantiagoUnal97 | 2:a4b764672482 | 289 | if (m!=0) |
SantiagoUnal97 | 2:a4b764672482 | 290 | { |
SantiagoUnal97 | 2:a4b764672482 | 291 | t2=t2+m; |
SantiagoUnal97 | 2:a4b764672482 | 292 | |
Jepalacioh | 0:c2ed510ee88d | 293 | |
Jepalacioh | 0:c2ed510ee88d | 294 | wheel.reset(); |
Jepalacioh | 0:c2ed510ee88d | 295 | m=0; |
Jepalacioh | 0:c2ed510ee88d | 296 | } |
Jepalacioh | 0:c2ed510ee88d | 297 | lcd.locate(8,0); |
SantiagoUnal97 | 2:a4b764672482 | 298 | lcd.printf("%d",t2); |
Jepalacioh | 0:c2ed510ee88d | 299 | |
Jepalacioh | 0:c2ed510ee88d | 300 | if (button_enco.falling()) |
Jepalacioh | 0:c2ed510ee88d | 301 | { |
SantiagoUnal97 | 2:a4b764672482 | 302 | /////////////////// |
Jepalacioh | 0:c2ed510ee88d | 303 | i++; |
Jepalacioh | 0:c2ed510ee88d | 304 | m=0; |
Jepalacioh | 0:c2ed510ee88d | 305 | lcd.cls(); |
Jepalacioh | 0:c2ed510ee88d | 306 | lcd.locate(0,0); |
SantiagoUnal97 | 2:a4b764672482 | 307 | lcd.printf("t3: "); |
SantiagoUnal97 | 2:a4b764672482 | 308 | |
SantiagoUnal97 | 2:a4b764672482 | 309 | /////////////////// |
Jepalacioh | 0:c2ed510ee88d | 310 | } |
Jepalacioh | 0:c2ed510ee88d | 311 | |
Jepalacioh | 0:c2ed510ee88d | 312 | break; |
SantiagoUnal97 | 2:a4b764672482 | 313 | case 7: //t3 |
Jepalacioh | 0:c2ed510ee88d | 314 | m=wheel.getPulses(); |
Jepalacioh | 0:c2ed510ee88d | 315 | if (m!=0) |
Jepalacioh | 0:c2ed510ee88d | 316 | { |
SantiagoUnal97 | 2:a4b764672482 | 317 | t3=t3+m; |
SantiagoUnal97 | 2:a4b764672482 | 318 | |
SantiagoUnal97 | 2:a4b764672482 | 319 | |
SantiagoUnal97 | 2:a4b764672482 | 320 | wheel.reset(); |
SantiagoUnal97 | 2:a4b764672482 | 321 | m=0; |
SantiagoUnal97 | 2:a4b764672482 | 322 | } |
SantiagoUnal97 | 2:a4b764672482 | 323 | lcd.locate(8,0); |
SantiagoUnal97 | 2:a4b764672482 | 324 | lcd.printf("%d",t3); |
SantiagoUnal97 | 2:a4b764672482 | 325 | |
SantiagoUnal97 | 2:a4b764672482 | 326 | if (button_enco.falling()) |
SantiagoUnal97 | 2:a4b764672482 | 327 | { |
SantiagoUnal97 | 2:a4b764672482 | 328 | /////////////////// |
SantiagoUnal97 | 2:a4b764672482 | 329 | i++; |
SantiagoUnal97 | 2:a4b764672482 | 330 | m=0; |
SantiagoUnal97 | 2:a4b764672482 | 331 | lcd.cls(); |
SantiagoUnal97 | 2:a4b764672482 | 332 | lcd.locate(0,0); |
SantiagoUnal97 | 2:a4b764672482 | 333 | lcd.printf("T1: "); |
SantiagoUnal97 | 2:a4b764672482 | 334 | |
SantiagoUnal97 | 2:a4b764672482 | 335 | /////////////////// |
SantiagoUnal97 | 2:a4b764672482 | 336 | } |
SantiagoUnal97 | 2:a4b764672482 | 337 | |
SantiagoUnal97 | 2:a4b764672482 | 338 | break; |
SantiagoUnal97 | 2:a4b764672482 | 339 | case 8: //T1 |
SantiagoUnal97 | 2:a4b764672482 | 340 | m=wheel.getPulses(); |
SantiagoUnal97 | 2:a4b764672482 | 341 | if (m!=0) |
SantiagoUnal97 | 2:a4b764672482 | 342 | { |
SantiagoUnal97 | 2:a4b764672482 | 343 | T1=T1+m; |
SantiagoUnal97 | 2:a4b764672482 | 344 | |
Jepalacioh | 0:c2ed510ee88d | 345 | |
Jepalacioh | 0:c2ed510ee88d | 346 | wheel.reset(); |
Jepalacioh | 0:c2ed510ee88d | 347 | m=0; |
Jepalacioh | 0:c2ed510ee88d | 348 | } |
SantiagoUnal97 | 2:a4b764672482 | 349 | lcd.locate(8,0); |
SantiagoUnal97 | 2:a4b764672482 | 350 | lcd.printf("%d",T1); |
Jepalacioh | 0:c2ed510ee88d | 351 | |
Jepalacioh | 0:c2ed510ee88d | 352 | if (button_enco.falling()) |
Jepalacioh | 0:c2ed510ee88d | 353 | { |
Jepalacioh | 0:c2ed510ee88d | 354 | /////////////////// |
SantiagoUnal97 | 2:a4b764672482 | 355 | i++; |
SantiagoUnal97 | 2:a4b764672482 | 356 | m=0; |
SantiagoUnal97 | 2:a4b764672482 | 357 | lcd.cls(); |
SantiagoUnal97 | 2:a4b764672482 | 358 | lcd.locate(0,0); |
SantiagoUnal97 | 2:a4b764672482 | 359 | lcd.printf("T2: "); |
SantiagoUnal97 | 2:a4b764672482 | 360 | |
SantiagoUnal97 | 2:a4b764672482 | 361 | /////////////////// |
SantiagoUnal97 | 2:a4b764672482 | 362 | } |
SantiagoUnal97 | 2:a4b764672482 | 363 | |
SantiagoUnal97 | 2:a4b764672482 | 364 | break; |
SantiagoUnal97 | 2:a4b764672482 | 365 | case 9: //t2 |
SantiagoUnal97 | 2:a4b764672482 | 366 | m=wheel.getPulses(); |
SantiagoUnal97 | 2:a4b764672482 | 367 | if (m!=0) |
SantiagoUnal97 | 2:a4b764672482 | 368 | { |
SantiagoUnal97 | 2:a4b764672482 | 369 | T2=T2+m; |
SantiagoUnal97 | 2:a4b764672482 | 370 | |
SantiagoUnal97 | 2:a4b764672482 | 371 | |
SantiagoUnal97 | 2:a4b764672482 | 372 | wheel.reset(); |
SantiagoUnal97 | 2:a4b764672482 | 373 | m=0; |
SantiagoUnal97 | 2:a4b764672482 | 374 | } |
SantiagoUnal97 | 2:a4b764672482 | 375 | lcd.locate(8,0); |
SantiagoUnal97 | 2:a4b764672482 | 376 | lcd.printf("%d",T2); |
SantiagoUnal97 | 2:a4b764672482 | 377 | |
SantiagoUnal97 | 2:a4b764672482 | 378 | if (button_enco.falling()) |
SantiagoUnal97 | 2:a4b764672482 | 379 | { |
SantiagoUnal97 | 2:a4b764672482 | 380 | /////////////////// |
SantiagoUnal97 | 2:a4b764672482 | 381 | i++; |
SantiagoUnal97 | 2:a4b764672482 | 382 | m=0; |
SantiagoUnal97 | 2:a4b764672482 | 383 | lcd.cls(); |
SantiagoUnal97 | 2:a4b764672482 | 384 | lcd.locate(0,0); |
SantiagoUnal97 | 2:a4b764672482 | 385 | lcd.printf("T3: "); |
SantiagoUnal97 | 2:a4b764672482 | 386 | |
SantiagoUnal97 | 2:a4b764672482 | 387 | /////////////////// |
SantiagoUnal97 | 2:a4b764672482 | 388 | } |
SantiagoUnal97 | 2:a4b764672482 | 389 | |
SantiagoUnal97 | 2:a4b764672482 | 390 | break; |
SantiagoUnal97 | 2:a4b764672482 | 391 | case 10: //T3 |
SantiagoUnal97 | 2:a4b764672482 | 392 | m=wheel.getPulses(); |
SantiagoUnal97 | 2:a4b764672482 | 393 | if (m!=0) |
SantiagoUnal97 | 2:a4b764672482 | 394 | { |
SantiagoUnal97 | 2:a4b764672482 | 395 | T3=T3+m; |
SantiagoUnal97 | 2:a4b764672482 | 396 | |
SantiagoUnal97 | 2:a4b764672482 | 397 | |
SantiagoUnal97 | 2:a4b764672482 | 398 | wheel.reset(); |
SantiagoUnal97 | 2:a4b764672482 | 399 | m=0; |
SantiagoUnal97 | 2:a4b764672482 | 400 | } |
SantiagoUnal97 | 2:a4b764672482 | 401 | lcd.locate(8,0); |
SantiagoUnal97 | 2:a4b764672482 | 402 | lcd.printf("%d",T3); |
SantiagoUnal97 | 2:a4b764672482 | 403 | |
SantiagoUnal97 | 2:a4b764672482 | 404 | if (button_enco.falling()) |
SantiagoUnal97 | 2:a4b764672482 | 405 | { |
SantiagoUnal97 | 2:a4b764672482 | 406 | /////////////////// |
SantiagoUnal97 | 2:a4b764672482 | 407 | Lugar++; |
SantiagoUnal97 | 2:a4b764672482 | 408 | m=0; |
SantiagoUnal97 | 2:a4b764672482 | 409 | lcd.cls(); |
SantiagoUnal97 | 2:a4b764672482 | 410 | |
Jepalacioh | 0:c2ed510ee88d | 411 | |
Jepalacioh | 0:c2ed510ee88d | 412 | /////////////////// |
Jepalacioh | 0:c2ed510ee88d | 413 | } |
Jepalacioh | 0:c2ed510ee88d | 414 | |
Jepalacioh | 0:c2ed510ee88d | 415 | break; |
Jepalacioh | 0:c2ed510ee88d | 416 | |
Jepalacioh | 0:c2ed510ee88d | 417 | } |
Jepalacioh | 0:c2ed510ee88d | 418 | break; |
Jepalacioh | 0:c2ed510ee88d | 419 | |
SantiagoUnal97 | 2:a4b764672482 | 420 | case 2: // MOSTRAR EL TIEMPO Y LA ALARMA, Y COMPROBAMOS ESTADO DE LA ALARMA |
SantiagoUnal97 | 2:a4b764672482 | 421 | rtc.getTime(tm2); //LECTURA RTC |
SantiagoUnal97 | 2:a4b764672482 | 422 | if(cont==0) |
SantiagoUnal97 | 2:a4b764672482 | 423 | { tm2.min=0; |
SantiagoUnal97 | 2:a4b764672482 | 424 | tm2.sec=0; |
SantiagoUnal97 | 2:a4b764672482 | 425 | cont++; |
SantiagoUnal97 | 2:a4b764672482 | 426 | rtc.setTime(tm2, false, false); |
SantiagoUnal97 | 2:a4b764672482 | 427 | rtc.startClock(); |
SantiagoUnal97 | 2:a4b764672482 | 428 | |
SantiagoUnal97 | 2:a4b764672482 | 429 | |
SantiagoUnal97 | 2:a4b764672482 | 430 | } |
Jepalacioh | 0:c2ed510ee88d | 431 | if(visual==0) |
SantiagoUnal97 | 2:a4b764672482 | 432 | { |
Jepalacioh | 0:c2ed510ee88d | 433 | lcd.locate(0,0); |
SantiagoUnal97 | 2:a4b764672482 | 434 | lcd.printf("tiempo: "); |
Jepalacioh | 0:c2ed510ee88d | 435 | lcd.locate(8,0); |
SantiagoUnal97 | 2:a4b764672482 | 436 | |
SantiagoUnal97 | 2:a4b764672482 | 437 | lcd.printf("%02d:",tm2.min); |
SantiagoUnal97 | 2:a4b764672482 | 438 | lcd.printf("%02d",tm2.sec); |
Jepalacioh | 0:c2ed510ee88d | 439 | lcd.locate(0,1); |
SantiagoUnal97 | 2:a4b764672482 | 440 | lcd.printf("%d",sp); |
SantiagoUnal97 | 2:a4b764672482 | 441 | |
SantiagoUnal97 | 2:a4b764672482 | 442 | |
Jepalacioh | 0:c2ed510ee88d | 443 | wait(0.1); |
Jepalacioh | 0:c2ed510ee88d | 444 | ////////// |
Jepalacioh | 0:c2ed510ee88d | 445 | |
Jepalacioh | 0:c2ed510ee88d | 446 | } |
SantiagoUnal97 | 2:a4b764672482 | 447 | med = y.read()*999; |
SantiagoUnal97 | 2:a4b764672482 | 448 | err = (sp-med); //se calcula el error |
SantiagoUnal97 | 2:a4b764672482 | 449 | ap = Kp*err*0.01f; //se calcula la accion proporcinal |
SantiagoUnal97 | 2:a4b764672482 | 450 | ai =(Ki*err*0.01f)+ai; //calculo de la integral del error |
SantiagoUnal97 | 2:a4b764672482 | 451 | ad = Kd*(err-err_v)*0.01f; //calculo de la accion derivativa |
SantiagoUnal97 | 2:a4b764672482 | 452 | pid = (ap+ai+ad); |
SantiagoUnal97 | 2:a4b764672482 | 453 | // se verifica que pid sea positivo ************************************** |
SantiagoUnal97 | 2:a4b764672482 | 454 | if(pid<=0) |
Jepalacioh | 0:c2ed510ee88d | 455 | { |
SantiagoUnal97 | 2:a4b764672482 | 456 | pid=0; |
Jepalacioh | 0:c2ed510ee88d | 457 | } |
SantiagoUnal97 | 2:a4b764672482 | 458 | |
SantiagoUnal97 | 2:a4b764672482 | 459 | // se verifica que pid sea menor o igual la valor maximo ***************** |
SantiagoUnal97 | 2:a4b764672482 | 460 | if (pid > 999) |
SantiagoUnal97 | 2:a4b764672482 | 461 | { |
SantiagoUnal97 | 2:a4b764672482 | 462 | pid=999; |
SantiagoUnal97 | 2:a4b764672482 | 463 | } |
SantiagoUnal97 | 2:a4b764672482 | 464 | |
SantiagoUnal97 | 2:a4b764672482 | 465 | |
SantiagoUnal97 | 2:a4b764672482 | 466 | //se muestran las variables****************************************** |
Jepalacioh | 0:c2ed510ee88d | 467 | |
SantiagoUnal97 | 2:a4b764672482 | 468 | lcd.locate(4,1); |
SantiagoUnal97 | 2:a4b764672482 | 469 | lcd.printf("%3.0f",err); |
SantiagoUnal97 | 2:a4b764672482 | 470 | |
SantiagoUnal97 | 2:a4b764672482 | 471 | lcd.locate(11,1); |
SantiagoUnal97 | 2:a4b764672482 | 472 | lcd.printf("%3.0f",pid); |
SantiagoUnal97 | 2:a4b764672482 | 473 | |
SantiagoUnal97 | 2:a4b764672482 | 474 | |
SantiagoUnal97 | 2:a4b764672482 | 475 | |
SantiagoUnal97 | 2:a4b764672482 | 476 | |
SantiagoUnal97 | 2:a4b764672482 | 477 | //Normalizacion de la salida |
SantiagoUnal97 | 2:a4b764672482 | 478 | // se actualizan las variables ******************************************* |
SantiagoUnal97 | 2:a4b764672482 | 479 | err_v = err; |
SantiagoUnal97 | 2:a4b764672482 | 480 | o = pid/999; |
SantiagoUnal97 | 2:a4b764672482 | 481 | u.write(o); |
SantiagoUnal97 | 2:a4b764672482 | 482 | // se envia el valor pid a puerto analogico de salida (D/A) ************** |
SantiagoUnal97 | 2:a4b764672482 | 483 | Upwm.pulsewidth(o*periodo);//salida pwm |
SantiagoUnal97 | 2:a4b764672482 | 484 | // se repite el ciclo |
SantiagoUnal97 | 2:a4b764672482 | 485 | wait_ms(300); |
SantiagoUnal97 | 2:a4b764672482 | 486 | |
SantiagoUnal97 | 2:a4b764672482 | 487 | |
SantiagoUnal97 | 2:a4b764672482 | 488 | |
Jepalacioh | 0:c2ed510ee88d | 489 | |
Jepalacioh | 0:c2ed510ee88d | 490 | break; |
Jepalacioh | 0:c2ed510ee88d | 491 | |
Jepalacioh | 0:c2ed510ee88d | 492 | |
SantiagoUnal97 | 2:a4b764672482 | 493 | } |
SantiagoUnal97 | 2:a4b764672482 | 494 | |
SantiagoUnal97 | 2:a4b764672482 | 495 | } |
Jepalacioh | 0:c2ed510ee88d | 496 | } |