Arduino controlado por dimmer luz (3 / 15 paso)

Paso 3: El software, un poco de teoría

Si usted podría cuidar menos sobre la teoría, pero solo quiero el software, vaya al paso siguiente

La manera de utilizar a un dimmer/atenuador de AC es bastante sencilla una vez que entienda los conceptos básicos:

En corriente alterna la energía alimenta a la lámpara está directamente relacionada con la superficie total de la sinuswave, la lámpara puede regularse al permitir sólo una parte previsible de sinuswave a fluir a través de la lámpara.

Como tal necesita un punto de referencia en ese seno de donde calculamos Cuándo la lámpara tiene que estar encendido.

El más fácil punto de referencia a utilizar es el llamado 'cero': el momento en que la luz pasa por cero.
Después de cada paso por cero hay un medio completo de la sinuswave disponible para enviar a través de la lámpara.

Así que lo que el software tiene que hacer es detectar la zerocrossing y luego esperar una cantidad de tiempo en sinuswave para activar el TRIAC.

Hay 2 principales frecuencias de red en el mundo: 100 Hz en Europa y de Asia y África y 120 Hz en la mayoría de los Estados Unidos (y partes del Caribe). Hay 2 tensiones principales en el mundo: 110-120 v y 220-240 v pero no son importantes para las matemáticas aquí.

Para facilidad de uso se llevará a la frecuencia de 50Hz como ejemplo:
50Hz es 50 ondas por segundo.
Cada sinuswave tiene así 1000ms/50 = 20 ms (milisegundos)
Como hay 2 sinuspeaks en una ola que significa que después de cada detección del cero hay un período de 10ms que podemos regular.
Debemos encender la lámpara directamente al principio de ese período, la lámpara recibe plenos poderes, debemos hacerlo al final de ese período de 10ms, que la lámpara no va a recibir ower y deberíamos nosotros hacerlo a mitad de camino, la lámpara recibirá la mitad de potencia.
Como estamos usando TRIACs, lo que el software tiene que hacer es esperar a que el punto cero en la sinuscurve, tome nota de y entonces esperar una determinada cantidad de tiempo dentro de ese período de 10 ms para enviar un pulso a lo TRIAC.
Si envía ese pulso a 5ms, la lámpara se quema sólo en la mitad de potencia.

En el circuito, la cero detección se realiza por el optoacoplador bifásico y está disponible como la señal de X en el tablero.
Básicamente hay 2 formas para que un microcontrolador detectar esa señal:
1-un continuo 'interrogación' del perno cruce cero
2-usando una interrupción para decirle al programa que había un cero
La principal diferencia entre ambos es que en 'interrogación' cada vez que la computadora va a través de su bucle principal necesita para verificar el pin. Si su programa está ocupada haciendo muchas otras cosas, podría ser demasiado tarde para verificar el cero pin de cruce, mientras que al utilizar una interrupción, no importa lo que el programa está ocupado con. La interrupción es 'golpeando en el hombro' diciendo "Hey mira, algo ocurrió que tiene que atender ahora".

Después de detecta el paso por cero el programa debe esperar un período de tiempo determinado y luego en el TRIAC.
También aquí, espera se puede hacer de dos formas diferentes
1 - mediante un comando de 'esperar'
2-por utilizar una interrupción de temporizador

Una vez más, ambos estos métodos tienen sus ventajas y de desventajas El comando 'esperar' ('retardo' en lenguaje de Arduino) literalmente vamos al ordenador espere el tiempo necesario y no puede hacer otra cosa en el tiempo. Si la lámpara se quema a baja potencia dejando la computadora esperar decir 9ms, esto significa que cada 10ms el ordenador dice que esperar 9ms: ergo será inactivo 90% del tiempo. Eso está bien si el controlador sólo se utiliza para controlar la lámpara, pero si tiene que hacer otras cosas poco tiempo se deja.
Usando una interrupción de temporizador soluciona eso. Básicamente lo que hace es que el programa dice el contador de tiempo: ¨Hey, acabo de oir tenemos un cero, tengo que hacer algo más, pero tú espérate 4.5ms y luego encienda el Triac "por lo que el programa va en es feliz camino y 4.5ms (como ejemplo) después de que fue dado aviso allí fue una travesía de 0, el temporizador de encendido del TRIAC.

Votación: (Nota Este es un ejemplo áspero para la ilustración de la interrogación, obviamente necesita alguna mejora)

Interrumpe por:
Para utilizar una interrupción, primero tenemos configurar. En el Arduino es como sigue:

Lo que esto dice es que la interrupción se une para interrumpir el 0, va a una función llamada "zero_crosss_int" y reacciona a un flanco ascendente en el pin.

En la función Zero_cross_int que salta el programa para después de la interrupción determinamos el tiempo que tenemos que esperar antes de disparar el TRIAC. También agregamos un poco de funcionalidad. No queremos un sistema de nivel que la lámpara se quema en, vamos a añadir algunas funciones para regular el nivel de luz en pasos.
Por eso he elegido la cantidad totalmente arbitraria de 128 pasos. Esto significa que cada paso es 10ms/128 = 10000us/128 = 75us (de hecho es 78, pero llegar a eso más adelante). Entonces el dimtime total se calcula a partir 75 x (1 a 128). El número entre 1-128, que determina nuestro nivel de atenuación, asignamos a la variable entero 'atenuación'

Lo que pasa aquí es que el programa calcula primero lo dimtime (= tiempo de espera antes de que el triac se dispara)

Se espera que la cantidad de tiempo, posteriormente espera que la cantidad de tiempo y dispara el Triac. El Triac se apaga otra vez en el siguiente paso por cero, pero nosotros vamos a escribir ya bajo en el pin TRIAC para evitar la ignición accidental en el ciclo siguiente. Tenemos que esperar un poco sin embargo conocer el TRIAC es encendido, así que esperamos 10us. Ahora (10000-10) / 128 es todavía 78 pero he encontrado 75 para funcionar bien. No dude en utilizar 78 aunque.

Lo único que queda entonces en el programa principal es establecer el nivel en el que queremos que la lámpara se quema:

Lo que pasa aquí es un simple bucle que regula la lámpara hasta en un 128 pasos. He decidido no empezar 1 sino 5 porque a ese nivel podría haber algunos problemas de sincronización que podrían provocar que la lámpara de parpadeo.

El programa anterior es sólo un ejemplo de cómo controlar la luz, obviamente quieres añadir algunas otras funciones en lugar de sólo hay una lámpara de ir arriba y abajo en brillo.

Utilizando un temporizador:
Si desea que su programa para ser eficaz necesita utilizar una interrupción para la detección de cruce por cero y un temporizador para determinar la cantidad de tiempo de espera.
Aproximadamente un programa sería como sigue:

Inicializar
Configurar los diferentes constantes y variables que necesites e incluye las bibliotecas (como la biblioteca de TimerOne)

Programa de instalación
SETP las clavijas y las 2 interrupciones
Los puntos de interrupción cero cruzar a una función y así hace la interrupción del temporizador

Cero-Cruz functie
Establece un valor booleano que indica si se ha producido una cero cruz

Función de temporizador
Si regulamos el brillo otra vez en 128 pasos, entonces la función de temporizador está configurados para ser llamado cuando el tiempo de un paso ha pasado (p. ej. 75us) y a continuación, comprueba si el número de pasos pasado es igual al número de pasos. Si es el caso, el Triac es encendido

Artículos Relacionados

CARduino - vehículo accionado Arduino, controlado por LabVIEW

CARduino - vehículo accionado Arduino, controlado por LabVIEW

El CARduino es un vehículo operado por control remoto que es controlado por un regulador conectado a un equipo que ejecute LabVIEW. El vehículo es accionado por el Arduino y se puede ampliar a través de la adición de sensores u otros dispositivos. Us
Wake-up light (usando microprocesador controlado por dimmer)

Wake-up light (usando microprocesador controlado por dimmer)

invierno está llamando a la puerta otra vez en Europa.Odio tener que levantarse en la oscuridad, por lo tanto necesito una luz para despertar...Ahora las personas normales probablemente tos el E90, - para un Wake-Up Light de Philips.U obtener una est
¿Instalación de Bluetooth multifunción coche Smart para Arduino controlado por teléfono móvil

¿Instalación de Bluetooth multifunción coche Smart para Arduino controlado por teléfono móvil

por lo que usted quiere hacer un coche smart? ¿No sabes dónde empezar? Por qué aprender con equipo de ICStation.El Arduino Bluetooth coche Smart tiene la función de seguimiento, evitación del obstáculo, control remoto por infrarrojos y Bluetooth remo
Bluetooth de rover 4WD Arduino controlado por teléfono/tablet Android

Bluetooth de rover 4WD Arduino controlado por teléfono/tablet Android

4WD de Arduino bluetooth controlado roverSe trata de un rover 4WD simple que hice con Arduino.el rover se controla con un teléfono android o tablet por bluetooth. Con esa aplicación puede controlar velocidad (usando pwm del Arduino), correr con el ac
Generador de forma de onda de Arduino controlado por iOS

Generador de forma de onda de Arduino controlado por iOS

Este generador se basa en el trabajo de Amanda Ghassaei. Generadores de forma de onda (o generadores de funciones) se utilizan para probar y depurar circuitos. por ejemplo, respuesta de frecuencia de amp op o sensores. Este generador es alimentado po
Coche del RC con dos Arduinos controlado por ordenador

Coche del RC con dos Arduinos controlado por ordenador

piezas necesarias: este proyecto requiere de dos placas de Arduino que pueden ser adquiridos en http://www.adafruit.com/category/17Este proyecto utiliza dos placas compatibles de Arduino Uno.Se necesitará un L293D u otro chip de controlador de Motor
Cañón neumático accionado por Arduino controlado por Android

Cañón neumático accionado por Arduino controlado por Android

cada verano, Qualcomm celebra una batalla de la competencia de las escuelas, que ofrece a los empleados la oportunidad de representar a su Universidad de origen. Este año, las entradas debían ser artilugios caseros, y que fueron juzgados según lo gua
Mezclador de colores de Arduino controlado por iPhone

Mezclador de colores de Arduino controlado por iPhone

concurso Robot 18 +Este es el video de demostración de producto final como se verá.  Esto fácilmente podría ser usado para controlar un robot arduino o cualquier cosa en todo lo que el arduino corre!Si el vídeo no reproduce aquí es el enlace http://w
Toque de queda del animal doméstico: Un Arduino controlado puerta para mascotas

Toque de queda del animal doméstico: Un Arduino controlado puerta para mascotas

El problema: quiere restringir el tiempo cuando su mascota pueda salir al exterior. Esto podría ser porque el barrio no es seguro para su gato o perro pequeño por la noche (Merodeadores coyotes viene a la mente). Pero desea que su mascota para poder
Cómo hacer fotografía Time-lapse inteligente controlado por Arduino

Cómo hacer fotografía Time-lapse inteligente controlado por Arduino

proyecto: fotografía Time-lapse dinámica sensible a la luz y ajustablePor Holden Leslie-BoleCosto aproximado: $70 sin la cámaraHe estado haciendo alguna fotografía Time-lapse con mi GoPro HERO3 un rato ahora, y he conseguido algunas imágenes grandes.
Pequeño Smartphone controlado por Arduino tanque

Pequeño Smartphone controlado por Arduino tanque

en este Instructable te voy a mostrar cómo hacer un tanque de arduino controlado muy pequeño smartphone.He intentado hacer la TinyTank tan pequeños como sea posible, también quería controlarlo con un smartphone.Por lo menos que quería hacer fácil de
Controlado por Arduino Bluetooth-bot

Controlado por Arduino Bluetooth-bot

este instructable le mostrará cómo convertir un viejo coche de R/C del juguete de la tienda ($1,50) en un robot controlado por bluetooth. Para hacer la conversión, usted necesitará un Arduino (cualquier tipo), un L298N 2 amp motor-controlador doble (
Arduino Robot V2 (rápido) también controlado por voz

Arduino Robot V2 (rápido) también controlado por voz

Esta es mi segunda versión de mi robot arduino después "Construir tu primer robot". Mi segunda versión es un poco complicada en comparación con mi primer uno pero ofrece mejor. En este instructable voy para mostrarle cómo construir un robot rápi
Mente-controlado por semáforo utilizando Arduino y MindFlex

Mente-controlado por semáforo utilizando Arduino y MindFlex

Hola a todos, este es mi primer instructable. Hoy voy a mostrar cómo hacer un simple semáforo controlado por sus ondas cerebrales mediante el juguete MindFlex del EEG. Este es un proyecto muy simple y básico, pero los usos del MindFlex Hack son mucho