Вы находитесь на странице: 1из 9

This code is for the schematic with the BT connection for the power control.

Read all the comments in the code.

/*TRIAC control with potentiometer; author: ELECTRONOOBS


* Subscribe: http://www.youtube.com/c/ELECTRONOOBS
* Tutorial: http://www.ELECTRONOOBS.com/eng_circuitos_tut20.php
* Thank you
*/
int detectado = 0;
int valor=0;
int last_CH1_state = 0;

void setup() {
/*
* Port registers allow for lower-level and faster manipulation of the
i/o pins of the microcontroller on an Arduino board.
* The chips used on the Arduino board (the ATmega8 and ATmega168) have
three ports:
-B (digital pin 8 to 13)
-C (analog input pins)
-D (digital pins 0 to 7)
//All Arduino (Atmega) digital pins are inputs when you begin...
*/

PCICR |= (1 << PCIE0); //enable PCMSK0 scan


PCMSK0 |= (1 << PCINT0); //Set pin D8 trigger an interrupt on state
change. Input from optocoupler
pinMode(3,OUTPUT); //Define D3 as output for the DIAC pulse
Serial.begin(9600); //Start serial com with the BT module (RX and
TX pins)
}

void loop() {
//Read the value of the pot and map it from 10 to 10.000 us. AC
frequency is 50Hz, so period is 20ms. We want to control the power
//of each half period, so the maximum is 10ms or 10.000us. In my case
I've maped it up to 7.200us since 10.000 was too much
if(Serial.available()>0)
{
valor = map(Serial.read(),0,255,10000,10);
//In my case I've used valor = map(Serial.read(),0,255,7000,10);
for better results
}
if (detectado)
{
delayMicroseconds(valor); //This delay controls the power
digitalWrite(3,HIGH);
delayMicroseconds(100);
digitalWrite(3,LOW);
detectado=0;
}
}
//This is the interruption routine
//----------------------------------------------

ISR(PCINT0_vect){
///////////////////////////////////// //Input from
optocoupler
if(PINB & B00000001){ //We make an AND
with the pin state register, We verify if pin 8 is HIGH???
if(last_CH1_state == 0){ //If the last state
was 0, then we have a state change...
detectado=1; //We haev detected
a state change!
}
}
else if(last_CH1_state == 1){ //If pin 8 is LOW
and the last state was HIGH then we have a state change
detectado=1; //We haev detected
a state change!
last_CH1_state = 0; //Store the current
state into the last state for the next loop
}
}

Regulador TRIAC controlado por BlueTooth

Intro
En primer lugar, este proyecto será un poco peligroso ya que usaré la red eléctrica, que aquí en España es de
220 VCA, lo que podría dañarlo en una fracción de segundo. Por lo tanto, antes de comenzar, si no está
seguro de nada, no intente con este proyecto, si no tiene las herramientas adecuadas, si no verifica y vuelve a
verificar las conexiones antes de aplicar energía, y nunca, nunca , toque el circuito mientras está encendido,
bueno, no intente este proyecto, simplemente siéntese y aprenda.

PARTE 1 Detección cruzada cero


Lo primero que hay que hacer es analizar la tensión alterna. He conectado mi osciloscopio a la entrada
principal de mi casa. Como puede ver a continuación, tenemos una onda sinusoidal de 310 voltios pico a pico
o 220V RMS. La frecuencia suele ser entre 50 y 60 HZ.
Tenemos una parte positiva y una negativa, por lo que habrá un cruce por cero, por lo que tendremos que
detectar ese cruce en 0. Usando un componente llamado TRIAC, controlaremos la cantidad de tiempo que
esta energía está ENCENDIDA y APAGADA. Veamos cómo funciona este TRIAC.

odos conocemos los diodos. Ponga solo un diodo a una señal de CA y tenemos un rectificador de media onda.
Con solo un diodo, en este caso solo tendremos la parte positiva de la señal de CA como se puede ver a
continuación, ya que el diodo no dejará pasar la parte negativa. Pero qué pasa si pudiéramos activar o
desactivar este diodo. Hay un componente que podría hacer eso y se llama THYTISTOR, que básicamente es
un diodo controlado que se activará cuando la compuerta reciba un disparo de corriente y continúe
conduciendo mientras la tensión en el dispositivo no se invierta.

Así que aquí tenemos nuestra señal de CA a continuación. La parte negativa no pasará ya que usamos un
diodo. Pero en la parte positiva, si no cambiamos el TIRISTOR tampoco habrá una parte positiva. Entonces,
digamos que exactamente en la posición intermedia activamos la puerta del THYTISTOR con un pulso, ahora
dejamos que la parte restante del lado positivo de la onda de CA. Así que ahora tenemos solo la mitad de la
onda positiva, así que hemos regulado el poder.
Pero si queremos hacer esto con ambos lados, positivo y negativo, deberíamos usar dos TIRISTORES en una
configuración antiparalela. Uno controlará el lado positivo y el otro el negativo. Hay un componente que
dosifica eso, llamado TRIAC.
El TRIAC permanecerá desactivado hasta que reciba un pulso en su puerta. Una vez recibido, permanecerá
activo hasta que la entrada principal cambie su polaridad.

Entonces, esto es lo que vamos a hacer. Usaré el BTA16 TRIAC para controlar el voltaje de CA. Lo primero
que debe hacer es detectar el cruce por cero, ya que nuestro pulso debe estar en fase con el voltaje de CA. Por
lo tanto, debemos detectar cuándo el voltaje pasa de positivo a negativo o de negativo a positivo y sincronizar
nuestro pulso con eso para que se dispare siempre en el mismo lugar. Para eso usaré un puente rectificador
completo. Esto me dará a la salida las curvas positiva y negativa de la onda de CA y lo hago ya que Arduino
no puede trabajar con valores negativos. A continuación, en mi osciloscopio tengo la entrada (verde) y la
salida (amarilla) del puente rectificador completo.

Esquema cruzado cero


También agregaré dos resistencias de 47 kilo ohms para limitar la corriente. Ahora quiero separar el lado de
alto voltaje del lado de bajo voltaje, que en este caso será un microcontrolador Arduino. Para eso usaré un
optoacoplador EL317. De esta manera, no hay conexión directa entre 220V de alto voltaje y 5V del Arduino.
Agrego un pullup y resistencias desplegables como en el esquema a continuación, que por cierto podría
descargar desde un enlace a continuación y ahora conecto el osciloscopio a la salida.

Como era de esperar, tengo una especie de onda trapezoidal con un pico a pico de 5 voltios. Ahora lo leo con
el Arduino, y crearé una interrupción cada vez que detecte estos valores bajos, y ese será nuestro cruce cero.
Dado que hemos utilizado un puente rectificador completo, tendremos el cruce cero para las partes
ascendentes y descendentes de la Onda AC.

Ahora, para controlar la compuerta del TRIAC, usaremos un interruptor de diodo de CA o mejor llamado DI
AC o diac. El Diac es un dispositivo muy útil que se puede usar para disparar triacs debido a sus
características de resistencia negativa que le permiten encenderlo rápidamente una vez que se alcanza un
cierto nivel de voltaje aplicado.
Esquema PARTE 2 - potenciómetro
Entonces, este será nuestro último esquema. Leemos la cruz cero con el puente rectificador completo y el
optoacoplador. Luego creamos un impulso de disparo que aplicó el DIAC optoaislado a través de esta
resistencia y un LED. Digo optoaislado porque, una vez más, este IC tiene un control de la luz del diodo en el
interior, por lo que separamos el 5V del Arduino y el 220V aplicado al TRIAC.

PARTE 3 El código
Lo monte todo en una placa de pruebas. Recuerde, para controlar la potencia, todo lo que tenemos que hacer
es controlar el tiempo entre la cruz del cero y cuando disparamos el pulso en la puerta TRIAC. Para eso, en el
código Arduino, leí el valor de un potenciómetro y mapeo ese valor con un retraso de entre 1 y 10
milisegundos.

valor = map(analogRead(A0),0,1024,10000,10);
if (detectado)
{
delayMicroseconds(valor); //This delay controls the power
digitalWrite(3,HIGH);
delayMicroseconds(100);
digitalWrite(3,LOW);
detectado=0;
}
¿Por qué estos valores? Bueno, sé que mi señal de CA tiene una frecuencia de 50Hz. Por lo tanto, el período
será en este caso 20 milisegundos, por lo que el período medio será de 10 milisegundos. Entonces, solo con
eso, usando el potenciómetro puedo cambiar el ángulo de disparo de mi señal de CA y con eso puedo
controlar el tiempo que se aplica la energía a esta bombilla.
PARTE 4 control de bluetooth
Usa el esquema de abajo. Es lo mismo, solo en lugar de un potenciómetro agregue el módulo bluetooth HC06.
Recuerde, no conecte el módulo mientras carga el código.

Con el esquema anterior, todo lo que he hecho ahora, en lugar de usar el potenciómetro para cambiar la
demora, usaré mi teléfono inteligente. Conecto un módulo Bluetooth a los pines RX y TX del Arduino como
se muestra en este esquema final, cargue el nuevo código que encontrará a continuación, instale esta
aplicación que he creado en el inventor de aplicaciones en su teléfono inteligente. Me conecto al módulo
Bluetooth y ahora puedo apagar la bombilla con mi teléfono inteligente.
Tenga en cuenta que no a todos los dispositivos les gustará este tipo de control de energía, ya que hay
fracciones de tiempo en que no se aplica energía al dispositivo. Utilice este tipo de control de potencia de CA
con motores, interruptores de intensidad para bombillas incandescentes o como arrancador suave.

Entonces, ahí van mis amigos. Ahora sabes cómo usar TRIAC y disparar pulsos para controlar la cantidad de
energía. Use optoacopladores y separe el alto voltaje de los bajos voltajes.

Tienes todos los esquemas, la aplicación y los códigos de ejemplo anteriores, así que asegúrate de revisarlos.
Si mis videos te ayudan y te gustaría ayudar a mis proyectos, tengo una campaña de Patreon. El enlace está
abajo como siempre. Realmente apreciaría que chicos. Por cierto, gracias a todos mis Patreons.

_---------------------------------------------
/**
* Use count mode to switch the load on and off only when the AC voltage
crosses zero. In this
* mode, the power is controlled by turning the triac on only for complete
(half) cycles of the AC
* sine wave. The power delivery is adjusted by counting the number of cycles
that are activated.
* This helps controlling higher, slower response loads (e.g. resistances)
without introducing
* any triac switching noise on the line.
*
* Copyright (c) 2016 Circuitar
* This software is released under the MIT license. See the attached LICENSE
file for details.
*/
#include "Dimmer.h"

Dimmer dimmer(3, DIMMER_COUNT);

int value = 0;

void setup() {
Serial.begin(9600);
dimmer.begin();
}

void loop() {
value += 5;
if (value > 100) {
value = 0;
}

dimmer.set(value);

Serial.print("Power: ");
Serial.print(value);
Serial.println("%");

delay(3000);
}

Вам также может понравиться