LusoRobótica - Robótica em Português
Robótica => Projectos de robótica => Projectos em desenvolvimento => Tópico iniciado por: luisjustin em 10 de Julho de 2012, 23:05
-
Estou com um problema, segui o tutorial do SmallUino 1.5http://lusorobotica.com/index.php?topic=575.0 (http://lusorobotica.com/index.php?topic=575.0) e o robo no inicio ele obedecia o que o código mas depois ele parece que tem algum sensor que não botei por que ele só volta para traz e gira quando alguém tranca ele com o pé.
-
Alguém pode me ajudar por favor :'(
-
Boas, sim a malta gosta bastante de ajudar ;) mas também para poderem fazer isso tem de deixar mais informação se não é impossível poder fazer seja o que for ;)
....haaa e já agora, se fez tudo o que esta no link que postou não tem o porque de não funcionar ;) mas ainda assim se poder meter fotos e o código era óptimo.
Abraço
-
O código usei este:
int motor1Pin1 = 5; // Ponte H
int motor1Pin2 = 6; // Ponte H
int motor2Pin1 = 10; // Ponte H
int motor2Pin2 = 11; // Ponte H
void setup() {
// Definir os pinos outputs:
pinMode(motor1Pin1, OUTPUT);
pinMode(motor1Pin2, OUTPUT);
pinMode(motor2Pin1, OUTPUT);
pinMode(motor2Pin2, OUTPUT);
}
void loop() {
//Vamos testar o gajo :)
digitalWrite(motor1Pin1, HIGH); // Este pino HIGH, em conjunto com o de baixo LOW
digitalWrite(motor1Pin2, LOW); // Fazem com que o motor da direita ande em frente
digitalWrite(motor2Pin1, LOW); // Este pino LOW, em conjunto com o de baixo HIGH
digitalWrite(motor2Pin2, HIGH); // Fazem com que o motor da esquerda ande em frente
delay (1500); // Tempo que vai ficar a fazer esta função
//Agora é inventar....fazer como quiserem...
//O ideal seria utilizar a funçao AnalogWrite para controlar a velocidade por PWM
//Mas o digitalWrite torna as coisas mais simples
//O inconveniente, é que anda sempre á velocidade máxima
//O resto do código vai fazer o Smalluino Mexer :D
//Dúvidas: [url=http://www.lusorobotica.com]www.lusorobotica.com[/url]
digitalWrite(motor1Pin1, LOW);
digitalWrite(motor1Pin2, HIGH);
digitalWrite(motor2Pin1, HIGH);
digitalWrite(motor2Pin2, LOW);
delay (1500);
digitalWrite(motor1Pin1, HIGH);
digitalWrite(motor1Pin2, LOW);
digitalWrite(motor2Pin1, HIGH);
digitalWrite(motor2Pin2, LOW);
delay (1500);
digitalWrite(motor1Pin1, LOW);
digitalWrite(motor1Pin2, HIGH);
digitalWrite(motor2Pin1, LOW);
digitalWrite(motor2Pin2, HIGH);
delay (1500);
}
Não modifiquei nada fotos vou tentar pegar uma e vou colocar daqui uns 5 minutos.
-
Se ele faz isso quando lhe prendes os motores provavelmente é a voltagem a descer e o micro a fazer reset.
-
Está com 7.5V
-
Está com 7.5V
Input Voltage (recommended) 7-12V
Input Voltage (limits) 6-20V
seguindo a ideia do Senso o que pode estar a acontecer é que qnd os motores puxam corrente (amperes), a voltagem caia abaixo dos 6V e o micro faça reset.
Que tipo de bateria esta a usar? Nimh? nicd? lipo? Pilhas alcalinas?
edit: as vezes o ruido eletrico dos motores é suficiente para fazer reset ao arduino (been there)
-
No momento estou usando pilhas normais panasonic
-
Condensadores na alimentação podem ajudar a resolver esse problema, há um post aqui no fórum sobre isso. Para teres uma ideia, experimenta ligar um LED (com a devida resistência) a um pino do arduino (no código tens que configurá-lo como saída e metê-lo a HIGH) e depois vê o que acontece quando travas o robot, se o LED se apagar e voltar logo a ligar é porque a tensão das pilhas está a baixar e está a provocar resets no microcontrolador. Nem sempre se vê o LED a apagar, é uma coisa muito rápida, mas se apagar, já ficas com noção do que é.
-
Comprei 2 capacitares de 47nano de ceramica e 2 de 47Uf X 16 e 2 de 2200uf X 16v, os de cerâmicas eu não sei se comprei certo para diminuir os ruidos do motores mas mesmo assim não adiantou e coloquei o de 2200Uf X 16V na alimentação que está ligada na protoboard e não adianta ele só anda para traz e faz tudo que deve fazer quando ele é trancado por 1 segundo dai ele volta pra traz e gira dai ele executa a ação correta mas se ligar ele e deixar ele sai ando pra frente infinitamente os motores que uso são de 6.5V ou 6V se não me engano com uma caixa de redução de 1:120 por favor preciso de ajuda vou postar uma foto dele junto aqui como anexo.
-
Aqui vai algumas especificações do motor + a base a que eu comprei.
Especificação:
Dimensões: 170mm de diâmetro de base
Peso: 400g
Corpo em alumínio resistente com furos de montagem
Velocidade: 70cm / s
Diâmetro da roda: 65mm
Moldura e todos os acessórios de montagem, variedade de sensores podem ser adicionados
Dois unidade diferencial
Motor Tipo 130
Relação de engrenagem 1:120
Motores: 10000rpm, 4.5V-6V
Torque (6V): 1.92Kgcm
Tamanho: 55mm x 48,3 milímetros x 23 milímetros
Peso: 45g
o link de onde eu comprei: http://produto.mercadolivre.com.br/MLB-430252601-arduino-chassi-2-rodas-e-caixas-de-reduco-_JM (http://produto.mercadolivre.com.br/MLB-430252601-arduino-chassi-2-rodas-e-caixas-de-reduco-_JM)
-
Testa so este codigo e depois diz o q acontece:
int motor1Pin1 = 5; // Ponte H
int motor1Pin2 = 6; // Ponte H
int motor2Pin1 = 10; // Ponte H
int motor2Pin2 = 11; // Ponte H
void setup() {
// Definir os pinos outputs:
pinMode(motor1Pin1, OUTPUT);
pinMode(motor1Pin2, OUTPUT);
pinMode(motor2Pin1, OUTPUT);
pinMode(motor2Pin2, OUTPUT);
}
void loop() {
digitalWrite(motor1Pin1, HIGH); // Este pino HIGH, em conjunto com o de baixo LOW
digitalWrite(motor1Pin2, LOW); // Fazem com que o motor da direita ande em frente
digitalWrite(motor2Pin1, LOW); // Este pino LOW, em conjunto com o de baixo HIGH
digitalWrite(motor2Pin2, HIGH); // Fazem com que o motor da esquerda ande em frente
delay (1500); // Tempo que vai ficar a fazer esta função
}
Se puderes depois mete um video do que ele faz, porque de facto não estou sequer a perceber o que o robot faz. Ele arranca e depois para? Ele repete sempre as mesmas acções?