Olá,

 

Preciso fazer um controle de dois motores utilizando dois encoders P17 (potenciométrico) em cada motor (rodas de um carrinho).

Se uma das rodas girar mais que a outra por um período de no mínimo 2s, a roda que está girando mais pára (trava) e somente a outra se movimenta por um período de 5s.

Como é um carrinho, isto deve acontecer somente quando as duas rodas tiverem ligadas, pois numa curva (onde uma das rodas fica parada) isso não se aplicaria.

Alguém conhece um Sketch que faça isso?

P.S.: Estou utilizando o Arduino Uno.

 

Obrigado.

Exibições: 1012

Responder esta

Respostas a este tópico

Oi S, boa tarde.

Fiquei com varias duvidas sobre o seu projeto.

Antes de pensar em um código, ten-se que pensar em uma lógica.

Fiquei pensando:

   Você disse que se uma roda estiver girando mais rápida que outra por 2 segundos, aí para corrigir esta mudança

de rota, você para a outra roda por 5 segundos?

   O carro vai fazer uma curva, mesmo que de pequeno raio, e depois vai fazer uma grande curva por 5 segundos.

Depois você disse que se o carro estiver em curva, esta correção não deve acontecer.

Como sabe que o carro está fazendo uma curva programada?

Que tal desenvolver primeiro o projeto em blocos, depois um fluxograma e por fim, escrever o seu código?

Rui

Olá Rui, obrigado por responder. Realmente não fui claro na minha explicação.
Na verdade, pense num controle de tração simples. Imagine que as duas rodas dianteiras do carrinho estejam levando-o para frente, quando de repente ele atola uma das rodas. Aí o Arduino verificaria que uma das rodas está girando mais que a outra (patinando, como se estivesse atolada), dentro de um tempo qualquer (estimei dois segundos). A partir dessa comparação, o Arduino cortaria o comando da roda que está girando mais e manteria a outra ligada por 5 segundos (tempo estimado também) até que o carrinho conseguisse sair deste "atolamento". Funcionaria como se fosse um bloqueio de diferencial, só que eletrônico. Eu mencionei que isso deveria ser feito somente quando as duas rodas estivessem ligadas, pois no meu carrinho, para se fazer uma curva somente uma das rodas funciona, dependendo do lado, claro. Este carrinho é controlado via bluetooth, no celular.

Oi S, 

você pode fazer  o seguinte:

Enquanto o programa do carrinho comanda para que ele siga em linha reta (dois motores

acionados), e existir diferenças dos valores lidos do encoder, o programa de aumentar a

potencia no motor da da roda que gera menor valor, para então compensar a diferença dos

valores lidos,  aumentando a velocidade do motor ou retirando o carro do "atoleiro"

Rui

Olá Rui, você teria uma idéia de sketch?

Obrigado.

O que é um encoder P17 ?

Ah bom ! Tenho um desses. Isso não é um potenciometro como Samuel informou.

Será que esse tipo de encoder  aguenta os giros de um motor?

Creio que não - provavelmente haverá desgaste e falhas.

Mas se for só para experiência, talvez funcione. 

Veja que ele fornece somente 25 pulsos por volta. 

Obrigado Rui.

Olá José,

Sim, definição mal colocada. O design é de um potenciômetro.

Ele tem aguentado sim, fixei-o nas rodas, através de um furo e utilizei um suporte em "L" para fixá-lo na base do carrinho, preso através de parafusos e molas (como se fosse um amortecedor), para que ele não quebre.

Obrigado por responder.

Eu mediria a frequência dos pulsos com uma amostragem de uns 500 ms (chutando um valor, talvez o tempo de amostragem tenha que ser variável de acordo com a velocidade do carro), e com isso faria o controle: se as frequências se mantivessem diferentes (com uma tolerância talvez) atuaria na roda de maior frequência.

Este controle talvez pudesse ser mais facilmente aplicado do ponto de vista mecânico se no lugar do encoder como feedback fosse realizada medição da corrente dos motores. Com certeza a corrente da roda livre será muito menor que a da roda travada.

Outro ponto que talvez seja interessante mencionar é que nesta sua aplicação, diferente do caso onde se usa diferencial, não seria necessário bloquear a roda que estivesse livre (atolada) pois o torque na outra roda se manteria o mesmo visto que há um motor acoplado diretamente à ela (não sofrendo influencia da outra roda). Claro talvez seja útil para que a roda livre não continue "cavando" e se enterrando cada vez mais.

Olá Luciano, obrigado pela dica.

É exatamente o que quero fazer, mas não havia pensado na possibilidade de medição da corrente do motor, ao invés do uso do encoder. Você teria algum sketch de exemplo? Existe algum shield adicional que devo utilizar para isso?

Bom dia. Eu não sei exatamente o RPM, uso aquelas rodas com redução dos kits para Arduino, e controlo a velocidade através do software. Pelo carrinho que estou utilizando, fisicamente o P17 foi a melhor solução. Mas acredito que óptico seria melhor sim.

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço