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
-
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
-
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
-
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.
-
Não necessariamente, pode ser numa engrenagem posterior ou mesmo directamente no actuador final como acontece nas impressoras actuais
-
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
-
Olá @StarRider
O que quero é a posição do ângulo referente a uma volta.
Poder determinar aonde esta o ângulo 50 em 360 .
-
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.
-
@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.
-
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.
-
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.
-
Se não precisares de muita velocidade tens steppers com caixas redutoras ;)
-
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
-
Boas novamente,
E que tal um servo ? Pensa nessa solução.
Abraços,
PA
-
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?
-
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 ;)
-
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
-
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.
-
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
-
Que tal Dynamixel? Herkulex? Turnigy? Não faltam por aí opções......
-
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
-
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.
-
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 ;)
-
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
-
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.
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.
É 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.
-
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
-
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.
-
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.
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.
-
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 . :-[
-
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
-
Normalmente as saídas do motor do servo é que controlam o driver ;)
-
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
-
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. ;)
-
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
-
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
-
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.
-
Só agora tive oportunidade de ver esse vídeo, está uma introdução muito boa!