SOLDADOR DE DOBLE PULSO CON BLUEPILL STM32F103

Dependencies:   mbed QEI Debounced TextLCD

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers main.cpp Source File

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