Você está na página 1de 13

Hola ah ver… te mando cada parte del circuito con una pequeña descripción, si tienes alguna duda

me respondes nomás.

CIRCUITO DE FUERZA TRIAC:

- Ha ver te explico este es el esquema de la parte del triac.. yo usé un Triac BTA 26600 ,
aguanta buena corriente, imagion que con cualquiera trabajaría bien.. . ah ver… acá
usamos las funciones INTERRUPT de arduino.. trabajando de la siguiente manera:
o Cada vez que la onda senoidal (12VAC ) rectificada completamente pasa por
cero (porque son como arquitos) manda una señal al arduino por medio del
optotransistor 4N35.
o Luego según el angulo que programes en el arduino a través del pin 10 manda
pulsos con PWM al MOC3020 , y con este ya se activa el transistor.
CIRCUITO DEL TECLADO:

Para el teclado usé un muy buen artículo de esta página:

http://www.ponteduino.es/2010/07/teclado-matricial-4x4-en-un-solo-pin/

Pero acá un detalle, como cada resistencia es única, según las que elijas, lee el valor de
resistencias tú mismo con un multímetro y cuando las alimentes con 5 V lee el voltaje apretando
cada tecla de tu teclado, y ELABORA TU PROPIA TABLA DE VALORES con el teclado, eso te
ahorrará tiempo a la hora de depurar el programa.

CIRCUITO DE LA PANTALLA:

Bueno de estos si hay muchos en internet, te dejo este:


RECUERDA IMPORTANTE si tu LCD tiene luz.. Puentear los pines del LCD 1 con la 16 y la 2 con la 15
por medio de una resistencia de 220 ohm para proteger nomas.

SEGUNDA COSA IMPORTANTE, aquí los pines del LCD RW, E , D4, D5, D6, D7 se deben conectar al
arduino según como lo configures en tu código de tu programa…. No exactamente como está en
este dibujo, sino me equivoco, corres los pines en el arduino y usas el 3,4,5,6 de manera que tu
pin 2 queda libre para las interrupciones para detectar el cruce por cero de tu señal alterna.

En el código de arduino te dejo un comentario de donde configurar los pines del LCD
Y FINALMENTE TE DEJO LOS CÓDIGOS DE ARDUINO:

Ah ver, este es el programa principal, por alguna razón que aún no se cuando escribes un pulso de
pwm menor a 50 empieza a parpadear en fin… mira en el arduino IDE, cuando pones ctrl + shift +
N te sale unas nuevas ventanas aahí aplicaremos los otros dos programas que te pasaré

#include <LiquidCrystal.h>

LiquidCrystal lcd(12,11,6,5,4,3); // OJO CON LOS PINES SE DEBEN CONECTAR SEGÚN ESTO a tu LCD

int AC_pin = 10; //Pin al MOC3020 - OptoTriac

int x=0;

int dim = 50; //Brillo inicial, que va desde 50 a 255

int opcion =0;

int a=0;

int b=0;

int c=0;

int entradateclado=0;

void setup() {

Serial.begin(9600);

pinMode(AC_pin, OUTPUT);

lcd.begin(16,2);

lcd.setCursor(0,0);

lcd.print("Ctrl Luminosidad");

lcd.setCursor(0,1);
lcd.print(" UCSM ");

delay(3000);

lcd.clear();

lcd.print("Ingrese Angulo o");

lcd.setCursor(0,1);

lcd.print("Ax100+Bx10+Cx1");

delay(7000);

lcd.clear();

lcd.print("Press A, B o C");

lcd.setCursor(0,1);

lcd.print("sin soltar");

delay(3000);

lcd.clear();

lcd.setCursor(0,0);

lcd.print("Press A, B o C");

lcd.setCursor(0,1);

lcd.print("luego el digito");

delay(3000);

lcd.clear();

lcd.print("Luego *");

lcd.setCursor(0,1);

lcd.print("Para empezar");

delay(3000);
}

void loop(){

lcd.setCursor(0,0);

delay(1000);

entradateclado = analogRead(0);

if (entradateclado>=670 && entradateclado<=691)

opcion='A';

if (entradateclado>=531 && entradateclado<=551)

opcion='B';

if (entradateclado>=425 && entradateclado<=446)

opcion='C';

if (entradateclado>=320 && entradateclado<=346)

opcion='*';

switch (opcion){

case 'A':

lcd.clear();

lcd.print("ing: a");

a=lectora();

lcd.clear();

lcd.print(a);

break;

case 'B':

lcd.clear();
lcd.print("ing:b");

b=lectora();

lcd.clear();

lcd.print(b);

break;

case 'C':

lcd.clear();

lcd.print("ing:c");

c=lectora();

lcd.clear();

lcd.print(c);

break;

case '*':

lcd.clear();

//lcd.setCursor(0,0);

lcd.print("Dimmed...");

delay(1000);

dimmer();

break;

delay(100);

x=100*a+10*b+c;

dim=x*0.8372+40;

lcd.clear();

lcd.print("angulo: ");

lcd.print(x);
delay(1000);

Como este es también un trabajo para mi universidad…. Al comienzo en la pantalla pongo notas de
la universidad… también peudes jugar con los delay para que sean más o menos tiempo…

Ahora el programa del DIMMER:

void dimmer() {

attachInterrupt(0, light, FALLING);// cuando detecta cero, llama la función light en el pin 2

void light() {

if (dim < 1) { //apagado

digitalWrite(AC_pin, LOW);

if (dim > 254) { //prendido

digitalWrite(AC_pin, HIGH);

if (dim > 0 && dim < 255) { //varia de 0 a 255

delayMicroseconds(34*(255-dim));

digitalWrite(AC_pin, HIGH);

delayMicroseconds(500);

digitalWrite(AC_pin, LOW);

}
Programa del teclado:

int lectora(){

int teclado=0;

delay(1000);

int entradateclado = analogRead(0);

if (entradateclado>=850 && entradateclado<=860)

teclado=1;

if (entradateclado>=780 && entradateclado<=800)

teclado=2;

if (entradateclado>=710 && entradateclado<=730)

teclado=3;

if (entradateclado>=630 && entradateclado<=655)

teclado=4;

if (entradateclado>=600 && entradateclado<=620)

teclado=5;

if (entradateclado>=555 && entradateclado<=575)

teclado=6;

if (entradateclado>=495 && entradateclado<=515)

teclado=7;

if (entradateclado>=475 && entradateclado<=493)

teclado=8;

if (entradateclado>=445 && entradateclado<=465)

teclado=9;

if (entradateclado>=315 && entradateclado<=337)


teclado=0;

delay(50);

Serial.println(teclado);

return teclado;}

Como te comentaba este programa está escrito según los valores que me generaban mis
resistencias, ojo que usé los mismos valores que decía en la página web q te mande, pero igual hay
variaciones, por lo que recomiendo usar este programa usando tus valores, finalmente juntando
todo, te debe quedar una ventana más o menos así:

Você também pode gostar