navegante 420
la nave nodriza
Bueno gente, Aqui os presento en lo que he estado trabajando este mes en electronica de sistemas, hemos estado tratando de hacer un controlador que nos convierta una señal DC en AC, bueno en onda cuadrada exactamente.
Unicialmente lo hice mediante hardware, Usando LM555 uno como astable y otro como biestable. y este fue el esquema resultante y como podeis ver en el oscilo funcional.
Pero claro, son muchos componentes, asi que hemos tyratado de ir sustituyendo compomente por sofware.
¿Y como lo hacemos?, muy sencillo, un micro, en este caso, aprovechando lo que tenemos en clase, lo hacemos con un 16f877, pero nos valdria cualquier PIC que tenga conversor analogico digital, y modulador de ancho de impulso.
mediante un sencillo soft, de lee el conversor y escribe en el modulador, ya nos ahorramos los dos lm555.
este es el programa.
#include <16f877.h>
#device adc=10
#fuses XT,NOWDT
#fuses
#use delay(clock=1000000)
#use fast_io(c)
void main()
{
int16 q1;
float p;
setup_adc_ports(AN0);
setup_adc(ADC_CLOCK_DIV_32);
setup_timer_2(T2_DIV_BY_16,254,1);
setup_ccp1(CCP_PWM);
set_tris_C(0x00);
set_adc_channel(0);
While (1)
{
q1=read_adc();
if(p>250) p=250;
set_pwm1_duty(q1);
}
}
y como podeis ver en el oscilo ya es funcional.
Ahora estoy acabando el programa que nos permite sustituir el J-K y las AND. en cuanto lo tenga lo subo.
Unicialmente lo hice mediante hardware, Usando LM555 uno como astable y otro como biestable. y este fue el esquema resultante y como podeis ver en el oscilo funcional.
Pero claro, son muchos componentes, asi que hemos tyratado de ir sustituyendo compomente por sofware.
¿Y como lo hacemos?, muy sencillo, un micro, en este caso, aprovechando lo que tenemos en clase, lo hacemos con un 16f877, pero nos valdria cualquier PIC que tenga conversor analogico digital, y modulador de ancho de impulso.
mediante un sencillo soft, de lee el conversor y escribe en el modulador, ya nos ahorramos los dos lm555.
este es el programa.
#include <16f877.h>
#device adc=10
#fuses XT,NOWDT
#fuses
#use delay(clock=1000000)
#use fast_io(c)
void main()
{
int16 q1;
float p;
setup_adc_ports(AN0);
setup_adc(ADC_CLOCK_DIV_32);
setup_timer_2(T2_DIV_BY_16,254,1);
setup_ccp1(CCP_PWM);
set_tris_C(0x00);
set_adc_channel(0);
While (1)
{
q1=read_adc();
if(p>250) p=250;
set_pwm1_duty(q1);
}
}
y como podeis ver en el oscilo ya es funcional.
Ahora estoy acabando el programa que nos permite sustituir el J-K y las AND. en cuanto lo tenga lo subo.