Solenoides no Arduino com o chip driver L293D
Como acionar 4 solenóides independentes a partir de um mesmo CI L293D, controlado por um Arduino.
O chip L293D é conhecido por ser capaz de operar até 2 motores DC, com escolha de sentido da rotação, controlado pelos 5V do Arduino e permitindo que os motores sejam alimentados por uma fonte independente de até 36V (e até 600mA por canal).
Recentemente me envolvi no desenvolvimento da camada eletrônica e de protocolo de comunicação em um projeto de automação musical que envolve controlar 13 solenóides que irão acionar as teclas de um piano de brinquedo. Meu envolvimento no projeto é limitado, e a escolha dos solenóides já havia sido feita quando comecei a participar: são do modelo RM-0520B, acionados por uma corrente de 12V 500mA, com deslocamento de 0,7cm e capacidade de 40g.
Um aspecto interessante desse modelo de solenóide é que ele inclui sua própria mola para retorno ao estado inicial após o acionamento, o que faz dele um solenoide tipo push pull.
Como usar um solenoide
Solenóides são simples de acionar: geralmente eles têm 2 fios sem polaridade, e basta fazer passar corrente entre os 2 e o solenoide aciona – no caso do modelo em uso neste projeto, ele estende em 7mm sua haste, com força suficiente para mover 40g, bem mais do que o suficiente para acionar uma tecla de piano.
O problema comum com a conexão de solenóides a microcontroladores é que eles costumam exigir mais tensão e corrente do que um Arduino ou similar é capaz de fornecer diretamente. No caso do modelo em uso no projeto em que me envolvi, os 12V x 0,5A são beeem mais do que o Arduino pode oferecer diretamente.
Essa tensão e corrente fazem com que seu acionamento também não seja uma aplicação confortável para o típico transistor NPN de meus circuitos anteriores, recaindo melhor no território dos MOSFETs e dos chips acionadores de motor (incluindo os diversos shields e módulos disponíveis comercialmente para essa finalidade).
Um chip de controle para 2 motores DC pode controlar 4 solenóides independentes entre si.
Eu havia comprado recentemente um conjunto de chips L293D (ponte H dupla), tipicamente usados para controlar 2 motores DC, com controle de velocidade e sentido, e lembrava de ter visto na datasheet deles que esses CIs também podem ser usados para controlar solenoides.
Com um pouco de pesquisa, descobri que cada um deles pode acionar até 4 solenóides independentemente, que os 12V e 500mA dos meus solenóides estão confortavelmente dentro da sua faixa de operação, e que eles são tão bem adequados à minha demanda, que já vêm até mesmo com o diodo em paralelo que os protege contra a corrente de retorno induzida pelo solenoide ao ser desativado.
Pinagem do L293D
A pinagem do L239D consta na datasheet assim:
Descrevo a seguir as conexões que usei no L239D para acionar 4 solenóides:
O pino 16 (VCC1) alimenta a lógica do CI e é ligado ao 5V do Arduino. O pino 8 (VCC2) alimenta os solenóides quando acionados, e é ligado à fonte de alimentação externa (no meu caso, uma fonte de 12V 2,5A). Os pinos 4, 5, 12 e 13 do L293D são ligados ao terra comum entre o Arduino e a fonte externa.
Os pinos 1 e 9 (1,2EN e 3,4EN) podem ser ligados a pinos digitais do Arduino para ativar e desativar independentemente as conexões 1/2 e 3/4, mas isso faz mais sentido quando se está usando um desses pares para acionar cada motor DC. No caso de solenóides, as conexões 1, 2, 3 e 4 atuam independentemente (cada uma aciona um solenóide), e pode fazer mais sentido conectar os pinos 1 e 9 diretamente ao 5V do Arduino, deixando assim o controle de todos os solenoides permanentemente habilitado e pronto para receber comandos.
Mas habilitar não produz nenhum efeito visível: é necessário poder acionar os solenóides, e isso é feito conectando pinos digitais do Arduino (eu escolhi os pinos 9, 10, 11 e 12) aos pinos "A" (1A, 2A, 3A e 4A) do L239D, e cada um dos pinos "Y" (1Y, 2Y, 3Y e 4Y) do L239D a um dos 2 fios de cada um dos 4 solenóides.
O outro fio de cada um dos 4 solenoides deve ser conectado ao terra comum. Assim, sempre que um dos pinos digitais do Arduino conectados aos pinos "A" for para o estado HIGH, o L239D vai enviar para o pino "Y" correspondente a tensão conectada ao seu pino VCC2, produzindo assim corrente no solenóide, que ficará acionado enquanto durar o estado HIGH no pino do Arduino.
Meu programa de teste
O programa que fiz para testar os 4 solenóides conectados a um mesmo chip L239D conforme descrito acima é bem simples: ele se limita a inicializar em modo OUTPUT os 4 pinos do Arduino conectados aos pinos "A" do L293D, e depois a enviar, alternadamente, os estados HIGH e LOW para cada um desses pinos, com pausas de meio segundo (delay(500);
) após cada mudança de estado.
O vídeo acima mostra o resultado, com 3 dos solenóides programados para se mover como se estivessem acionando (bem mecanicamente...) as teclas dó, sol e lá de um piano, para tocar as notas iniciais da música infantil "Brilha Brilha Estrelinha".
Comentar