Pessoal, bom dia!

Apos muitas tentativas resolvi recorrer aos experts para me ajudar a resolver um problema com arduino e servos. Primeiro vou descrever meu projeto para melhor entendimento:

Estou fazendo o controle de uma ferrovia onde os desvios dos trens entre um trilho e outro são feitos através de servos. Cada desvio tem um servo e a haste do mesmo faz um movimento de cerca de 30° entre as posições "A" e "B" movendo o trilho. Na mesa de controle tenho um push botom e dois leds para cada desvio. Os leds indicam se o servo está na posição "A" ou "B". Então basicamente vc aperta o push e o servo alterna de "A" para "B" acendendo o led correspondente. O arduino está alimentado por uma fonte 5v 1A e os servos por outra fonte de 5v 5A de forma independente. Estou usando uma controladora de servos PWM de 16 canais.

Vamos aos problemas:

O principal problema é de certa forma mecânico, mas tenho que resolvê-lo na programação. Quando eu ligo a alimentação de energia os servos fazem um "movimento" inicial. Eles oscilam de um lado para outro param numa posição que nem sempre é o zero grau ou posição zero. Após esse movimento inicial eles estabilizam e o sistema dos push bottons funciona perfeitamente. Porém as hastes dos trilhos que são movimentadas pelo servo são muito frágeis (tem cerva de 0,5mm de espessura pois os trens são em escala N, uma das menores que existe) e este movimento inicial, devido a força do servo, chega a quebrar estas hastes. E cada trilho de desvio desse é importado e custa uma grana preta!!! kkkk  Também percebi que ao energizar eles nem sempre param na mesma posição inicial. Tipo, cada hora para numa posição.

Ja tentei mudar a sequencia das fontes, energizando primeiro a placa PWM e os servos e depois o arduino, e vice e versa. O resultado é um pouco diferente para cada caso, mas o movimento sempre continua.

Encontrei na internet um cara que sugeria colocar um relê para cortar a alimentação do servo e só energizá-lo após o arduino iniciar e enviar o sinal de posição. Preciso descobrir como colocar isso no código pra testar.

Andei lendo outras ideias, como gravar a ultima posição do servo num eprom, mas eu acredito que não vai funcionar pois esse movimento parece algo que é o servo executa antes de receber qualquer sinal.

Não sou muito bom em programação, meu codigo parece que esta bem escrito pois tive a ajuda de um gringo que mexe muito com isso, mas eu não sou tão bom... rs

Agora estou procurando uma luz no fim do tunel! rs

Abs

MAuricio

Exibições: 546

Anexos

Responder esta

Respostas a este tópico

Bom dia , 

Projeto bem legal ! Parabéns . Depois mande uma foto da sua montagem. 

Seria interessante se você nos enviasse um video, mostrando o problema. 

"Encontrei na internet um cara que sugeria colocar um relê para cortar a alimentação do servo e só energizá-lo após o arduino iniciar e enviar o sinal de posição. Preciso descobrir como colocar isso no código pra testar."

Não sei qual movimento o servo faz ao ser energizado, mas se você enviar um comando para ele antes de energizá-lo, acho que poderá resolver o problema mesmo. (exemplo da internet) .

Para ligar a fonte dos servos, depois do Arduino ser iniciado e já estiver enviando os comandos para os servos, poderá usar um relé. Informe como é essa sua fonte (links, fotos, etc). 

Existem vários módulos de relés para Arduino. A fonte pode ser controlada na entrada (tensão CA) ou na saída (tensão CC). Na entrada a corrente é mínima, mas existe o perigo de choque, se não for devidamente protegida com isolamento. 

Na saída, você disse que a corrente é de 5A. Portanto sugiro que controle a saída com um relé que suporte esses 5A. 

Mas alguns módulos de relés podem provocar ruídos elétricos que deixam o Arduino maluco. Por isso recomendo que use um módulo com opto-acoplador. E use fontes separadas para Arduino e para relés. 

José Gustavo, estou no escritorio hoje, assim que voltar pra casa vou fazer umas fotos e videos do projeto pra ilustrar o que acontece. Também vou postar o codigo (sei que tem a forma correta de colocar um codigo aqui, mas não sei como, agradeço se alguem me falar).

Boa tarde MS,

muito legal seu projeto.

Como mineiro que sou, gosto muito de trem. kkkkk

primeiro vamos á recomendações.

Para postar um código siga o seguinte procedimento.

1. Comente as linhas do seu código. Fica mais fácil entender o que vc quer fazer com cada linha

     e facilita a nossa ajuda.
2. Clique em : " Deseja carregar arquivos? " e depois em " Escolher arquivo" e anexe o arquivo
     com o seu código.

3. Anexe ou poste desenhos, esquema, links, sobre seu projeto e os componentes dele, tais

   como sensores, etc.
    Com estas informações, ficará mais fácil entendermos seu projeto e melhorar a condição de ajuda.

É importante postar o esquema de ligações elétrica, pois através dele junto com o código,e a descrição que você fez acima, poderemos entender  bem como o projeto deverá funcionar.

E isto é um grande passo para podermos ajuda-lo.

Acho desnecessário, ruidoso, (sonora e eletricamente falando), o uso de reles.

Em voltagens DC, eles pode facilmente ser substituído por transistores comuns ou mosfets,

e em AC por SCRs ou TRIACs.

RV

Bem lembrado Rui, 

Pode ser usado um FET para controlar a tensão de saída da Fonte dos servo-motores. 

Pensei agora em usar um relé de estado sólido, mas acho que só serve para tensões CA (nesse caso, ele controlaria a entrada da fonte). 

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço