Baixe o app para aproveitar ainda mais
Prévia do material em texto
ROBÓTICA Fernando Esquírio Torres Atuadores para projetos Arduino Objetivos de aprendizagem Ao final deste texto, você deve apresentar os seguintes aprendizados: � Caracterizar o funcionamento dos motores DC. � Identificar circuitos para acionamentos dos motores utilizados em projetos com Arduino. � Analisar as aplicações de motores DC utilizando Arduino. Introdução Os motores de corrente contínua (motor DC) são utilizados, geralmente, em robôs móveis no seu sistema de locomoção, pois seu baixo custo e grande versatilidade no controle de velocidade garantem sua navegação dentro de um ambiente de trabalho (PETRUZELLA, 2013). Você pode encontrar esse tipo de motor em diversos equipamentos, como, por exemplo, dispositivos domésticos (leitor de DVD ou Blu-ray) e brinquedos. Neste capítulo, você vai conhecer o princípio de funcionamento geral dos motores DC. Você vai ver as principais características técnicas desses motores e identificar os circuitos necessários para o acionamento e interfaceamento desse tipo de motor com a plataforma microcontrolada Arduino. Funcionamento de um motor DC De acordo com Petruzella (2013), os motores de corrente contínua, tam- bém chamados de motores DC, são um tipo de motor energizado com uma corrente contínua, que pode ser proveniente de pilhas/baterias ou de uma fonte de alimentação CC (como, por exemplo, carregadores de celular, fonte chaveada ou comutada). Esse tipo de motor é recomendado para aplicações que exigem torque preciso e acionamento de velocidade, como guindastes, correias transportadoras, elevadores, entre outras. Segundo Monk (2014), os motores DC podem ser classificados quanto a sua comutação em escovados ou brushless (sem escovas). Segundo Petruzella (2013), o motor DC tem dois terminais que, ao serem energizados por uma bateria ou uma fonte de alimentação, produzem um campo magnético gerado pela corrente que percorre por esses terminais. Se você ligar os terminais do motor nos polos da bateria, como mostrado na Figura 1, o motor vai girar no sentido anti-horário (você se lembra da regra da mão direita, que aprendeu nas aulas de Física?). Se você inverter a ligação dos terminais do motor com os polos da bateria, o motor irá girar no sentido contrário. Figura 1. Terminais do motor DC energizados por uma bateria. Fonte: Fouad A. Saad/Shutterstock.com. Atuadores para projetos Arduino2 De acordo com o princípio de funcionamento dos motores DC, a rotação acontece por causa do campo magnético criado pela corrente gerada pela ligação de uma bateria ou de uma fonte de alimentação de corrente contínua (CC). O sentido de rotação vai depender da polarização dos terminais, que provocam uma mudança no sentido do campo magnético gerado. A velocidade dos motores DC é controlada variando a tensão aplicada nos seus terminais. Você pode saber mais sobre o funcionamento de motores DC no vídeo disponível no link a seguir, do canal Learn Engineering, que é um projeto criado para melhorar a qualidade da educação voltada para engenharia. Para entender a operação e construção de motores comerciais, assista ao vídeo. https://goo.gl/4YGjVc Stevan Junior (2015) destaca a importância de identificar as especificações técnicas/elétricas do motor DC que você está usando ao trabalhar com esse dispositivo, pois essas características serão úteis para um melhor aprovei- tamento e utilização do motor. As especificações técnicas importantes são: � tensão de operação; � velocidade de rotação; � corrente do motor. Um motor DC comumente utilizado por hobbista e estudantes em seus projetos é o modelo RF-300ca-09550 (Figura 2). Esse motor é fácil de comprar no mercado, pois é utilizando em DVD-Rom e/ou Play Station para rotacionar o CD/DVD. 3Atuadores para projetos Arduino Figura 2. Motor DC utilizado em DVD-Rom e Play Station. Fonte: Adaptada de Mabuchi Motor ([201-?]). O Quadro 1 mostra as principais características do motor RF-300ca-09550. Fonte: Adaptado de Mabuchi Motor ([201-?]). Tensão Sem carga Na máxima eficiência Travado Faixa de ope- ração Nomi- nal Veloci- dade Cor- rente Veloci- dade Cor- rente Corrente rpm A rpm A A 1 – 6V 3V 2700 0.012 2100 0.042 0.15 Quadro 1. Especificações técnicas do motor RF-300ca-09550 Perceba, no Quadro 1, que a primeira especificação técnica é a faixa de operação da tensão do motor, que, de acordo com Margolis (2012), representa os valores mínimos e máximos que você pode alimentar o motor (nesse caso de 1 a 6V). Já a tensão nominal (3V) é o valor que seu motor precisa para funcionar corretamente. Atuadores para projetos Arduino4 A segunda especificação técnica é a velocidade de rotação, que é medida em rpm (rotações por minuto). Ela representa a quantidade de voltas que o motor dá por unidade de tempo, neste caso por minuto. Assim você tem 2700 rpm, quando o motor está sem carga, e 2100 rpm na máxima eficiência. Por fim, a terceira especificação técnica é a corrente necessária para rotacionar o motor. Neste caso, você tem 12 mA quando o motor está sem carga, 42 mA na eficiência máxima e 150 mA com o motor travado. Existe também a corrente de pico, que é a corrente necessária para iniciar o movi- mento do motor, ou seja, tirar o motor da inércia. Ela normalmente tem um valor próximo da corrente com o motor travado (+/- 150 mA). Veja mais sobre as especificações técnicas desse motor e de outros motores semelhantes no seu datasheet, que pode ser acessado no link a seguir. https://goo.gl/9kigwA Circuitos para acionamentos de motores DC usando o Arduino Segundo Culkin (2018), para controlar um motor DC é necessário correntes mais altas do que as fornecidas pelos microcontroladores, pois microcontrola- dores têm limitação de corrente nos pinos de saída. De acordo com McRoberts (2011) e Banzi e Shiloh (2015), o Arduino fornece uma corrente de saída nos seus pinos de 40 mA. Esse valor não é suficiente para rotacionar o motor DC na sua máxima eficiência e muito menos para iniciar o movimento de rotação (sair da inércia) do motor DC. Por isso, é necessário um circuito de acionamento para fazer a interface entre o motor e o Arduino, permitindo movimentá-lo e controlar sua velocidade. Sendo assim, você precisa conhecer alguns dos circuitos existentes para o acionamento de motores utilizando a plataforma microcontrolada Arduino. A seguir, serão apresentados dois circuitos para fazer a interface entre motores DC e o Arduino, de forma a acioná-los. 5Atuadores para projetos Arduino Circuito de acionamento com transistor Segundo Monk (2014), o circuito de acionamento de motores DC mais simples para você montar, utilizando a plataforma Arduino, é composto de um tran- sistor, um resistor e um diodo. Nesse circuito, que você pode ver na Figura 3, o transistor funciona como uma chave de liga e desliga e permite controlar o motor utilizando apenas um pino de saída digital do Arduino. Figura 3. Circuito de acionamento do motor com transistor. Fonte: Adaptada de Monk (2014, p. 137). GND D11 R1 D1 M b e c T1 12V CC Fonte de alimentação GND 12V Vin Vin 270 V Arduino 270 Ω A fonte de alimentação pode ser pilhas/baterias ou uma fonte de corrente contínua, desde que forneçam tensão e corrente suficientes para o funcio- namento do circuito e controle do motor. De acordo com Culkin (2018), o transistor do tipo NPN é utilizado como uma chave/interruptor de sinal elétrico e seus três pinos são: � emissor (e); � base (b); � coletor (c). Atuadores para projetos Arduino6 O pino do emissor está ligado ao GND, a base está ligada ao pino 11 do Arduino em série com um resistor e o pino coletor está ligado à alimentação 5V em série com o diodo e o motor. Veja na Figura 4 o circuito montado no protoboard. Nele foi utilizado o transistor BC639, um resistor de 270Ω, um diodo 1N4007, um motor DC, um Arduino UNO e cabos para conexão. Se você for montar o seu circuito, é importante prestar a atenção na posição do transistor:certifique-se de que a parte reta fique virada para você. Figura 4. Circuito de acionamento do motor com o transistor NPN BC639, resistor de 270Ω e diodo 1N4007. 7Atuadores para projetos Arduino Durante a montagem do circuito, certifique-se de que a alimentação está desligada, pois, caso esteja ligada, isso pode causar danos ou até queimar os componentes utilizados. O código do sketch para o funcionamento do circuito é relativamente sim- ples — veja um exemplo na Figura 5. Conforme descrito por Banzi e Shiloh (2015), o passo necessário para construir o código para acionar o circuito da Figura 3 é, basicamente, configurar o pino 11 como saída digital — isso permite o firmware “escrever” níveis de tensão (Alto/High ou Baixo/Low) no pino. Desse modo, para ligar o motor, basta você colocar um nível de tensão alto (5V, HIGH no Arduino) no pino de saída e para desligar o motor um nível de tensão baixo (0V, LOW no Arduino). No código mostrado na Figura 5, a diretiva #define (#define MOTOR 11) estipula um “apelido” para representar o pino 11 do Arduino. Essa é uma boa técnica de programação que deixa mais claro, organiza e facilita a manutenção do programa. De acordo com Evans, Noble e Hochenbaum (2013), o comando #define cria uma macro (apelido) que está associada a um valor, uma sequência de caracteres ou um comando. Na função setup(), o comando pinMode(MOTOR, OUTPUT), na linha 13, configura o pino 11 como saída digital. No loop principal, o comando digitalWrite(MOTOR, HIGH) liga o motor DC na sua máxima eficiência, pois esse comando coloca um nível de tensão alto (5V) no pino de saída digital, e ele fica ligado por 2 segundos (2000 milissegundos) devido ao comando de espera ocupada delay(2000). Por último, o comando digitalWrite(MOTOR, LOW) desliga o motor, pois esse comando coloca um nível de tensão baixo (0V) no pino e ele fica desligado por 500 milissegundos devido ao comando delay(500). Essa lógica principal fica executando em loop até você desligar o Arduino (McROBERTS, 2011). Esse primeiro circuito de acionamento tem a desvantagem de fazer o motor girar apenas em um sentido, que vai depender da conexão dos terminais no protoboard e de como você alimenta os terminais do motor. Mesmo assim, esse circuito é importante para entendermos o funcionamento e o controle de um motor DC utilizando o Arduino, e pode ser aplicado em um projeto de um robô móvel que anda somente para frente, por exemplo, assim o motor tem que girar apenas em um sentido. Atuadores para projetos Arduino8 Figura 5. Código para o acionamento do motor DC com transistor. Circuito de acionamento com ponte H Quando você quiser mudar o sentido de rotação, deverá utilizar uma ponte H (Figura 6), que, segundo Monk (2014), é um circuito eletrônico que possibilita controlar o sentido de rotação do motor DC, além de fornecer a tensão e a corrente necessárias para o funcionamento do motor. Essencialmente, a ponte H é um conjunto de 4 chaves (transistores) eletrônicas(os) operadas(os) aos pares (Figura 7). Ligando-se S1 e S4 simultaneamente, a corrente circulará em um sentido pelo motor. Por outro lado, com S2 e S3 ligadas, a corrente circulará em sentido oposto, e o giro do motor será no sentido oposto. 9Atuadores para projetos Arduino Figura 6. Circuito de acionamento ponte H. Fonte: Adaptada de Monk (2014, p. 138). +V –V S1 S2 S3 S4 A B M Figura 7. Circuito de acionamento do motor com a ponte H L298N. +5Vcc Arduino 9 8 +12V +5Vcc Ponte H O U T A GND IN1 IN2 OUT1 OUT2 M Atuadores para projetos Arduino10 Margolis (2012) destaca que existem vários shields ou módulos de ponte H para acionar um motor DC com o Arduino. Aqui, você verá a montagem do circuito utilizando o módulo ponte H L298N. Esse módulo L298N é chamado ponte H dupla, pois pode controlar até dois motores de forma independente. O circuito esquemático para acionar um motor DC utilizando a ponte H e o Arduino é mostrado na Figura 7. Nessa imagem esquemática, a ponte H é alimentada com 5V e GND da placa Arduino; neste caso, serão necessários dois pinos de saída digital para controlar o motor (pino 8 e pino 9), ligados nos pinos IN1 e IN2 da ponte H, pois o motor DC está ligado nas saídas OUT1 e OUT2. O Quadro 2, a seguir, mostra as conexões do módulo da ponte H L298N e algumas sugestões de onde liga-las no Arduino. Nome da porta Estado Descrição +12V power - Atenção: alimentação externa (5V a 35V). Deve ser ligada ao pino de 5V do Arduino. power GND - Conexão para o GND da fonte de alimentação externa. Deve ser ligada ao pino GND do Arduino. +5V power - Atenção: saída de 5V. ENA Entrada Habilita (1) /Desabilita (0) motor A — jumper disponível. IN1 Entrada Controle de velocidade do motor A. É um sinal PWM do Arduino. IN2 Entrada Sentido de giro do motor. É um sinal lógico fornecido pelo Arduino: HIGH = horário, LOW = anti-horário. ENB Entrada Habilita (1) /Desabilita (0) motor B — jumper disponível. IN3 Entrada Controle de velocidade do motor B. É um sinal PWM do Arduino. IN4 Entrada Sentido de giro do motor. É um sinal lógico fornecido pelo Arduino: HIGH = horário, LOW = anti-horário. Quadro 2. Especificações técnicas do módulo ponte H L298N (Continua) 11Atuadores para projetos Arduino Quadro 2. Especificações técnicas do módulo ponte H L298N Nome da porta Estado Descrição OUT A (2 pinos) Saída Ligação do motor A. OUT A = {OUT1, OUT2} OUT B (2 pinos) Saída Saída para o motor B. OUT B = {OUT3, OUT4} 5V enable - Se o jumper estiver conectado no pino 5V_EN, o LM7805 irá fornecer 5V para alimentar o CI L298N. Caso o jumper seja desconectado do pino, será necessário fornecer 5V para o chip L298N. (Continuação) Você pode visualizar na Figura 8 o código do Arduino para o acionamento do motor DC utilizando o circuito de ponte H. No código da Figura 8, as diretivas #define (#define IN1 9 e #define IN2 8) estipulam “apelidos” para representar os pinos 9 e 8 do Arduino. Na função setup() do código, os comandos pinMode(IN1, OUTPUT) e pinMode(IN2, OUTPUT) configuram o pino 9 e 8 como saída digital. No loop principal, os comandos digitalWrite(IN1,HIGH) e digitalWrite(IN2,LOW) controlam a energização dos terminais do motor DC para girar em um sentido, e o motor fica ligado por 5 segundos (5000 milissegundos) devido ao comando de espera ocupada delay(5000). Em seguida, o motor é parado devido aos comandos digitalWrite(IN1,HIGH) e digitalWrite(IN2,HIGH) por 2 se- gundos (comando delay(2000)). Então, os comandos digitalWrite(IN1, LOW) e digitalWrite(IN2, HIGH) invertem o sentido de rotação do motor DC por 5 segundos (delay(5000)). Por fim, o motor para novamente por 2 segundos. O loop principal é repetido até que você desligue o Arduino (McROBERTS, 2011). Atuadores para projetos Arduino12 Figura 8. Código para o acionamento do motor DC com a ponte H. Controle de velocidade de motores DC utilizando o Arduino Como você viu, a velocidade de um motor DC é controlada pelo valor de tensão aplicada nos seus terminais. Segundo Monk (2014), quando você está trabalhando com microcontroladores, inclusive com o Arduino, é possível variar 13Atuadores para projetos Arduino a tensão de um pino de saída por meio do periférico interno responsável pela Modulação por Largura de Pulso (PWM, Pulse Width Modulation). Evans, Noble e Hochenbaum (2013) descreve o PWM como uma técnica usada para obtermos variáveis analógicas por meio da duração de pulsos de uma onda quadrada. Essa ideia está ilustrada na Figura 9, na qual é gerada uma onda quadrada com frequência constante e a duração dos pulsos é controlada pelo ciclo ativo de 0 a 100%. Figura 9. Modulação por Largura de Pulso (PWM). Nível de tensão alto 5V Nível de tensão baixo 0V Nível de tensão alto 5V Nível de tensão baixo 0V Nível de tensão alto 5V Nível de tensão baixo 0V Nível de tensão alto 5V Nível de tensão baixo 0V Nível de tensão alto 5V Nível de tensão baixo 0V Ciclo ativo0% Ciclo ativo 25% Ciclo ativo 50% Ciclo ativo 75% Ciclo ativo 100% Tensão média 0V 1,25V 2,5V 3,75V 5V De acordo com McRoberts (2011), no Arduino, a frequência constante de oscilação dos pulsos é, por padrão, de 490 Hz e o periférico PWM possui 8 bits. Desse modo, o controle do chamado ciclo ativo ou tempo de trabalho (duty cycle) acontece discretamente em 256 níveis (28 bits = 256 níveis), sendo o nível 0 igual ao ciclo ativo 0% e o nível 255 igual a 100%. A função responsável por controlar os valores de PWM é a analogWrite(nível), onde nível é o valor entre 0 e 255, correspondente ao ciclo ativo do pulso. O Quadro 3 mostra alguns desses valores e seus respectivos percentuais. O Arduino UNO tem 6 pinos de PWM, destacados com o símbolo “~” na placa de circuito impresso (são eles: 3, 5, 6, 9, 10 e 11). Atuadores para projetos Arduino14 O código de controle de velocidade do motor DC é mostrado na Figura 10, a seguir. Nesse código, você pode ver o uso da função analogWrite com os níveis de ciclos ativos mostrados no Quadro 3, mais adiante, para aumentar e diminuir a velocidade do motor DC. O circuito utilizado para esse código é o mostrado na Figura 3 (circuito simples com transistor). Figura 10. Código para o controle de velocidade do motor DC. 15Atuadores para projetos Arduino Ciclo ativo (%) analogWrite() 0 0 25 64 50 128 75 171 100 255 Quadro 3. Ciclo ativo versus valor da função analogWrite No código mostrado na Figura 10, o comando analogWrite( ) confi- gura a saída do sinal PWM no pino digital indicado. A sintaxe da função é: analogWrite(PINO, VALOR_DA_ESCALA), onde o pino pode ser qualquer um dos pinos de PWM disponíveis no Arduino e o valor de escala deve ser valores entre 0 e 255 (McROBERTS, 2011). O código da Figura 10 faz o aumento da velocidade do motor DC a cada 2 segundos na escala de incremento de 25% e depois diminui a velocidade de motor na mesma escala. BANZI, M.; SHILOH, M. Primeiros passos com o Arduino. 2. ed. São Paulo: Novatec, 2015. CULKIN, J. Aprenda eletrônica com Arduino. São Paulo: Novatec, 2018. EVANS, M.; NOBLE, J.; HOCHENBAUM, J. Arduino em ação. São Paulo: Novatec, 2013. MABUCHI MOTOR. RF-300CA. [S. l.], [201-?]. Disponível em: http://www.edutek.ltd.uk/ Binaries/Datasheets/Misc/SolarMotor.pdf. Acesso em: 24 mar. 2019. MARGOLIS, M. Make an Arduino-controlled robot: (make: projects). Sebastopol CA (EUA): Maker Media, Inc, 2012. McROBERTS, M. Arduino básico. São Paulo: Novatec, 2011. MONK, S. 30 projetos com Arduino. Porto Alegre: Bookman, 2014. (Série Tekne). PETRUZELLA, F. D. Motores elétricos e acionamentos. Porto Alegre: Bookman, 2013. (Série Tekne). Atuadores para projetos Arduino16 STEVAN JUNIOR, S. L. Automação e instrumentação industrial com Arduino: teoria e projetos. São Paulo: Saraiva, 2015. Leituras recomendadas ARDUINO. AnalogWrite(). [S. l.], 2019b. Disponível em: https://www.arduino.cc/reference/ pt/language/functions/analog-io/analogwrite/. Acesso em: 24 mar. 2019. ARDUINO. DigitalWrite(). [S. l.], 2019b. Disponível em: https https://www.arduino.cc/ reference/pt/language/functions/digital-io/digitalwrite/. Acesso em: 24 mar. 2019. ARDUINO. PinMode(). [S. l.], 2019a. Disponível em: https://www.arduino.cc/reference/ pt/language/functions/digital-io/pinmode/. Acesso em: 24 mar. 2019. 17Atuadores para projetos Arduino
Compartilhar