Go Down

Topic: Motor Servo num pino digital (Read 3127 times) previous topic - next topic

nunoagameiro


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

Mortis

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

Use um transistor NPN como chaveador.

nunoagameiro


Desde já muito obrigado pela resposta  :)

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

HugoPT

Sim liga como tens na imagem.
Debian,Mint,Ubuntu
Arduino Mega 2560
Arduino Nano
Arduino Duemilanove
MAC OS Montain Lion
Raspberry PI Model B

Mortis

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 http://ferpinheiro.wordpress.com/2012/01/24/criando-robo-com-arduino-parte-iii-inicio-do-prototipo/

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 http://labdegaragem.com/profiles/blogs/tutorial-arduino-com-servomotor é 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.

nunoagameiro


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

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

nunoagameiro


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



Mortis

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.

nunoagameiro


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

Mortis

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 ;)

bubulindo

Um servo não se utiliza com relés Mortis...
Eu não sou o teu criado. Se respondo no fórum é para ajudar todos mediante a minha disponibilidade e disposição. Responder por mensagem pessoal iria contra o propósito do fórum e por isso evito-o.
Se realmente pretendes que eu te ajude por mensagem pessoal, então podemos chegar a um acordo e contrato onde me pagas pela ajuda que eu fornecer e poderás então definir os termos de confidencialidade do meu serviço. De forma contrária toda e qualquer ajuda que eu der tem de ser visível a todos os participantes do fórum (será boa ideia, veres o significado da palavra fórum).
Nota também que eu não me responsabilizo por parvoíces escritas neste espaço pelo que se vais seguir algo dito por mim, entende que o farás por tua conta e risco.

Dito isto, mensagens pessoais só se forem pessoais, ou seja, se já interagimos de alguma forma no passado ou se me pretendes convidar para uma churrascada com cerveja (paga por ti, obviamente).

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ê :P


nunoagameiro


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 :-)


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


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

Mortis

É, 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

nunoagameiro



É, 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  :)

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

Go Up