HC-SR04 Ultrasone sensor – afstandsmeter

Hardware die niet past in bovenstaande onderwerpen
Berichten: 8
Geregistreerd: 25 Okt 2017, 16:39

HC-SR04 Ultrasone sensor – afstandsmeter

Berichtdoor henkdruiven » 26 Okt 2017, 12:49

Graag wil ik mijn ervaring delen met anderen betreffende de HC-SR04 Ultrasone sensor.

Ik heb me laten verleiden om enkele smaken van deze sensor aan te schaffen. Waaronder de standaard HC-SR04, de waterdichte JSN-SR04T en de JSN-SR04T met kabel

Met elk van deze sensors had ik het probleem dat in enkele gevallen (procenten) een meting een 0 als afstand opleverde terwijl dat zeker niet het geval was. Voor mij maakte het deze sensor onbruikbaar voor het doel waarvoor ik 'm wilde gebruiken.

Als er meer mensen zijn met de zelfde ervaring dan hoor ik dat graag.

Af en toe probeerde ik ze weer eens uit maar altijd met het zelfde resultaat. Totdat ik tot de volgende werkzame oplossing kwam;

Als ik namelijk een meting vooraf laat gaan door een dummy-meting dan heb ik nergens meer last van. Zie het volgende voorbeeld. Vanwege zijn afmetingen gebruik ik een module als de ATTINY85
Op de Digispark is een ultrasone module aangesloten en een passieve piezo zoemer. Afhankelijk van de afstand piept het apparaatje met korte of langere tussenpozen.

Code: Alles selecteren
#include <NewPing.h>

#define TRIG_PIN 1
#define ECHO_PIN 0
#define MAX_DISTANCE 250
#define BUZ_PIN 2
#define TIMESTEP_MULT 4

unsigned int distance= 0;

NewPing sonar( TRIG_PIN, ECHO_PIN, MAX_DISTANCE);

void setup() {
  // put your setup code here, to run once:
  pinMode(BUZ_PIN, OUTPUT);
  digitalWrite(BUZ_PIN, HIGH);
}

void loop() {
  // put your main code here, to run repeatedly:
  distance = readPing( );
  delay( distance* 3); // Wachttijd afhankelijk van de afstand.
  for( int i= 0; i< 50; i++) // Piep
  {
    digitalWrite(BUZ_PIN, LOW);
    delayMicroseconds( 150);
    digitalWrite(BUZ_PIN, HIGH);
    delayMicroseconds( 150);
  }
}

int readPing( ) {
  int cm= sonar.ping_cm( ); // Dummy meting
  cm= sonar.ping_cm( );
  if( cm== 0) cm= MAX_DISTANCE;
  return cm;
}

Advertisement

Berichten: 2
Geregistreerd: 24 Apr 2021, 13:44

Re: HC-SR04 Ultrasone sensor – afstandsmeter

Berichtdoor Cees Pelgrim » 28 Mei 2024, 08:02

Hallo, ook ik heb twee verschillende sensoren gebruikt: de HC-SR04 (losse transducers voor zender en ontvanger op een module) en een JSN SR04M-2 (enkelvoudige transducer voor zenden en ontvangen). Ik heb een ESP8266 D1 mini gebruikt met een OLED 128 x 64 display met de HC SR04 zonder enig probleem. De JSN SR04M-2 is pin compatible met de HC SR04, maar deze geeft ook mij veel problemen. Bijna continu de waarde 0 en af en toe een waarde van 902 cm, terwijl het maximum bereik ongeveer 6 meter is. Ik heb veel sites en youtube filmpjes gezien die ook problemen en oplossingen hadden, die voor mij helaas niet werken. Ik begrijp wel dat er verschillen zijn tussen de SR04T (hetzelfde als SR04M-2?), SR04T v3.0 en SR04M. Oplossingen varieerden van verlenging van de TRIG puls van 10 microseconden naar 20 microseconden, pull-down weerstand van echo naar GND. Ik heb naast de standaardoplossing zonder bibliotheek ook de bibliotheken Newping en HCSR04 geprobeerd, zonder positief resultaat. Ik heb geprobeerd met een voedingspanning van 5V (en 1k serieweerstand inde ECHO-leiding naar de ESP8266) en op 3.6V. Geen van allen met een bruikbaar resultaat. Ik ben ook benieuwd naar mensen met ervaring met de SR04M-2.

Terug naar Overige hardware

Wie is er online?

Gebruikers in dit forum: Geen geregistreerde gebruikers en 2 gasten