Offline
Newbie
Karma: 0
Posts: 7
|
 |
« on: October 21, 2012, 09:59:29 pm » |
Hola de nuevo, vengo con una nueva duda, ya he avanzado un poco en el uso de la Arduino uno, en estos momentos estoy trabajando con los sensores ultrasonicos SR04 con esta libreria: http://www.ardublog.com/library-for-arduino-ultrasonic-ranging-hc-sr04/Y vengo con unas dudas de su funcionamiento, ya lo he logrado hacer funcionar con un sencillo programa que dependiendo de la distancia que detecte encienda un led u otro, pero he aqui los problemas que se me presentaron: *No logre hacer que detectara correctamente mas de 60 cm *El ultrasonico emite un sonido molesto cuando detecta un objeto Este es el codigo que utilize: #include <Ultrasonic.h> Ultrasonic ultra1(9,8); // (Trig,Echo) int led1 = 14; // - Led 1 int led2 = 15; // - Led 2 int dist1;
void setup() { pinMode(led1, OUTPUT); pinMode(led2, OUTPUT); }
void loop() { dist1 = ultra1.Ranging(CM); if (dist1<85) { digitalWrite(led1, HIGH); digitalWrite(led2, LOW); } else { digitalWrite(led2, HIGH); digitalWrite(led1, LOW); } }
|
|
|
|
|
Logged
|
|
|
|
|
COM22
Offline
God Member
Karma: 4
Posts: 595
|
 |
« Reply #1 on: October 22, 2012, 11:58:27 am » |
La librería tiene por defecto un timeout de 3 ms = 51 cm (Más info http://arduino.cc/forum/index.php/topic,115077.msg866360.html#msg866360 ) Si tienes la ultima versión de github o la rev.3 del blog puedes seleccionar el timeout máximo que que deses teniendo en cuenta: centímetros * 58 = Max.TimeOutSustituye esta linea: Ultrasonic ultrasonic(9,8); // (Trig PIN,Echo PIN) Por esta: Ultrasonic ultrasonic(9,8,3000); // (Trig PIN,Echo PIN, Max.TimeOut in µsec ) Sustituye los 3000 microsegundos con el tiempo máximo de timeout que tu necesites.
El tema del ruido ten en cuenta que mide las distancias por medio del sonido, y el ruido que hace es casi imperceptible para el oído humano ( si eres muy joven lo oyes más que si eres más mayor) pero por lo general para poder escuchar el sonido tienes que ponerte el sensor delante de la oreja  Un saludo!
|
|
|
|
|
Logged
|
|
|
|
|
Offline
Newbie
Karma: 0
Posts: 7
|
 |
« Reply #2 on: October 22, 2012, 12:31:16 pm » |
La librería tiene por defecto un timeout de 3 ms = 51 cm (Más info http://arduino.cc/forum/index.php/topic,115077.msg866360.html#msg866360 ) Si tienes la ultima versión de github o la rev.3 del blog puedes seleccionar el timeout máximo que que deses teniendo en cuenta: centímetros * 58 = Max.TimeOutSustituye esta linea: Ultrasonic ultrasonic(9,8); // (Trig PIN,Echo PIN) Por esta: Ultrasonic ultrasonic(9,8,3000); // (Trig PIN,Echo PIN, Max.TimeOut in µsec ) Sustituye los 3000 microsegundos con el tiempo máximo de timeout que tu necesites.
El tema del ruido ten en cuenta que mide las distancias por medio del sonido, y el ruido que hace es casi imperceptible para el oído humano ( si eres muy joven lo oyes más que si eres más mayor) pero por lo general para poder escuchar el sonido tienes que ponerte el sensor delante de la oreja  Un saludo! Gracias , entonces si quiero medír 100cm seria 100*58 y eso va en la parte del tiempo. Y en cuanto a lo del sonido no se si tengo oído de perro oque pero se escucha mucho cuando le pones un objeto enfrente. Que librería recomiendan mas, esta o la new Ping?
|
|
|
|
|
Logged
|
|
|
|
|
Offline
Jr. Member
Karma: 0
Posts: 53
|
 |
« Reply #3 on: October 23, 2012, 01:01:09 am » |
No digas tonterias, el oido humano como mucho detecta frecuencias de 15 a 18 Khz,,,,,nunca mas allla de estas por muy joven que seas. Los murcielagos si......a menos que seas uno de estos jajajaa Bromas a parte......el ruido que notas es la oscilacion de algun elemento mecanico suelto en la capsula del Ultrasonico, Compra uno nuevo y veras como no hay ruido alguno Sobre la distancia....es tan facil como amplificar la señal de salida del ultrasonico, o bien a la inversa...amplificar la señal de entrada en el receptor...o mejor de todo,,,una combiancion de ambas....con ellllo puedes tener hasta unos 10 metros de alcance sin problemas
|
|
|
|
|
Logged
|
|
|
|
|
COM22
Offline
God Member
Karma: 4
Posts: 595
|
 |
« Reply #4 on: October 23, 2012, 04:35:51 am » |
@quevon24 yo te recomiendo la mía por que es muy simple de utilizar, pero puedes probar la NewPing haber si te funciona mejor o si da mejores resultados! Pero me mirare NewPing haber si tiene alguna función buena para implementar en mi librería  No digas tonterias, el oido humano como mucho detecta frecuencias de 15 a 18 Khz,,,,,nunca mas allla de estas por muy joven que seas. Los murcielagos si......a menos que seas uno de estos jajajaa [...] No se escucha un pitido (por lo menos yo) pero si que escuchas el "disparo" que sera seguramente las vibraciones que se crean al emitir el sonido. Así es como compruebo que esta midiendo  Un saludo!
|
|
|
|
|
Logged
|
|
|
|
|
Offline
Newbie
Karma: 0
Posts: 7
|
 |
« Reply #5 on: October 23, 2012, 06:14:29 am » |
@quevon24 yo te recomiendo la mía por que es muy simple de utilizar, pero puedes probar la NewPing haber si te funciona mejor o si da mejores resultados! Pero me mirare NewPing haber si tiene alguna función buena para implementar en mi librería  No digas tonterias, el oido humano como mucho detecta frecuencias de 15 a 18 Khz,,,,,nunca mas allla de estas por muy joven que seas. Los murcielagos si......a menos que seas uno de estos jajajaa [...] No se escucha un pitido (por lo menos yo) pero si que escuchas el "disparo" que sera seguramente las vibraciones que se crean al emitir el sonido. Así es como compruebo que esta midiendo  Un saludo! Que mal yo que crei que tenia superpoderes xD Muchas gracias por la ayuda, intentare y ya les reportare como me fue.
|
|
|
|
|
Logged
|
|
|
|
|
Offline
Jr. Member
Karma: 0
Posts: 53
|
 |
« Reply #6 on: October 24, 2012, 10:40:52 am » |
Es tan facil como mediir la diferencia de tension que aparece entre los terminales del amplificador tras el ultrasonico En reposo debe dar un valor bajo de referencia...y cuando recibe el ultrasonido este valor debe de elevarse proporcionalmente
|
|
|
|
|
Logged
|
|
|
|
|
Offline
Newbie
Karma: 0
Posts: 7
|
 |
« Reply #7 on: November 04, 2012, 08:41:03 pm » |
Hola de nuevo compañeros del foro, vengo con una nueva duda a la que no le encuentro solucion Basicamente lo que quiero hacer es que si un sensor no detecta nada, pase al siguiente y si no hace nada al siguiente asi, y ya que termine con los 4 sensores regrese al primero, hasta ahi todo bien, ya hice funcionar un sensor como exprese al principio del tema, ahora el problema es que, no puedo hacer que funcionen 2, pareciera si como el primer sensor funcionara igual que el segundo, aunque estan en direcciones opuestas y uno si detecta y el otro no., he revisado el codigo pero no le veo problema alguno, espero puedan asesorarme y gracias. #include <Ultrasonic.h> Ultrasonic ultra1(9,8); // (Trig,Echo) Ultrasonic ultra2(7,6); // (Trig,Echo) int led1 = 14; // A0 - Led 1 sensor1 int led2 = 15; // A1 - Led 2 sensor1 int led3 = 16; // A1 - Led 3 sensor2 int led4 = 17; // A1 - Led 4 sensor2 int dist1; int dist2;
void setup() { pinMode(led1, OUTPUT); pinMode(led2, OUTPUT); pinMode(led3, OUTPUT); pinMode(led4, OUTPUT); }
void loop() { dist1 = ultra1.Ranging(CM); // mide distancia sensor 1 dist2 = ultra2.Ranging(CM); // mide distancia sensor 2
if (dist1 < 50) // Si distancia menor 50cm enciende led 1 y apaga 2, pero si es mayor enciende 2 apaga 1 { digitalWrite(led1, HIGH); digitalWrite(led2, LOW); } else { digitalWrite(led2, HIGH); digitalWrite(led1, LOW); } if (dist2 < 50) // Similar a sensor 1 { digitalWrite(led3, HIGH); digitalWrite(led4, LOW); } else { digitalWrite(led4, HIGH); digitalWrite(led3, LOW); } }
|
|
|
|
« Last Edit: November 04, 2012, 09:03:30 pm by quevon24 »
|
Logged
|
|
|
|
|
COM22
Offline
God Member
Karma: 4
Posts: 595
|
 |
« Reply #8 on: November 04, 2012, 09:23:14 pm » |
Prueba de poner un delay entre medición y medición, por que si haces todas de golpe parece ser que el sonido que emite uno le resuena al otro y da problemas. dist1 = ultra1.Ranging(CM); // mide distancia sensor 1 delay(50); dist2 = ultra2.Ranging(CM); // mide distancia sensor 2
Prueba y nos cuentas.
|
|
|
|
|
Logged
|
|
|
|
|
Offline
Newbie
Karma: 0
Posts: 7
|
 |
« Reply #9 on: November 04, 2012, 09:26:27 pm » |
Prueba de poner un delay entre medición y medición, por que si haces todas de golpe parece ser que el sonido que emite uno le resuena al otro y da problemas. dist1 = ultra1.Ranging(CM); // mide distancia sensor 1 delay(50); dist2 = ultra2.Ranging(CM); // mide distancia sensor 2
Prueba y nos cuentas. Si, muchisimas gracias, ya va de lujo, nunca se me ocurrio eso, que en basic no era necesario un delay, lo anotare. Y una duda mas, se que no va a el caso con el tema, pero es posible conectarle una lipo de 7.4v a la arduino?
|
|
|
|
|
Logged
|
|
|
|
|
COM22
Offline
God Member
Karma: 4
Posts: 595
|
 |
« Reply #10 on: November 05, 2012, 12:11:59 pm » |
[...]
Y una duda mas, se que no va a el caso con el tema, pero es posible conectarle una lipo de 7.4v a la arduino?
Claro! Mediante el " Power Jack" o en el Vin y GND Revisa las caracteristicas de tu placa, por ejemplo el Arduino UNO ( http://www.arduino.cc/en/Main/arduinoBoardUno) tiene: - Input Voltage (recommended): 7 - 12V
- Input Voltage (limits): 6 - 20V
En la misma pagina te explica tambien el pin Vin o el Power Jack  The power pins are as follows:
VIN. The input voltage to the Arduino board when it's using an external power source (as opposed to 5 volts from the USB connection or other regulated power source). You can supply voltage through this pin, or, if supplying voltage via the power jack, access it through this pin. Un saludo!
|
|
|
|
|
Logged
|
|
|
|
|
|