LusoRobótica - Robótica em Português

Robótica => Iniciantes => Tópico iniciado por: joao rexinho em 23 de Abril de 2010, 18:02

Título: smalluino problema
Enviado por: joao rexinho em 23 de Abril de 2010, 18:02
Boas, recentemente adiquiri dois servo motores springrc  SM-S4303R para fazer um smalluino. Montei o, fiz o upload do código para o arduino duemilanove e os servos começaram a andar um para trás e outro para a frente e respondem aos ciclos do código :-\ :-\ :-\ O que esta a acontecer?????????Verifiquei as entradas e estão correctas, será problema do Arduino? :-\ :-\ :-\
(https://lusorobotica.com/proxy.php?request=http%3A%2F%2Fimg718.imageshack.us%2Fimg718%2F8916%2Fdsc00018r.jpg&hash=633ba6fbabeb9d3b8ab7b9f305bc4449c20afa49) (http://img718.imageshack.us/i/dsc00018r.jpg/)
Uploaded with ImageShack.us (http://imageshack.us)
(https://lusorobotica.com/proxy.php?request=http%3A%2F%2Fimg338.imageshack.us%2Fimg338%2F7133%2Fdsc00021iu.jpg&hash=582ce7b8c7234fb8c0d65dac5dbe67f6f8683ef7) (http://img338.imageshack.us/i/dsc00021iu.jpg/)
Uploaded with ImageShack.us (http://imageshack.us)
(https://lusorobotica.com/proxy.php?request=http%3A%2F%2Fimg193.imageshack.us%2Fimg193%2F6320%2Fdsc00024rwj.jpg&hash=e865086936312da42539f5c5365c8adc462a9dab) (http://img193.imageshack.us/i/dsc00024rwj.jpg/)
Uploaded with ImageShack.us (http://imageshack.us)
(https://lusorobotica.com/proxy.php?request=http%3A%2F%2Fimg651.imageshack.us%2Fimg651%2F32%2Fdsc00023yjj.jpg&hash=4597edf91ae4faab49e1766afd7dc3e392d05600) (http://img651.imageshack.us/i/dsc00023yjj.jpg/)
Uploaded with ImageShack.us (http://imageshack.us)
(https://lusorobotica.com/proxy.php?request=http%3A%2F%2Fimg706.imageshack.us%2Fimg706%2F4269%2Fdsc00022hp.jpg&hash=5ea1313f38792f22418628c4e05957114f514f45) (http://img706.imageshack.us/i/dsc00022hp.jpg/)
Uploaded with ImageShack.us (http://imageshack.us)
(https://lusorobotica.com/proxy.php?request=http%3A%2F%2Fimg219.imageshack.us%2Fimg219%2F1007%2Fdsc00033pm.jpg&hash=c26d0f17ae7b1c0cef33888da022ebe5e3475039) (http://img219.imageshack.us/i/dsc00033pm.jpg/)
Uploaded with ImageShack.us (http://imageshack.us)
Que tal está?
Título: Re: smalluino problema
Enviado por: AcidDagger em 23 de Abril de 2010, 19:02
provavelmente tens o os fios da alimentação trocados  ;)
Título: Re: smalluino problema
Enviado por: joao rexinho em 23 de Abril de 2010, 19:05
Acho que não
preto = GND
vermelho = VIN
branco = 11 PWN, 10 PWN
Título: Re: smalluino problema
Enviado por: S Teixeira em 23 de Abril de 2010, 19:06
É um problema de código.
Já me aconteceu o mesmo e o problema estava no código
Título: Re: smalluino problema
Enviado por: joao rexinho em 23 de Abril de 2010, 19:10
Podias indicar o problema pf? Já troquei a entrada para 6, 5 o motor fica a fazer barulho e anda muito devagar mas mesmo assim não responde aos ciclos.
Código: [Seleccione]
int motorEsq = 11;
int motorDrt = 10
;
void setup()
{
 pinMode(motorEsq, OUTPUT);
 pinMode(motorDrt, OUTPUT);
}
void loop()
{
 parado(4);
 frente(2);
 esquerda(6);
 tras(2);
 esquerda(6);
 direita(6);
}
void parado(int tempo){ // tempo = segundos/2
 for(int i = 0; i<tempo;i++){
  analogWrite(motorEsq, 127);
  analogWrite(motorDrt, 127);
  delay(500);
 }
}
void tras(int tempo){ // tempo = segundos/2
 for(int i = 0; i<tempo;i++){
  analogWrite(motorEsq, 152);
  analogWrite(motorDrt, 102);
  delay(500);
 }
}
void frente(int tempo){ // tempo = segundos/2
 for(int i = 0; i<tempo;i++){
  analogWrite(motorEsq, 102);
  analogWrite(motorDrt, 152);
  delay(500);
 }
}
void esquerda(int tempo){ // tempo = segundos/2
 for(int i = 0; i<tempo;i++){
  analogWrite(motorEsq, 102);
  analogWrite(motorDrt, 102);
  delay(500);
 }
}
void direita(int tempo){ // tempo = segundos/2
 for(int i = 0; i<tempo;i++){
  analogWrite(motorEsq, 152);
  analogWrite(motorDrt, 152);
  delay(500);
 }
}
Título: Re: smalluino problema
Enviado por: S Teixeira em 23 de Abril de 2010, 19:44
O código está correcto
Deve ser necessário ir a um dos motores e modificar-lhe o sentido de rotação
A folha técnica do motor explica como proceder e é muito fácil.
Título: Re: smalluino problema
Enviado por: amando96 em 23 de Abril de 2010, 19:47
Faz outro código, e brinca com os numeros do analogWrite, tive uns servos que para andar no mesmo sentido um tinha de estar 90, e o outro a 75  :o
e é mais fácil mexer nums numeros do que abrir o servo...
Título: Re: smalluino problema
Enviado por: S Teixeira em 23 de Abril de 2010, 19:53
  neste endereço explica como alterar o sentido de rotação do servo da Paralax
http://www.parallax.com/dl/docs/prod/motors/crservo.pdf (http://www.parallax.com/dl/docs/prod/motors/crservo.pdf)
Isto deverá resolver a questão
Não é necessário abrir o servo, é com uma chave de fenda que actua num pequeno parafuso
Título: Re: smalluino problema
Enviado por: AcidDagger em 23 de Abril de 2010, 20:09
pois, experimenta codigos mais simples

Código: [Seleccione]
int motorEsq = 11;
int motorDrt = 10;

void setup()
{
 pinMode(motorEsq, OUTPUT);
 pinMode(motorDrt, OUTPUT);
}
void loop()
{
 
    digitalWrite(motorEsq, HIGH);  // Este pino HIGH, em conjunto com o de baixo LOW
    digitalWrite(motorDrt, HIGH);   // Fazem com que o motor da direita ande em frente
    delay (2000);
    digitalWrite(motorEsq, LOW);   // Este pino LOW, em conjunto com o de baixo HIGH
    digitalWrite(motorDrt, HIGH);  // Fazem com que o motor da esquerda ande em frente
    delay (1000);                    // Tempo que vai ficar a fazer esta função
    digitalWrite(motorEsq, HIGH);   // Este pino LOW, em conjunto com o de baixo HIGH
    digitalWrite(motorDrt, LOW);  // Fazem com que o motor da esquerda ande em frente
    delay (1000);
    digitalWrite(motorEsq, LOW);   // Este pino LOW, em conjunto com o de baixo HIGH
    digitalWrite(motorDrt, HIGH);  // Fazem com que o motor da esquerda ande em frente
    delay (1000);
    }
Título: Re: smalluino problema
Enviado por: AcidDagger em 23 de Abril de 2010, 20:11
Ja agora, como tas a alimentar os servos?
Título: Re: smalluino problema
Enviado por: amando96 em 23 de Abril de 2010, 20:30
Mas esse código é para motores dc com ponte H
EDIT: até não é, mas não funciona com um servo  :o
Título: Re: smalluino problema
Enviado por: AcidDagger em 23 de Abril de 2010, 21:32
ponte H sao quantro pinos

mas isto ja faz os servos mexer nao?
Título: Re: smalluino problema
Enviado por: amando96 em 23 de Abril de 2010, 23:28
Sempre pensei que precisavam de um pulso.
Título: Re: smalluino problema
Enviado por: joao rexinho em 24 de Abril de 2010, 00:16
Desculpem tive 2 treinos de hoquei. utilizei este e funcionam bem os servos mas qando meto o codigo do smalluino estam sempre a andar. Estive a a mexer na peça para mudar os sentido, com este código não dá. Esta a ser alimentada pelo pc porque tenho as pilhas a carregar.
Código: [Seleccione]
#include <Servo.h>
 
Servo myservo1;
Servo myservo2;

void setup()
{
  myservo1.attach(10);
  myservo2.attach(11);
}
 
void loop()
{
  myservo1.write(45);
  myservo2.write(45);
  delay(1000);
  myservo1.write(135);
  myservo2.write(135);
  delay(1000);
}
Título: Re: smalluino problema
Enviado por: joao rexinho em 24 de Abril de 2010, 01:48
Ja consegui virei la a peça ao maximo e depois no codigo alterei o analogWrite. :) :) :) :) ;D ;D ;D ;D :D :D :D :D :D
Muito obrigado a todos ::) ::) ::)
O codigo ficou algo como isto
Código: [Seleccione]
int motorEsq = 11;
int motorDrt = 10
;
void setup()
{
 pinMode(motorEsq, OUTPUT);
 pinMode(motorDrt, OUTPUT);
}
void loop()
{
 parado(4);
 frente(2);
 esquerda(6);
 tras(2);
 esquerda(6);
 direita(6);
}
void parado(int tempo){ // tempo = segundos/2
 for(int i = 0; i<tempo;i++){
  analogWrite(motorEsq, 0);
  analogWrite(motorDrt, 0);
  delay(500);
 }
}
void tras(int tempo){ // tempo = segundos/2
 for(int i = 0; i<tempo;i++){
  analogWrite(motorEsq, 45);
  analogWrite(motorDrt, 150);
  delay(500);
 }
}
void frente(int tempo){ // tempo = segundos/2
 for(int i = 0; i<tempo;i++){
  analogWrite(motorEsq, 150);
  analogWrite(motorDrt, 45);
  delay(500);
 }
}
void esquerda(int tempo){ // tempo = segundos/2
 for(int i = 0; i<tempo;i++){
  analogWrite(motorEsq, 45);
  analogWrite(motorDrt, 45);
  delay(500);
 }
}
void direita(int tempo){ // tempo = segundos/2
 for(int i = 0; i<tempo;i++){
  analogWrite(motorEsq, 150);
  analogWrite(motorDrt, 150);
  delay(500);
 }
}
Título: Re: smalluino problema
Enviado por: AcidDagger em 24 de Abril de 2010, 01:50
e fotos?  ;D
Título: Re: smalluino problema
Enviado por: joao rexinho em 24 de Abril de 2010, 02:50
Amanha de manha já vou meter, certo um video e já estou a trabalhar no código para acrescentar dois sensores IR  .As rodas foram feitas por mim estão um pouco tortas mas rolam uma maravilha ;D ;D
Título: Re: smalluino problema
Enviado por: AcidDagger em 24 de Abril de 2010, 12:12
queremos ver isso  ;D
Título: Re: smalluino problema
Enviado por: joao rexinho em 24 de Abril de 2010, 15:14
o meu 1º robo smalluino (http://www.youtube.com/watch?v=R0EznPSxLlw#ws)
Título: Re: smalluino problema
Enviado por: amando96 em 24 de Abril de 2010, 16:04
Muitíssimo bom aspecto!
ele tem alguns sensores ou ainda está só a fazer movimentos programados?
Título: Re: smalluino problema
Enviado por: joao rexinho em 24 de Abril de 2010, 16:09
Movimentos programados :D mas já estou a trabalhar no codigo para sensores IR.
Título: Re: smalluino problema
Enviado por: AcidDagger em 24 de Abril de 2010, 23:33
Que cena é essa a frente?  :D
Título: Re: smalluino problema
Enviado por: joao rexinho em 25 de Abril de 2010, 00:52
São rodas de carrinhos que tinha e da um bom suporte pois agora posso colocar mais ferros para por os sensores IR e outras coisas.A pouco veio me a ideia de utilizar uma ponte h e colocar em cima do robo com sensores IR. Então o robo quando encotra se algo á frente parava e e o modulo que fiz  começava a funcionar e disparava bolinhas.
com este modulo:
"gun"" pistola" de dois motores outro ângulo (http://www.youtube.com/watch?v=snJslKth1II#)
Título: Re: smalluino problema
Enviado por: joao rexinho em 25 de Abril de 2010, 02:38
ja acabei a programação ou pelo menos Não há erros, ainda não testei. ::) ::) ::) ::) ;D ;D ;D.estou a fazer a parte mecanica.
Código: [Seleccione]
int sensorIrDPin = 0;
int sensorIrEPin = 1;
int sensorIrDValue = 0; // valor leído del pot
int sensorIrEValue = 1; // valor leído del pot
int motorEsq = 11;
int motorDrt = 10
;
void setup()
{
   // inicializa comunicación serial a 9600 bps:
 Serial.begin(9600);
 pinMode(motorEsq, OUTPUT);
 pinMode(motorDrt, OUTPUT);
}
void loop()

{
 sensorIrDValue = analogRead(sensorIrDPin);
 sensorIrEValue = analogRead(sensorIrEPin);
 delay(200);
 if(sensorIrDValue>=100 + sensorIrEValue>=100){
   analogWrite(motorEsq, 150);
   analogWrite(motorDrt, 45);
  }


 sensorIrDValue = analogRead(sensorIrDPin);
 sensorIrEValue = analogRead(sensorIrEPin);
 delay(200);
 if(sensorIrDValue>=300 + sensorIrEValue>=300){
  analogWrite(motorEsq, 45);
  analogWrite(motorDrt, 150);
 }


 sensorIrDValue = analogRead(sensorIrDPin);
 sensorIrEValue = analogRead(sensorIrEPin);
  delay(200);
  if(sensorIrDValue>=100 + sensorIrEValue>=150){
   analogWrite(motorEsq, 45);
   analogWrite(motorDrt, 45);
  }


  sensorIrDValue = analogRead(sensorIrDPin);
 sensorIrEValue = analogRead(sensorIrEPin);
  delay(200);
  if(sensorIrDValue>=150 + sensorIrEValue>=100){
   analogWrite(motorEsq, 150);
   analogWrite(motorDrt, 150);
  }
}