Follow along with the video below to see how to install our site as a web app on your home screen.
							 
						
Nota: This feature currently requires accessing the site using the built-in Safari browser.
Muy bien amigos... Despues de un largo reseso y desconectado del mundo cibernetico me vuelvo a conectar a la red.
Aqui os dejo lo q antes mencione el dimmer con control de grados bueno es algo simple pero espero q les sirva como ref. (el programa esta echo en basic con el pic 16f877a y no uso ningun timer solo logica matematica) :d
muchas gracias por tus aportes son de muyy buena utilidad para los codigos de mas complicacion voy a probarlo ya que recien soy nuevo en este foro que es muy muy bueno para nosotros los principiantes
Muy bien amigos... Despues de un largo reseso y desconectado del mundo cibernetico me vuelvo a conectar a la red.
Aqui os dejo lo q antes mencione el dimmer con control de grados bueno es algo simple pero espero q les sirva como ref. (el programa esta echo en basic con el pic 16f877a y no uso ningun timer solo logica matematica) :d
Dino electro el proyecto que implementaste me cayo como anillo al dedo pues estaba buscando algunas ideas para hacer proyectos q reflejen lo avanzado en una materia q llevo en La U. llamada Electronica de potencia pa culminar el semestre... pues en si la teoria ya lo havia estudiado con gran detalle las formas de disparar un triacs y sus formas de onda pues ya lo tenia clara la idea pero me qedaba algunas dudas q qedaron despejadas al leer el documento anexado atu proyecto pues lo llegue a entender mejor q en la U. jajaj...
Asi q hise algunos pequeños cambios en el programa como mostrar en un lcd el porcentaje de la tencion manejada por los triacs y mostrar el estado de los botones(on /off) en pantalla lcd
cabe recalcar q la funcion de on/off lo realise con un solo boton, pues nesecitaba optimisar los botones ya q controle todo el circuito por un sencillo circuito de Radio frecuencia con los
(CI. Tx2b y Rx2b)...
otro peqeño cambio q realise fue q el circuito funcione como control de fase de la señal osea disparar el triacs en un angulo determinado 15grados 30 grados 90 grados...etc con un teclado matricial y lcd..
todo lo escribo como comentario a modo de agedecerte por el aporte...
subire algunas fotos y videos del proyecto ya funcionando.
El proyecto no lo subo pues m parece q no tiene muchos cambios q el original pues si algen m lo pide gustoso lo subire al foro. saludos foreros.
#include<16f628a.h>
#fuses  INTRC_IO,NOWDT,NOPUT,NOPROTECT,NOMCLR
#byte TRISB = 0x86
#byte port_b=6
#use standard_io(b)
#byte port_a=5
#byte TRISA = 00001101
#use delay(internal=4000000)
void main()
{       
   port_b_pullups(FALSE);
   
   while(true) ///esto repite todo el programa para leer siempre
   {
   
   ///1 decimal "on"
   
   while(input(pin_b0) && !input(pin_b1) && !input(pin_b2) && !input(pin_b3)
      && !input(pin_b4) && !input(pin_b5) && !input(pin_b6) && !input(pin_b7) || input(pin_a2))
   {
      int i; 
   //10%
 for ( i=0 ; i<17 ; i++ ) //en cada bucle for pasan siempre 10 ms
  { 
  if (!input(pin_a0))
   delay_ms (9);
   output_high(pin_a1);
         while(true)
         {
         if (!input(pin_a0))
         break;
         }
   output_low(pin_a1);
  } 
  //20%
  for ( i=0 ; i<17 ; i++ ) //en cada bucle for pasan siempre 10 ms
  { 
  if (!input(pin_a0))
   delay_ms (8);
   output_high(pin_a1);
         while(true)
         {
         if (!input(pin_a0))
         break;
         }
   output_low(pin_a1);
  }
  //30%
    for ( i=0 ; i<17 ; i++ )
  { 
  if (!input(pin_a0))
   delay_ms (7);
   output_high(pin_a1);
         while(true)
         {
         if (!input(pin_a0))
         break;
         }
   output_low(pin_a1);
  }
  //40%
    for ( i=0 ; i<17 ; i++ ) //en cada bucle for pasan siempre 10 ms
  { 
  if (!input(pin_a0))
   delay_ms (6);
   output_high(pin_a1);
         while(true)
         {
         if (!input(pin_a0))
         break;
         }
   output_low(pin_a1);
  }
  //50%
    for ( i=0 ; i<17 ; i++ ) //en cada bucle for pasan siempre 10 ms
  { 
  if (!input(pin_a0))
   delay_ms (5);
   output_high(pin_a1);
         while(true)
         {
         if (!input(pin_a0))
         break;
         }
   output_low(pin_a1);
  }
  //60%
    for ( i=0 ; i<17 ; i++ ) //en cada bucle for pasan siempre 10 ms
  { 
  if (!input(pin_a0))
   delay_ms (4);
   output_high(pin_a1);
         while(true)
         {
         if (!input(pin_a0))
         break;
         }
   output_low(pin_a1);
  }
  //70%
    for ( i=0 ; i<17 ; i++ ) //en cada bucle for pasan siempre 10 ms
  { 
  if (!input(pin_a0))
   delay_ms (3);
   output_high(pin_a1);
         while(true)
         {
         if (!input(pin_a0))
         break;
         }
   output_low(pin_a1);
  }
  //80%
    for ( i=0 ; i<17 ; i++ ) //en cada bucle for pasan siempre 10 ms
  { 
  if (!input(pin_a0))
   delay_ms (2);
   output_high(pin_a1);
         while(true)
         {
         if (!input(pin_a0))
         break;
         }
   output_low(pin_a1);
  }
  //90%
    for ( i=0 ; i<17 ; i++ ) //en cada bucle for pasan siempre 10 ms
  { 
  if (!input(pin_a0))
   delay_ms (1);
   output_high(pin_a1);
         while(true)
         {
         if (!input(pin_a0))
         break;
         }
   output_low(pin_a1);
  }
   //100%
   output_high(pin_a1); ///on
   }
   
    ///2 decimal "dimmer 30%"
   
   while(!input(pin_b0) && input(pin_b1) && !input(pin_b2) && !input(pin_b3)
      && !input(pin_b4) && !input(pin_b5) && !input(pin_b6) && !input(pin_b7))
   {
      while(true) ///...para que se repita el on tiempo off tiempo...
      {
   if (!input(pin_a0)) ///si pin_a0 esta en low se esperan (x)mili segundos y se pone high pin_a1
   delay_ms (7);
   output_high(pin_a1); ///30%
         while(true) ///se lee el pin_a0 hasta que vuelve a estar low y todo comienza de vuelta desde el otro while true!
         {
         if (!input(pin_a0))
         break;
         }
    output_low(pin_a1);
   if(input(pin_b0) && !input(pin_b1) && !input(pin_b2) && !input(pin_b3)
      && !input(pin_b4) && !input(pin_b5) && !input(pin_b6) && !input(pin_b7))
      break; ///si se lee otro comando reconocido entonces terminar el while! (1 decimal)
   if(input(pin_b0) && input(pin_b1) && !input(pin_b2) && !input(pin_b3)
      && !input(pin_b4) && !input(pin_b5) && !input(pin_b6) && !input(pin_b7))
      break; ///si se lee otro comando reconocido entonces terminar el while! (3 decimal)
   if(!input(pin_b0) && !input(pin_b1) && input(pin_b2) && !input(pin_b3)
      && !input(pin_b4) && !input(pin_b5) && !input(pin_b6) && !input(pin_b7))
      break; ///si se lee otro comando reconocido entonces terminar el while! (4 decimal)
      } ///...para que se repita el on tiempo off tiempo...
   }
   
    ///3 decimal "dimmer 60%"
    
   while(input(pin_b0) && input(pin_b1) && !input(pin_b2) && !input(pin_b3)
      && !input(pin_b4) && !input(pin_b5) && !input(pin_b6) && !input(pin_b7))
   {
      while(true) ///...para que se repita el on tiempo off tiempo...
      {
   if (!input(pin_a0)) ///si pin_a0 esta en low se esperan (x)mili segundos y se pone high pin_a1
   delay_ms (4);
   output_high(pin_a1); ///60%
         while(true) ///se lee el pin_a0 hasta que vuelve a estar low y todo comienza de vuelta desde el otro while true!
         {
         if (!input(pin_a0)) ///capas que este while esta al pedo... no se..
         break;
         }
   output_low(pin_a1);
   if(input(pin_b0) && !input(pin_b1) && !input(pin_b2) && !input(pin_b3)
      && !input(pin_b4) && !input(pin_b5) && !input(pin_b6) && !input(pin_b7))
      break; ///si se lee otro comando reconocido entonces terminar el while! (1 decimal)
   if(!input(pin_b0) && input(pin_b1) && !input(pin_b2) && !input(pin_b3)
      && !input(pin_b4) && !input(pin_b5) && !input(pin_b6) && !input(pin_b7))
      break; ///si se lee otro comando reconocido entonces terminar el while! (2 decimal)
   if(!input(pin_b0) && !input(pin_b1) && input(pin_b2) && !input(pin_b3)
      && !input(pin_b4) && !input(pin_b5) && !input(pin_b6) && !input(pin_b7))
      break; ///si se lee otro comando reconocido entonces terminar el while! (4 decimal)
      } ///...para que se repita el on tiempo off tiempo...
   }
   
   ///4 decimal off
   
   while(!input(pin_b0) && !input(pin_b1) && input(pin_b2) && !input(pin_b3)
      && !input(pin_b4) && !input(pin_b5) && !input(pin_b6) && !input(pin_b7) || input(pin_a3))
   {
   int i; 
   //90%
 for ( i=0 ; i<17 ; i++ ) //en cada bucle for pasan siempre 10 ms
  { 
  if (!input(pin_a0)) ///si pin_a0 esta en low se esperan (x)mili segundos y se pone high pin_a1
   delay_ms (1);
   output_high(pin_a1); ///9 ms
         while(true) ///se lee el pin_a0 hasta que vuelve a estar low y todo comienza de vuelta desde el otro for()!
         {
         if (!input(pin_a0)) ///capas que este while esta al pedo... no se..
         break;
         }
   output_low(pin_a1);
  } 
  //80%
  for ( i=0 ; i<17 ; i++ ) //en cada bucle for pasan siempre 10 ms
  { 
  if (!input(pin_a0)) ///si pin_a0 esta en low se esperan (x)mili segundos y se pone high pin_a1
   delay_ms (2);
   output_high(pin_a1); ///8 ms
         while(true) ///se lee el pin_a0 hasta que vuelve a estar low y todo comienza de vuelta desde el otro for()!
         {
         if (!input(pin_a0)) ///capas que este while esta al pedo... no se..
         break;
         }
   output_low(pin_a1);
  }
  //70%
    for ( i=0 ; i<17 ; i++ ) //en cada bucle for pasan siempre 10 ms
  { 
  if (!input(pin_a0)) ///si pin_a0 esta en low se esperan (x)mili segundos y se pone high pin_a1
   delay_ms (3);
   output_high(pin_a1); ///7 ms
         while(true) ///se lee el pin_a0 hasta que vuelve a estar low y todo comienza de vuelta desde el otro for()!
         {
         if (!input(pin_a0)) ///capas que este while esta al pedo... no se..
         break;
         }
   output_low(pin_a1);
  }
  //60%
    for ( i=0 ; i<17 ; i++ ) //en cada bucle for pasan siempre 10 ms
  { 
  if (!input(pin_a0)) ///si pin_a0 esta en low se esperan (x)mili segundos y se pone high pin_a1
   delay_ms (4);
   output_high(pin_a1); ///6ms
         while(true) ///se lee el pin_a0 hasta que vuelve a estar low y todo comienza de vuelta desde el otro for()!
         {
         if (!input(pin_a0)) ///capas que este while esta al pedo... no se..
         break;
         }
   output_low(pin_a1);
  }
  //50%
    for ( i=0 ; i<17 ; i++ ) //en cada bucle for pasan siempre 10 ms
  { 
  if (!input(pin_a0)) ///si pin_a0 esta en low se esperan (x)mili segundos y se pone high pin_a1
   delay_ms (5);
   output_high(pin_a1); ///5 ms
         while(true) ///se lee el pin_a0 hasta que vuelve a estar low y todo comienza de vuelta desde el otro for()!
         {
         if (!input(pin_a0)) ///capas que este while esta al pedo... no se..
         break;
         }
   output_low(pin_a1);
  }
  //40%
    for ( i=0 ; i<17 ; i++ ) //en cada bucle for pasan siempre 10 ms
  { 
  if (!input(pin_a0)) ///si pin_a0 esta en low se esperan (x)mili segundos y se pone high pin_a1
   delay_ms (6);
   output_high(pin_a1); ///4ms
         while(true) ///se lee el pin_a0 hasta que vuelve a estar low y todo comienza de vuelta desde el otro for()!
         {
         if (!input(pin_a0)) ///capas que este while esta al pedo... no se..
         break;
         }
   output_low(pin_a1);
  }
  //30%
    for ( i=0 ; i<17 ; i++ ) //en cada bucle for pasan siempre 10 ms
  { 
  if (!input(pin_a0)) ///si pin_a0 esta en low se esperan (x)mili segundos y se pone high pin_a1
   delay_ms (7);
   output_high(pin_a1); ///3 ms
         while(true) ///se lee el pin_a0 hasta que vuelve a estar low y todo comienza de vuelta desde el otro for()!
         {
         if (!input(pin_a0)) ///capas que este while esta al pedo... no se..
         break;
         }
   output_low(pin_a1);
  }
  //20%
    for ( i=0 ; i<17 ; i++ ) //en cada bucle for pasan siempre 10 ms
  { 
  if (!input(pin_a0)) ///si pin_a0 esta en low se esperan (x)mili segundos y se pone high pin_a1
   delay_ms (8);
   output_high(pin_a1); ///2ms
         while(true) ///se lee el pin_a0 hasta que vuelve a estar low y todo comienza de vuelta desde el otro for()!
         {
         if (!input(pin_a0)) ///capas que este while esta al pedo... no se..
         break;
         }
   output_low(pin_a1);
  }
  //10%
    for ( i=0 ; i<17 ; i++ ) //en cada bucle for pasan siempre 10 ms
  { 
  if (!input(pin_a0)) ///si pin_a0 esta en low se esperan (x)mili segundos y se pone high pin_a1
   delay_ms (9);
   output_high(pin_a1); ///1ms
         while(true) ///se lee el pin_a0 hasta que vuelve a estar low y todo comienza de vuelta desde el otro for()!
         {
         if (!input(pin_a0)) ///capas que este while esta al pedo... no se..
         break;
         }
   output_low(pin_a1);
  }
  //0%
   output_low(pin_a1); ///off
   }
   }
}deberas conectar desde 5-10M y si la frecuencia es de 50Hz el cristal tendra que ser de 20MHz
 
  