Projeto: Controle servomotor com as mãos utilizando sensor flex e Arduino


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

Load Previous Comments
  • Daniel Alves

    o q e esse 20 no codigo fonte? (int flex[20];......sumflex=sumflex/20;)??
    e o que faz essa soma (sumflex=sumflex+analogRead(flexpin);) ??

  • Francisco Lucena Gomes Jr

    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

  • João Victor da Fonseca Dionisio

    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.