LusoRobótica - Robótica em Português
Electrónica => Sensores => Tópico iniciado por: zordlyon em 14 de Fevereiro de 2013, 15:00
-
Boas, tenho andado a ver os ultra-sons e gostava que me explicassem se alguém souber a diferença entre ultra-sons só com um emissor/receptor (transceivers?) tudo no mesmo, e os com emissor e receptor separados?
Falo por exemplo destes:
(https://lusorobotica.com/proxy.php?request=http%3A%2F%2Fwww.electrojoystick.com%2Fprodimages%2Fimg_0496.jpg&hash=72fe07649355d30c06ccefaf6a79c3cab05b171c)
(https://lusorobotica.com/proxy.php?request=http%3A%2F%2Fimg.dxcdn.com%2Fproductimages%2Fsku_138563_1.jpg&hash=d9fcf35658b49024901706c35aa1c6485890d43e)
Cumps,
André.
-
Olá zordlyon,
Boas, tenho andado a ver os ultra-sons e gostava que me explicassem se alguém souber a diferença entre ultra-sons só com um emissor/receptor (transceivers?) tudo no mesmo, e os com emissor e receptor separados?
Para já o primeiro modelo da figura SRF02 tem protocolo de comunicação I2C enquanto que o outro dá a informação da medida através da largura de pulso.
Ambos os modelos funcionam relativamente bem, no entanto, os modelos que têm apenas um transceiver costumam ter uma distancia mínima, (a que conseguem medir) maior que os outros.
SRF02 distancia minima 6cm
SRF08 (modelo com Tx e Rx) distancia minima 3cm
SRF05 distancia minima 1cm
Dados do fabricante, http://www.robot-electronics.co.uk/acatalog/Ultrasonic_Rangers.html (http://www.robot-electronics.co.uk/acatalog/Ultrasonic_Rangers.html)
Do modelo que colocaste a imagem não fui ver as especificações mas nao devem fugir muito destes valores.
Agora tens de ponderar entre tipo de interface, alcance (minimo e maximo) e claro..... Preço!
Cumprimentos, Mauro.
-
Olá Mauro obrigado pela info.
Em relação ao primeiro não é um SRF02, é um EZ1 da maxbotix, mas como disses-te devem ser semelhantes, aliás, nem conhecia o SRF.
Mas em questões de funcionamento são iguais ne?
Ou seja, a minha dúvida é, visto o primeiro fazer de emissor/receptor, e o segundo ter o emissor e receptor separado, este segundo não dá para funcionar um pouco como os IR, ou seja, não dá para que seja calibrado/programado para receber somente medidas do seu emissor?
A ideia disto seria por exemplo, ter 3 sonares destes com emissor e receptor separados, e cada módulo emissor e receptor só falasse para si próprio, de modo a que as ondas provenientes dos outros dois sonares não interferissem
na leitura deste sonar.
Estive a pensar um pouco e isto só seria possivel caso as ondas de cada fossem diferentes certo? Sendo iguais, não há maneira de haver uma espécie de "código" que é reconhecido pelo respectivo receptor.
Iria trabalhar um pouco como os comandos de televisão/garagem, mas em vez de ser IR seria através de Sonar.
É uma dúvida um pouco confusa, mas penso que dá para perceber, caso não dê eu tento explicar de outra forma... :)
Cumps,
André.
-
Viva,
é mto parecido com o SRF!
Todos eles usam uma frequência por volta dos 40Khz, nao sei se vai ser mto fácil (nunca andei a ver) conseguires "criar uma assinatura" para cada um deles......
se conseguires informa-nos, é interessante.
Mauro.
-
Viva,
é mto parecido com o SRF!
Todos eles usam uma frequência por volta dos 40Khz, nao sei se vai ser mto fácil (nunca andei a ver) conseguires "criar uma assinatura" para cada um deles......
se conseguires informa-nos, é interessante.
Mauro.
Era exactamente isso!
Sim, ando a estudar essa possibilidade para evitar interferências nas reflexões. ;)
Tenho aqui 5 EZ1 a funcionar em chain, muito mal, não gostam muito das reflexões e preciso de algo para contornar isto.
Sim, caso descubra algo coloco cá. ;)
-
Sejam quais forem os ultra-sons nunca os podes disparar todos ao mesmo tempo, dá uma confusão brutal, o que fazes é um round-robin, ou seja, disparar e ler cada um deles sequencialmente.
-
Sejam quais forem os ultra-sons nunca os podes disparar todos ao mesmo tempo, dá uma confusão brutal, o que fazes é um round-robin, ou seja, disparar e ler cada um deles sequencialmente.
Sim é o que temos feito Senso, mas o mal está nas paredes, são paredes que reflectem bastante bem, não absorvem quase nada, o que causa bastantes reflexos, e mesmo com delays consideráveis entre cada leitura (50ms a 250ms) por vezes existem leituras "esquesitas", como por exemplo estar a 1m da parede e ler por exemplo 20cm, se é que me entendes..
A gente pensa que isso é devido aos reflexos.
O circuito usado é este:
http://www.maxbotix.com/documents/LV_Chaining_Constantly_Looping_AN_Out.pdf (http://www.maxbotix.com/documents/LV_Chaining_Constantly_Looping_AN_Out.pdf)
-
entao se ha assim tanto reflexo, n deviam usar sensores de IR?...
-
entao se ha assim tanto reflexo, n deviam usar sensores de IR?...
Sim, mas também há luminosidade... então estamos a tentar usar os 2 em conjunto, calibra-los para evitar o máximo de falhas e uns compensarem os outros.
-
Sim é o que temos feito Senso, mas o mal está nas paredes, são paredes que reflectem bastante bem, não absorvem quase nada, o que causa bastantes reflexos, e mesmo com delays consideráveis entre cada leitura (50ms a 250ms) por vezes existem leituras "esquesitas", como por exemplo estar a 1m da parede e ler por exemplo 20cm, se é que me entendes..
eu tenho usado por vários vezes hc-sr04 e não há nada a fazer, vais ter de filtrar por software os erros de medida.
tem tb atenção ao nível de ruído no teu circuito, os motores podem estar a dificultar as leituras: no meu caso quando parava os motores conseguia melhores leituras até que fui conseguindo reduzir o ruído vindo dos motores e as leituras também foram melhorando.
outra coisa que podes fazer é tornar os sensores menos omni-direcionais, colocando tubos nos receptores, tipo isto:
(https://lusorobotica.com/proxy.php?request=http%3A%2F%2Fletsmakerobots.com%2Ffiles%2Ffield_primary_image%2FPICT2619.JPG&hash=4ad8354311a0fcb86e81e7da60c27ab35d08f82d)
-
Não uses os dados directamente usa uma moving average ai de 4 leituras para teres valores mais estaveis.
-
Obrigado malta, vou ver, sim a average já estava a fazer isso também mas como estava a mandar o print para o terminal para ver as leituras antes do average e via leituras tão estranhas, começei a achar esquesito.
Em relação ao ruído todos os sensores estão com alimentações independentes dos motores.
Em relação aos tubos realmente é uma boa ideia, obrigado pela dica.
Quero ver se faço algo o mais estável possível.
-
E tens baterias isoladas e tudo?
Se não, tens sempre acoplamento de ruido por tudo quanto é lado.
-
eu uso medidas directas mas antes de reagir às medidas filtro qualquer valor igual 0 ou igual 256 para 60
-
E tens baterias isoladas e tudo?
Se não, tens sempre acoplamento de ruido por tudo quanto é lado.
Baterias isoladas como?
o ground de ambas está partilhado no arduino.
Cumps,
André.
-
E tens baterias isoladas e tudo?
Se não, tens sempre acoplamento de ruido por tudo quanto é lado.
Baterias isoladas como?
o ground de ambas está partilhado no arduino.
Cumps,
André.
deve estar a dizer para não usares a mesma bateria para os motores e o microcontrolador
-
Isso não está a acontecer...
Neste momento tenho o seguinte...
2x Pilhas de lítio de 3,7v para o Arduino e toda a electronica.
2x Pilhas de lítio de 3,7v para os motores das rodas...
Mas estas 2 tem os grounds partilhados.
E estamos a ponderar usar um motor micro 2000kv brushless para a Fan se formos usar, iremos colocar uma bateria 2S LiPo só para esta Fan.
-
então acho que não deverá haver qualquer problema mas eu esperava pela resposta de outra pessoa.
o ground tem de ser comum senão nao dava apra controlar nada
-
Sim, a massa tem de ser comum, mas o ruido tambem viaja pela massa..
Para veres se o problema é do sensor ou do ruido é ver como está a voltagem com um osciloscópio, tanto em acoplamento DC como em AC.
-
Sim, a massa tem de ser comum, mas o ruido tambem viaja pela massa..
Para veres se o problema é do sensor ou do ruido é ver como está a voltagem com um osciloscópio, tanto em acoplamento DC como em AC.
Hum ok, irei ver isso no Lab da Fac, já agora, aconcelham colocar um condensador em cada 5+ e GND do Sonar? Se sim quais?
Já agora os motores estão com uma Ponte H L293, e a voltagem das pilhas estão a ser reguladas através dos 7805 e os respectivos condensadores.
-
Vê primeiro se tens ruido, depois logo se decide.
-
Coloca condensadores nos terminais dos motores. Há um post do Njay sobre isso, aqui no fóum, muito bom!
-
Coloca condensadores nos terminais dos motores. Há um post do Njay sobre isso, aqui no fóum, muito bom!
ya mesmo escrever isso quando mandei enviar disse que havia um novo post ;D
-
Hum ok, obrigado malta, vou ver isso então...
Em relação ao post do Njay, alguem sabe o nome dele?
ou link, não estou a encontrar....
-
aqui está:
http://lusorobotica.com/index.php?topic=3615.0 (http://lusorobotica.com/index.php?topic=3615.0)
-
aqui está:
http://lusorobotica.com/index.php?topic=3615.0 (http://lusorobotica.com/index.php?topic=3615.0)
Obrigado mais uma vez Luís... ;)
-
Pelo que estive a ler e fiquei :o...
E chamou me a atenção este ultimo comentário:
Pois, e então se houverem partes analógicas... todo o filtro é pouco :)
Oh Sena, tenho andando cá com uma ideia. Temos que ir tomar um copo e falar disso.
Os Sonares são lidos via porta analógica...terei problemas devido a isso também?
Cumps,
André.
-
Então, mas isso é i2c....
Acho que existem ai umas confusões fundamentais.
-
Então, mas isso é i2c....
Acho que existem ai umas confusões fundamentais.
Viste o PDF que coloquei anteriormente? É lido via portas analogicas do arduino...
http://www.maxbotix.com/documents/LV_Chaining_Constantly_Looping_AN_Out.pdf (http://www.maxbotix.com/documents/LV_Chaining_Constantly_Looping_AN_Out.pdf)
ou estou errado?
-
As portas analógicas do arduino, são simplesmente pinos digitais que estão tambem ligados ao multiplexer do conversor analógico digital e que por acaso tambem tem no pinos PC4 e PC5 tem o interface i2c, i2c é tudo menos analógico, é precisamente por isso que usar arduino é um tiro nos pés, estão a usar isso sem saber o que realmente estão a usar, é bibliotecas para cima e o resto pouco interessa.
-
As portas analógicas do arduino, são simplesmente pinos digitais que estão tambem ligados ao multiplexer do conversor analógico digital e que por acaso tambem tem no pinos PC4 e PC5 tem o interface i2c, i2c é tudo menos analógico, é precisamente por isso que usar arduino é um tiro nos pés, estão a usar isso sem saber o que realmente estão a usar, é bibliotecas para cima e o resto pouco interessa.
Então segundo o PDF anterior aconselhas ligar os AN aonde?
Quem não percebe mais é no que dá ;D ando em informática e tudo o que sei de electronica é DIY. tem que se ir aprendendo... :D
Já agora segundo este tutorial supostamente liguei bem as coisas...
(https://lusorobotica.com/proxy.php?request=http%3A%2F%2Fwww.electrojoystick.com%2Ftutorial%2Fwp-content%2Fuploads%2F2011%2F01%2Fimg_04861.png&hash=38438378e7ab3b4c2d5011253afe2b3cdf8a7d6d)
http://www.electrojoystick.com/tutorial/?page_id=285 (http://www.electrojoystick.com/tutorial/?page_id=285)
Cumps,
André.
-
Só agora é que vi o link lol, mas se isso fala serial, ou i2c, é preferivel a analógico, digo eu.
-
Só agora é que vi o link lol, mas se isso fala serial, ou i2c, é preferivel a analógico, digo eu.
Lol, se é preferivel a Analógico então estou a ligar bem certo?! ;D ;D ;D
Pelo que estive a ler e fiquei :o...
E chamou me a atenção este ultimo comentário:
Pois, e então se houverem partes analógicas... todo o filtro é pouco :)
Oh Sena, tenho andando cá com uma ideia. Temos que ir tomar um copo e falar disso.
Os Sonares são lidos via porta analógica...terei problemas devido a isso também?
Cumps,
André.
Porque eu tinha já dito isso anteriormente.... ;D ;D ;D ;D
-
Então segundo o PDF anterior aconselhas ligar os AN aonde?
Quem não percebe mais é no que dá ;D ando em informática e tudo o que sei de electronica é DIY. tem que se ir aprendendo... :D
Já agora segundo este tutorial supostamente liguei bem as coisas...
(https://lusorobotica.com/proxy.php?request=http%3A%2F%2Fwww.electrojoystick.com%2Ftutorial%2Fwp-content%2Fuploads%2F2011%2F01%2Fimg_04861.png&hash=38438378e7ab3b4c2d5011253afe2b3cdf8a7d6d)
http://www.electrojoystick.com/tutorial/?page_id=285 (http://www.electrojoystick.com/tutorial/?page_id=285)
Cumps,
André.
Nesse tutorial estão a usar a saida analogica inves do Serial.
Devias ligar o TX do Sensor ao RX do arduino e ler os valores assim.
A não ser que tenhas um motivo muito forte para o pin analogico, faz isso por serial ( pino TX ) :)
PS: consulta o datasheet, tens lá tudo de forma bem simples http://www.maxbotix.com/documents/MB1010_Datasheet.pdf (http://www.maxbotix.com/documents/MB1010_Datasheet.pdf)
-
Olá andElectrons....
Eu estou a usar o Daisy Chain, e não posso ler assim...
Eles estão "encadeados, TX com RX, depois dou o impulso e leio os valores que vem deles...
-
Não faças daisy chain, configura um software serial para cada sensor.
-
Não faças daisy chain, configura um software serial para cada sensor.
O mal e que estou a usar um Xbee e um IMU e ocupa-me 2 portas, o que só me deixa outras 2 livre...
A não ser que use aquela biblioteca para simular uma serial, mas assim dará?!
Cumps,
André.
-
Sim, com o Software serial - http://www.fiz-ix.com/2012/12/arduino-uno-with-multiple-software-serial-devices/ (http://www.fiz-ix.com/2012/12/arduino-uno-with-multiple-software-serial-devices/)
-
Não tenho os sonars aqui comigo, ando a volta do chassi, mas amanha irei testar isso e digo os resultados.. ;)
-
esta biblioteca permite usar varios sonares que usam TTL em apenas 2 portas?
-
esta biblioteca permite usar varios sonares que usam TTL em apenas 2 portas?
Não. Vê o código no link do meu post anterior.
-
esta biblioteca permite usar varios sonares que usam TTL em apenas 2 portas?
Não. Vê o código no link do meu post anterior.
a ok. é que agora ja tava assim: "o que?! so 2 fios para varios sonares sfr04?! tenho de arranjar isso!"
-
a ok. é que agora ja tava assim: "o que?! so 2 fios para varios sonares sfr04?! tenho de arranjar isso!"
:o
estás a confundir as coisas, o SFR-04 não tem saida Serial por isso não podes fazer nada com ele e com as portas serie
-
tava a falar de TTL. 2 fios. até tenho é os sfr05 que da para 1 fio
-
tava a falar de TTL.
ambos são TTL ;) tanto os serials do Maxbotix como o srf04/5
TTL é o tipo de circuito, o que interessa aqui é a forma como a informação é codificada, se é através da duração de um pulso (como nos srf04/5) ou em serial
-
Bem após vários testes, penso que já cheguei à solução pretendida.
Só tenho que agradecer a todos os que me ajudaram ou tentaram... ;)
Deixo aqui o que fiz:
Primeiro de tudo fiz este circuito disponibilizado pela maxbotix para filtrar o ruído:
(https://lusorobotica.com/proxy.php?request=http%3A%2F%2Fwww.maxbotix.com%2Fimages%2FLV-Filter.jpg&hash=b23418182f0bd9c3b06ebaff3b0f02c899821471)
Segundo, liguei-os todos desta forma:
(https://lusorobotica.com/proxy.php?request=http%3A%2F%2Fwww.maxbotix.com%2Fpictures%2Farticles%2F031-Simultaneous.jpg&hash=2e11b78707103fe8cba49f92a822141a0be5435c)
Depois fiz um quadrado de paredes de modo a ver se todos interferiam uns com os outros, e pelos vistos não, estão a dar valores consistentes.
Agora a programação vai passar por filtros de average e etc.
Deixo aqui o código de teste para os sensores:
/**
*
*@Andre Carvalho
*
**/
const int sonarPinAN0 = 0;//AnLeft
const int sonarPinAN1 = 1;//AnFront
const int sonarPinAN2 = 2;//AnRight
const int sonarPinRx = 28;//TriggerPin
//variables needed to store values
long inches, cm;
void setup() {
Serial.begin(9600);
pinMode(sonarPinAN0, INPUT);
pinMode(sonarPinAN1, INPUT);
pinMode(sonarPinAN2, INPUT);
pinMode(sonarPinRx, OUTPUT);
//give the sensors time to boot up
delay(250);
}
void loop() {
digitalWrite(sonarPinRx, HIGH);
delayMicroseconds(30);
digitalWrite(sonarPinRx, LOW);
delay(50);
inches = readSonarAnalogPortChain(sonarPinAN0);
cm = inches * 2.54;
Serial.println();
Serial.print("Analog port chain mode (AnLeft) reading: ");
Serial.print(cm/2);
Serial.print("cm");
Serial.println();
inches = readSonarAnalogPortChain(sonarPinAN1);
cm = inches * 2.54;
Serial.println();
Serial.print("Analog port chain mode (AnFront) reading: ");
Serial.print(cm/2);
Serial.print("cm");
Serial.println();
inches = readSonarAnalogPortChain(sonarPinAN2);
cm = inches * 2.54;
Serial.println();
Serial.print("Analog port chain mode (AnRight) reading: ");
Serial.print(cm/2);
Serial.print("cm");
Serial.println();
delay(1000);
}
int readSonarAnalogPortChain(int pin) {
long d;
// see: http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1288290319
//Used to read in the analog voltage output that is being sent by the MaxSonar device.
//Scale factor is (Vcc/512) per inch. A 5V supply yields ~9.8mV/in
//Objects between 0 and 15 cm range as 15 cm
digitalWrite(sonarPinRx,HIGH);
delayMicroseconds(50); // minimum pulse recommended is 20 microseconds
digitalWrite(sonarPinRx,LOW);
d = analogRead(pin); // range: 0...1023 10bit ADC
// delay(50); //minimum delay for the next measure is 50 ms
return d;
}
Já agora testei os motores (são os da polulu micro-metal 30:1), com e sem o condensador de 100nF e a diferença é grande, pois os motores desligados não há problema nenhum, mas no momento em que os ligo, os sonares disparam os valores durante uns 2~5s. Portanto adicionei uns condensadores de 100nf (cerâmicos 104).
-
boas zordlyon, se me permitires deixo aqui algumas duvidas que tenho em relação aos sensores ultrasonicos.
Pelo que ando a pesquisar, existem os transdutores (emitem e recebem os sinais ultrasonicos), e existe o respectivo circuito com o microcontrolador que "interpreta primeiramente os sinais" enviando um sinal que representa a diferença temporal entre o sinal enviado e o sinal recebido.
Até aqui penso que consegui assimilar o funcionamento.
Logo pressuponho que não posso (ou será bem mais facil não o fazer) usar unicamente o transdutor e programar no arduino o envio e a recepção dos sinais do transdutor.
Fiquei um pouco confuso com a comunicação entre os sensores e o arduino (Serial, I2C), ainda nao trabalhei com este tipo de comunicações, mas segundo o que sei do I2C, trabalha por endereços, será que posso usar um endereço diferente para cada sensor?
O objectivo disto será planear uns sensores de estacionamento para veiculos.
E estava a pensar usar algo como isto http://www.futurlec.com/Ultrasonic_Sensors.shtml (http://www.futurlec.com/Ultrasonic_Sensors.shtml), contudo penso que estes não têm implementado o controlo e a comunicação.