jueves, 24 de octubre de 2013

Dimmer controlado con aplausos (clap controlled dimmer)

Este es un proyecto que hice con unos compañeros para la materia de electrónica industrial. Consiste en realizar el control de la intensidad de la luz de un foco incandecente de 100W únicamente aplaudiendo. Les voy a compartir el reporte que le entregamos al profesor, pero como la materia es impartida en inglés, el reporte también está en inglés y me da mucha flojera traducirlo. Sólo les pondré lo básico. Lo que utilizamos fue un SCR (era requisito del proyecto) para controlar la cantidad de energía que es transferida al foco. El diagrama a bloques básico es este.


El chiste es sincronizar la señal de activación del SCR con el voltaje de la linea eléctrica. Esto es necesario ya que si no se hace, la señal que se le manda al SCR no coincidirá siempre con el semiciclo positivo de la línea, y si llegase a coincidir, ésta no siempre se mandaría en la misma parte del semiciclo positivo de la señal. Es decir, el foco estaría parpadeando todo el tiempo. Es por esto que fue necesario el detector de cruce por cero.

Hay un montón de circuitos en internet para realizar la detección del cruce por cero, ya que para muchas aplicaciones es muy importante (como ésta jaja), pero la mayoría de ellas requieren ya sea transistores (que a mi me cuesta mucho trabajo usarlos) o amplificadores operacionales con entrada bipolar (que no quería usar, ya que queríamos utilizar únicamente los 5V que tiene el Arduino) o cosas medio bizarras. Es por esto que nosotros "inventamos" nuestro propio sistema de detección utilizando las bondades del Arduino Duemilanove. Nuestra solución fue bajar el voltaje de la línea a algo razonable (3V aprox), rectificarlo con un rectificador de media onda (para no causar problemas con los voltajes negativos) y meterlo al ADC del Arduino con una resistencia limitadora de corriente. Entonces el Arduino analiza la señal y determina cuándo está en la parte positiva de la señal y cuándo en la parte negativa. Ojo que para esto, necesitamos muestrear la señal de la línea lo más rápido posible que es 5kHz (en realidad lo más rápido son 10kHz, pero ahorita les cuento qué pasa). A pesar de que el teorema de Nyquist nos dice que necesitamos una frecuencia de muestreo del doble de la frecuencia más grande de nuestra señal para evitar el aliasing (que en este caso sería 2x60=120Hz), necesitamos sobremuestrear la señal para saber con precisión y en todo momento en qué parte de la señal nos encontramos, para poder mandar una señal precisa al SCR que no ande variando. Esto implica que para depurar y optimizar el programa, necesitamos una velocidad de comunicación serial muy grande con la computadora (de 115200 baud/seg, en vez de los típicos 9600).

Para la detección del aplauso, íbamos a usar uno de esos micrófonos electret de condensador, pero resultaron ser basura para lo que queríamos. Por eso usamos un micrófono de computadora que nos sirvió de maravilla. Curiosamente estos micrófonos requieren un circuito de polarización y acoplamiento, mismo que obtuvimos de esta página http://www.hobby-hour.com/electronics/computer_microphone.php y pues nos sirvió a la primera. Por supuesto que de la salida del circuito lo mandamos a un buffer (que quién sabe si era necesario) y a un amplificador de ganancia como de 3, y de ahí a otro ADC del Arduino para que éste determine cuando hubo aplauso o no.

Finalmente, con la detección de los aplausos y la detección del cruce por cero de la línea, el Arduino genera un pulso cuya duración que va a depender del número de aplausos detectados hasta el momento y de la detección del cruce por cero (los detalles están en el reporte ;D). El caso es que este pulso va a un optoacoplador con salida SCR, que va a permitir que el segundo SCR (de potencia) se active con la misma señal de la línea, como es común para este tipo de circuitos.

El resultado final fue este


En la parte de arriba está el voltaje en el SCR y en la parte de abajo está la corriente en el foco. Nuestro circuito (que se ve un poco desastroso fue este)


Aquí les dejo el link del reporte y del código para el Arduino

Reporte


Código del Arduino


My Github
https://github.com/DiegoRosales

No hay comentarios:

Publicar un comentario