Construir os controles dos ventiladores de 250W a 300W dos Projetos de Vento num 1, tem sido um desafio, por vezes desalentador. Vou tentar recuperar um caminho aqui, a fim de ver se consigo elaborar os novos passos.
Primeira ideia era de conectar nanokontrol para com esse dimmer: não sei em qual momento, me pareceu que o arduino demora demasiado em processar essa relação com a nanokontrol e por isso desisti, coisa que vou voltar atrás, caso um dia eu consiga operacionlizar um dimmer AC com um arduino (sobretudo agora que já trabalhei(amos, com Leo) no processo de comunicação entre dois Arduinos, onde um arduino comunica com a nanokontrol e processa essa relação e o outro só recebe os dados da nanokontrol que são dois: "qual slides/botão" e "qual o valor"; o segundo arduino, recebe só as informações e tem a tarefa de enviar por radio.... mas isso conto mais adiante). De todo modo, creio que agora talvez tenha as ferramentas para fazer essa conversa entre nanokontrol e dimmer AC com arduino.
Mas antes!
Voltando:
Montei o circuito desse cara aqui:
obs1: Esse desenho possui pelo menos um erro: o pino2 do MOC, deve estar ligado ao GND do arduino.
obs2: o circuito zerocross tem por função, detectar e informar ao arduino quando que senoide da rede elétrica está passando por zero, para que o arduino possa então decidir quanto dessa onda vai deixar passar para a carga ou não (faz isso decidindo em qual momento dispara ou não o triac), gerando essa espécie de "PWM" de AC (não é um PWM de AC, só uma analogia).
[em azul eh o pulso do arduino, que a depender de quando dispara o triac, transformando ele "num fio", vai permitir que passe essa ao aquela parte da senoide, fazendo ascender com mais ou menos intensidade]
Para isso, eu avaliei que não seria necessário que o circuito zero cross estivesse conectado ao triac e à carga, tal como no circuito do home, umas vez que não precisa, na minha cabeça, dessas conexões para poder cumprir sua tarefa. Também receei que ao deixar aí conectado (entre o terminal 1 do triac e o terminal ""negativo"" do motor), quando a carga não fosse acionada, o zero cross também não seria. E certo, tudo bem, quando a pessoa tem um zero cross e um dimmer, mas eu quero um zero cross e 10 dimmers, então se, e somente, se , minha lógica estivesse certa, eu teria de deixar independente o zero cross dos dimmers. Então, eu separei o circuito e remodelei, segundo vários que vi na internete, fiz assim:
Então meu circuito ficou assim:
Então, montei numa protoboard o circuito de dimmer e na outra o circuito de zerocross, duplicando cabos pra ver se não tem problemas de esquentamento.
O que aconteceu foi que o dimmer funcionava no modelo de o arduino, no software, ir incrementando o valor que corresponde intensidade da luz, fazendo
acender e apagar. Usando esse programa (acho, já não tenho certeza):
#define PINO_DIM 9
volatile int luminosidade = 0; // 0 a 100
void zeroCross() {
int t1 = (96*luminosidade);
delayMicroseconds(t1);
digitalWrite(PINO_DIM, HIGH);
delayMicroseconds(10); // t2
digitalWrite(PINO_DIM, LOW);
}
void setup() {
pinMode(PINO_DIM, OUTPUT);
attachInterrupt(0, zeroCross, RISING);
}
void loop() {
for (byte i=5; i<100; i++) {
luminosidade=i;
delay(15);
}
delay(100);
}#define PINO_DIM 9
volatile int luminosidade = 0; // 0 a 100
void zeroCross() {
int t1 = (96*luminosidade);
delayMicroseconds(t1);
digitalWrite(PINO_DIM, HIGH);
delayMicroseconds(10); // t2
digitalWrite(PINO_DIM, LOW);
}
void setup() {
pinMode(PINO_DIM, OUTPUT);
attachInterrupt(0, zeroCross, RISING);
}
void loop() {
for (byte i=5; i<100; i++) {
luminosidade=i;
delay(15);
}
delay(100);
}
ou assim:
#define PINO_ZC 2
#define PINO_DIM 9
volatile long luminosidade = 0; // 0 a 100
void zeroCross() {
if (luminosidade>100) luminosidade=100;
if (luminosidade<0) luminosidade=0;
long t1 = 9700L * (100L - luminosidade) / 100L; // ja aqui to usando a rede da argentina de 50hz, então 10000 passagens por zero, tirando algumas, etc, to com preguiça de escrever.
delayMicroseconds(t1);
digitalWrite(PINO_DIM, HIGH);
delayMicroseconds(6); // t2
digitalWrite(PINO_DIM, LOW);
}
void setup() {
pinMode(PINO_DIM, OUTPUT);
attachInterrupt(0, zeroCross, RISING);
}
void loop() {
for (byte i=5; i<100; i++) {
luminosidade=i;
delay(15);
}
delay(100);
}
Não lembro exatamente qual o primeiro programa que usei, lembro que não foi o programa do circuito de referencia que montei e lembro que eu realmente entendi o programa a partir das explicações deus programa aqui. Ah! Justamente, esse foi o primeiro que usei. Até porque, o Wagner Rambo, que usei de referencia pra colocar potenciômetro deslizante usava ele de referencia.
Com esse programa eu entendi que:
1- o calculo do tempo relativa a frequências da rede é importante. Ou seja, o arduino vai abrir o triac pra deixar a corrente nesse ou naquele momento, a partir do momento que ele sabe em que parte da senoide está (no caso, saber sempre que está em zero, para poder contar o tempo de abrir o triac a partir daí). Então, eu TRATEI DE TENTAR ADAPTAR O PROGRAMA PARA 50HZ.
Como depois quero escrever com mais detalhes, guardo aqui essa ideia que quero expandir de que, com o dimmer sem arduino, é a relação entre capacitor e resistor que gera a quantidade de tempo para que haja a abertura do triac. Ou seja, o tempo é gerado pelo hardware. Nesse método de uso do arduino, é ele, o arduino, que , na programação , faz a contagem de tempo Ou seja, o tempo é gerado por software.
Voltando à narrativa do percurso:
Aparentemente funcionou, o dimmer, com o zero cross separado e o programa acima adaptado para 50hz (ou penso que adaptei, nao sei se fiz certo). Fui dormir felizísssima, mal acreditei nesse passo que dei em direção ao controle de carga AC.
[video]
Aí vem o inferno. Tentei com a nanokontrol, como mencionei, e nada (VOLTO A TENTAR DEPOIS!!!!!! quero!!!).
Tentei com um POTÊNCIÔMETRO DESLIZANTE, desses já soldado com a resistência para arduino e aí tentei esse programa (que está na descrição do vídeo desse link, baseado nesse programa do tutorial acima, que eu printei, o do "produzir um amanhecer"):
#define PINO_DIM 9
volatile long luminosidade = 0; // 0 a 100
void zeroCross() {
if (luminosidade>100) luminosidade=100;
if (luminosidade<0) luminosidade=0;
long t1 = 8200L * (100L - luminosidade) / 100L;
delayMicroseconds(t1);
digitalWrite(PINO_DIM, HIGH);
delayMicroseconds(6); // t2
digitalWrite(PINO_DIM, LOW);
}
void setup() {
pinMode(PINO_DIM, OUTPUT);
attachInterrupt(0, zeroCross, RISING);
}
void loop() {
luminosidade = analogRead(A0);
luminosidade = map (luminosidade, 0,1023, 10, 90);
delay(10);
}
Até então, sempre venho testando com luz, por receio de queimar meu único ventilador - o que pode ser justamente o lugar do problema por ser testes com carga resistiva: uma lâmpada de 100w que comprei, incandescente.
E a luz então, fazia os fades in e out, mas ficava piscando quando estacionada em algum valor ou mesmo no momento de deslizamento do slider.
Esses tutoriais - do" amanhecer" e o do Wagner Rambo - são propagandas de um módulo dimmer para arduino., mas que dizem expressamente que serve apenas para carga resistia (Seria o programa também pensado para algo do tipo (só resistiva)? Achei que não, por isso usei.
Decidi então tentar colocar numa placa, porque talvez possa ser mal contato provocado pela protoboard. Fiz o circuito dimmer.
Assim ficou a dissipação de calor e o isolamento elétrico do triac com relação ao dissipador:
Mesmo problema.
Pedi ajuda ao professor Clemilson, mas de longe, sem poder manusear o circuito, é meio complicado... sem resposta.
Decidi seguir exatamente o circuito de referência com o programa de incremento de luminosidade e fica piscando. Pode ser que eu tenha ligado algo errado.... Com o programa com o dimmer deslizante, tão pouco funcionou. Decidi, até do circuito físico "original" colocar o programa original do tutorial e tampoco anda.......
Pedi ajuda a um professor na FabLab e sua proposição foi de fazer esse circuito, que se ocupa apenas do zero cross. Trouxe uma boa parte do material para fazer uma PCI e me "ensinou" a soldar, ao que ao final eu tinha esse modelo de zerocross errado, que percebi graças ao meu medo de AC e concertei em casa, :
No desespero de não ter funcionado o circuito de referência 1, no modelo tal como original (supondo que eu não tenha cometido erros), fui fazer a tarefa de casa que me propôs o professor, que era pegar esse ciruito acima e colocar os programas de teste do tutorial dele.
Uma coisa que só me dei conta fazendo, é que ele não tem, saindo do pino 5, um reitor de 10k ohm que vai para VCC.... (mistério.....)
MAs coloquei o osciloscópio miudinho e testei com e sem esse resistor-e-fio-ligado-ao-vcc e o sinal se amplia bastante e depois, testei com o circuito completo e ele não liga a lâmpada sem essa conexão. Ou seja, para os testes de software até que pode ficar sem, mas com o dimmer e a carga, não ativava a carga.
Programa 1:
Resultado: me aparecia invertido: quando eu desligava o circuito, ele dizia que estava "encendido". Quando eu ligava a eletricidade, ele me dizia que estava "apagado"... (mistérios.....)
Mas aí veio o programa 2:
E esse me apresentou no monitor serial, tudo direitinho:
100.21 hz (porque ele pega a senoide na subida e na descida, ou seja, nos ciclos positivos e negativos e se aqui funciona a 50Hz, então, o dobro é 100HZ)
e quando eu desligava o circuito ele dizia ·"non freq".
E no osciloscópio ele dizia que a frequências estava ali, em torno de 100hz. Só que no monitor serial ele variava de 100 a 110HZ e no osciloscópio entre 99 e 100hz.
Para onde ir agora?
Penso em duas alternativas:
1- refazer na protoboard programa e circuito da referencia numero 1 com as ligações tal qual estão (as que eu não gosto)…
2- montar só o circuito dimmer da referencia 1 e tentar controlar a luz por software e depois acoplar esse circuito de zerocross que funcionou (funcinou?)
3- RUÍDO:
Leo mexendo, viu, parece que há muito problema de interferência. E podemos ver que o pulso que sai do zerocross é "nervoso". E quando Leo mexia nesse ponto do circuito, a luz sempre pisca o que nos levou a pensar que ali seria um ponto para atacar. Ele acha que o ruído é um problema real nesse tipo de circuito e que devo tentar ver isso. Colocou uns quatro capacitares pequenos de cerâmicas que parecem carrapatos, em paralelo entre eles, colocou eles entre o pino 2 e o GND, que saem do zerocross e vai para o arduino. Ele sempre mais esperançoso que eu e acha que melhorou.
Também fiquei pensando em colocar u, filtro RC em paralelo com o terminal 1 e terminal 2 do triac. Porque lembrei que todos os professores que eu respeito falam que para carga indutiva, tem que colocar esse filtro que eu não tinha ideia de como dimensionar, mas hoje, revendo meu material ,percebi isso: que o lugar de colocar o filtro de ruido - porque tem o filtro que temporiza o disparo do triac- mas o de ruído, fica entre T1 e T2 do triac. E eu gostaria de tentar.
Penso também que devo montar a placa só com soquetes, de maneira que eu possa testar:
1- meu outro circuito de referência, apenas mudando os componentes (porque tem as mesmas posições.
2: colocar soquetes para esse filtro RC de saída, para eu poder testar alguns filtros.
3: colocar soquetes pra eu poder testar colocar sou só capacitor ou filtro RC na saída do zero cross....
comprar soquetes;
solda grossa:
ponta mais grossa (ver se leo tem)
resistires que faltam, que nao tinham naquele dia
soquete para arduino mini pro (para outra coisa)
continua....
Olá Caroline, estou com mesmo problema, acredito que seja o mesmo.
Detectei com o osciloscopio, que ao tocar com as ponteiras do multimetro na tomada, a senoide da rede dava uma pequena deslocada, afetando o disparo.