Aqui está representado um código simples que exemplifica a utilização de três SERVOS controlados pelo ARDUINO. SERVOS são amplamente aplicados no desenvolvimento de artefatos robóticos devido a sua alta performance e a capacidade de aplicação de torques que dificilmente seriam capazes de se atingir com outros tipos de aplicação com motores que não possuam as características que os SERVOS possuem.
O que diferencia um motor ordinário de um SERVO é o conjunto de engrenagens de redução que este último possui, o que lhe permite, mediante um pequeno motor, ser capaz de deslocar grandes massas, se utilizando de baixa tensão (a grande maioria trabalha com tensão nominal de 5 V) e pequeno tamanho.
Com o uso da biblioteca SERVO.H, um ou mais servos podem ser utilizados diretamente na placa de desenvolvimento do ARDUINO, sem que nenhuma compensação de tensão tenha que ser feita, uma vez que ambos possuem a mesma tensão de trabalho (5 V).
Mas lembre-se sempre de ler as especificações dos dispositivos que está trabalhando na placa de desenvolvimento do ARDUINO, pois é necessário que se atente para as taxas de correntes que são aplicadas, que na maioria das vezes não devem ultrapassar a casa dos 40 mA (mile ampéres) em cada pino, pois correntes acima deste valor podem prejudicar os dispositivos internos do seu micro controlador que compõe a placa de desenvolvimento do ARDUINO.
Agora vá em frente, comece a trabalhar com estes e outros dispositivos, e tenha sempre em mente que o limite para seu desenvolvimento com o ARDUINO é sua imaginação!
Por:
José Tadeu Aldrigue.
Visão Superior do Projeto:
Vista Inferior do Projeto, onde se pode ver acoplado a placa de Programação e Desenvolvimento do ARDUINO, bem como os SERVOS que executam sua locomoção:
Código que controla este projeto no ARDUINO:
/* Programa para projeto entitulado Formiga. */
INTEGRANTE DO PROJETO:
Denis Oliveira
José Tadeu Aldrigue
Pedro Pavan
Rudy Paulo de Vasconcellos Júnior
Este é um código básico para ser utilizado com o ARDUINO, para a maniulação simples de SERVOS, cujo objeto já possui uma biblioteca pronta para uso.
Servos são mecanismos muito importantes na área de robótica pela sua escala reduzida e alto torque desenvolvido. Alguns podem levantar um peso de
5 Kg se colocados a uma distancia que vaira em torno de 0 a 1 cm do seu eixo de rotação.
Sua utilização se dá no mecanismo de braços, e movimentos robóticos, bem como a movimentação de rodas para o deslocamento de diversos tipos de fins,
e para tanto o servo deve ser modofocade em seu Hardware para que o pino de fim de curso, que geralmente está associado a última engrenagem de redução, deve ser retirado, para que o servo possa ter rotação livre, ou seja, maior que 180 graus.
#include < Servo.h >
// Biblioteca para a utilização de Servos com o Microcontrolador ATMEGA8
// declaração dos objetos SERVO:
Servo perna_esq; // Criação de um objeto que permite controlar o servo que moverá a // perna esquerda;
Servo perna_dir; // Criação de um objeto que permite controlar o servo que moverá a // perna direita;
Servo centro; // Criação de um objeto que permite controlar o servo que moverá as // pernas do centro;
int center = 90; //inicialização da variavel posiçao, definida para 90 graus;
int range=45; //taxa de variacao do passo que cada servo executará;
int contagem; //inicialização da variavel que sertivrá de contador;
//declaração dos pinos:
void setup() //Declaração dos objetos controlados pelo Microcontrolador;
{
//definição da pinagem dos servos das pernas (10,11) e do centro(12):
perna_esq.attach(10); // Porta onde irá ser ligado Perna Esquerda
perna_dir.attach(11); // Porta onde irá ser ligado Perna Direita
centro.attach(12); // Porta onde irá ser ligado o Centro
//inicialização do console de entrada de valores COM 4, que fornecerá mensagens a respeito de cada função sendo processada a cada instante;
Serial.begin(9600); //Inicializa porta serial
}
void loop(){ //Este laço é responsável pela execução sequencial e circular dos comandos -
//-que estão em seu escopo, até que uma condição de parada ou interrupção // seja disparada;
//Primeiro passo Esquerdo
// Inicialização dos servos: Coloca todos os servos declarados no programa para a posição inicial declarada em 'center', no começo do programa;
for(contagem=0;contagem<=20;contagem++) {
Serial.write("Inicializando Sistema em 1 Segundo:\n\n"); //Mostra mensagem de inicialização dos Servos;
delay(100); //Aguarda 1 segundo(100 ms(mile-segundos)) antes de executar a próxima instrução;
centro.write(center); //Os servos começam a serem inicializados;
Serial.write("Inicializei o centro;\n");
perna_dir.write(center);
Serial.write("Inicializei Perna Direita\n");
perna_esq.write(center);
Serial.write("Inicializei Perna Esquerda\n\n");
delay(200); //Término da inicialização dos servos;
//movimentacao das pernas do protótipo:
//primeiro passo da perna direita:
centro.write(center-range); //Movimento da perna central direita;
Serial.write("Movimentei Centro Direita;\n\n");
delay(800);
perna_dir.write(center-range-20); //Movimento da perna direita posterior e anterior para frente;
Serial.write("Moviementei Perna Direita para Tras\n");
delay(500);
centro.write(center); //retorno da perna central para a posição inicial;
Serial.write("Retornei Centro\n\n");
delay(800); // Espera de ? milisegundos para que o servo possa chegar á sua posiçao
// Segundo Passo Esquerdo:
centro.write(center+range); //Movimento da perna central esquerda;
Serial.write("Movimentei Centro para Esquerda\n");
delay(800);
perna_esq.write(center+range+20); //Movimento da perna esquerda posterior e anterior para frente;
Serial.write("Movimentei Perna Esquerda para Tras\n");
delay(500);
centro.write(center); //retorno da perna central para a posição inicial;
Serial.write("Retornei Centro\n\n");
delay(800);
Serial.write("Terminei um Passo!!!\n\n"); //Mensagem de confirmação do primeiro passo completo;
}
}