LusoRobótica - Robótica em Português
Robótica => Projectos de robótica => Tópico iniciado por: cenario10 em 29 de Julho de 2014, 12:52
-
Boas pessoal.
Estou a utilizar uns sensores ópticos para por um robô que estou a fazer para seguir uma linha.
A linha é branca num fundo preto, eu acabei de por os sensores ópticos, mas algo se passa com eles pois os valores que me estão a dar no serial monitor do Arduíno são todos entre 10 e 5.
-
Resumo: "sensores óticos não funcionam no arduino"
O resto é para adivinhar-mos?
-
Os sensores são os sensores Breakout de sensor de linha QRE1113-Digital, e já vi vários projectos com estes sensores no arduíno.
-
E código, e calibração dos mesmos, como está feito?
A bola de cristal está avariada..
-
Boas,
Não faz uma apresentação ! Envia um texto enigmático ! Nem sequer se deu ao trabalho
de "pedir" ... Já não há pachorra !!!
Gabo a vossa paciência ainda tentar ajudar este tipo de pessoas ... pessoalmente acho
que o forum devia ter uma politica MUITO diferente: sem uma apresentação condigna não
havia direito a posts e todos os posts enigmáticos e "pouco educados" como este exemplo
pura e simplesmente deviam ser ignorados !!!
Abraços,
PA
-
Faço parte da moderação de um forum (não tecnológico) também em SMF, e fizemos mesmo isso: o primeiro post tem de ser obrigatoriamente nas apresentações (não conseguem postar noutro lado), e enquanto não o fizerem levam com um banner bem grande a avisar para se apresentarem.
-
Boas,
Não faz uma apresentação ! Envia um texto enigmático ! Nem sequer se deu ao trabalho
de "pedir" ... Já não há pachorra !!!
Gabo a vossa paciência ainda tentar ajudar este tipo de pessoas ... pessoalmente acho
que o forum devia ter uma politica MUITO diferente: sem uma apresentação condigna não
havia direito a posts e todos os posts enigmáticos e "pouco educados" como este exemplo
pura e simplesmente deviam ser ignorados !!!
Abraços,
PA
ai que stress man! olha, ha mto users que preferem e teem o direito à privacidade e se queres saber algo sobre o user, click no nickname e ja sabes mais sobre o user! :P (este user nao é dos menos incognitos que por aí andam que nem sequer metem essas infos pessoais nas definiçoes pessoais..)
e da mesma forma que se exige uma apresentaçao aos novos users, tb devia haver uma moderaçao à recepçao dos novos users com comentarios menos escabrosos! até assustas os users e dá logo um aspecto de mau ambiente que os users mais antigos teem pra com os novos users!..
-
Os sensores são os sensores Breakout de sensor de linha QRE1113-Digital, e já vi vários projectos com estes sensores no arduíno.
podes fazer um esquema das ligaçoes aos modulos que estás a usar bem como o codigo?..
-
9 vezes a palavra user hehehe ficou bem usada ;D
Quem determina as regras do fórum são os moderadores.
Sempre se fez a apresentação e acho boa política de quem quer participar.
-
Eu acho que nunca me apresentei :-[
-
Eu acho que nunca me apresentei :-[
A tua apresentação melhor é mesmo o indicador do número de mensagens junto à "foto" e nome de utilizador em cada resposta que dás.
Pessoalmente acho que a apresentação é sempre boa porque dá para ter uma ideia do nível de conhecimentos e de formação que um utilizador tem, esse tipo de informações não são propriamente pessoais (ninguém precisa de indicar em que universidade tirou a licenciatura, se disser que fez um mestrado em sistemas autónomos ninguém lhe vai perguntar se sabe ler uma saída analógica para verificar se poderá ser esse o erro num problema com um sensor de linha analógico.
Agora recorrendo à bola de cristal (que entretanto já levou com condensadores electrolítico novos e já funciona) pela leitura das perguntas sou obrigado a deduzir que os conhecimentos não são muitos. o sensor não é uma breakout board, esta é apenas uma plca que facilita as ligações do sensor, e o sensor qre1113 é analógico e não digital.
Assumindo que a leitura do pino analógico está a ser feita da forma correcta e as ligações estão bem feitas a maneira mais fácil de testar o funcionamento do sensor será com um teste if ao valor lido do sensor para comparar se este é maior que 150 e em caso afirmativo acender um led ( para uma linha branca em fundo preto deve ser suficiente) e testar o sensor junto ao "chão" e verificar que o led acende em cima da linha e não em cima do fundo, parece que existem breakout boards que fazem processamento de sinal e devolvem apenas um sinal digital, se for esse o caso na condição do if é só testar a entrada digital e verificar se é um ou zero.
A pouca paciência esgotou-se no primeiro site da pesquisa do google:
http://bildr.org/2011/06/qre1113-arduino/ (http://bildr.org/2011/06/qre1113-arduino/)
A pesquisa foi simples: "QRE1113 arduino" lê tem tudo desde ligações até código para testar as duas versões, se não sabes inglês pesquisa novamente o mesmo que eu e restringe as buscas para apenas páginas em português, não devem faltar sites brasileiros a fazer-te a papinha toda, melhor é impossível.
P.S.: O problema não é dos foruns e das suas regras, o problema é mesmo de mentalidades de uma geração que a meu ver está perdida que não consegue fazer nada sem que lhe mastiguem tudo primeiro. Não têm um mínimo de cuidado com a maneira como perguntam\pedem algo, não dando as informações mínimas necessárias para alguém puder ajudar. By the way: se repararem nas duas únicas mensagens que escreveu não fez qualquer pergunta sequer, pelo que tecnicamente não passaram de um desabafo a dizer que não conseguia pôr o sensor a funcionar.
P.S.2: a menção aos sites brasileiros não foi dirigida a ninguém em particular mas sim ao google que teima em só me querer apresentar resultados do brasil quando restrinjo a minha busca a "em português", e diga-se de passagem que a maioria dos textos de português tem muito pouco.
-
Boas,
Peço desculpa sou novo nisto !
A programação que tenho é só para ler os valores da linha.
// Seguidor de linha
void setup()
{
pinMode(A0, INPUT);
pinMode(A1, INPUT);
pinMode(A2, INPUT);
pinMode(A3, INPUT);
pinMode(A4, INPUT);
Serial.begin(9600);
}
void loop()
{
Serial.println(analogRead(A0));
Serial.println(analogRead(A1));
Serial.println(analogRead(A2));
Serial.println(analogRead(A3));
Serial.println(analogRead(A4));
delay(3000);
Serial.println("-----");
}
Agora em relação ao robô, é composto por 2 placas de acrílico ou seja tem 2 andares.
Vão ser utilizadas Baterias Ni-MH AA 9,6 V 800 mAh para alimentar o robô.
Utilizamos o integrado L293 como ponte H para controlar os motores de corrente continua.
Coloquei os motores no centro do robô, juntamente com as rodas de tracção de cada lado, centradas no meio, com uma roda fixa atrás e uma roda daquelas parecidas com desodorizante a frente.
Vamos utilizar 7 sensores. 4 deles vão ser para detectar entroncamentos e cruzamentos, frente, trás, esquerda e direita.
E vamos ter 3 por baixo dos motores centrados no meio para o robo fazer o seguimento da linha de 5 cm .
Não sei que posso dizer mais :D
-
Viste o site que indiquei ontem? Vê como são as ligações e confirma que estão corretas, depois testa com o exemplo do Arduino para analog read, primeiro com apenas um sensor e depois de perceberes como funciona o código tenta então usar vários sensores.
Com estas informações já é possível dar uma melhor ajuda, não custou nada pois n? Se o tivesses feito no primeiro post tinhas poupado 2 dias. Se ainda n o fizeste é melhor veres com atenção os exemplos do Arduino e testa-los na prática.
-
Boas,
Desde já obrigado pela a vossa ajuda, esclareçam-me só mais uma coisa, se ligar estes sensores as entradas analógicas do arduino e fizer um analogRead() a entrada do sensor os, valores que vou obter são 0 ou 1023 aproximadamente visto que são digitais, correcto ?
-
Errado, a saida desses sensores é analógica.
Está tudo na datasheet, mas como não sabemos como isso está ligado, é complicado adivinhar se vais ler alguma coisa ou não.
-
A saída é digital os sensores são QRE1113 Line Sensor Breakout - Digital. Peço desculpa se dei entender que eram analógicos.
-
Links, fotos?
-
tens a plaquinha ligada desta forma ao arduino?
(https://lusorobotica.com/proxy.php?request=http%3A%2F%2Fbildr.org%2Fblog%2Fwp-content%2Fuploads%2F2011%2F06%2FQRE113_analog.png&hash=cfcf55edb9a4d96ca71509d583705fae29071063)
-
Boas novamente pessoal, Estou com um problema acho que pode ser relativamente a pista ou aos sensores. Relembro que os sensores são digitais, peço desculpa se perceberam o contrário
O robô já detecta a linha branca mas não a consegue seguir. Ele fica quase parado, as vezes dá os avanços pequenos mas nada de especial.
Os motores estão a funcionar, a bateria esta carregada, ele já andou em cima da pista sem seguir a linha.
A linha branca é uma fita espelhada branca sobre um fundo preto.
Apliquei o que tá neste site também, desde já obrigado deu muito jeito
http://bildr.org/2011/06/qre1113-arduino/ (http://bildr.org/2011/06/qre1113-arduino/)
O código é este, o robô tem o objectivo de seguir a linha:
#include <L293D.h>
L293D motores(11,9,8,10,7,6);
int pinSensorMeio = 3;
int pinSensorDireita = 2;
int pinSensorEsquerda = 4;
int valueSM, valueSD, valueSE, state;
void setup(){
Serial.begin(9600);
}
void loop(){
state = estadoBarra();
switch(state){
case 1:
Serial.println("1");
motores.frente(255,255);
break;
case 2:
Serial.println("2");
motores.frente(255,128);
break;
case 3:
Serial.println("3");
motores.frente(255,128);
break;
case 4:
Serial.println("4");
motores.frente(128,255);
break;
case 5:
Serial.println("5");
motores.frente(128,255);
break;
case 6:
Serial.println("6");
motores.stop();
break;
case 7:
Serial.println("7");
motores.stop();
break;
case 8:
Serial.println("8");
motores.tras(255,255);
break;
}
delay(250);
}
int readSensorDigital(int pinNumber){
pinMode(pinNumber, OUTPUT );
digitalWrite(pinNumber, HIGH );
delayMicroseconds(10);
pinMode(pinNumber, INPUT );
long time = micros();
while (digitalRead(pinNumber) == HIGH && micros() - time < 3000);
int diff = micros() - time;
return diff;
}
int estadoBarra(){
int estado;
valueSM = readSensorDigital(pinSensorMeio);
valueSD = readSensorDigital(pinSensorDireita);
valueSE = readSensorDigital(pinSensorEsquerda);
if(valueSE > 2000 && valueSM < 800 && valueSD > 2000){
estado = 1;
}
else if(valueSE > 2000 && valueSM < 800 && valueSD < 800){
estado = 2;
}
else if(valueSE > 2000 && valueSM > 2000 && valueSD < 800){
estado = 3;
}
else if(valueSE < 800 && valueSM < 800 && valueSD > 2000){
estado = 4;
}
else if(valueSE < 800 && valueSM > 2000 && valueSD > 2000){
estado = 5;
}
else if(valueSE < 800 && valueSM < 800 && valueSD < 800){
estado = 6;
}
else if(valueSE > 2000 && valueSM > 2000 && valueSD > 2000){
estado = 7;
}
else{
estado = 8;
}
return estado;
}
-
Se o sensor é digital ou dá zero ou um, como é que estás a comparar com 2000, 200 e afins?
Estou a ver que estás a ler de um lado que usa analogReads e estás a tentar fazer o mesmo com os digitalRead.
Esses sensores, sendo digitais ou não, terás sempre uma resposta analógica, e mais, passa para o porto analógico, faz analogReads e faz prints para a consola serial, e mexe o sensor em cima da linha, vais ver que os valores variam.
-
Boas,
Penso que a versão digital desse sensor não permite que ele seja lido através de um digitalread(), tens de cronometrar o tempo que o capacitor que a board tem leva a descarregar.
http://bildr.org/2011/06/qre1113-arduino/ (http://bildr.org/2011/06/qre1113-arduino/)
Vê este link tens ai dois exemplos, para sensor analógico e para o digital.
-
boa tarde
onde aconselhavam para comprar sensores de linha?
ebay ja andei também em algumas lojas portuguesas.
-
Enquanto não mostrarem o sensor usado, chega de tiros ao prato..
Tenha ou não condensador, isso terá sempre uma saida analógica..
-
Enquanto não mostrarem o sensor usado, chega de tiros ao prato..
Tenha ou não condensador, isso terá sempre uma saida analógica..
Se medires a saída do sensor com um multímetro, ela a variar entre 0.15V e 0.2V esta variação depende se está a ler branco ou preto.
-
boa tarde
onde aconselhavam para comprar sensores de linha?
ebay ja andei também em algumas lojas portuguesas.
http://www.g7electronica.net/pt/sensores/980-qre1113.html (http://www.g7electronica.net/pt/sensores/980-qre1113.html)
http://www.g7electronica.net/pt/transistors/658-qrd1114.html (http://www.g7electronica.net/pt/transistors/658-qrd1114.html)
http://www.g7electronica.net/pt/89-sensores (http://www.g7electronica.net/pt/89-sensores)
ou entao:
http://www.g7electronica.net/pt/breakout-boards/813-line-sensor-8.html (http://www.g7electronica.net/pt/breakout-boards/813-line-sensor-8.html) (tb podemos fornecer em modulos com 1,3 ou 5 sensores - sob-pedido)