collapse

* Links de Robótica

* Posts Recentes

Medir Agua que está no Poço por Hugu
[Hoje às 19:57]


URGENTE - display de 7 segmentos com backpack por helderjsd
[Ontem às 12:30]


Preços e fabricantes de pcb por Sérgio_Sena
[19 de Setembro de 2017, 10:20]


Palavras Cruzadas por Njay
[19 de Setembro de 2017, 02:24]


Isaac Asimov - I, Robot por senso
[18 de Setembro de 2017, 03:41]


Apresentação por TigPT
[17 de Setembro de 2017, 07:31]


ic SL440 da Plessey? por senso
[16 de Setembro de 2017, 13:11]


Compra Colectiva RS-Amidata por brunus
[15 de Setembro de 2017, 22:31]


Ideias para construir um quadrúpede simples por zordlyon
[15 de Setembro de 2017, 10:18]


Preparar bancada de testes por jm_araujo
[14 de Setembro de 2017, 10:24]

Autor Tópico: [Tutorial] Arduino + Motor Servo  (Lida 10468 vezes)

0 Membros e 1 Visitante estão a ver este tópico.

Offline AndréD.

  • Mini Robot
  • *
  • Mensagens: 180
    • AndreD Robotics
[Tutorial] Arduino + Motor Servo
« em: 29 de Agosto de 2009, 23:54 »
Boas Pessoal...


Mais uma vez cá estou eu para mais um pequeno tutorial...

Bom depois de toda a tarde a ver se conseguia fazer um "hack" qualquer no meu motor shield para controlar servos, o certo é que nao consegui... E Desisti, porque a partir de certa altura achei que tava a desperdiçar tempo...

Entao decidi estudar um pouco a biblioteca que nos permite controlar tao facilmente os servos (Servo.h), e decidi entao fazer dois tutoriais pelo preço de um...  :D :D :D

Espero que gostem....


Material Necessario (Hardware):
- Servo
- Arduino
- Potenciometro
- 6x Fios De ligação
- Rectangulo de Pele (ou outro material nao condutor) para proteger o arduino
- Cabo USB
- Computador
- BreadBoard


Material Necessario (Software):
- Arduino 0017 (Disponivel em arduino.cc)


1º Passo

Primeiro que tudo temos de recolher todo o material necessario e ter uma secretaria minimamente limpa para puder trabalhar á vontade..


2º Passo

 - Ligar o fio branco da ficha do servo no pino 8 do nosso arduino.
 - Ligar o fio vermelho da ficha do servo no pino 5v do nosso arduino.
 - Ligar o fio preto da ficha do servo no pino GND do nosso arduino.








3º Passo

Abrir o programa Arduino 0017.
Visitar este link para se ficar a conhecer melhor a biblioteca Servo.h.

Depois de esturdar-mos um pouco a biblioteca referida em cima, vamos entao proceder á programação.


4º Passo

Depois de vermos do que a bliblioteca é capaz passemos á programação. Em baixo fica o codigo que alterei para melhor compreensão.

Está tudo comentado para que todos os que se iniciem em programação nao tenham grande dificuldade em perceber qualquer parte do codigo aqui estudado.

Código: [Seleccione]
#include <Servo.h> // Biblioteca que permite controlar mais facilmete os Servos
Servo servo1;      // Criação de um objecto que permitira controlar o servo
 
 
int posicao = 0;   // inicialização da variavel posiçao a 0
int contagem = 0;  // inicialização da variavel posiçao a 0
void setup()
{
  servo1.attach(8);  // Porta onde ira ser ligado o servo
}
 
 
void loop()
{
 if (contagem < 20){ // Condiçao, se a variavel contagem for menor que 20 faz o codigo que esta ente {}
  for(posicao = 0; posicao < 180; posicao +=1)  // Servo gira da posiçao 0 para a posiçao 180 de 1 em 1 grau
  {                              
    servo1.write(posicao);              // "Escreve" no pino 8 a posiçao para onde o servo se vai deslocar
    delay(3);                       // Espera de 3 milisegundos para que o servo possa chegar á sua posiçao
  }
  for(posicao = 180; posicao>=1; posicao-=1)     // Servo gira da posiçao 180 para a posiçao 0 de 1 em 1 grau
  {                                
    servo1.write(posicao);             // "Escreve" no pino 8 a posiçao para onde o servo se vai deslocar
    delay(3);                      // Espera de 3 milisegundos para que o servo possa chegar á sua posiçao
  }
  contagem ++;                  // Adiciona mais 1 á variavel contagem
  }
}

Coloquei um pequeno contador para o servo nao estar infinitamente a girar para um lado e outro, assim depois de 20, que é mais que suficiente para vermos que está tudo ok, o servo para.


5º Passo

Vamos agora proceder ao Upload do codigo para o arduino.

 - Primeiro ligamos o USB ao Arduino

FOTO INDISPONIVEL

 - Depois ao PC



 - Depois é so carregar no botao de Upload



 - E por fim esperar que no canto inferior esquerdo apareça a mensagem "Done Uploading"



NOTA: Se neste passo acontecer algo e nao aparecer essa mensagem, recomendo a verificarem o codigo e/ou se o cabo está correctamente ligado ao PC e ao Arduino.


6º Passo

Testar o servo com o potenciometro e sem o potenciometro.

(Video Brevemente Disponivel) -> Tou sem Camera...




Montagem com potenciometro

Para controlarmos um servo com um potenciometro teremos que seguir estes passos...


A - Ligar o terminal do meio do potenciometro a um dos pinos analogicos do arduino (eu utilizei o 0).




B - Ligar o terminal de um dos lados do potenciometro aos 5v do nosso arduino




C - Ligar o ultimo terminal ao GND do arduino




D - Ligar o fio preto ao GND do arduino.




E - Ligar o fio vermelho ao terminal do potenciometro onde se encontram os 5v (provenientes do arduino)




F - Ligar o fio branco do servo a um pino do arduino (Eu utilizi o 8 )




G - Utilizando a mesma biblioteca (Servo.h) vamos entao programar o nosso Atmega para que se possa controlar o servo pelo potenciometro...

Comentei todo o codigo para que todos facilmente o entendam...

Código: [Seleccione]
#include <Servo.h> // Biblioteca que permite controlar mais facilmete os Servos

Servo servo1;      // Criação de um objecto que permitira controlar o servo
 
 
int pinopot = 0;  // Declaração da variavel para o pino que vai ler o valor do potenciometro, neste caso é o pino analogico 0
int valor;    // Declaração da variavel onde vai ser colocado o valor lido do pino analogico 0
 
void setup()
{
 servo1.attach(8);  // Porta onde ira ser ligado o servo
}
 
void loop()
{
  valor = analogRead(pinopot);            // leitura do valor do potenciometro e "escrita" desse valor na variavel valor
  valor = map(valor, 0, 1023, 0, 179);     // Escala para que o valor do potenciometro possa corresponder a um valor de posiçao no servo
  servo1.write(valor);                  // Gira o servo de acordo com a escala da linha acima
  delay(1);                           // Espera de 1 milisegunda para que o servo possa atingir a sua posiçao
}


Depois do passo "G" é so continuar com o 5º e 6º passo mencionados em cima...

Espero que tenham Gostado e peço desculpa por algum erro...

Cumps
AndréD.
« Última modificação: 30 de Agosto de 2009, 11:13 por metRo_ »

Offline antonio_jose

  • Mini Robot
  • *
  • Mensagens: 336
    • Facebook:
Re:[Tutorial] Arduino + Motor Servo
« Responder #1 em: 30 de Agosto de 2009, 12:58 »
Parabens
Está excelente AndréD.
Era mesmo isto que precisava, para controlar os servos do meu Drone atraves de potenciometros.

Offline amando96

  • Mini Robot
  • *
  • Mensagens: 1.627
  • MAC address? But I have windows...
    • Projects, News, Blog, Tutorials
Re:[Tutorial] Arduino + Motor Servo
« Responder #2 em: 30 de Agosto de 2009, 13:53 »
qual o máximo de servos/potenciometros que podemos ter de uma vez? eu uma vez esperimentei 3, mas só dois funcionavam :-s.

mas não esperimentei com a biblioteca megaservo...

Offline AndréD.

  • Mini Robot
  • *
  • Mensagens: 180
    • AndreD Robotics
Re:[Tutorial] Arduino + Motor Servo
« Responder #3 em: 30 de Agosto de 2009, 14:04 »
qual o máximo de servos/potenciometros que podemos ter de uma vez? eu uma vez esperimentei 3, mas só dois funcionavam :-s.

mas não esperimentei com a biblioteca megaservo...

Boas...

Corrijam-me se estiver enganado mas penso que podes controlar ate 8 servos.

Cumps
AndréD.

Offline ricardo-reis

  • Administrator
  • Mini Robot
  • *****
  • Mensagens: 1.300
Re:[Tutorial] Arduino + Motor Servo
« Responder #4 em: 30 de Agosto de 2009, 14:16 »
depende da biblioteca k usares.. mas sim, em princípio será 8..

Offline antonio_jose

  • Mini Robot
  • *
  • Mensagens: 336
    • Facebook:
Re:[Tutorial] Arduino + Motor Servo
« Responder #5 em: 30 de Agosto de 2009, 14:48 »
O Potenciometro é de quantos Ohms?

Cumprimentos

Offline AndréD.

  • Mini Robot
  • *
  • Mensagens: 180
    • AndreD Robotics
Re:[Tutorial] Arduino + Motor Servo
« Responder #6 em: 30 de Agosto de 2009, 14:51 »
Boas...

O potenciometro é de 1000 Ohm....  :D :D :D

Cumps
AndreD.

Offline antonio_jose

  • Mini Robot
  • *
  • Mensagens: 336
    • Facebook:
Re:[Tutorial] Arduino + Motor Servo
« Responder #7 em: 30 de Agosto de 2009, 15:43 »
Para se utilizar mais que um servo/potenciometro basta repetir o código e alterar apenas os pinos, né?

Cumprimentos

Offline ricardo-reis

  • Administrator
  • Mini Robot
  • *****
  • Mensagens: 1.300
Re:[Tutorial] Arduino + Motor Servo
« Responder #8 em: 30 de Agosto de 2009, 16:07 »
yep.. é isso mesmo.. tendo em atenção k os pinos dos servos (normalmente) são os pwm..

Offline metRo_

  • Administrator
  • Mini Robot
  • *****
  • Mensagens: 3.726
Re:[Tutorial] Arduino + Motor Servo
« Responder #9 em: 31 de Agosto de 2009, 11:19 »
Citação de: Forum Arduino.cc

There are many Arduino libraries that are suitable for driving servos and speed controllers – here are a few of the references:

The servo library included in the Arduino download – can control one or two servos on pins 9 and 10: http://www.arduino.cc/en/Reference/Servo

A servo library that uses timer2 to control up to 8 servos:
http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1230479947

A software servo library that can control many servos but a refresh function needs to be called every 20ms or so: http://www.arduino.cc/playground/ComponentLib/Servo

An external board that controls up to 8 servos using serial commands: http://www.pololu.com/catalog/product/207

An external board with hardware servo control and an arduino compatible processor: http://www.sparkfun.com/commerce/product_info.php?products_id=8785

Offline raulse

  • Mini Robot
  • *
  • Mensagens: 1
Re: [Tutorial] Arduino + Motor Servo
« Responder #10 em: 29 de Novembro de 2010, 18:55 »
Opá...

da pra colocar um potenciometro deslizante? como devo fazer, pois o mesmo tem 4 saidas, e esse potenciometro ai do tutorial tem 3...

abraços...

Offline zordlyon

  • Mini Robot
  • *
  • Mensagens: 1.708
Re: [Tutorial] Arduino + Motor Servo
« Responder #11 em: 29 de Novembro de 2010, 23:33 »
tens k ver o datasheet do potenciometro...

cumps..

Offline senso

  • Global Moderator
  • Mini Robot
  • *****
  • Mensagens: 9.390
  • Helpdesk do sitio
Re: [Tutorial] Arduino + Motor Servo
« Responder #12 em: 29 de Novembro de 2010, 23:37 »
O mais certo é dois dos terminais serem massas, pois servem de terminal e de meio de fixação do slider.
Avr fanboy