Autor Tema: Encender un led progresivamente con PIC16f88  (Leído 4182 veces)

0 Usuarios y 2 Visitantes están viendo este tema.

Desconectado PIC_EMOTION

  • PIC10
  • *
  • Mensajes: 1
Encender un led progresivamente con PIC16f88
« 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!!!

Desconectado aitopes

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5100
    • uControl
Re: Encender un led progresivamente con PIC16f88
« Respuesta #1 en: 07 de Enero de 2007, 14:23:59 »
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!
Si cualquier habilidad que aprende un niño será obsoleta antes de que la use, entonces, ¿qué es lo que tiene que aprender? La respuesta es obvia:
La única habilidad competitiva a largo plazo es la habilidad para aprender
“. Seymour Papert

Desconectado samshiel_pic

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 777
    • Electrónica·Ingenia
Re: Encender un led progresivamente con PIC16f88
« Respuesta #2 en: 07 de Enero de 2007, 14:35:38 »
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!!

Desconectado aitopes

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5100
    • uControl
Re: Encender un led progresivamente con PIC16f88
« Respuesta #3 en: 07 de Enero de 2007, 14:42:53 »
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 cualquier habilidad que aprende un niño será obsoleta antes de que la use, entonces, ¿qué es lo que tiene que aprender? La respuesta es obvia:
La única habilidad competitiva a largo plazo es la habilidad para aprender
“. Seymour Papert

Desconectado samshiel_pic

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 777
    • Electrónica·Ingenia
Re: Encender un led progresivamente con PIC16f88
« Respuesta #4 en: 07 de Enero de 2007, 15:04:35 »
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.

Desconectado pikman

  • Moderador Local
  • PIC24F
  • *****
  • Mensajes: 679
Re: Encender un led progresivamente con PIC16f88
« Respuesta #5 en: 07 de Enero de 2007, 23:23:42 »
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 

Código: [Seleccionar]
   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.

Código: [Seleccionar]

 while(TRUE){
   conversor=read_adc();
  delay_us(10  );
   set_pwm1_duty(conversor);
}
saludos
PikMan