sábado, 25 de fevereiro de 2012

Braço mecânico com servomotores

O projeto é simples, um "braço" montado com 4 servo motores figura: 10, controlado por um mecanismo articulado com 4 potenciomentros, montado no braço de um individuo. Todo o movimento do braço mecânico é regido pelo movimento do mecânismo acoplado a uma pessoa, ou seja, ele funciona copiando o movimento do seu braço. O prototipo é dividido em algumas Partes: o braço mecânico, o mecanismo de controle e um circuito de controle, que neste caso trata-se de um arduino com um ATmega 328 figura 10. Cada potenciomentro e responsavel por um motor, onde o circuito microcontrolado converte o valor em resistencia do potenciomentro em um sinal modulado PWM, ou seja, o movimento argular de cada articulação do braço humano e acompanhada por um potenciometro que converte esse movimento angular em um movimento semelhante no braço mecânico. veja os detalhes para a construção.
Autor: Vinicius de Moraes Nascimento
Figura: 1

Figura: 2
Continua...

Figura:3
Figura:4

Figura:5

Figura:6

 
Figura:7
Figura:8
 Figura:9
 Figura:10
Figura:11

 Figura:12. Os quatro potenciomentros devem ser alimentados em paralelo, e o pino de cada potenciometro deve ser ligado nas entradas analogicas: 0, 1, 2, 3 respectivamente.
Figura:13. Potenciometro de 5k, pino do meio é a saida analogica.

Detalhes das ligações dos potenciometros podem ser vistas no

Programação em C++
__________________________________________________________________________________
//Controlonado 4 servo motores usando potenciomentros

Servo myservo1; // create servo object to control a servo
Servo myservo2; // create servo object to control a servo
Servo myservo3; // create servo object to control a servo
Servo myservo4; // create servo object to control a servo

int potpin1 = 0; // analog pin used to connect the potentiometer
int potpin2 = 1;
int potpin3 = 2;
int potpin4 = 3;
int val; // variable to read the value from the analog pin

void setup()
{
myservo1.attach(9); // attaches the servo on pin 9 to the servo object
myservo2.attach(10);
myservo3.attach(11);
myservo4.attach(12);
}

void loop()
{
val = analogRead(potpin1); // reads the value of the potentiometer (value between 0 and 1023)
val = map(val, 0, 1023, 0, 179); // scale it to use it with the servo (value between 0 and 180)
myservo1.write(val); // sets the servo position according to the scaled value
delay(15); // waits for the servo to get there

val = analogRead(potpin2); // reads the value of the potentiometer (value between 0 and 1023)
val = map(val, 0, 1023, 0, 179); // scale it to use it with the servo (value between 0 and 180)
myservo2.write(val); // sets the servo position according to the scaled value
delay(15); // waits for the servo to get there

val = analogRead(potpin3); // reads the value of the potentiometer (value between 0 and 1023)
val = map(val, 0, 1023, 0, 179); // scale it to use it with the servo (value between 0 and 180)
myservo3.write(val); // sets the servo position according to the scaled value
delay(15); // waits for the servo to get there

val = analogRead(potpin4); // reads the value of the potentiometer (value between 0 and 1023)
val = map(val, 0, 1023, 0, 179); // scale it to use it with the servo (value between 0 and 180)
myservo4.write(val); // sets the servo position according to the scaled value
delay(15); // waits for the servo to get there
}