Arduino, sensor de chamas e hélice: detectando e apagando um isqueiro

Com uma hélice acoplada a um motorzinho, controlada por um sensor de chama conectado ao Arduino, e tomando os cuidados necessários, dá para detectar e apagar a chama do isqueiro.

No artigo anterior já vimos como funciona o sensor de chamas, e agora é hora de colocá-lo para funcionar em uma aplicação real (de entretenimento): um ventilador que detecta isqueiros acesos e os apaga.

Para isso, além do Arduino e do sensor de chamas já mencionado no artigo anterior, eu usei uma bateria de 9V, um módulo de hélice Keyes 140c04, e mais os cabos. Se for montar um circuito similar, considere se no seu caso há demanda por colocar um transistor entre o Arduino e o motor, para proteger o Arduino.

Advertência

Lidar com fogo é perigoso. Só prossiga neste experimento se tiver a concordância expressa do responsável pelo ambiente, contar com a presença de equipamento de segurança e de proteção, e tomar todos os cuidados necessários a essa atividade.

O circuito

O módulo de hélice é um pequeno motor conectado a uma hélice de plástico rígido, e sua interface é composta por 4 pinos: GND, VCC, INA e INB. Os 2 primeiros são de alimentação e foram conectados, respectivamente, ao terra e ao positivo da minha bateria de 9V. O terra da bateria foi conectado também ao pino GND do Arduino.

Os pinos INA e INB controlam o funcionamento do motor. Se ambos estiverem com o mesmo valor lógico (HIGH e HIGH, ou LOW e LOW), o motor estará parado. Caso os valores lógicos sejam diferentes entre si (LOW e HIGH, ou HIGH e LOW), o motor vai girar no sentido horário ou anti-horário1.

Eu conectei o INA ao pino 6 do Arduino, e o INB ao pino 5. Para fazer um circuito com mais isolamento entre os sensíveis pinos do Arduino e os terminais de controle do motor, eu poderia ter conectado o INA ao terra e o INB a um transistor, de maneira similar à do artigo sobre segurança ao acionar relés. O uso do diodo de proteção, mencionado no mesmo artigo, é menos necessário porque o módulo do motor já o inclui.

As conexões entre o Arduino e o sensor de chama permaneceram as mesmas que as do artigo anterior.

O programa

Embora o efeito seja divertido – o ventilador realmente começa a girar assim que a chama se aproxima, e consegue apagá-la rapidamente, o que leva ao seu desligamento –, não há nada de muito especial no programa utilizado:

void setup() {
  pinMode(2, INPUT);
  pinMode(5,OUTPUT);
  pinMode(6,OUTPUT);
  pinMode(13,OUTPUT);
  digitalWrite(5,LOW);
}

void loop() {
  digitalWrite(6,!digitalRead(2));
  digitalWrite(13,!digitalRead(2));
}

Observe que no setup() eu configuro para leitura o pino 2 (ao qual está conectado o pino de dados do sensor), e para escrita os pinos 5 e 6 (controle do motor) e 13 (led interno). Em seguida, eu coloco o valor lógico LOW no pino 5 ('INA' - controle do motor), que permanecerá assim enquanto o programa estiver rodando.

O loop() tem apenas 2 comandos, que colocam nos pinos 6 ('INB' - controle do motor) e 13 (led interno) o inverso do valor lógico lido na porta 2 (dados do sensor de chama).

Como já vimos, o sensor de chama se mantém normalmente em HIGH, e muda para LOW quando uma chama é detectada. Assim, o que o programa faz na prática é manter o pino 6 e o pino 13 em LOW enquanto o pino 2 estiver em HIGH, e vice-versa.

Lembre-se do que vimos acima sobre o controle do motor: como o pino 5 do Arduino (conectado ao 'INA' do motor) está permanentemente LOW, e o pino 6 do Arduino (conectado ao 'INB' do motor) fica em LOW enquanto o pino do sensor não indicar chama, o motor ficará desligado (pois INA=INB) enquanto não houver chama.

Quando a situação mudar devido à detecção de uma chama, INA permanecerá LOW, mas INB receberá HIGH. E o motor começará a girar no sentido que produz vento para a frente, que é o que me interessa. Como bônus, o pino 13 também irá para HIGH, e o led interno do Arduino vai acender.

Quando a chama deixar de ser detectada (porque o ventilador a apagou), os estados voltam à situação anterior, e o led se apaga, e o ventilador para de girar.

Simples, como experimento. Mas perigoso (releia a advertência em letras grandes, acima), e pouquíssimo eficaz no combate a chamas em ambientes reais.

 
  1.  Consulte a documentação do chip L9110 para maior detalhamento sobre o controle do motor, incluindo o possível uso de PWM para controlar a velocidade de rotação. Sem usar PWM, a velocidade sempre é a máxima suportada.

Comentar

Dos leds ao Arduino, ESP8266 e mais

Aprenda eletrônica com as experiências de um geek veterano dos bits e bytes que nunca tinha soldado um led na vida, e resolveu narrar para você o que descobre enquanto explora esse universo – a partir da eletrônica básica, até chegar aos circuitos modernos.

Por Augusto Campos, autor do BR-Linux e Efetividade.net.

Recomendados

Livro recomendado


Artigos já disponíveis

Comunidade Arduino

O BR-Arduino é integrante da comunidade internacional de entusiastas do Arduino, mas não tem relação com os criadores e distribuidores do produto, nem com os detentores das marcas registradas.

Livros recomendados