• Welcome to LusoRobótica - Robótica em Português.
 

Smalluino Advanced

Started by AcidDagger, 27 de March de 2010, 18:36

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

XicoMBD

Ok, obrigado pela dica  :)

Quero ver se arranjo umas coisas dessas, tou farto de plásticos  :P

senso

Com umas calhas de aluminio e uns perfis em L e em U, um berbequim, parafusos porcas e varões roscados já fazes muita coisa.
Avr fanboy

Fifas

ó AcidDagger, mesh da AcRyan num robô? Robô de luxo ein? ;D já vale mais só por causa disso :D

Não conseguias arranjar uma mais barata num Aki, ou Leroy Merlin ou assim? Tenho ideia que a da ACRyan é carota

AcidDagger

Era a que tinha por aqui  :) , é bastante leve  :P

preytender

#79
Ola a todos, estou a precisar de uma ajudinha se for possivel  ;D

Em baixo esta uma fotografia com as ligações que fiz para testar os meus motores (são iguais aos utilizados neste topico pelo AcidDagger). O problema é que o arduino esta sempre a reiniciar  :'(





Ainda pensei abrir um novo topico para expor o meu problema mas penso que tem tudo a ver com o que foi falado nas primeiras páginas deste, em que se discutia como alimentar os motores.
Pelo que consegui perceber segui todas as indicações dadas excepto o regulador de 5v.

Se alguem souber o que é que esta errado aqui, qualquer ajuda é bem vinda.
Obrigado.

Esqueci-me de dizer que com relação as ligações da ponte e ao codigo parece estar tudo a funcionar porque consigo por os motores a andar para frente, tras, virar, parar etc.... pelo menos ate o arduino reiniciar misteriosamente.

AcidDagger

#80
O arduino reinicia porque nao tem alimentação suficiente  :)

Resolução simples, 1,5v + 1,5v +1,5v = 4,5v

O arduino para ser alimentado por ai precisa do minimo de 7v

Experimenta alimentar o arduino no pino 5v e gnd

Resolução mais complicada, DC Bost ou lá como se chama, para teres os 5v a partir da caixa de pilhas

EDIT: As tuas pilhas nem sao de 1,5v sao 1,2v. Mais me ajudas xD

Arranja uma caixa de 4 pilhas que resolves a questao  :P

amando96

Pois, precisas de pelo menos um battery pack de 4 pilhas, se forem recrregáveis, dá, pois quando carregadas a tensão é muito perto dos 1.5v, os 1.2 é depois de algum uso.

preytender


Poix, na fotografia nao da para ver bem mas se virem bem a legenda aquilo é um pack de 6 pilhas.

Com 6 devia dar não devia ????

amando96

Devia sim,

a não ser que estiverem muito gastas?

esperimenta desligar os motores, e diz se ainda faz reset.

preytender

#84
Obrigado pela resposta, se desligar os motores já não faz reset, alias o programa que estou a utilizar para testar os motores funciona com dados da porta de serie ou seja quando liga esta tudo parado e tubo bem se enviar a letra "f" anda para a frente se enviar "b" para tras e por ai fora .... o que acontece é que por exemplo quando digo aos motores para andar para a frente eles arrancam e depois o arduino reinicia isto esta a acontecer seja ligado com as pilhas seja ligado por USB.

Os fios dos motores não estão soldados estão apenas engatados nas patilhas dos motores fiz isto para os experimentar, não sei se é suposto soldar os fios ou se é melhor arranjar algum tipo de encaixe, achas que pode ser disto ????

microbyte

Consegues tirar uma foto mais High Q. às ligações na breadboard?
Tira com luz natural sff  ;)

preytender


Tens razao, tirei a fotografia ontem a noite e ficou muito mal  ;D . Adicionei uma melhor em baixo da outra com os detalhes da ligação.

Acho que esta tudo bem ligado mas .... os motores vao para os pinos 5,6(Fios Amarelos) e 10,11(Fios Azuis) do arduino

Obrigado.

AcidDagger

Não queres disponibilizar o codigo do teu robot? :P

microbyte

Não é do código...

O problema é que estás a alimentar os motores com os mesmos 5v da lógica.

Tens de meter no pino mais à direita em baixo, nao os 5v, mas directamente a bateria.
Vais ligar esse pino do integrado ao pino Vin do Arduino e vais dizer se continua a festa to restart.

preytender


Muito muito muito muito obrigado, retirei aquele jumper cinzento e liguei esse pino do CI ao vin do arduino e funcionou perfeitamente.

Neste momento esta a funcionar ligado por USB ou seja o vin deve ter cerca de 5v mas quando ligar o pack das baterias o vin vai ter perto de 9v acho que os motores não vao gostar certo ??? devo usar um regulador para 5v ??? se sim como é que o ligo.

Com relação ao codigo, claro que o posso disponibilizar  ;D para ja só serve para testar os movimentos e velocidades dos motores mas assim que conseguir montar isto a ideia é fazer um segue linhas com controlo PID depois tambem posso dar esse codigo.

Aqui vai o codigo que fiz para os teste



// Definiçao de pinos dos Motores
int motor_left[] = {5,6};
int motor_right[] = {10,11};

int max_vel = 70; // EStou a utilizar Pinos PWM em vez de escrever HIGH coloco os motores a 70.

void setup() { 

Serial.begin(19200);
Serial.println("Inicio");

//Inicializar Pinos Motores
int i;
for (i=0;i<2;i++) {
  pinMode(motor_left[i],OUTPUT);
  pinMode(motor_right[i],OUTPUT);
}

motor_stop(); //Para os motores
 
}

void loop() { 

  /***********************************************************************
  //Bloco Degub Motores com comandos serial */
 
  if (Serial.available()) {
   
   int val=0;
   val=Serial.read();
   if (val=='f') {
      drive_forward(); // Andar para a Frente
   }
   if (val=='b') {
      drive_backward(); //Andar Tras
   }
   if (val=='l') {
     turn_left(); // Virara Esquerda
   }
   if (val=='r') {
     turn_right(); // Virar Direita
   }

   if (val=='s') {     
     motor_stop(); // Parar
   }
   
   delay(500);
}
 

}


// Funcoes para Gestão dos Motores

void motor_stop() {
  digitalWrite(motor_left[0],LOW);
  digitalWrite(motor_left[1],LOW);
 
  digitalWrite(motor_right[0],LOW);
  digitalWrite(motor_right[1],LOW);
  delay(25);
}

void drive_forward() {
  analogWrite(motor_left[0],max_vel);
  digitalWrite(motor_left[1],LOW);
 
  analogWrite(motor_right[0],max_vel);
  digitalWrite(motor_right[1],LOW); 
}

void drive_backward() {
  digitalWrite(motor_left[0],LOW);
  analogWrite(motor_left[1],max_vel);
 
  digitalWrite(motor_right[0],LOW);
  analogWrite(motor_right[1],max_vel); 
}


void turn_left() {
  digitalWrite(motor_left[0],LOW);
  analogWrite(motor_left[1],max_vel);
 
  analogWrite(motor_right[0],max_vel);
  digitalWrite(motor_right[1],LOW); 
}


void turn_right() {
  analogWrite(motor_left[0],max_vel);
  digitalWrite(motor_left[1],LOW);
 
  digitalWrite(motor_right[0],LOW);
  analogWrite(motor_right[1],max_vel); 
}