Pular para o conteúdo principal

Utilizando o Motor Micro Servo TowerPro SG-5010 360º Rotação Contínua



Nessa postagem iremos mostrar como utilizar o Motor Micro Servo TowerPro SG-5010 360º Rotação Contínua em conjunto com o Arduino.

Motor Micro Servo TowerPro SG-5010 360º Rotação Contínua
A característica de maior destaque em um servo motor é a capacidade de movimentar o seu eixo até uma posição e, mesmo que este seja forçado em outra direção, manter o eixo imóvel.
A maioria dos servo motores são construidos de maneira a ter uma rotação de no máximo 180°, sendo que essa rotação é dividida entre 90° no sentido horário e 90° no sentido anti-horário.

Esse tipo de motor é acionado quando recebe um sinal no formato PWM (Pulse Width Modulation). Este sinal pode ter nível lógico alto (5V) ou baixo (0V). Os servos possuem um circuito de controle que monitora o sinal de entrada a cada 20ms, e se dentro deste intervalo ele percebe uma alteração do sinal de 0v para 5v com uma duração entre 1ms e 2ms ele envia um comando para o motor, de maneira a obedecer a ordem do sinal.
Sinal PWM com período de 20ms
 
Um sinal de 1ms corresponde a uma posição do braço do servo todo a esquerda ou 0º.
Um sinal de 1,5ms é o que chamamos de posição central do servo ou 90º.
Um sinal de 2ms corresponde a uma posição do braço do servo todo a direita ou 180º.

 Sinais PWM para controle de um servo motor
Uma vez que o servo recebe um sinal de 1,5ms ( por exemplo ), ele verifica se o potenciômetro encontra-se na posição correspondente(no caso, 90°). Caso se encontre na posição desejada, não acontecerá nada. Se o potenciômetro não estiver na posição correspondente ao sinal recebido, o circuito de controle aciona o motor até o potenciômetro estar na posição certa.
A direção de rotação do motor do servo vai depender também da posição do potenciômetro, sendo que se ele estiver em uma posição entre 0° e 90° o motor vai girar em uma direção, e se ele estiver entre 90° e 180°,ele irá girar na direção contrária.
Um outro detalhe interessante é em relação à velocidade: quando um sinal PWM é enviado ao servo, quanto mais "afastado" ele estiver da posição de referência (90°), maior será a sua velocidade de rotação. Por exemplo: se for enviado o sinal PWM correspondente a 80°, a velocidade de rotação em direção à posição referente à posição 0° será muito menor que a velocidade de rotação quando o sinal enviado corresponde a 10°. Da mesma maneira, o sinal referente a 100° resulta em uma velocidade muito menor que a velocidade resultante de um sinal de 170°, em direção à posição referente a 180°.


O Motor Micro Servo TowerPro SG-5010 360º Rotação Contínua é um servo de rotação contínua, ou seja, ele não possui a limitação de giro em 180°, como os servo motores comuns. Isso nos possibilita uma variedade imensa de aplicações, uma vez que é um motor com rotação contínua, velocidade controlada, baixa rotação e altíssimo torque.
Uma dessas aplicações, que será mostrada a seguir, é uma montagem simples, com o objetivo de içar uma carga.
A carga utilizada é composta por dois rolos de Solda Alpha Telecore 1 mm P3 Lead-Free 500g, totalizando 1kg de carga.
Para facilitar a visualização e a interação com o Arduino, será utilizado também um Shield LCD com teclado para Arduino.
O código funciona da seguinte forma:
As teclas "Up" e "Down" incrementam e decrementam a variável "grau" em uma unidade, respectivamente;
As teclas "Left" e "Right" incrementam e decrementam a variável "grau" em dez  unidades, respectivamente;
A tecla "Select" envia o comando para o Servo.

Confira um vídeo mostrando o andamento do teste:
[VIDEO]

Baixe aqui o sketch com a programação do Arduino para esse projeto.
Segue abaixo o código fonte utilizado nesse projeto.

 //############### ELETRODEX ELETRÔNICA ###############  
 // Programa de Teste de carga do Servo TowerPro SG-5010  
 //  
 // As Conexões devem ser feitas da seguinte forma:  
 //  SG-5010  |  Arduino  
 //  MARROM   |   GND  
 //  VERMELHO |   5v  
 //  AMARELO  |   D3  
 #include <LiquidCrystal.h>  
 #include <Servo.h>  
 Servo motor;  
 LiquidCrystal lcd(8, 9, 4, 5, 6, 7);  
 int grau = 90;  
 void setup()  
 {  
  motor.attach(3);  
  lcd.begin(16, 2);  
  lcd.setCursor(0, 0);  
  lcd.print("  Eletrodex  ");  
  lcd.setCursor(0, 1);  
  lcd.print("Graus:");  
 }  
 void loop()  
 {  
  int botao;  
  botao = analogRead (0); //Leitura do valor da porta analógica A0  
  lcd.setCursor(8, 1);  
  if (botao < 90)  
  {  
   grau = grau + 10;  
   lcd.print (grau);  
   delay(100);  
  }  
  else if (botao < 250)  
  {  
   grau++;  
   lcd.print (grau);  
   delay(100);  
  }  
  else if (botao < 400)  
  {  
   grau--;  
   lcd.print (grau);  
   delay(100);  
  }  
  else if (botao < 630)  
  {  
   grau = grau - 10;  
   lcd.print (grau);  
   delay(100);  
  }  
  else if (botao < 800) {  
   motor.write(grau);  
   lcd.print (grau);  
   delay(100);  
  }  
 }  


Conte-nos suas experiências utilizando os produtos adquiridos em  nossa loja!
Até o próximo artigo!

Comentários

Postagens mais visitadas deste blog

Controlando LED via Bluetooth utilizando o Módulo HC-05

Hoje abordaremos uma breve demonstração de conexão do Módulo Bluetooth HC-05 Master/Slave com um dispositivo externo, e após a conexão utilizar o dispositivo para controlar um LED. A Placa Base utilizada como controladora é a Arduino Uno , que foi utilizada em conjunto com o Protoshield compatível com a mesma. Todos os itens utilizados podem ser adquiridos em nossa loja . Note que o Módulo Bluetooth HC-05 Master/Slave possui níveis de tensão de alimentação e operação diferentes, sendo que pode ser alimentado com  uma tensão entre 3,3v e 6v (no projeto foi alimentado com 5v, direto de um dos pinos do Arduino Uno ), mas a sua tensão de operação é de 3,3v. IMPORTANTE:    O Arduino consegue reconhecer a tensão de 3,3v no terminal RX como nível lógico alto, mas somente fornece 5v no terminal Tx como nível lógico alto. Portanto, se for utilizar os terminais Rx e Tx para a comunicação com os terminais Tx e Rx do HC-05,  o terminal Tx do HC-05 pode ser conectado diretamente ao ter

Como programar com Programador KIT 3.5 para PIC

Nesta postagem iremos falar sobre o Programador KIT 3.5 O Programador KIT 3.5 é um programador para microcontroladores PIC bastante completo, até o momento compatível com  mais de 600 dispositivos da linha de microcontroladores da Microchip, incluindo a nova linha dsPIC. (Confira aqu i a lista com os microcontroladores compatíveis com o Kit 3.5) Permite a programação diretamente na placa (ICSP) ou então através de conectores ZIF (não inclusos). Detalhe para a interface ICSP Com ele é possível gravar (programar), ler, verificar e copiar os códigos dos microcontroladores, através do software gratuito PicKit 3 Programmer ( instruções de uso ), uma vez que ele é totalmente compatível com o PICkit3. Lembrando que este software é apenas para a gravação do arquivo HEX no seu microcontrolador, sendo que é necessário gerar esse arquivo em um compilador de sua escolha. Além disso, é possível utilizá-lo como ferramenta de depuração (debug) através do software MPLAB. Caract

Utilizando o Programador USB para PIC K150

Nessa postagem iremos demonstrar a utilização do Programador USB para PIC K150 O gravador possui um soquete do tipo ZIF (ZIF - Zero Insertion Force - é um soquete com uma alavanca, que permite a colocação e a retirada dos microcontroladores sem risco de danificar seus terminais) para a programação dos microcontroladores. Conta também com um conector para a programação ICSP (In Circuit Serial Programming, que será abordada futuramente em outra postagem, pois é necessário que se faça algumas adaptações no circuito a ser programado). O programador é controlado pelo PIC16F628A, e no site do fabricante do gravador é possível encontrar informações sobre como atualizar o firmware do gravador, para possibilitar a gravação de mais dispositivos. Instalação do Programador USB para PIC K150 Se você estiver utilizando o Windows 7/Vista/XP, o driver deve ser instalado normalmente, sem que seja necessária a interferência do usuário. Caso esteja utilizando o Windows 8/8.1, o processo é um po