Nueva duda con ultrasonico

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: Libreria para Arduino del modulo Ultrasonic Ranging HC-SR04 | Ardublog

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);  
  }
  
  }

La librería tiene por defecto un timeout de 3 ms = 51 cm (Más info Sensor ultrasonico HC-SR04 mide como máximo 51 cm. - #2 by ElRodri - Hardware - Arduino Forum )

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.TimeOut

Sustituye 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 :relaxed:

Un saludo!

JRodrigo:
La librería tiene por defecto un timeout de 3 ms = 51 cm (Más info Sensor ultrasonico HC-SR04 mide como máximo 51 cm. - #2 by ElRodri - Hardware - Arduino Forum )

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.TimeOut

Sustituye 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 :relaxed:

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?

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

@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 :stuck_out_tongue:

manumoli:
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 :sweat_smile:

Un saludo!

JRodrigo:
@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 :stuck_out_tongue:

manumoli:
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 :sweat_smile:

Un saludo!

Que mal yo que crei que tenia superpoderes xD

Muchas gracias por la ayuda, intentare y ya les reportare como me fue.

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

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);  
  }
  
  }

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.

JRodrigo:
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?

quevon24:
[...]

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 :wink:

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!