Olá pessoal, gostaria de saber se é possivel utilizar o arduino para controlar um motor dc de 12 V.

Meu problema é o seguinte:
Estou desenvolvendo um dispositivo para reabilitação da mão. E tenho que fazer o movimento na estrutura, o encoder irá armazenar esses dados, e o motor deve repetí-los.

Alguem tem idéia de como fazer isso? Ja fizeram algo parecido?

Obrigadaa

Exibições: 10105

Responder esta

Respostas a este tópico

Se entendi vc precisa fazer o motor acompanhar a posição de um encoder.

Dá sim, mas vc provavelmente vai precisar:

- De um outro encoder para saber onde o motor está. Se servir um bem pequeno existem os tipo aeromodelo que já tem o encoder (e driver) embutido.

- De um driver. Não é possivel ligar o motor direto na porta do Arduino (nem em nenhum microcontrolador).

Esses encoders poderiam ainda ser simples potenciometros.

Fale mais sobre o projeto pra tentar entender... Que motor seria ? A ideia é essa mesmo: um encoder de um lado da montagem é lido e usado par acionar o motor do outro ?

Oi, então tenho 3 encoders e 3 motores ( FOTO abaixo)

O modelo do encoder é esse: http://micautomacao.com/produto/ENCODER-AUTONICS-E40S6%252d5000%252...

E o modelo do motor é esse: http://www.neoyama.com.br/movimentacao/ak555-12-r83-v2.html

O que precisamos é o seguinte;

1° Um profissional irá fazer o movimento de reabilitação manualmente, e os encoders deverao armazenar as posiçoes (com os motores desacoplados)

2° Os motores serão acoplados e em seguida deverão repetir o movimento executado anteriormente

A priori estavamos tentando fazer esse cotrole com um controlador da National Instruments de 1998, que só é compativel a versão 6.0 do LabView, entao estamos preferindo trabalhar com arduino, é possivel fazer isso?
Temos o arduino mega da pra controlar com ele?
Tem que fazer uma placa para aquisição dos sinais do encoder?

Obrigada

Diria que o Arduino faz sim, sem dificuldades.

Teria alguns comentários:

- Os motores com redução funcionam como freio quando estão desligados. Veja se freia mto ou é aceitavel. Se frear mto vai precisar "desengatar" mecanicamente (tirar) no modo programação.

- Como o colega disse, esse seu encoder é mto bom.. As vezes seria melhor um mais simples, mais facil de ligar. Um potenciometro ficaria otimo. Vc só precisa reforçar o bloqueio de giro para que ele não force o potenciometro no final (pode quebrar).

- Quanto ao programa, é relativamente tranquilo... se vc ler periodicamente (por ex 5 vezes por segundo) a posição dos encoders e anotar na memoria eeprom (ou SD) vc consegue "aprender" e depois basta da um "play" nisso, que seria uma conta para cada motor do tipo: ((Onde estou)-(onde deveria estar)) x ganho = tensão que tenho que por no motor. Faria com o Arduino mesmo.

- Se precisar flexibilizar a velocidade basta não usar a rotina original de delay e sim fazer a sua, que possua uma variável de ajuste do tempo.

- Um MEGA seria até exagerado para a questão, mas se vc ja tem ele é otimo.

Já passei por esse negocio de fisioterapia e sei como é... O fisioterapeuta provavelmente vai querer pelo menos 2 ajustes:

1) Velocidade (comentei acima);

2) Amplitude. (Ou pressão) Seria o quanto ele avança do lado que dói (pior é que é isso...)

Vc pode fazer (já to complicando seu projeto... mas é a vida..) esse parametro simplesmente multiplicando um ou mais referencias lidas do encoder por uma constante. Por ex 0,95 faz ele ir menos e 1,05 faz ele ir mais (o fisioterapeuta que estiver orientando seu projeto q tem que falar). A pressão muda se for um inicio ou final de fisioterapia, uma criança, lesao maior, sei lá. Os fisioterapeutas gostam de achar o limite "suportável"....

Pode ser tb que não precise, simplesmente ele ajusta a distancia do braço e já ta modificada a pressão.

Oi Eduardo

Obrigado pelas dicas...Vão ser muito uteis!!!

VOu testar o motor sim.. É que esse projeto estou desenvolvendo na Faculdade da Engenharia Mecânica na UFU, na parte de robótica (sou aluna do curso de Engenharia Biomédica, da Faculdade da Engenharia Elétrica), e o meu orientador falou que a faculdade não tem grana para comprar nada, que é para me virar com esses equipamentos que descrevi anteriormente. Entao se eu quiser outras coisas eu que tenho que comprar... mas como ja tenho o arduino mega, vou ver se acho um shield bom que aguenta 3 motores, e comprar o cartao Sd que você falou.

E em relação aos ajustes, acho super pertinente, mas como somos engenheiros depois que o básico tiver funcionando vamos conversar com alguns fisioterapeutas para saber esses ajustes mais precisamente...

Muito Obrigada pelas dicass !!!

Isso é um projeto para reabilitação da mão usado em fisioterapia ?

Então os movimentos tem que ser lentos.

O tipo de encoder que você escolheu para o seu projeto é incremental.Seria melhor um tipo absoluto.

Um potenciometro multi volta (10 voltas) de 500k poderia ter um efeito melhor e mais barato (R$3,00).

O motor é reduzido (neoyama).

Tem uma alternativa aqui: http://www.microred.com.br/

Vai precisar confeccionar 3 pontes H para controlar motor.

Opinião:Seria melhor fazer o controle via computador,visto que se deve alterar as velocidades e tipo de movimentos de acordo com paciente.

Eu estou orientando um aluno para fazer um TCC onde um "mão biônica' vai repetir os movimentos da mão de um sujeito que usa uma luva. Para isso, estamos usando sensores de flexão acoplados aos dedos. Vejaí se lhe pode ser útil: http://automatobr.blogspot.com.br/search?q=bi%C3%B4nica

Oi Almir, esse é um projeto para reabilitação da mão utilizado em fisioterapia sim.

Então com eu disse ao Eduardo, esse projeto é da Faculdade de Mecanica da UFU, e meu orientador falou que nao tem verba para comprar outros equipamente, para me virar com esses que descrevi =//


E a ponte H é uma boa!!! Acho que será necessária sim.

Obrigada pela atenção :)

Parte do meu TCC* é um robô cartesiano usando motores DC + encoders incrementais + arduino.

*Protótipo de um Sistema Embarcado para Controle de um Robô Transelevador

Minhas dicas:

-Se tiver como usar motor de passo, use!

-Se possível, use encoders absolutos, assim vc precisará de apenas UM Arduino para ler 3 encoders simultaneamente.

Encoders incrementais exigem controle por interrupção.

-USE um algoritmo controlador, talvez interpolação por função polinomial. Como são 3 motores que devem estar sincronizados (pelo que entendi no esboço que vc mandou), vc tem que sincronizar os deslocamentos (angulares) dos 3 motores em função do tempo. Um PID simples não te ajuda em muito.

Oi JOnatas , obrigada pelas dicas.

Mas meu problema é que sou aluna de pesquisa, e a Faculdade falou que nao tem verba para comprar equipamentos diferentes para me virar com esses que descrevi =//

Mas brigadao pelas dicass

Olá Isabella

Como vc ja pode perceber, este assunto envolve muitas areas do conhecimento, acredito ser vc uma pessoa de muita sorte por ter a percepção da importância do desenvolvimento deste dispositivo.

ja desenvolvi algo parecido sim, mas na area de engenharia e não em biomedica.

Vou falar um pouquinho sobre o conceito e o encoder, complementado  o que os colegas ja disseram e com experiencia que tive, aconselho a vc iniciar o projeto usando um microcontrolador para cada par motor/encoder conectados via barramento RS 485 e então o barramento ligado a um PC via conversor RS485 - USB.

Quanto ao encoder , a poucos anos atras o preço dos encoders absolutos, tamanho e peso invibializariam seu projeto hoje apesar dos encoders magnéticos baseados em array de sensores por efeito Hall estão mudando a história.

Porém acredito ainda ser o melhor para o seu projeto um encoder incremental tipo este aqui(LinK)

A  maior vantagem que o encoder absoluto tinha sobre o incremental era o fato de poder mostrar a posição do eixo em que se encontra conectado mesmo após um corte na energia da fonte, proeza que o incremental não podia fazer pois seu funcionamento esta baseado em contagem de posição. Usando um microcontrolador com memória eeprom, vc pode armazenar a posição na eeprom quando detectado um corte de energia e assim recuperar a posição após o restabelecimento.


Para que possamos aprofundar mais na questão serão necessarias mais informações como :

Resolução em graus do movimento, ou seja o menor movimento que sera controlado, isto ira determinar o no. de bits com que vc ira trabalhar.

Potencia envolvida (Torque x RPM)

E por hoje a parabenizo pela iniciativa, esperando que este projeto não seja como muitos que ja vi por aqui, não passando do forum , gostaria que este projeto fosse para o WIKI, do LDG, onde fosse uma referencia para os interessador por cibernética.

abraços

Sobre a questão do encoder, vou relatar minha experiência:

Pra um Encoder INCREMENTAL você precisa de um microcontrolador pra cada motor, foi o caso citado por vc e oq que eu usei no meu TCC. Era um Arduino Pro-mini pra cada eixo (Encoder + ponte-H do motor) conectados por I²C, sendo q um deles agia como mestre recebendo os comandos.

Para ler 3 encoders simultaneamente é complicado porque é necessário o uso de interrupções. Quando um Encoder solicita uma interrupção, não é possivel ler os outros 2.
Ou seja, um microcontrolador pra cada encoder.

Já com o absoluto não precisa de um controle tão dependente de interrupções, uma vez que mesmo perdendo alguns "passos" do encocer vc consegue saber a posição instantânea dele (ver Código Gray).

Então existe uma situação a ser avaliada:

1 - Substituir os encoders por absolutos e usar UM microcontrolador;

2 - Manter os encoders incrementais e utilizar microcontroladores como Driver (poderia ser um Attiny45/85 com Core de Arduino); ou

3 - trocar tudo por potenciômetros de alta precisão.

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço