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-flexivel-de-2-2.html
http://www.labdegaragem.org/loja/index.php/36-motores-afins/servo-motor-pequeno.html
http://labdegaragem.com/profiles/blogs/tutorial-arduino-com-servomotor
http://labdegaragem.com/profiles/blogs/tutorial-de-como-utilizar-o-sensor-flex-com-arduino
Mauro Assis
Eu estou orientando um aluno de Eng. de Controle e Automação na criação de uma "mão biônica", que vai reproduzir os movimentos captados a partir de uma luva equipada com esses sensores. Vejam o primeiro ensaio que fizemos:
11 Jul, 2012
Francisco Lucena Gomes Jr
Não entendi pra que as variáveis flex[20] e flex1[20]?
20 Jul, 2012
Marcos Vinicius candido
Pessoal onde comprar este flex?Sou novo no site e estou kerendo começar a usar o arduino, vou precisar muito da ajuda de vcs. Obrigado.
20 Jul, 2012
Francisco Lucena Gomes Jr
Marcos, vc pode comprar aqui mesmo na loja do LdG.
20 Jul, 2012
Carlos Calisto
todos os servos só giram 90º?
1 Nov, 2012
Mauro Assis
Carlos,
Esses servos são de 180º. O importante é que ele consiga fletir o dedo.
1 Nov, 2012
Flavio Vieira
Se as variaveis analógicas são int flexpin=A0; e int flexpin1=A1; porque no desenho só uma porta analógica é utilizada?
31 Dez, 2012
Ricardo Taoni Xavier
como programar e colocar mais 3 servos? para que ao todo fique 5.
15 Fev, 2013
Mauro Assis
Recardo, é colocar mais servos, servo3, servo4... eu tenho um robô com seis servos: http://labdegaragem.com/profiles/blogs/rob-solteiro-procura
15 Fev, 2013
Ricardo Taoni Xavier
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...
15 Fev, 2013
Mauro Assis
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.
15 Fev, 2013
Mauro Assis
PS: Aqui tem um tutorial sobre ligar os flex e aqui um vídeo sobre isso.
15 Fev, 2013
hugo leonardo b
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
28 Abr, 2013
Daniel Alves
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?
31 Jul, 2013
Mauro Assis
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.
31 Jul, 2013