collapse

* Links de Robótica

* Posts Recentes

Feira de electricidade e eletrónica por beirao
[Hoje às 00:32]


RN42 e TP-Link MR3020 por doiga
[Ontem às 19:22]


Ajuda Projecto IR / RF por senso
[Ontem às 13:15]


Recomendação de um opamp para um DAC r2r por Njay
[Ontem às 12:33]


Ideias para construir um quadrúpede simples por dropes
[21 de Novembro de 2017, 22:43]


Ajuda com TRIAC por senso
[17 de Novembro de 2017, 18:00]


TV LG White Screen por almamater
[15 de Novembro de 2017, 08:37]


Pergunta sobre prototipagem ( Pesquisa ) por luisjustin
[14 de Novembro de 2017, 23:22]


Medir Agua que está no Poço por Njay
[14 de Novembro de 2017, 13:28]


Amplificador audio por beirao
[12 de Novembro de 2017, 23:43]

Autor Tópico: [Tutorial] Arduino + Motor Servo  (Lida 10653 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.727
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.402
  • 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