Reparación de un cautín de estación Weller WES-51

HOLAAAAA compañeros del foro.
Hace unos años "2019" escribí un manual de como reparar y si es posible construir una estación WELLER WES-51 nunca la publique por pereza pero aquí va 👇 .

Considero que se puede construir la estación
materiales:
-punta weller PES-51 que si la venden
-transformador 24v 2.2 A
-una cajita de plastico cables y los materiales descritos en el articulo

WES51_1.jpg
[off topic]
Bueno este tema lo trato por la siguiente razón:

Hace un par de años preste un cautín de estación a un amigo vecino con el objetivo de darle unos puntos de soldadura aun teléfono celular.
Después se sintió con el derecho de tomarlo prestado cada vez que quería, y un día se le ocurrió la brillante idea de cortar botellas de PET con el cautín.
No sé que le hizo pero después de eso ya no fue el mismo, ya no regulaba nada la temperatura, así que lo seguí usando así durante un tiempo.
Al ya no regular la temperatura las puntas se dañaban asombrosamente rápido, pues trabajaba al máximo de su capacidad.
Y con el tiempo simplemente un día empezó a zumbar y exploto el transformador dañando los integrados del circuito de control del TRIAC.

Este cautín es muy bueno así que llegue a pensar en comprar otro igual pero ya esta descontinuado y los que hay son muy caros, las visiones clónicas como el ZD-919 dejan mucho que desear así que me di a la tarea de hacer una reparación más detallada.

En primera me puse a revisar a detalle la PCB y dibuje un diagrama.
[/off topic]


Aquí se muestra el amplificador operacional con un LMC6061

diag opam.jpg

El siguiente diagrama es la distribución del PIC16CE673 Y el diagrama del TRIAC

diag opam.jpgdiag pic.jpg

Teniendo los diagramas me puse a simular en proteus como debería funcionar el operacional LMC6061, como en mi ciudad no venden el LMC6061 probé con un LMC6041
Sin título.jpg

Lo que hace el LMC es sensar la temperatura del termopar y hacer una representación en voltaje de 0 a 4.8v como 400ºC como máxima temperatura.

Una vez teniendo una idea solida de cómo trabaja el circuito de lectura del termopar del cautín era hora de reemplazar el pic dañado, el pic del weller wes-51 es un pic12CE673 es un PIC tipo OTP el daño en este pic se hizo en el detector de cruce por cero, el pic se calentaba y daba continuidad en el pin 5 con GND.

Así que no había mas opción que reemplazar el pic con su hermano cercano el 12F675 este pic tiene la diferencia de ser flash, la eeprom no esta separada y una notable carencia de una resistencia pull-up carente en el pin 4 el GPIO3 hay que agregar una resistencia externa para que funcione el REEL SWITCH.

El diagrama de simulación quedaría de la siguiente manera:
weller.jpg
Es muy simple el control del cautin explicado de la siguiente manera:

El ADC1 lee el voltaje del potenciómetro, el ADC0 lee el voltaje amplificado del OP-AMP, el pin 5 activa una interrupción para la detección del cruce por cero, un pin detecta el si se activa el REEL SWITCH, un pin activa y desactiva el TRIAC y un último pin muestra el estado del LED ya sea ROJO o VERDE, este LED es bicolor .

El programa igualmente es simple.

Cuando se ajusta una temperatura con la perilla “se ajusta un voltaje” el TRIAC se activa hasta que el voltaje amplificado por el OP-AMP sea mayor o igual al seleccionado.

El TRIAC es activado desactivado por el detector de cruce por cero, eso se hace con una interrupción por flanco de subida y un timer que activa y desactiva el triac.

F=60hz T=1/f

T=16.6ms

16ms dura el ciclo de corriente alterna si queremos centrar en una cresta debe ser en 8ms para la cresta positiva y 8ms para la cresta negativa.
cruce.png

Y por ultimo bloquear y desbloquear el cautín con el REEL SWITCH eso se hace según el manual de weller acercando un imán al símbolo ESD durante 2.5 segundos y el led cambia a rojo.

Únicamente hay que hacer una función que durante 2.5 segundos guarde en la eeprom el valor leído por el potenciómetro y una variable que bloque o desbloque el cautín una vez que sea apagado o encendido

El código fuente queda de la siguiente manera:
C:
///////////////////////////////////////////////////////////////
//                                                           //
//          control de cautin Weller WES51                   //
//                 POR:                                      //
//             TRILO-BYTE                                    //
//             DAVID C.                                      //
//             NOV 2019                                      //
//           PARA: FOROS DE ELECTRONICA                      //
//                                                           //
///////////////////////////////////////////////////////////////



#include <12F675.H>
#fuses INTRC_IO,BROWNOUT,NOMCLR
#use delay(clock = 4MHz)


//declaro los GPIO y les doy un nombre a cada puerto

#bit SW           =GETENV("SFR:GPIO").3            //suitch magnetico  SOLO GP3 ES ENTRADA
#bit LED          =GETENV("SFR:GPIO").4            //LED bicolor
#bit TRIAC        =GETENV("SFR:GPIO").5            //gate del TRIAC


#bit TRIS_SW            =GETENV("SFR:TRISIO").3    //suitch magnetico SOLO GP3 ES ENTRADA
#bit TRIS_LED           =GETENV("SFR:TRISIO").4    //LED bicolor
#bit TRIS_TRIAC         =GETENV("SFR:TRISIO").5    //gate del TRIAC



int1 prende=1,boton=1;
int8 suitch;


unsigned int16 toggle=1;

unsigned int16 decremento;


unsigned char clock=0,broche=0;

unsigned char temperatura;
int8 potenciometro;





#INT_EXT
void interrupcion(void)
{

   //si esta en 1 el TRIAC estara encendido
   if(prende==1)
   {
 
      //variables usadas para disparar el triac
      clock=0;
      broche=0;
     
     
     
      /*
      delay_us(500);   //esta centrado en la cresta positiva
      TRIAC=1;
      delay_ms(7);
      TRIAC=0;
     
      delay_us(500);   //esta centrado en la cresta negativa
      TRIAC=1;
      delay_ms(7);
      TRIAC=0;*/
   }
 
 
   else
      {
         TRIAC=0;
     
      }
     
   
}



#INT_TIMER0
void TIMER0_isr(void)
{
 
 
 
      //------RUTINA PARA CENTRAR EL CRUCE POR CERO CON INTERRUPCION -----------------//
     
      if( broche==0)
      {
         TRIAC=1;
      }
      if(clock>=7 && broche==0)
      {
       TRIAC=0;
       broche=1;
       clock=0;
      }
 
      if(clock==1 && broche==1)
      {
         TRIAC=1;
      }
     
      if(clock>=7 && broche==1)
      {
         TRIAC=0;
      }
 
      //----------------------------------FIN DE LA RUTINA-----------------------------//
   clock++;
   decremento--;
 
   toggle++;
 
 
 
 
 
 
 
   set_TIMER0(6);   //1ms
 
}



//funcion para averiguar que los botones han sido soltados

void soltar()
{
if (SW==0)
   boton=0;
}





 void main()
 {  
 

 
 setup_comparator(NC_NC);   // Todo digital
 

 setup_adc_ports(sAN0|sAN1);
 setup_adc(ADC_CLOCK_INTERNAL);
 
 setup_timer_0(RTCC_INTERNAL | RTCC_DIV_4|RTCC_8_bit);
 enable_interrupts(INT_TIMER0);
 ext_int_edge(L_TO_H);
 enable_interrupts(INT_EXT);
 set_timer0(6);
 enable_interrupts(global);
 

 
 TRIS_SW=1;       //como entrada del boton magnetico
 
 TRIS_LED=0;      //como salida LED
 TRIS_TRIAC=0;    //como salida para el TRIAC



suitch=1;
 
 
//--SE LEE EL ESTADO DE LA EEPROM SI ESTA BLOQUEADO O NO EL CAUTIN Y SE LEE LA ULTIMA POSICION DE LA PERILLA---//
 
   suitch = read_eeprom (0);
   potenciometro = read_eeprom (1);
//-------------------------------------------------------------------------------------------------------------//
 
 
 while(true)
 {
 
 
 
   soltar();
 
 
 
   set_adc_channel( 0 );
   delay_us(20);
   temperatura = read_adc();
 
 
 
 
 
 
   if(suitch==1 )
   {
      set_adc_channel( 1 );
      delay_us(20);
      potenciometro = read_adc();
   }
 
   else
   {
      TRIS_LED=0;      //como salida LED en ROJO
      LED=1;
   }
 
 
 
 
 
 
  //debido a que el pic12f675 no tiene pull-ip interna en GPIO3 hay que colocar una resistencia externa.
 
     if((!SW) && (!boton))
    {
            if(decremento<=0)             //si el decremento llega a 0 hacemos lo que tenemos que hacer
            {
               boton = 1;                 //indicamos que este activo el sensor
             
               suitch^=1;  //bloquea el potenciometro
             
             
             
               //escribimos en la eeprom (direccion , valor)
           
               write_eeprom (0,suitch);
               write_eeprom (1,potenciometro);
             
            }
         }
         else
            {
               decremento=2500;             // 2.5 segundos para bloquear la perilla
           
            }
       
   
 
 
 

 
 
 
 
 
   if(temperatura <= potenciometro)       //si la temperatura es menor al potenciometro calentara
   {
 
         prende=1; //encendemos el TRIAC
       
       
         if(suitch==1)
         {
            //habilitamos el tris del LED
            TRIS_LED=0;      //como salida LED
            LED=0;
           
         }
       
   }
   else
      {
         prende=0; //apagamos el TRIAC
       
       
       
         if(suitch==1)
         {
            //deshabilitamos el tris del LED
           // TRIS_LED=1;      //como entrada LED
         
         
            if(toggle>=80 )
            {
               toggle=0;
               LED=0;      //como entrada LED
               TRIS_LED^=1;      //como salida LED
            }
           
           
         }
      }
     
 
 }//fin del while(1)
 
 
 
 }//fin del main

El código no es perfecto se puede mejorar obviamente si, ya tiene años que lo escribí y honestamente no me acuerdo bien que hice, si alguien gusta mejorarlo la puerta esta abierta.

Debo aclarar que para que funcione el código del microcontrolador hay que grabar en la EEPROM manualmente el siguiente dato:
eeprom.png

En la posición 0 escribir 01

dejo adjuntos fotos simulación en Proteus 8 con código fuente y el .HEX para grabar el micro lo único que no adjunto es la PCB pero eso un buen compañero del foro puede hacerlo y subir el archivo.
 

Adjuntos

  • diag triac.jpg
    diag triac.jpg
    267.7 KB · Visitas: 11
  • simulacion y codigo.zip
    7.5 MB · Visitas: 13
Atrás
Arriba