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-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-...

Exibições: 23589

Comentar

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)

Comentário de João Victor da Fonseca Dionisio em 2 abril 2014 às 18:51

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.

Comentário de Francisco Lucena Gomes Jr em 6 agosto 2013 às 8:43

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

Comentário de Daniel Alves em 5 agosto 2013 às 22:41

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

Comentário de Mauro Assis em 31 julho 2013 às 21:55

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.

Comentário de Daniel Alves em 31 julho 2013 às 20:23

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?

Comentário de hugo leonardo b em 28 abril 2013 às 13:01

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

  

Comentário de Mauro Assis em 15 fevereiro 2013 às 18:23

PS: Aqui tem um tutorial sobre ligar os flex e aqui um vídeo sobre isso.

Comentário de Mauro Assis em 15 fevereiro 2013 às 18:19

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. 

Comentário de Ricardo Taoni Xavier em 15 fevereiro 2013 às 17:34

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...

Comentário de Mauro Assis em 15 fevereiro 2013 às 17:21

Recardo, é colocar mais servos, servo3, servo4... eu tenho um robô com seis servos: http://labdegaragem.com/profiles/blogs/rob-solteiro-procura

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço