//***************************************************************
// CONTROL DE POTENCIA CON PWN Y ENTRADA ANALOGICA V0.1
//***************************************************************
#include <12f683.h> // PIC USADO
#fuses NOWDT // SIN WATCH DOG TIMER
#fuses INTRC_IO // OSCILADOR INTERNO SIN CLKOUT
#fuses NOCPD // NO EE PROTECTION
#fuses NOPROTECT // NO SE PUEDE LEER EL CODIGO DEL PIC
#fuses NOMCLR // PIN_A3 USADA PARA ENTRADA Y NO PARA RESET
#fuses NOPUT // SIN POWER UP TIMER
#fuses NOBROWNOUT // SIN BROWNOUT RESET
#fuses NOFCMEN
#fuses NOIESO
#device adc=10
#use delay (clock=8000000) // CLOCK INTERNO 8Mhz
long dato;
void main()
{
setup_adc_ports(sAN3|VSS_VDD); // USO DE ENTRADA AN3
setup_adc(ADC_CLOCK_INTERNAL);
setup_oscillator(OSC_8MHZ);
setup_timer_2(T2_DIV_BY_1,256,1);
setup_ccp1(CCP_PWM);
set_pwm1_duty(0);
while(TRUE){
set_adc_channel(3);
delay_us(10);
dato = read_adc();
set_pwm1_duty(dato); // USO DE SALIDA AN2
}
}
#device adc=8
#use delay (clock=8000000) // CLOCK INTERNO 8MhzHola,en mi experiencia ,pongo un resistencia en el pin ADC y a masa, sin ella no controlaba bien la entrada analoga,
La entrada analógica la tengo de la siguiente forma:
- El extremo central de una resistencia variable a la patilla del PIC.
- Un extremo a VCC
- y el otro extremo a masa.
No tengo mas componentes que la resistencia variable, el PIC, el LED y su resistencia.
Saludos!!!
Nada ni definiendo como int8...... :5]Aunque yo no uso los pic, recuerdo en mis primero paso experimentados con un ejemplo que puso el Sr. Nocturno aqui en el Foro, y es los mismos que tu hace, esa aplicacion que tu hace la use como potenciometro para un control de casi 100 metro con cable apantallados. el unico que me dio problema fue la salida, que me daba 4,50Voltio y lo resolvi poniendo un BS170 para llegar a los 5 Voltio . pero me funciono, solo te aconsejo que busque el ejemplo que puso el Sr. Nocturno.
En fin!!!! Hago el PWM casero aunque sea peor y fuera.
Muchas gracias a todos por la ayuda.