Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
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 // se configura el lcd en este caso uno de cuatro filas 00012 TextLCD lcd(PA_8, PA_9, PA_10, PA_11, PA_12, PA_15, TextLCD::LCD16x4); // 4-bit bus: RS, E, D4, D5, D6, D7 00013 00014 int p=0,p1=0,p2=0,espera=0,pulsos=0; //variables del programa 00015 int i=0; //posicion de la variable en el display 00016 QEI wheel (PB_3, PB_4, NC, 100); //configuramos encoder de libreria. dos fases y pulsos x rev 00017 InterruptIn button(PB_5); 00018 DigitalIn fire(PB_7); //boton pedal para soldar 00019 DigitalOut IGBT(PB_6); //señal para el igbt 00020 DigitalOut IGBT1(PB_8); //señal para el igbt1 de carga del condensador 00021 00022 void flip() { 00023 wait_ms(100); 00024 if(button==0){ 00025 i++; 00026 if(i>2){ 00027 i=0; 00028 } 00029 } 00030 } 00031 00032 void weld() { 00033 if(fire==0){ 00034 IGBT1=1; // carga el condensador 00035 wait(3); //tres segundos 00036 IGBT1=0; //fin de la carga 00037 00038 IGBT=0; 00039 wait_ms(10); 00040 IGBT=1; 00041 wait_ms(p1); 00042 IGBT=0; 00043 wait_ms(espera); 00044 IGBT=1; 00045 wait_ms(p2); 00046 IGBT=0; 00047 wait(3); 00048 } 00049 } 00050 00051 //..............................INICIA EL PROGRAMA....................................................... 00052 int main() 00053 { 00054 //...............PANTALLA INICIAL........................................... 00055 inicio1: 00056 button.fall(&flip); 00057 IGBT1=0; //apaga el igbt de carga 00058 lcd.cls(); 00059 lcd.locate(3,0); //se posiciona en col 3 y fila 0 00060 lcd.printf("SPOT WELDER"); //primer mensaje 00061 lcd.locate(3,1); //se posiciona en col 3 y fila 0 00062 lcd.printf("DUAL PULSE"); //primer mensaje 00063 wait(3); //espera 3 seg 00064 lcd.cls(); //borra pantalla 00065 lcd.locate(0,0); //se posiciona en col 8 y fila 0 00066 lcd.printf("P1="); //se marca una variable 00067 lcd.locate(8,0); //se posiciona 0,1 00068 lcd.printf("P2="); //se marca una variable 00069 lcd.locate(0,1); //se posiciona en 8,1 00070 lcd.printf("Esp="); //se marca una variable 00071 lcd.setCursor(TextLCD::CurOff_BlkOn); //se configura el cursor LCD parpadeante. 00072 00073 //..............................FIN PANTALLA INICIAL..................................... 00074 //.............programa ciclico.......................................................... 00075 while(1){ 00076 00077 if(i==0){ 00078 lcd.locate(3,0); 00079 lcd.printf(" "); 00080 p1=wheel.getPulses(); 00081 if(p1<0){ 00082 p1=0; 00083 } 00084 lcd.locate(3,0); 00085 lcd.printf("%d",p1); 00086 wait_ms(60); 00087 00088 } 00089 if(i==1){ 00090 lcd.locate(11,0); 00091 lcd.printf(" "); 00092 p2=wheel.getPulses(); 00093 if(p2<0){ 00094 p2=0; 00095 } 00096 lcd.locate(11,0); 00097 lcd.printf("%d",p2); 00098 wait_ms(60); 00099 00100 00101 } 00102 if(i==2){ 00103 lcd.locate(4,1); 00104 lcd.printf(" "); 00105 espera=wheel.getPulses(); 00106 if(espera<0){ 00107 espera=0; 00108 } 00109 lcd.locate(4,1); 00110 lcd.printf("%d",espera); 00111 wait_ms(60); 00112 00113 } 00114 if(fire==0){ 00115 weld(); 00116 /* lcd.cls(); 00117 lcd.printf("WELD-OK"); 00118 wait(2); 00119 goto inicio1; 00120 */ 00121 } 00122 }//while 00123 }//main
Generated on Thu Aug 4 2022 12:43:45 by
1.7.2