LusoRobótica - Robótica em Português
Sistemas específicos => Arduino / AVR => Tópico iniciado por: msr em 08 de Dezembro de 2009, 18:04
-
Olá pessoal,
Estava aqui a ver se punha um servo a mecher, mas está complicado.
Estou a usar um servo dos que o NJay tem à venda.
Confirmem-me sff as ligações:
- vermelho: 5V
- laranja: GND
- castanho: SINAL
Certo?
Já os pus uma vez a mecher, assim que chegaram, já não me lembro bem como o fiz mas hoje não estou a ver o que está a falhar. Aqui vai o código:
int servoPin = 0;
void ServoMove(char side)
{
int i = analogRead(servoPin)/4;
Serial.print("Servo position: ");
Serial.println(i);
if(side == RIGHT)
for(; i < 256; i++){
analogWrite(servoPin, i);
delay(50);
}
else
for(; i >= 0; i--){
analogWrite(servoPin, i);
delay(50);
}
}
Já confirmei, através de Serial.prints que faz os cliclos bem, mas o servo nao meche. Deve estar qualquer coisa a falhar no analogWrite nao?
Obrigado pela ajuda
-
Olá..
Vermelho: 5V
Castanho: GND
Laranja: Sinal
-
int i = analogRead(servoPin)/4;
Isto não me parece que faça o que estás a pensar... O analogRead() lê a tensão no pino usando o ADC, não tem nada a ver com o PWM (analogWrite()) para o servo. Também não te aconselho que uses o analogWrite para controlar servos, pois ele não respeita o tempo minimo entre impulsos. Usa antes a lib MegaServo que vem com o ambiente do Arduino.
-
Ir incrementando a saída analógica ??? Penso que isso apenas faz variar a tensão nessa OUTPUT. Eu não estou habituado a este tipo de linguagem (indirecta) mas não sei se isso funciona desse modo, acho que seria mais fácil aplicar aí um sinal PWM :-\
-
Mas o código até faz sentido visto que o analog in é de 0~1023 e o analogWrite é de 0~255
1024/4 = 256
Contudo é preferível utilizar as bibliotecas que recorrem aos timers.
-
O msr está a ler do mesmo pino (servoPin) em que está a escrever (analogWrite()) para controlar o servo. Que valor de tensão é que ele vai ler desse pino que está ligado a uma entrada do servo?... Isto não vai funcionar bem, e até vai ter interferências porque o analogRead() configura o pino para ser uma entrada e o PWM pára (e o servo também pára), depois logo a seguir ele faz analogWrite() e o pino é reconfigurado para ser uma saída em PWM e o PWM re-começa, e assim em ciclo infinitamente, isto deve dar alguma instabilidade, além de não ser o que ele pretende.
-
Não Njay.. o analogRead só lé dos pins do ADC logo ele está a ler do pin 0 do ADC e depois no analogWrite já é o pin0 do digital.. neste caso o pin RX.
Deves de mudar para um dos pin que diz PWM para utilizar a lib analogWrite correctamente (11, 10, 9, 6, 5 ou 3).
Estás a pensar AVR mas isto tem muita API pelo meio para impedir fazer porcaria.
-
Ahh, pois é, tens razão, os pinos digitais são completamente separados dos de entrada analógica...
-
Estou com um problema semelhante, não consigo colocar os meus servos a rodar. Tenho as ligações correctamente feitas mas nada. :(
Estou a usar o analogWrite().
EDIT: Encontrei um exemplo aqui no forum usando o servo.h. Para usar corrente externa tenho de ligar gnd do arduino ao negativo da fonte externa?
-
Estou com um problema semelhante, não consigo colocar os meus servos a rodar. Tenho as ligações correctamente feitas mas nada. :(
Estou a usar o analogWrite().
EDIT: Encontrei um exemplo aqui no forum usando o servo.h. Para usar corrente externa tenho de ligar gnd do arduino ao negativo da fonte externa?
exacto, mas se for só um servo ele funciona sem power externo :D mas se for para uso continuo é melhor
-
exacto, mas se for só um servo ele funciona sem power externo :D mas se for para uso continuo é melhor
É para uso continuo. Bem me parecia que era necessário fazê-lo mas não tinha a certeza e tinha receio de danificar alguma coisa.
Obrigado. :)
-
exacto, mas se for só um servo ele funciona sem power externo :D mas se for para uso continuo é melhor
É para uso continuo. Bem me parecia que era necessário fazê-lo mas não tinha a certeza e tinha receio de danificar alguma coisa.
Obrigado. :)
Atenção às voltagens ;) 5v a 6v... Mais que isso não. ;)
Boa sorte :D
-
Atenção às voltagens ;) 5v a 6v... Mais que isso não. ;)
Boa sorte :D
São 4 pilhas AA. :)
-
Nao sei qual é a limitaçao do arduino, mas para o servo, o ideal é utilizar com 5 pilhas recarregaveis..
-
Só para não pensarem que se acabaram de contradizer, estão ambos correctos.
4 pilhas AA NÃO RECARREGÁVEIS = ~6v
5 pilhas AA RECARREGÁVEIS = ~6v
Isto porque as recarregáveis têm 1.2v e as normais 1.5v ;)
Só para clarificar o pessoal...
-
Sim, sim, mas não se esqueçam também que as 5 pilhas recarregáveis, quando estão carregadas chegam aos 7v, e depois vou progressivamente baixando... No entanto todos os servos que usei no RC até agora aguentaram perfeitamente os 7v sem qualquer problema..
-
No entanto todos os servos que usei no RC até agora aguentaram perfeitamente os 7v sem qualquer problema..
... até ao dia em que um fica maluco ou deixa de funcionar.
-
No entanto todos os servos que usei no RC até agora aguentaram perfeitamente os 7v sem qualquer problema..
... até ao dia em que um fica maluco ou deixa de funcionar.
Lol... :D Acho que também não ficam malucos com 7v...
-
No entanto todos os servos que usei no RC até agora aguentaram perfeitamente os 7v sem qualquer problema..
... até ao dia em que um fica maluco ou deixa de funcionar.
Os 7v que referi são os resultantes das 6 pilhas recarregaveis, quando acabadas de carregar... e ja me passaram muitos servos e nenhum se queixou até agora 8)
-
As pessoas têm a ideia de que se experimentam 1 ou 2 ou 10 vezes um dispositivo a funcionar fora das suas especificações, que afinal está tudo bem e vai funcionar sempre. É infelizmente uma ideia completamente errada. Ao manter um dispositivo em funcionamento fora das suas especificações, o dispositivo vai-se degradando com o tempo, e se for utilizado "vezes suficientes" acabará por falhar, "misteriosamente" ou "sem aparente razão" (que é o que costumam dizer as pessoas, e depois algumas ainda dizem que o material é que não prestava :)).
Também se pode dizer "sei que estou a abusar um bocadinho do dispositivo, mas aceito que ele um dia vai falhar e aceito o risco, é uma peça barata e a aplicação não é critica", mas isso é muito diferente de dizer que "nenhum se queixou até agora"; é que no 1º caso quem o diz sabe o que está a fazer, e no 2º quem o diz não faz a menor ideia ;).
-
Eu percebi o que quiseste dizer com o "até ao dia em que"... ;D
Se há especificações por alguma razão é. Qualquer prática fora das especificações é uma má prática... Disso não há dúvida...
-
OK.
As mais de mil pessoas que andam no radiomodelismo e que utilizam servos, e a sua grande maioria (pelo menos em automodelismo) utiliza os packs de 6v, devem de estar a destruir os servos todos por causa disso...
A voltagem especificada pela maioria das marcas, os 6v é a voltagem nominal.
-
OK.
As mais de mil pessoas que andam no radiomodelismo e que utilizam servos, e a sua grande maioria (pelo menos em automodelismo) utiliza os packs de 6v, devem de estar a destruir os servos todos por causa disso...
A voltagem especificada pela maioria das marcas, os 6v é a voltagem nominal.
Agora não estou a perceber... Se 6v é a voltagem especificada pelo fabricante porque é que hão-de estar a destruir o servo?
-
Vou tentar explicar o melhor que posso...
A grande maioria dos servos, nas suas especificações, indica como tensão recomendada, os 6v, certo?
Esses 6v são a tensão nominal, que correspondem a 5 pilhas recarregáveis de 1.2v. No entanto, as 5 pilhas quando carregadas tem mais que 6v, chegam aos 7v até. No entanto, isso é sempre "calculado" utilizando a tensão nominal.
Por isso, quando em vez de utilizarem as pilhas utilizarem alguma outra fonte externa (como uma fonte de alimentação), não tem problema em irem até aos 7v reais.
Para concluir: 5 pilhas recerregáveis tem uma tensão nominal de 6v, no entanto, a sua tensão real varia entre os 7v (carregadas) e os 5v mais ou menos (quando descarregadas). E esta diferença entre os 7v e os 5v não causa problema ao servos.
Um abraço
-
Já percebi o que querias dizer.
Só não concordo com isto:
Para concluir: 5 pilhas recerregáveis tem uma tensão nominal de 6v, no entanto, a sua tensão real varia entre os 7v (carregadas) e os 5v mais ou menos (quando descarregadas). E esta diferença entre os 7v e os 5v não causa problema ao servos.
Quando está descarregada, uma bateria tem pouco mais de 0v...
-
As pilhas recerregaveis não devem baixar dos 0.7/0.8v a partir daí aumenta o risco de não voltarem a receber carga como dantes... alem disso, desde os 0.7v até aos 0v, a descida é muito mais rápida...
-
Se 6V é uma tensão nominal, há-de haver uma tensão máxima, e é essa que deve ser respeitada.
Quanto à tensão mínima de pilhas recarregáveis, depende da quimica, mas nunca é 0V. Nas NiMH a recomendação para se ter uma vida longa é que não se deixem ir abaixo de 1V por célula.