LusoRobótica - Robótica em Português

Robótica => Projectos de robótica => Tópico iniciado por: josecarlos em 31 de Dezembro de 2015, 11:12

Título: Controle de motores
Enviado por: josecarlos em 31 de Dezembro de 2015, 11:12
Boas :)

Estou a construir mais um robôzito  e tenho uma duvida.
Preciso de  ter um feedback preciso de motor DC, no caso de 0/360.
Há milhares de soluções  no Google ENCODER ,PID,POTENCIÓMETRO,PWM, etc.
A minha duvida é  qual é a mais precisa e mais fácil de implementar.

Obrigado desde já a possíveis respostas

Um bom ano de 2016 ;)

Está aqui um exemplo

https://youtu.be/wXiDrUeZ_40
Título: Re: Controle de motores
Enviado por: artur36 em 31 de Dezembro de 2015, 11:47
Encoder sem dúvida, dependendo da precisão pode até ser feito em papel em casa.
Para detectar o ângulo sem necessitar de estar a fazer contas é usar um encoder absoluto, basicamente em vez de contar pulsos a saída é um código binário em função da posição, dá para fazer com um disco de espaços outros e brancos devidamente codificados ou então com um íman e um ic específico, para esta solução podes dar uma olhada pelo site da Áustria microsystems
Título: Re: Controle de motores
Enviado por: josecarlos em 31 de Dezembro de 2015, 12:27
Olá @artur36

Tenho ideia que quase todos os encoderes são aplicados ao eixo do motor isso não dificulta  um pouco as coisas ?
 Muitos motores não estão preparados para tal, uma solução é comprar motores já com encoder mas são caros e nunca é a medida que queremos.
 
Título: Re: Controle de motores
Enviado por: artur36 em 31 de Dezembro de 2015, 12:30
Não necessariamente, pode ser numa engrenagem posterior ou mesmo directamente no actuador final como acontece nas impressoras actuais
Título: Re: Controle de motores
Enviado por: StarRider em 31 de Dezembro de 2015, 12:32
Boas :)

Estou a construir mais um robôzito  e tenho uma duvida.
Preciso de  ter um feedback preciso de motor DC, no caso de 0/360.
Há milhares de soluções  no Google ENCODER ,PID,POTENCIÓMETRO,PWM, etc.
A minha duvida é  qual é a mais precisa e mais fácil de implementar.

Boas,

Não estou a perceber, quando dizes 0/360 queres saber quando a roda/eixo faz
uma rotação complecta de 360 graus ? Ou seja, contar as RPMs ?

Ou por outro lado queres saber a posição angular do eixo ? E neste caso quando
dizes "Feedback preciso" queres saber a posição em arc/sec ? Ou algo com menor
resolução ?

Abraços,
PA
Título: Re: Controle de motores
Enviado por: josecarlos em 31 de Dezembro de 2015, 12:48
Olá @StarRider

O que quero é a posição do ângulo  referente a uma volta.
Poder determinar aonde esta o ângulo 50 em 360 .
Título: Re: Controle de motores
Enviado por: jm_araujo em 31 de Dezembro de 2015, 14:20
O mais "simples" seria com um encoder absoluto, mas o seu preço e complexidade upa-upa.

Tens a possibilidade de fazer um "homing" (ir à posição "0º") quando ligas? Nesse caso podias usar um enconder incremental de quadratura (tipo os dos ratos de bola) mais um detetor de 0º. Quando ligavas ias a zero, fazes um reset do contador e passas a usar o incremental.

Ou então se em cima disso puderes usar um motor de passo fica ainda mais simples: só precisas da deteção de 0º e depois vais controlando os passos que dás.

Título: Re: Controle de motores
Enviado por: josecarlos em 31 de Dezembro de 2015, 14:29
 @artur36

Como no exemplo acima, está a dar referencia em relação a engrenagem posterior é mais um dos pontos a ter em consideração.
Muitas das vezes os motores  pequenos têm pouco força e é preciso adicionar  engrenagens  planetárias e outras para obter mais força, o feedback pode ser incerto.
   
Título: Re: Controle de motores
Enviado por: artur36 em 31 de Dezembro de 2015, 14:35
Mas a opção do encoder no motor permite com o mesmo encoder maior resolução, permitindo assim encoders mais simples de construir.
No actuador final o encoder não é afectado pelas folgas das engrenagens, como em tudo na vida as várias opções têm vantagens e desvantagens.
Título: Re: Controle de motores
Enviado por: josecarlos em 31 de Dezembro de 2015, 14:40
Olá @jm_araujo

Motores de passo é bem mais fácil mas tem alguns problemas como perda de passos pouco torque a não ser que metas um nema 34 isso faz aumentar a escala.
Título: Re: Controle de motores
Enviado por: jm_araujo em 31 de Dezembro de 2015, 15:35
Se não precisares de muita velocidade tens steppers com caixas redutoras ;)
Título: Re: Controle de motores
Enviado por: StarRider em 31 de Dezembro de 2015, 16:19
Boas,

Pelo que percebi, suponho que necessites disto para posicionar um qualquer eixo,
independentemente desse eixo ser o do motor ou outro qualquer, não é assim ?

Ora, o que necessitas realmente saber é a posição do dito eixo, qualquer que seja
o método que vais usar para rodar o mesmo (seja motor CD, seja stepper, seja com
redução, etc).

Geralmente o uso de motores CD com encoders incluídos (tipo Pitmann) serve mais
para controlar os RPMs do motor em si, o que acaba por não ser o que pretendes.

Com um motor de passos é relativamente simples, e para ser 100% fiável o que
necessitas é somente um sensor (Hall, foto-diodo, etc) que te possa dar uma
posição que assumes como sendo a chamada "home position". A partir dai é
mesmo muito fácil posicionares o eixo em qualquer posição angular, tenhas ou
não desmultiplicação entre o eixo do motor e o eixo final.

Se fores para motores DC o principio é o mesmo, sendo que em vez de poderes
contar com os "steps" do motor de passo contas os "ticks" do encoder que vais
instalar no eixo FINAL (podes use o encoder no eixo do motor mas tens que contar
com o backlash do sistema). É claro que vais ter que mover o motor CD com um
sistema mais elaborado e o firmware vai complicar ... mas nada por demais.

Podes usar encoders magnéticos e rodas com home index o que te permite saber
exactamente a posição 0 (zero), tens que ter em conta a resolução do encoder pois
se queres ter uma resolução de 1 graus não podes usar encoders com menos de 200
ticks (depois multiplicas por 4).

Just my 2 cents,
PA


Título: Re: Controle de motores
Enviado por: StarRider em 31 de Dezembro de 2015, 16:22
Boas novamente,

E que tal um servo ?  Pensa nessa solução.

Abraços,
PA
Título: Re: Controle de motores
Enviado por: Hugu em 01 de Janeiro de 2016, 00:02
Olá @StarRider

O que quero é a posição do ângulo  referente a uma volta.
Poder determinar aonde esta o ângulo 50 em 360 .
tb nao entendi...queres um motor que nao dê mais que uma volta completa ou é para poder dar voltas e mais voltas? e com que precisao? 1grau? 5 graus? em 360graus qtas posiçoes queres identificar?
Título: Re: Controle de motores
Enviado por: josecarlos em 01 de Janeiro de 2016, 11:29
Boas :)



E que tal um servo ?  Pensa nessa solução.

Já construí braços com servos de modelismo foi interessante mas desta vez quero ir mais alem,  sei que há servos com mais capacidades tanto em força como em control já preparados para robótica.

Este foi o que construí  https://youtu.be/6Oprlzu7LPw
É controlado com um software ainda cheguei a programa-lo para agarrar um objecto é giro controlar 14 servos de dois braços, fiz alguns truques aonde precisava de mais força adicionei 2 servos foi de loucos :D

Voltando, a balança pende para os encoderes , tenho algumas duvidas, quando tens engrenagens pelo meio mesmo estando o encoder na engrenagem final.

Motores de passo
 https://youtu.be/D-bdLSx-AzE

Aqui dá para ver como se comporta e toda a montagem interior, na minha opinião deixa muito a desejar.

 

tb nao entendi...queres um motor que nao dê mais que uma volta completa ou é para poder dar voltas e mais voltas? e com que precisao? 1grau? 5 graus? em 360graus qtas posiçoes queres identificar?

Olá @Hugu

Como disse, quero identificar todas para ser possível de as controlar, senão repara tens um erro de um grau isso multiplicado por 6 juntas e se imaginares que 1 grau representa 1 cm o teu braço está desviado do objecto que queres mover 6cm ;)





 





 
Título: Re: Controle de motores
Enviado por: artur36 em 01 de Janeiro de 2016, 11:38
Estás a pensar fazer quantos eixos? Para um braço robótico deverias pensar numa desmultiplicação por sem-fim em roda dentada, assim não precisas de estar constantemente a mover o motor mesmo com o braço parado.

Se colocares o encoder no actuador final a sua leitura dá-te a posição real, e a partir daí calculas o que fazer ao motor. Para um braço robótico pequeno um encoder absoluto óptico caseiro pode ser grande demais pelo que talvez seja melhor analizares a opção que indiquei de encoders magnéticos
Título: Re: Controle de motores
Enviado por: dropes em 01 de Janeiro de 2016, 15:56
Pelos vídeos que foram aqui colocados e da dúvida em detectar a posição do braço, não hesitava em colocar servos, tudo bem que por vezes parecem soluçar dando uma visão falsa da harmonia que deveriam ter, logo, servos de maior torque / potência.

São baratos, fáceis de se controlar e principalmente precisos.
Particularmente gosto de encoders, devem ser colocados no eixo do motor antes da desmultiplicação, entretanto também têm inconvenientes, como terem de detectar a posição de origem para se situarem.
Cada aplicação o seu motor, mas o que descartava mesmo eram motores de passo neste caso.
Título: Re: Controle de motores
Enviado por: StarRider em 01 de Janeiro de 2016, 16:29
Pelos vídeos que foram aqui colocados e da dúvida em detectar a posição do braço, não hesitava em colocar servos, tudo bem que por vezes parecem soluçar dando uma visão falsa da harmonia que deveriam ter, logo, servos de maior torque / potência.

São baratos, fáceis de se controlar e principalmente precisos.
Particularmente gosto de encoders, devem ser colocados no eixo do motor antes da desmultiplicação, entretanto também têm inconvenientes, como terem de detectar a posição de origem para se situarem.
Cada aplicação o seu motor, mas o que descartava mesmo eram motores de passo neste caso.

E qual é a justificação para essas afirmações ?
Peço desculpa, mas fico com a ideia que quem diz que num sistema de posicionamento se deve instalar o elemento sensor da posição no primeiro elo de uma cadeia mecânica não tem noção do que está a falar. É claro que a UNICA forma de eliminar tudo o backlash de  um qualquer sistema de multiplicação e transição é ter uma leitura do FINAL e NUNCA no eixo do motor.

O mesmo se pode argumentar em relação aos motores de passo, numa relação directa torque/precisão têm vantagem e uma vez que será necessário usar uma caixa de redução com o motor DC para aumentar o torque não vejo porque não usar um stepper mais pequeno.

É claro que falo por experiencia e como é obvio posso estar moldado pela minha preferência em usar steppers, mas é como disse no inicio, se tiveres uma justificação para as tuas afirmações penso que é do interesse de todos ouvir as mesmas.

Abraços
PA
Título: Re: Controle de motores
Enviado por: TheDeadLives em 01 de Janeiro de 2016, 20:57
Que tal Dynamixel? Herkulex? Turnigy? Não faltam por aí opções......
Título: Re: Controle de motores
Enviado por: josecarlos em 01 de Janeiro de 2016, 21:38
Que tal Dynamixel? Herkulex? Turnigy? Não faltam por aí opções......

Olá @TheDeadLives

Já estamos no nível um bocadinho mais acima é também de valorizar  a tua sugestão pois é possível começar por ai.

Obrigado

É claro que a UNICA forma de eliminar tudo o backlash de  um qualquer sistema de multiplicação e transição é ter uma leitura do FINAL e NUNCA no eixo do motor.



Podias explicar melhor como eliminas essa folga, tinha ideia que o encoder tem de relacionar com o motor  mesmo estando numa engrenagem final.







O mesmo se pode argumentar em relação aos motores de passo, numa relação directa torque/precisão têm vantagem e uma vez que será necessário usar uma caixa de redução com o motor DC para aumentar o torque não vejo porque não usar um stepper mais pequeno.



Neste caso como controlas? por passos ou com encoder no fim da caixa redutora.
 
Obrigado







Título: Re: Controle de motores
Enviado por: artur36 em 01 de Janeiro de 2016, 21:49


Podias explicar melhor como eliminas essa folga, tinha ideia que o encoder tem de relacionar com o motor  mesmo estando numa engrenagem final.

Se tens o encoder directamente no actuador final a posição que ele te dá é sempre a posição real deste, já com as folgas incluídas. Com esta opção não precisas de te preocupar com as folgas, acciomas o motor até o encoder dar a posição que tu queres e páras aí, se o actuador sair da posição recebes logo esse feedback e podes actuar imediatamente.
O ideal para mim seria sempre o encoder absoluto, especialmente no caso de vários eixos pois não precisas de te preocupar em andar a contar passos ou tic's do encoder, basta leres regularmente o encoder e este já te dá o valor "calculado" automaticamente.
Título: Re: Controle de motores
Enviado por: jm_araujo em 01 de Janeiro de 2016, 22:13
Um motor, um conjunto de engrenagens e um encoder no final que contribui para o controlo do motor (formando um ciclo de feedback), é por definição um servo. Não tem de estar tudo numa caixa fechada e hermética ;)
Título: Re: Controle de motores
Enviado por: josecarlos em 01 de Janeiro de 2016, 22:13
Tenho de fazer uns testes e ver os resultados ;)
Já agora respondendo a tua pergunta são 6 eixos.

Obrigado

Video didáctico explica um pouco sobre encoderes.


https://youtu.be/O1lR-huV9EU

 
Título: Re: Controle de motores
Enviado por: dropes em 02 de Janeiro de 2016, 00:22
E qual é a justificação para essas afirmações ?
Peço desculpa, mas fico com a ideia que quem diz que num sistema de posicionamento se deve instalar o elemento sensor da posição no primeiro elo de uma cadeia mecânica não tem noção do que está a falar. É claro que a UNICA forma de eliminar tudo o backlash de  um qualquer sistema de multiplicação e transição é ter uma leitura do FINAL e NUNCA no eixo do motor.
Não sei porquê mas quando postas alguma coisa estás sempre ao ataque, podes colocar a tua opinião assim como eu posso justificar sem qualquer problema o que escrevo. Dúvidas é uma coisa, criticar negativamente é outra que não tenho de aturar.

Queres saber qual a diferença de um sensor de posicionamento para um encoder, 1º um sensor de posicionamento é colocado na última engrenagem como um potenciómetro, já um encoder é sim colocado no EIXO para se ter maior precisão, com ou sem backlash não vai ser um encoder no final que corrige isso. Vai depender do nº de engrenagens assim como a qualidade delas.

Citar
O mesmo se pode argumentar em relação aos motores de passo, numa relação directa torque/precisão têm vantagem e uma vez que será necessário usar uma caixa de redução com o motor DC para aumentar o torque não vejo porque não usar um stepper mais pequeno.
Se for realmente um motor de passos usado num servo tem as suas vantagens, já controlá-lo fica mais complexo.

Citar
É claro que falo por experiencia e como é obvio posso estar moldado pela minha preferência em usar steppers, mas é como disse no inicio, se tiveres uma justificação para as tuas afirmações penso que é do interesse de todos ouvir as mesmas.

Abraços
PA
Também gosto muito de steppers, têm bom torque e são extremamente precisos, como referi é uma questão de adicionar um controlador para cada motor, apesar de não ser muito praticável quando falamos de um braço para um robot ou grandes quantidades em que têm de manter as posições a baixo consumo, aí prefiro os servos em DC.

É apenas a minha opinião, afinal cada um tem o seu ponto de vista.


Abraços também para ti StarRider, um bom ano.
Título: Re: Controle de motores
Enviado por: artur36 em 02 de Janeiro de 2016, 23:36
Deparei-me agora com esta entrada no letsmakerobots:
http://letsmakerobots.com/node/46268 (http://letsmakerobots.com/node/46268)

Se o peso não for problemático é uma questão de aprimorar o método de feedback e controlo que neste vídeo é muito rudimentar. Fica a dica
Título: Re: Controle de motores
Enviado por: josecarlos em 03 de Janeiro de 2016, 10:59
Boas :)

Aqui está a ser utilizado um potenciómetro como feedback basicamente um servo em grande escala.
E quando tudo aponta para o encoder o potenciómetro é mais confiável? 

Outro exemplo com driver L298n.

https://youtu.be/ZVB3Z_jmE20


Pretendo utilizar motores pequenos mas com caixas de redução para ter a força que preciso, tendo em consideração peso e o consumo.

 
Título: Re: Controle de motores
Enviado por: artur36 em 03 de Janeiro de 2016, 14:06
Boas :)

Aqui está a ser utilizado um potenciómetro como feedback basicamente um servo em grande escala.
E quando tudo aponta para o encoder o potenciómetro é mais confiável? 

Confiável tudo depende da maneira como fizeres o sistema, o lugar mais propicio a falhas será a ligação entre o "instrumento de medida" e a roda dentada, mas se fizeres um encoder caseiro também te arriscas a que algo nele falhe.
Se o que querias saber era a resolução e repetitibilidade pode ser a mesma nos dois sistemas, no caso do potenciómetro terá a ver com a qualidade do potênciometro e a resolução do ADC, no caso do encoder se optares por um de compra tens a resolução e repititibilidade que comprares e tens a mais valia de usar apenas sinais digitais, se construires tu o encoder tens de contar com eventuais falhas e a resolução deverá ser sempre mais baixa a não ser que tenhas bons equipamentos de fabricação em casa.

Citar
Outro exemplo com driver L298n.
Pretendo utilizar motores pequenos mas com caixas de redução para ter a força que preciso, tendo em consideração peso e o consumo.
O L298 substitui o comando de servos do exemplo que eu dei, mas aqui não tem feedback de posição a utilização "correcta" seria um "sensor" no eixo de saída do motor ligado a um microcontrolador que por sua vez actuaria sobre o L298 regulando a direcção e a velocidade conforme necessário para atingir a posição desejada.
Título: Re: Controle de motores
Enviado por: josecarlos em 03 de Janeiro de 2016, 16:08
 Um servo para controlar o feedbak, o potenciómetro para o eixo do motor  e a ponte H do servo para controlar o L298N  isto completa o sistema.

Assim pode ser controlado vários motores, só tem um inconveniente é se manteres a posição muito tempo vai fritar qualquer coisa . :-[
Título: Re: Controle de motores
Enviado por: artur36 em 03 de Janeiro de 2016, 16:18
Um servo para controlar o feedbak, o potenciómetro para o eixo do motor  e a ponte H do servo para controlar o L298N  isto completa o sistema.

Explica lá melhor que não percebi nada
Título: Re: Controle de motores
Enviado por: josecarlos em 03 de Janeiro de 2016, 16:35
Normalmente as saídas do motor do servo é que controlam o driver ;)
Título: Re: Controle de motores
Enviado por: artur36 em 03 de Janeiro de 2016, 16:43
Normalmente as saídas do motor do servo é que controlam o driver ;)
O driver controlas com o microcontrolador dando-lhe a posição desejada, o driver com o feedback do potenciómetro/encoder cálcula o erro e controla o motor com vista a eliminar o erro, a todo este conjunto chama-se servo-motor.
O que "pretendes" é fazer um driver à medida que receba o feedback do potenciómetro/encoder que escolheres e actue o motor com vista a eliminar o erro, o L298 é apenas um driver de motor e não de servo, não tens como lhe adicionar directamente e de forma "simples" um mecanismo de feedback de posição, precisarás sempre de um "cérebro" a "falar" com os vários dispositivos e a efectuar os cálculos necessários
Título: Re: Controle de motores
Enviado por: josecarlos em 03 de Janeiro de 2016, 17:12
Deparei-me agora com esta entrada no letsmakerobots:
http://letsmakerobots.com/node/46268 (http://letsmakerobots.com/node/46268)



Eu estava a falar em relação a um caso do teu exemplo  normalmente  é feito assim.
Artur sei bem o que é um servo e como se controla.
As minhas duvidas eram como ter um feedbak preciso, qual a melhor forma e mais fácil de implementar, a maioria das respostas foi para encoder é nessa direcção que vou.
Para mim era mais fácil o analógico porque já estou habituado mas vou ter de fazer testes e aprender um pouco sobre.
Agradeço a tua ajuda quanto a encoderes pois toda a informação é bem vinda.  ;)   
Título: Re: Controle de motores
Enviado por: artur36 em 03 de Janeiro de 2016, 21:20
Eu estava a falar em relação a um caso do teu exemplo  normalmente  é feito assim.
Artur sei bem o que é um servo e como se controla.
As minhas duvidas eram como ter um feedbak preciso, qual a melhor forma e mais fácil de implementar, a maioria das respostas foi para encoder é nessa direcção que vou.
Para mim era mais fácil o analógico porque já estou habituado mas vou ter de fazer testes e aprender um pouco sobre.
Agradeço a tua ajuda quanto a encoderes pois toda a informação é bem vinda.  ;)

Peço desculpa então pela má interpretação, em várias alturas tenho pesquisado sobre encoders pelo que aproveito para deixar aqui uns links que podem dar uma ajuda:
Potenciómetro como sensor de posição e rotina PID para correcção da posição - http://ww1.microchip.com/downloads/en/AppNotes/00964A.pdf (http://ww1.microchip.com/downloads/en/AppNotes/00964A.pdf)
Leitura de encoders incrementais - http://www.tufts.edu/programs/mma/emid/RotaryEncoder.pdf (http://www.tufts.edu/programs/mma/emid/RotaryEncoder.pdf)

E finalmente servo motor com encoder incremental - http://ww1.microchip.com/downloads/en/AppNotes/00696a.pdf (http://ww1.microchip.com/downloads/en/AppNotes/00696a.pdf)

São todos links para application notes da microchip pois uso microcontroladores PIC, mas pelo menos para perceber a lógica de funcionamento já deve ser uma ajuda boa
Título: Re: Controle de motores
Enviado por: josecarlos em 04 de Janeiro de 2016, 18:34
Boas :)

É um excelente contributo não só para mim mas para todos os que querem aprender sobre encoderes.

A participação  de várias pessoas  foi importante. ;)

Obrigado
Título: Re: Controle de motores
Enviado por: AndreGuimaraes em 04 de Janeiro de 2016, 19:07
Se me permitem a intromissão, estive a ver um tutorial estes dias sobre encoders, e vi também este, quase feito com sucata, que trata o problema com uma abordagem muito prática.

https://youtu.be/XIUrnR8bLAI

Uma dúvida que eu tenho é sobre utilizar os encoders circulares, destes mais comuns, na ponta de um eixo roscado como o do vídeo.
Título: Re: Controle de motores
Enviado por: jm_araujo em 09 de Janeiro de 2016, 17:06
Só agora tive oportunidade de ver esse vídeo, está uma introdução muito boa!