Neste vídeo mostra como controlar servomotor com as mãos utilizando sensor flex e Arduino. O servomotor gira ao dobrar o sensor flex proporcionalmente. Você pode saber mais sobre o sensor flex acessando aqui.
Para este projeto vamos precisar de: dois servomotores, dois sensores flex, dois resistores de 10K ohm, dois capacitores de 1uF e um Arduino. A figura abaixo mostra a ligação a ser feita:
Os capacitores de 1uF são utilizados para diminuir a variação de tensão do sensor flex.
Abaixo está a programação para Arduino:
#include <Servo.h>
int flexpin=A0;
int flexpin1=A1;
int pos=90;
int pos1=90;
Servo myservo, myservo1;
int flex[20];
int flex1[20];
int sumflex=0;
int sumflex1=0;
void setup()
{
myservo.attach(7);
myservo1.attach(8);
Serial.begin(9600);
}
void loop()
{
for(int x=0; x<20; x++)
{
flex[x]=analogRead(flexpin);
flex1[x]=analogRead(flexpin1);
sumflex=sumflex+analogRead(flexpin);
sumflex1=sumflex1+analogRead(flexpin1);
delayMicroseconds(14);
}
sumflex=sumflex/20;
sumflex1=sumflex1/20;
if(Serial.available())
{
Serial.println(sumflex);
Serial.println(sumflex1);
delay(100);
}
pos=map(sumflex,870,800,0,180);
pos1=map(sumflex1,870,800,0,180);
myservo.write(pos);
myservo1.write(pos1);
delay(200);
}
De acordo com a programação, o Arduino faz a leitura dos pinos analógicos, depois faz uma amostragem e dessa amostragem, faz uma média. Depois de calculada a média das amostras, o Arduino converte para posição em graus com a função map. Por fim, o Arduino envia essa posição em graus para os servomotores.
E é isso! Esperamos que tenha gostado! Se tiver dúvidas, poste aqui neste blog! Para sugestões de tutoriais, poste aqui! Para ver outros tutoriais e projetos desenvolvidos pela equipe LdG e por outros garagistas, clique aqui e aqui, respectivamente! Até a próxima!
Referências:
http://www.labdegaragem.org/loja/index.php/34-sensores/sensor-flexi...
http://www.labdegaragem.org/loja/index.php/36-motores-afins/servo-m...
http://labdegaragem.com/profiles/blogs/tutorial-arduino-com-servomotor
http://labdegaragem.com/profiles/blogs/tutorial-de-como-utilizar-o-...
Comentar
Boa noite, queria saber se é possível utilizar, ao invés de servo motores normais, motores encontrados em gavetas de leitores CD-Rom, pois já possuo vários desses motores com suas respectivas engrenagens redutoras, mas esses motores só possuem 2 fios elétricos ( + e -), já o servo motor possui 3 ( +, - e PWM), alguém tem alguma solução ? se tiver desde já agradeço , e se possível o diagrama elétrico da solução.
sumflex=sumflex+analogRead(flexpin) // essa linha soma as últimas 20 leituras do sensor armazenando na variável sumflex
sumflex=sumflex/20; // ao dividir por 20, esse comando pega a média aritimética dessas 20 leituras
o q e esse 20 no codigo fonte? (int flex[20];......sumflex=sumflex/20;)??
e o que faz essa soma (sumflex=sumflex+analogRead(flexpin);) ??
Daniel,
É que a leitura do sensor varia mesmo com o sensor parado, por interferências diversas. Vc tem que "suavizar" o sinal de alguma forma, por exemplo, fazendo uma média de 10 leituras antes de atuar no motor.
Fiz um desse utilizando um servo como esse e um sensor, mas por que será que quando dobro o sensor, o motor fica girando de forma instável, para frente e para trás, mesmo com o sensor dobrado parado?
Boa tarde adorei o projeto eu gostaria de saber se teria tbem como converte essa para a linguagem em c.
Para a família pic. to tentando mas nao to conseguindo vc poderia me dizer por favor
grato
Vc tem que colocar os servos nas portas PWM (elas estão identificadas na placa do seu Arduino). E os flex vc liga nas analógicas, como um divisor de tensão.
Assis muito interessante seu braço, me desculpe não fui tão especifico como coloco eles nas portas de entrada tanto os servos quantos os flex... agradeço se puder me ajudar
um abraço...
Recardo, é colocar mais servos, servo3, servo4... eu tenho um robô com seis servos: http://labdegaragem.com/profiles/blogs/rob-solteiro-procura
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por
Você precisa ser um membro de Laboratorio de Garagem (arduino, eletrônica, robotica, hacking) para adicionar comentários!
Entrar em Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)