TODOPIC
Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: PIC_EMOTION en 07 de Enero de 2007, 14:13:43
-
Hola que tal a todos!!! soy nuevo aqui y solo queria saber como poder realizar el encendido y apagado de un led progresivamente, bien con el ADC o con otra cosa. Yo pienso que con el ADC podria ser haciendo aumentar de 0v a 5v con una resolucion de 8bits en un pin del PIC, pero no tengo ni idea. En estos momentos estoy comenzando con el conversor A/D y querria probar esto para mas adelante manejar el nivel (256 pasos) que mejor me venga en segun que momentos.
GRACIAS POR HACER MAS FACIL Y SENCILLO EL PODER PONER DE MANIFIESTO DUDAS Y RESPUESTAS A LOS QUE ESTAMOS EMPEZANDO!!!
-
Hola amigo!
De C no conozco nada, pero el ADC es para LEER un dato analogico y verlo de forma digital desde el PIC. Lo que necesitas es algo que cumpla la funcion opuesta: a partir de un dato digital, obtener un valor analogico.
Lo mas sencillo para eso es utilizar PWM con un duty cycle variable, de 0% a 100% , que te proporcionara brillos desde apagado hasta encendido del todo...
Saludos!
-
Hola PIC_EMOTION!! que tal?? espero que te sientas agusto entre tanto loco :mrgreen:. Oye Aitopes yo tenia mas o menos la misma duda pero en vez de usar para iluminar un led lo que querria hacer es crear una serie de valores de referencia mendiante el PIC para posteriormente poder meterla a la entrada de unos operacionales y poder ir cambiando esta vref sobre el transcurso del tiempo de programa. No se si me explico. Tengo un proyecto en el que utilizo 3 lm741 para generar unas tensiones de referencia a otros cuantos de lm741 y me gustaria que en vez de variar esta tension de referencia mediante un potenciometro poder realizarla mediante soft. Y no se con el PWM voy a poder conseguir eso.
Un saludo!!
-
Hola Sam! ;)
Se me ocurre que podes usar una red de resistencias, o mejor aun, un circuito integrado que sea un conversor D/A. Los hay muy baratos, de 8 o mas bits. Lamentablemente no me acuerdo del codigo de ninguno, pero SAN GOOGLE te va a ayudar...;)
Saludos!
PD: CREO que National tiene alguno.
-
Si tienes razon de echo Diego (redpic) tiene hecho uno con un PCF8591, y esta muy bien pero me quedaba la duda de si se podia realizar con el pic. Voy a mirar a ver me vendria bien uno de 10 bits para una mejor resolucion y una mejor configuracion. Este es de 16 pines no sabrian uno que trabajara tambien en I2C pero con un numero menor de pines.
De todas formas voy a buscar por ahi haber que hay.
-
Bueno, si mal no entiendo quieres que encienda a medida que aumentas una tension en el ADC, pues bien el PIC16F88 tiene un conversor A/D de 10 bits, y un modulo CCP con resolucion de 10 bits, entonces puedes conectar al ADC un potenciometro, y a la salida del CCP1 conectas un led.
Entonces lees el valor del conversor AD y lo cargas al modulo CCP (configurado en modo PWM) para que varie el ciclo util.
Aca te dejo algunas ideas para que puedas escribir un ejemplo, de como configurar lo basico, espero que te sirva.
configuracion del modulo ADC y CCP1 en modo
setup_adc_ports(RA0_ANALOG); // configura ra0 como adc
setup_adc(ADC_CLOCK_DIV_8); // usando el reloj interno del adc
setup_timer_2(T2_DIV_BY_4, 249, 1); // configura timer 2 para grecuencia PWM
setup_ccp1(CCP_PWM); // configura ccp1 modo PWM
Ejemplo de codigo para usar.
while(TRUE){
conversor=read_adc();
delay_us(10 );
set_pwm1_duty(conversor);
}