SOLDADOR DE DOBLE PULSO CON BLUEPILL STM32F103
Dependencies: mbed QEI Debounced TextLCD
main.cpp
00001 //demo display y encoder 00002 //programa para probar un bluepill con encoder y lcd y pulsadores 00003 //control de soldador de punto de doble pulso 00004 //se emiten dos pulsos y una espera intermedia 00005 //antes de hacer esto se carga un condensador de 5F por 3seg con el IGBT1 00006 //luego se envian los pulsos de soldadura por el IGBT, con los tiempos configurados 00007 #include "mbed.h" 00008 #include "TextLCD.h" 00009 #include "QEI.h" 00010 /* 00011 #include "mbed.h" 00012 #include "QEI.h" 00013 QEI encoder (PB_13, PB_12, NC, 100);//PB12 ES EL CLK... PB13 ES EL DT DE ARDUINO ENCO 00014 Serial COM(PB_6, PB_7); 00015 00016 00017 int main() { 00018 00019 while(1){ 00020 wait(0.1); 00021 COM.printf("Pulses is: %i\n", encoder.getPulses()); 00022 } 00023 00024 } 00025 */ 00026 // se configura el lcd en este caso uno de cuatro filas 00027 TextLCD lcd(PA_3, PA_2, PA_1, PA_0, PC_15, PC_14, TextLCD::LCD16x4); // 4-bit bus: RS, E, D4, D5, D6, D7 00028 00029 int p=0,p1=0,p2=0,espera=0,pulsos=0; //variables del programa 00030 int i=0; //posicion de la variable en el display 00031 QEI wheel (PB_13, PB_12, NC, 100); //configuramos encoder de libreria. dos fases y pulsos x rev 00032 InterruptIn button(PB_14); 00033 DigitalIn fire(PB_15); 00034 DigitalOut IGBT(PB_6); //señal para el igbt 00035 DigitalOut IGBT1(PB_8); //señal para el igbt1 de carga del condensador 00036 00037 void flip() { 00038 wait_ms(1); 00039 if(button==0){ 00040 i++; 00041 if(i>2){ 00042 i=0; 00043 } 00044 } 00045 } 00046 00047 void weld() { 00048 00049 IGBT1=1; // carga el condensador 00050 wait(3); //tres segundos 00051 IGBT1=0; //fin de la carga 00052 IGBT=0; 00053 wait_ms(1); 00054 IGBT=1; 00055 wait_ms(p1); 00056 IGBT=0; 00057 wait_ms(espera); 00058 IGBT=1; 00059 wait_ms(p2); 00060 IGBT=0; 00061 } 00062 00063 //..............................INICIA EL PROGRAMA....................................................... 00064 int main() 00065 { 00066 //...............PANTALLA INICIAL........................................... 00067 00068 button.fall(&flip); 00069 IGBT1=0; //apaga el igbt de carga 00070 lcd.cls(); 00071 lcd.locate(3,0); //se posiciona en col 3 y fila 0 00072 lcd.printf("SPOT WELDER"); //primer mensaje 00073 lcd.locate(3,1); //se posiciona en col 3 y fila 0 00074 lcd.printf("DUAL PULSE"); //primer mensaje 00075 wait(3); //espera 3 seg 00076 00077 lcd.cls(); //borra pantalla 00078 lcd.locate(0,0); //se posiciona en col 8 y fila 0 00079 lcd.printf("P1="); //se marca una variable 00080 lcd.locate(8,0); //se posiciona 0,1 00081 lcd.printf("P2="); //se marca una variable 00082 lcd.locate(0,1); //se posiciona en 8,1 00083 lcd.printf("Esp="); //se marca una variable 00084 lcd.setCursor(TextLCD::CurOff_BlkOn); //se configura el cursor LCD parpadeante. 00085 00086 //..............................FIN PANTALLA INICIAL..................................... 00087 //.............programa ciclico.......................................................... 00088 while(1){ 00089 if(i==0){ 00090 lcd.locate(3,0); 00091 lcd.printf(" "); 00092 p1=p1+wheel.getPulses(); 00093 if(p1<0){ 00094 p1=0; 00095 } 00096 if(p1>999){ 00097 p1=999; 00098 } 00099 lcd.locate(3,0); 00100 lcd.printf("%d",p1); 00101 wheel.reset(); 00102 wait_ms(5); 00103 if(fire==0){ 00104 weld(); 00105 } 00106 00107 } 00108 if(i==1){ 00109 lcd.locate(11,0); 00110 lcd.printf(" "); 00111 p2=p2+wheel.getPulses(); 00112 if(p2<0){ 00113 p2=0; 00114 } 00115 if(p2>999){ 00116 p2=999; 00117 } 00118 lcd.locate(11,0); 00119 lcd.printf("%d",p2); 00120 wheel.reset(); 00121 wait_ms(5); 00122 if(fire==0){ 00123 weld(); 00124 } 00125 } 00126 if(i==2){ 00127 lcd.locate(4,1); 00128 lcd.printf(" "); 00129 espera=espera+wheel.getPulses(); 00130 if(espera<0){ 00131 espera=0; 00132 } 00133 if(espera>999){ 00134 espera=999; 00135 } 00136 lcd.locate(4,1); 00137 lcd.printf("%d",espera); 00138 wheel.reset(); 00139 wait_ms(5); 00140 if(fire==0){ 00141 weld(); 00142 } 00143 00144 } 00145 if(fire==0){ 00146 weld(); 00147 } 00148 /* 00149 lcd.cls(); 00150 lcd.printf("WELD-OK"); 00151 wait(3); 00152 goto inicio; 00153 */ 00154 00155 }//while 00156 }//main
Generated on Sat Jul 16 2022 13:23:36 by 1.7.2