Go Down

Topic: Motor Servo num pino digital (Read 4170 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...
This... is a hobby.

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