Controlando o acionamento e velocidade de um motor CC com Arduino e transistor
Ontem, no Automação no Parque, contrariando as minhas expectativas, o movimento foi muito bom. Alguns trainees, o Euclas trabalhando em um projeto dele próprio, e outros.
Choveu bastante, e como o telhado do quiosque não tá lá essas coisas, deu o que fazer para a gente conseguir posicionar as mesas de maneira a escaparmos das goteiras. É que eletrônicos e água geralmente não se dão bem, como vcs sabem...
Achada uma posição como poucas e fracas goteiras, volta ao trabalho.
Apareceu por lá um ex-aluno com um projeto de um mecanismo de ajuste de pH de soluções. Consiste em um pHgâmetro que captará o pH da solução, enviando ao Arduino. Este fará o ajuste do circuito acionando uma de duas bombas ligadas respectivamente a soluções ácida e básica.
Ele trouxe o sensor, testamos, funcionou. Trouxe tb as bombas, mas não tínhamos fonte capaz de acioná-las. Como elas são tocadas por motores CC, resolvemos montar o circuito de controle do motor, para adiantar.
Apesar de não precisarmos controlar o sentido de rotação do motor (já que isso não faz sentido para uma bomba), primeiro tentamos usar uma plaquinha driver que o camarada tinha, essa aqui à esquerda, código ZC-A0591.
Ela é usada para se controlar motores de passo, e na minha cabeça deveria funcionar para motores CC. Não foi o que aconteceu, testamos num motor CC de 5V e nada de acionar.
Como a gente não tinha que mudar de direção, mas só acionar e controlar a velocidade, resolvemos fazer uma outra implementação, mais simples, usando transistor. O transistor é necessário porque o Arduino não aguenta mais do que uns 40, 50 mA de corrente em suas portas, e a gente mediu no motor uma corrente de 250 mA.
Abaixo, esquema do circuito que usamos:
Bem simples e barato, o circuito usa um TIP120, transistor tipo Darlington que consegue "administrar" 5A, muito mais do que o que o motor precisa.
O resistor de 220 mA serve para limitar a corrente de base em 22 mA, bem menos que os 120 mA que o TIP120 "guenta".
O diodo 1N4001 serve para evitar que a corrente gerada pelo motor quando ele é desligado atinja o transistor e o resto do circuito.
Montado o "circuitim", toca a fazer o programa, também bem simples:
O pino 10 (pode ser qualquer outro, desde que seja PWM) controla o motor. A função runAndWait aciona o motor com a velocidade speed, durante o intervalo de tempo interval, em milissegundos.
No loop o programa aciona o motor em quatro velocidades distintas (abaixo de 100 ele não gira, a corrente fica muito baixa).
Observe que, se fôssemos apenas ligar e desligar o motor, poderíamos utilizar um relé. Ocorre que, para controlar a velocidade, precisamos passar a "variação de tensão" (entre aspas porque é PWM), só podemos usar um transistor, já que o relé tem partes mecânicas e não pode portanto ser chaveado com a rapidez necessária para o PWM.
Agora, mesmo que só precisássemos ligar e desligar o motor, o uso do TIP120 é bastante interessante, já que ele é barato, possivelmente mais do que o relé, é absolutamente silencioso e, por não ter partes móveis, deve durar mais.
Observação: depois que terminei esse post descobri um jeito de ligar a plaquinha lá em cima de maneira a que ela ela controle motores CC. O texto do cara pode ser visto aqui. Vou ligá-la na próxima semana e testar prá ver se rola.
Abaixo vídeo da bagaça funcionando:
Choveu bastante, e como o telhado do quiosque não tá lá essas coisas, deu o que fazer para a gente conseguir posicionar as mesas de maneira a escaparmos das goteiras. É que eletrônicos e água geralmente não se dão bem, como vcs sabem...
Achada uma posição como poucas e fracas goteiras, volta ao trabalho.
Apareceu por lá um ex-aluno com um projeto de um mecanismo de ajuste de pH de soluções. Consiste em um pHgâmetro que captará o pH da solução, enviando ao Arduino. Este fará o ajuste do circuito acionando uma de duas bombas ligadas respectivamente a soluções ácida e básica.
Ele trouxe o sensor, testamos, funcionou. Trouxe tb as bombas, mas não tínhamos fonte capaz de acioná-las. Como elas são tocadas por motores CC, resolvemos montar o circuito de controle do motor, para adiantar.
Apesar de não precisarmos controlar o sentido de rotação do motor (já que isso não faz sentido para uma bomba), primeiro tentamos usar uma plaquinha driver que o camarada tinha, essa aqui à esquerda, código ZC-A0591.
Ela é usada para se controlar motores de passo, e na minha cabeça deveria funcionar para motores CC. Não foi o que aconteceu, testamos num motor CC de 5V e nada de acionar.
Como a gente não tinha que mudar de direção, mas só acionar e controlar a velocidade, resolvemos fazer uma outra implementação, mais simples, usando transistor. O transistor é necessário porque o Arduino não aguenta mais do que uns 40, 50 mA de corrente em suas portas, e a gente mediu no motor uma corrente de 250 mA.
Abaixo, esquema do circuito que usamos:
Bem simples e barato, o circuito usa um TIP120, transistor tipo Darlington que consegue "administrar" 5A, muito mais do que o que o motor precisa.
O resistor de 220 mA serve para limitar a corrente de base em 22 mA, bem menos que os 120 mA que o TIP120 "guenta".
O diodo 1N4001 serve para evitar que a corrente gerada pelo motor quando ele é desligado atinja o transistor e o resto do circuito.
#define pinControl 10 void setup() { Serial.begin(9600); pinMode(pinControl,OUTPUT); } void runAndWait(int speed, int interval) { analogWrite(pinControl,speed); delay(interval); } void loop() { runAndWait(100,2000); runAndWait(150,2000); runAndWait(200,2000); runAndWait(250,2000); }
O pino 10 (pode ser qualquer outro, desde que seja PWM) controla o motor. A função runAndWait aciona o motor com a velocidade speed, durante o intervalo de tempo interval, em milissegundos.
No loop o programa aciona o motor em quatro velocidades distintas (abaixo de 100 ele não gira, a corrente fica muito baixa).
Observe que, se fôssemos apenas ligar e desligar o motor, poderíamos utilizar um relé. Ocorre que, para controlar a velocidade, precisamos passar a "variação de tensão" (entre aspas porque é PWM), só podemos usar um transistor, já que o relé tem partes mecânicas e não pode portanto ser chaveado com a rapidez necessária para o PWM.
Agora, mesmo que só precisássemos ligar e desligar o motor, o uso do TIP120 é bastante interessante, já que ele é barato, possivelmente mais do que o relé, é absolutamente silencioso e, por não ter partes móveis, deve durar mais.
Observação: depois que terminei esse post descobri um jeito de ligar a plaquinha lá em cima de maneira a que ela ela controle motores CC. O texto do cara pode ser visto aqui. Vou ligá-la na próxima semana e testar prá ver se rola.
Abaixo vídeo da bagaça funcionando:
Legal o Post Prof. Mauro,
ResponderExcluirAgradeço vosso interesse em me ajudar nesse projeto.
No próximo sábado estarei lá novamente para avançarmos ainda mais.
Abraços.
Emerson Vitorio
Emerson,
ExcluirO seu projeto é muito legal, a gente vai aprender um bocado com ele.
Isso, apareça lá no sabadão, e leve de novo aquela paquinha driver pr[a gente testá-la por lá.
[] e até,
Mauro
Fala Mauro,
ExcluirEstou trabalhando todos os Sábados e está difícil de passa ai. No dia que passai não tinha ninguém e depois fui saber que você tinha viajado. mas tubo bem.
Preciso voltar a fazer algum projeto. tenho algumas coisas em mentes e preciso rascunhar para podermos analisar.
Assim que conseguir dar uma escapada passo ai para conversarmos.
Um abraço.
Emerson
esse circuito serve para um motor de 12V?
ResponderExcluirSs
ResponderExcluir