Motor Servo num pino digital

Ora boas,

Modifiquei um mini Servo para permitir rotação contínua. Tudo funciona perfeitamente, excepto o facto de sempre que de alguma forma o motor é (re)alimentado, ele roda um pouco(ligar e desligar o USB, por exemplo). Ele funciona a 5V, por isso está alimentado apenas via USB.
Para o projecto era importante que sempre que conecto, o Servo se mantivesse na mesma posição.

É possível ligar o cabo dos +5v do servo a um dos pinos digitais do Arduino, e sempre que precisar efectuar um digitalWrite ao pino correspondente, se sim, é seguro ligar directo, ou não vai resolver o problema de todo ?

Obrigado

A porta digital do arduino só é capaz de fornecer 20mA sem forçar o microcontrolador.

Use um transistor NPN como chaveador.

Desde já muito obrigado pela resposta :slight_smile:

Assim ?
http://www.instructables.com/files/deriv/FN3/AGFE/H1HMDLS9/FN3AGFEH1HMDLS9.LARGE.jpg

Sim liga como tens na imagem.

Desculpe-me, você manteve o fio do sinal com a sua modificação ou removeu a placa de controle do servo e esta usando apenas o motor e estrutura?

Como você tem as ligações?

Aqui tem uma página onde o autor modificou um miniservo e dá alguns detalhes Criando Robo com Arduino – Parte III (Inicio do Protótipo) | Compartilhar é preciso.

Mas cuidado, pois tanto a USB do PC quando o regulador de tensão do arduino possuem limite de corrente, se você exigir demais poderá queimá-los, eu costumo fazer como neste post Tutorial Arduino com ServoMotor - Laboratorio de Garagem (arduino, eletrônica, robotica, hacking) é mais seguro para o arduino =)

A sugestão do transistor vale para muitos casos, eu por exemplo, adiciono sempre que o componente consome mais que 20mA.

Eu removi o potenciómetro e substitui-o por duas resistências. Neste momento está ligado tal como diz na página do Arduino:

O projecto é basicamente o de mover uma roda de filtros para Astrofotografia (http://www.apaa.co.pt/apaaforum/index.php/topic,4602.msg34291/topicseen.html?PHPSESSID=kd910qoqi1nvgebk2dcsq0vo27#msg34291)

O problema é que sempre que ligo o USB ou o RJ45, ou mesmo quando reinicio o PC, o motor move e a posição do filtro é perdida. Como podem verificar uso um photointerrupter, e como a fotografia não se da muito bem com o LED, em vez de o ligar aos +5v do Arduino, liguei-o directamente a um dos pinos, o qual desligo/ligo consoante vou precisando. O objectivo era fazer o mesmo para o motor, mas se houver outra alternativa sem correr o risco de destruir o motor ou o Arduino, também serve.

Obrigado

Desculpem-me lá, mas eu sou um bocado nabo nisto, e antes de destruir o projecto, gostava de ter algumas certezas :~

Estive e ver com mais atenção esta imagem, e na resposta dizem-me para ligar como mostra.
http://www.instructables.com/files/deriv/FN3/AGFE/H1HMDLS9/FN3AGFEH1HMDLS9.LARGE.jpg

Pelo que eu vejo na imagem, ao positivo liga-se apenas o diodo. O transistor e a resistência, liga-se ao pino do sinal. Ora como o sinal do servo se pode ligar directamente ao pino, o problema que se mantém é o positivo. Como pretendo ligar os +5v do Servo directamente a um dos pinos digitais do Arduino, será que o diodo é suficiente ? Podem-me por favor ajudar nas ligações?

Muito obrigado

Bom, eu ainda acho estranho que o motor se mova ao conectar a fonte de energia, o servo não deveria se mover somente ao enviar comando para o pino sinal? (verificaste o programa?)

Não vejo sentido em mudar(chavear) a alimentação se quem comanda o motor é o sinal, entende?

A imagem que você passou é válida para o uso de um motor dc, o servo já possui um circuito de proteção que dispensaria o uso do diodo. Mas pelo que citei acima não estou certo de que o transistor se aplique ao teu caso... =/


Assim como no motor, no circuito acima, o diodo protege o restante do circuito da energia produzida pela bobina do relê quando o desativamos e o pino se move.

Tenho visto alguns users na net com o mesmo problema, mas ainda não encontrei nenhum com uma solução. Aparentemente é um problema do Servo ao ser alimentado.
Vou rever o código, mas eu só faço attach do motor, em funções, e apenas são chamadas quando envio uma mensagem para o arduino.

Obrigado

O servo que tenho não tem esse comportamento, mas nesta situação o uso do transistor deve resolver o problema, nada como fazer uns testes :wink:

Um servo não se utiliza com relés Mortis...

A alimentação do servo estaria no lugar do relê, pois se leres os tópicos passados ele quer determinar a alimentação do servo usando a porta digital, ou foi isso o que entendi rs

Minha intenção foi mostrar o uso do transistor como chaveador, não foi o de indicar o uso do relê :stuck_out_tongue:

Mortis:
A alimentação do servo estaria no lugar do relê, pois se leres os tópicos passados ele quer determinar a alimentação do servo usando a porta digital, ou foi isso o que entendi rs

Exactamente :slight_smile:

Mortis:
O servo que tenho não tem esse comportamento...

Isso ainda é mais estranho. Já testei 2 Servos e ambos fazem o mesmo :~

É, eu realmente não sei como ajudar, pois se é o comportamento do Servo, mesmo colocando o transistor o problema persistirá.

Fiz uma breve busca e muitas pessoas, principalmente do meio dos aeromodelos, reclamam deste comportamento e citam um recurso chamado failsafe presente no RX.

Um usuário de PIC colocou um transistor como chaveador (como foi sugerido aqui) e ativa-o mile segundos após enviar o sinal para o servo, mas não sei como o circuito do servo se comportará recebendo energia no pino sinal sem ter energia no vcc.

Você tentou contato com o autor do projeto que você citou?

Espero que apareça alguém com melhor solução, e não consigo pensar em mais nenhuma =S

Mortis:
É, eu realmente não sei como ajudar, pois se é o comportamento do Servo, mesmo colocando o transistor o problema persistirá.

...

Você tentou contato com o autor do projeto que você citou?

Mortis, o facto de tentar, já é uma enorme ajuda, obrigado :slight_smile:

Entrei em contacto com ele. Enquanto não me respondia, fiquei na esperança que o problema fosse dos Servos analógicos. Mas o que ele usou foi um analógico, e ele não tem esse problema.

Vou a uma loja de aeromodelismo, pode ser que saibam porque acontece.

Obrigado

Pelo que eu li por ai esse é mesmo um comportamento comum de alguns servos.

É uma boa ir até uma loja de modelismo, até porque você pode testar outros modelos e ver se o problema não ocorre com algum.

Deve ter uma forma de resolver o problema, por favor, divida conosco se descobrir :wink: