TODOPIC
Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: lhyaz en 23 de Julio de 2008, 15:39:19
-
Hola a todos....
Estoy tratando de hacer un circuito de prueba con el pic 16f877, el circuito debería leer un voltaje, convertirlo de AD y DA para obtener un voltaje a la salida. Se como configurar el AD, pero nunca he trabajado con el DA... alguien me puede ayudar con el programa???
Gracias, un saludo!!
-
Hola.
El micro tiene un conversor AD y es el PWM, debes configurarlo con el timer 2 para el pre escaler y asignar el duty cicle en funcion de la conversion, normalmente se le pasa el valor de la conversion directamente.
Obviamente, la salida del PWM debe ir a un transistor (un MOSFET preferiblemente) para poder conectarle una buena carga.
Saludos
EDITO: Es DA y no AD .. mis dedos no responden muchas veces!!!
-
ok, tomo nota del mosfet... gracias por el dato!!
un saludo!!
-
en un articulo de la pagina de nocturno esta como hacer un DAC ejemplo DAC (http://www.micropic.es/index.php?option=com_content&task=view&id=63&Itemid=1) cuando no tenemos DAC en el micro, saludos
-
aqui pego un programa que lee el valor analogico, y el valor lo manda como el ancho de pulso del pwm, asi, el pwm variara dependiendo del valor analogico
long duty;
int grados_temperatura;
void toma_adc(void){
set_adc_channel(0);
delay_ms(1);
duty= read_adc();
delay_ms(1);
}
void main()
{
setup_adc_ports(RA0_RA1_ANALOG_RA3_REF);
setup_adc(ADC_CLOCK_INTERNAL);
setup_psp(PSP_DISABLED);
setup_spi(FALSE);
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
setup_timer_1(T1_DISABLED);
setup_timer_2(T2_DIV_BY_8,0x4F,1);
setup_comparator(NC_NC_NC_NC);
setup_vref(TRUE);
setup_ccp1(CCP_PWM);
set_tris_a(0xFF);
// TODO: USER CODE!!
do{
toma_adc();
output_b(duty);
set_pwm1_duty(duty);
}while(true);
}
espero te sirva,saludos