AULA 8-1 - Microcontroladores - Eng
MATERIAIS
Por aluno:
- 1 placa Arduino Uno
- cabo de comunicação/alimentação USB
- 1 computador PC com software Arduino IDE instalado
- 1 proto shield para montagens
- 1 módulo Driver motor com Ponte H;
- 1 shield MH Electronics Ponte H;
- 1 motor de passo;
- 1 servo motor;
- cabos fêmea-macho
METODOLOGIA
- Exposição dialogada dos conteúdos disponíveis, em projetor multimídia.
- Navegação assistida em outros sites e portais, de conteúdos relacionados.
- Montagens práticas e desenvolvimento em computador de aplicativos.
- Testes de verificação e validação.
O Servomotor
(Fonte: "Como usar servomotor com arduino" - Fazedores.com)
Um Servo Motor comum é um motor que nos possibilita o controle de sua posição.
O servo mais comum utilizado no mundo maker é o Micro Servo TowerPro 9g SG90.
É um servo de alta qualidade e excelente para as suas necessidades seja em aeromodelismo ou em projetos mecatrônicos.
Neste tutorial iremos mostrar os primeiros passos com esse servo e como fazer um programa em Arduino para controle do servo.
Então veja a seguir como usar Servo Motor com Arduino.
Especificações técnicas do Micro Servo 9g
- Tensão de Operação: 3,0 – 7,2v
- Velocidade: 0,12 seg/60Graus (4,8v) sem carga
- Torque: 1,2 kg.cm (4,8v) e 1,6 kg.cm (6,0v)
- Temperatura de Operação.: -30C ~ +60C
- Dimensões.: 32x30x12 mm
- Tipo de Engrenagem: Nylon
- Tamanho cabo: 245 mm
- Peso: 9g
Como usar servo motor com Arduino – ligação dos componentes
Conecte a alimentação do Micro Servo 9g ao Arduino. Fio Marrom com GND, Fio Vermelho com 5v e Fio Laranja na Porta Digital 6.
Programa Arduino Uno R3
#include <Servo.h>
#define SERVO 6 // Porta Digital 6 PWM
Servo s; // Variável Servo
int pos; // Posição Servo
void setup ()
{
s.attach(SERVO);
Serial.begin(9600);
s.write(0); // Inicia motor posição zero
}
void loop()
{
for(pos = 0; pos < 90; pos++)
{
s.write(pos);
delay(15);
}
delay(1000);
for(pos = 90; pos >= 0; pos--)
{
s.write(pos);
delay(15);
}
}
Shield Motor Drive L293D Ponte H
Motor Shield Ponte H para Arduino
A shield, ao contrário do módulo, já vem com os slots prontos para conexão direta com o Arduino, prescindindo de toda fiação para as ligações do circuito:
Nas imagems acima, pode-se observar que além de dois L293D, os quais permitem o acionamento de até 4 motores DC, o Motor Shield constitui-se também de um CI 74HC595, um registrador de deslocamento que possibilita uma saída paralela de 8 bits através de uma entrada digital, entrada esta que constitui-se de três pinos: clock, latch e data.
A alimentação do Motor Shield Arduino obedece os limites de tensão estabelecidos pelo Driver L293D e por mais que seja um shield com contato direto no Arduino, a alimentação do Arduino normalmente não é suficiente para o funcionamento dos motores, por isto é necessária uma alimentação externa.
Através do esquema exibido abaixo, podemos observar o borne para para alimentação externa e como dito, este possui limite de alimentação de 4,5 a 36V, ao lado tem-se o jumper de seleção para fonte de alimentação. Quando esse jumper estiver inserido, a alimentação utilizada para os motores é o do próprio Arduino.
Se utilizarmos uma fonte externa é fundamental a retirada deste jumper.
Abaixo, vemos o esquema de ligação possível utilizando-se os 4 motores DC conectados ao Motor Shield Arduino, porém vale ressaltar que nestes casos a corrente máxima por porta pode ser de 600mA. Assim, ao utilizarmos as quatro portas teremos um total de 2,4A e a fonte de alimentação externa utilizada através dos Bornes deve suprir esta necessidade para o total desempenho dos motores (sem o jumper):
Especificações: – Chip: 293D (Datasheet) – Pode controlar 4 Motores DC, 2 Motores de Passo ou 2 Servos. – Tensão de saída: 4,5-16V – Corrente de saída: 600mA por canal – Até 4 motores DC bi-direcional com seleção individual de velocidades de 8 bits (cerca de 0,5% de resolução). – Até 2 Motores de Passo (Unipolar ou Bipolar) com bobina unica, dupla ou passos interlaçados. – 4 Pontes H: 0,6A por Ponte (1,2A de pico) com proteção térmica e diodos de proteção contra retro-alimentação. – Resistores Pull Down mantem motores desativos durante a entrada de alimentação. – Botão de Reset Arduino disponível no topo da placa. – Terminais em bloco de 2 pinos e jumper para conexão de alimentação externa.
Acionamento motor de passo, usando Motor Shield
O terceiro projeto consiste em controlar um motor de passo com o Motor Shield. Será utilizada um fonte externa de 5V.
Motores de passo são ótimos para um controle mais preciso, por exemplo, em robótica, ou projetos CNC.
Este motor shield suporta até 2 motores de passo. A biblioteca funciona da mesma forma para motores uni, ou bipolares.
Para motores UNIPOLARES: para conectar o motor de passo, primeiro defina quais pinos serão conectados a qual bobina e quais pinos são os taps centrais. Se for um motor de 5 enrolamentos, então um pino será o tap central para ambas as bobinas. Os taps centrais deverão estar conectados juntos ao terminal GND da motor shield. Então, a bobina 1 deverá ser conectada a um born de motor (M1 ou M3) e a bobina 2, ao outro borne (M2 ou M4).
Para motores BIPOLARES: será igual ao anterior, exceto que não haverá um quinto enrolamento para se conectar ao terra. O código é exatamente o mesmo.
"Single" significa que uma única bobina foi ativada. "Double" significa que as 2 bobinas foram ativadas, para maior torque.
Código 1:
StepsPerRevolution indica quantos passos por volta o motor tem. Um motor de passo com 7,5 graus tem 360/7,5 = 48 passos.
#include <AFMotor.h> // Inclui a Biblioteca AFMotor.h
const int stepsPerRevolution = 48; // Número de etapas por volta
AF_Stepper motor(stepsPerRevolution, 2); // Define M3 e M4 como local de instalação (Se 1 -> M1 e M2)
void setup() {
motor.setSpeed(100); // Define a velocidade do Motor
}
void loop() {
motor.step(648, FORWARD, SINGLE); // Movimenta o Motor para uma Direção
motor.step(648, BACKWARD, SINGLE); // Inverte a direção do Motor
motor.step(648, FORWARD, MICROSTEP); // Movimenta o Motor em uma Direção com passos suaves
motor.step(648, BACKWARD, MICROSTEP); // Inverte a direção do Motor
}
Altere o parâmetro stepsPerRevolution de acordo com as especificações do seu motor antes de tentar o esboço. Por exemplo, para NEMA 17 defina-o para 200 e para 28BYJ-48 defina-o para 48.
A figura abaixo ilustra como seria a ligação da shield em um motor de passo tipo NEMA17.
Código 2:
#include <AFMotor.h>
// Número de passos por rotação de saída
// Se preciso, mude esta especificação de acordo com seu motor
const int stepsPerRevolution = 200;
// Conecta o motor a porta #2 (M3 and M4)
AF_Stepper motor(stepsPerRevolution, 2);
void setup() {
Serial.begin(9600);
Serial.println("Teste do Motor de Passos!");
motor.setSpeed(10); // 10 rpm
}
void loop() {
Serial.println("Passo única da bobina");
motor.step(100, FORWARD, SINGLE);
motor.step(100, BACKWARD, SINGLE);
Serial.println("Passo duplo da bobina");
motor.step(100, FORWARD, DOUBLE);
motor.step(100, BACKWARD, DOUBLE);
Serial.println("Passos intercalados da bobina");
motor.step(100, FORWARD, INTERLEAVE);
motor.step(100, BACKWARD, INTERLEAVE);
Serial.println("Micropassos da bobina");
motor.step(100, FORWARD, MICROSTEP);
motor.step(100, BACKWARD, MICROSTEP);
}
Acionamento servomotor, usando Motor Shield
O último projeto consiste em controlar um servo motor com o Motor Shield.
Um servo motor é um equipamento eletromecânico que possui um encoder e um controlador acoplado:
Diferentemente de motores tradicionais, como de corrente contínua, o servo motor apresenta movimento rotativo proporcional a um comando, de forma a atualizar sua posição.
Ao invés de girar continuamente, como os motores de corrente contínua, o servo, ao receber um comando, gira até a posição especificada pelo mesmo. Ou seja, o servo motor é um atuador rotativo para controle de posição, que atua com precisão e velocidade controlada em malha fechada.
Dentre as principais aplicações para servo motores, podemos destacar:
- Aeromodelismo;
- Automodelismo;
- Nautimodelismo;
- Robótica;
- Automação de processos;
- Controle de válvulas, etc.
Abaixo, serão descritos o diagrama do projeto de acionamento do servo, utilizando-se a Motor shield, o código implementado e o resultado obtido.
Código
#include <Servo.h>
Servo myservo; // Cria servo objeto para controlar um servo
int pos = 0; // Variável para guardar a posição do servo
void setup()
{
// Conecta o servo no pino 10 para o servo objeto
myservo.attach(10);
}
void loop()
{
// Aumenta o ângulo de 0 graus até 180 graus
for(pos = 0; pos <= 180; pos += 1)
{
myservo.write(pos);
delay(15);
}
// Diminui o ângulo de 180 graus até 0 graus
for(pos = 180; pos>=0; pos-=1)
{
myservo.write(pos);
delay(15);
}
}
Alternativas
Outros modelos de Motorshield:
Outras shields para motores:
Implementando uma ponte-H com relés
Neste link: Ponte H com relés
| PWM e Acionamento de motores | AULA 7 - Ponte H | Projeto 1 >> |
|---|















