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