LusoRobótica - Robótica em Português

Robótica => Iniciantes => Tópico iniciado por: ruicosta93 em 24 de Março de 2011, 20:32

Título: Ajuda primeiro robo
Enviado por: ruicosta93 em 24 de Março de 2011, 20:32
Chegou hoje os servos para o meu primeiro robo.

Quando vou a testa-los com aquele codigo do smalluino de testar os servos eles fazem barulho como se tivessem a tentar puxar mas não mexem.

Alguem me sabe dizer qual é o problema.

Os servos são da modelcraft aqueles que o njay vende.
Título: Re: Ajuda primeiro robo
Enviado por: senso em 24 de Março de 2011, 20:42
Talvez falta de corrente, estás a alimentar por USB?
Tenta uma fonte externa e só um servo de cada vez.
Título: Re: Ajuda primeiro robo
Enviado por: ruicosta93 em 24 de Março de 2011, 21:06
Ja tentei com a minha fonte de alimentação.

Dei-lhe com 5.74 v. ligei positivo ao vermelho do servo gnd ao preto e cor de laranja do servo ao pino 9 e fiz o uploud deste codigo.

int motorEsq = 9;

void setup(){ 
Serial.begin(9600);}

void loop(){ 
for (int i=0;i<=255; i++){   
analogWrite(motorEsq, i);       
Serial.print("A testar valor: ");
Serial.println(i);   
delay(500);   } }



Ele faz o mesmo barulho de á bocado mas agora vibra mais mas nõa gira. parece que tá a roer qualquer coisa.

Para este codigo os servos tem de estar modificados.? e que eu ainda não modifiquei. queria testar primeiro para pooder trocsr se houver algum problema.
Título: Re: Ajuda primeiro robo
Enviado por: senso em 24 de Março de 2011, 21:12
Tinhas a massa da fonte ligada á massa do Arduino?
Se não estava ligada liga as duas e volta a tentar.
Título: Re: Ajuda primeiro robo
Enviado por: XicoMBD em 24 de Março de 2011, 21:35
Experimenta este:
Código: [Seleccione]
// Sweep
// by BARRAGAN <http://barraganstudio.com>
// This example code is in the public domain.




#include <Servo.h>
 
Servo myservo;  // create servo object to control a servo
                // a maximum of eight servo objects can be created
 
int pos = 0;    // variable to store the servo position
 
void setup()
{
  myservo.attach(9);  // attaches the servo on pin 9 to the servo object
}
 
 
void loop()
{
  for(pos = 0; pos < 180; pos += 1)  // goes from 0 degrees to 180 degrees
  {                                  // in steps of 1 degree
    myservo.write(pos);              // tell servo to go to position in variable 'pos'
    delay(15);                       // waits 15ms for the servo to reach the position
  }
  for(pos = 180; pos>=1; pos-=1)     // goes from 180 degrees to 0 degrees
  {                               
    myservo.write(pos);              // tell servo to go to position in variable 'pos'
    delay(15);                       // waits 15ms for the servo to reach the position
  }
}
Título: Re: Ajuda primeiro robo
Enviado por: ruicosta93 em 24 de Março de 2011, 21:42
Eu continuo a alimentar o arduino por usb.-

Depois tenho a fonte a alimentar o servo. e tenho o de sinal do servo no pino nove.

Além disto ainda tenho de ligar o gnd da fonter ao gnd do arduino?
Título: Re: Ajuda primeiro robo
Enviado por: senso em 24 de Março de 2011, 21:59
Sim, que é para estar tudo ao mesmo potencial, se as massas não forem comuns o sinal do Arduino pode estar dezenas ou centenas de volts acima ou abaixo da voltagem do servo, porque as fontes são isoladas.
Título: Re: Ajuda primeiro robo
Enviado por: ruicosta93 em 24 de Março de 2011, 22:08
tambeém já fiz isso e nada. mexe pouco. parece que tá preso.

será que tenho de o alterar primeiro.?
Título: Re: Ajuda primeiro robo
Enviado por: senso em 24 de Março de 2011, 22:23
Não, porque um servo tem de mexer, a alteração é só para ele rodar continuamente e não só os 180 graus mais ou menos tipicos de um servo.
Já tentas-te rodar o braço á mão, pode custar um pouco, mas deve mexer bem assim que começar a andar.
Título: Re: Ajuda primeiro robo
Enviado por: ruicosta93 em 24 de Março de 2011, 22:28
Já rodei o braço á mão. é preciso aplicar um pouco de força mas roda bem. Faz um barulho mas acho que é o barulho caracteristico das engrenagens.
Título: Re: Ajuda primeiro robo
Enviado por: ruicosta93 em 25 de Março de 2011, 21:22
Já o consegui a meter a mexer , mas só utilizando a biblioteca servo doi arduino.

Mas eu pensava que os servos fossem mais rapidos. Mas pronto.~

Alguem me sabe dizer porque que não consigo com o analogwrite mexer o servo.?

é porque para programar o robo é mais facil com o analogWrite.
Título: Re: Ajuda primeiro robo
Enviado por: senso em 26 de Março de 2011, 03:34
Nem reparei que estavas a usar o analogWrite :facepalm:

O analogWrite nao funciona porque é a frequencia errada, podes alterar os timers para funcionar, mas usar a biblioteca servo é tal e qual usar o analogWrite..
Título: Re: Ajuda primeiro robo
Enviado por: ruicosta93 em 26 de Março de 2011, 22:52
Boas. Eu fiz a alteração dos servos para continua.

Meto agoira este codigo :
int motorEsq = 9;  // atenção ao valor dos pinos queestão a
int motorDrt = 10; // usar, se não for este, modifiquem no código!
void setup(){  Serial.begin(9600);}
void loop(){  for (int i=0;i<=255; i++){   
analogWrite(motorEsq, i);       
analogWrite(motorDrt, i);       
Serial.print("A testar valor: ");   
Serial.println(i);   
delay(500);        } }


E o resultado é o seguinte. ele testa os servos até ao 68.

Depois começa a parar. tento fazer outra vez o uploud do codigo diz que a com3 está ocupada.

Alguem me pode ajudar. Porquê só testa até ao 68.?
Título: Re: Ajuda primeiro robo
Enviado por: senso em 27 de Março de 2011, 23:50
Os motores começam a puxar corrente e o atmega faz reset..
E já devias saber que directamente não podes usar o analogWrite, não sei o que acontece mas até podes estar a meter os servos em carga por estarem a receber comandos mas não andarem por não serem os comandos certos, usa a biblioteca servo.
Título: Re: Ajuda primeiro robo
Enviado por: ruicosta93 em 30 de Março de 2011, 23:52
Boas já consigo meter os servos a mexer com a biblioteca servo.

Fiz as alterações para continua. o problema e que meto o potenciometro a 90 graus dou umas voltas com ele e rapidamente muda de posição.

o POTENCIOMETRO sem lhe tocar já muda de posição. é um potenciometro muito façil de rodar. Já tentei meter um bocado de cola mas não fica grande coisa além que a roda dentada não fica no sitio.

O que tava a pensar era medir a resistência quando ele tá a 90 graus(parado) pelo que medi é 1.70k. agora arranjar uma resistencia de 1.70k e colocar de uma ponta ao centro e arranjar outra de 2.67 (valor total do potenciometro e meter de uma ponta a outra ponta. que me dizem?

Será que isto vai correr bem ou vai dar asneira.?
Título: Re: Ajuda primeiro robo
Enviado por: senso em 31 de Março de 2011, 00:13
Tens de medir a resistência entre uma das patas da ponta e o centro, e depois entre a outra pata e o centro, e metes duas resistências como as que o potenciometro tem entre cada par de patas.
Título: Re: Ajuda primeiro robo
Enviado por: Njay em 31 de Março de 2011, 00:15
Não te metas nisso. Verifica melhor se está tudo bem cortado e o pot não tá a raspar ao de leve, em alguma situação, na engrenagem preta. Podes tirar umas fatiazinhas do eixo do pot com um x-acto para o emagrecer. Este pot não costuma rodar sozinho com facilidade.
Título: Re: Ajuda primeiro robo
Enviado por: ruicosta93 em 31 de Março de 2011, 00:25
Pois. já o tentei cortar um pouco mas continua a rodar.

e o boraco tá bem, limpo ate já tem um pouco a mais. A cabeça já anda um bocado solta.

Vou tentar colar e dobrar para dentro tem espaçoi dentro para encolher o potenciometro. Asim ja não fica a bater na roda dentada.
Título: Re: Ajuda primeiro robo
Enviado por: ruicosta93 em 31 de Março de 2011, 22:41
Já tenho os servos a funcionar já comecei a fazer uma base provisoria para testes.

Fica aqui uma imagem

(https://lusorobotica.com/proxy.php?request=http%3A%2F%2Fimg199.imageshack.us%2Fimg199%2F7717%2Fimagem0073j.jpg&hash=0c77743e33f54ae7b7f72a037889c8db88742740)

Agora vou por os LDR e ver se os consigo programar para se desviarem dos obstaculos.