Gustavo Ramirez / Mbed 2 deprecated STM32F103C8T6_welder1

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 // 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