INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Abstandsmessung mit Ultraschall
15.11.2014, 19:54 (Dieser Beitrag wurde zuletzt bearbeitet: 15.11.2014 19:57 von JoeDorm.)
Beitrag #1
Rainbow Abstandsmessung mit Ultraschall
Hallo,

habe mittels
Arduino UNO
Ultraschallsensor HC-SR04
Abstandsmessungen gemacht. Leider bisher unbefriedigend.

Ich verwende die Schaltung, um einen kleinen Pelletsbevoratungskasten, ca. 30Liter, mit Pellets aus dem Pelletlager per Schneckenantrieb zu befüllen.

Leider ermittelt der gefundene Beispielcode bei gleichem Abstand unterschiedliche Werte. Er mißt z.B. richtig 35cm und meint dann einfach mal so, jetzt grade sind es 57cm und die Katastrophe niommt ihren Lauf.
Egal, dachte ich, und baute den Code so um, das er eingermaßen funktioniert.
Mit dem Code hat sich die Fehlerträchtigkeit enorm reduziert, aber nicht zu 100%.

Hier erstmal der Code:
Code:
#define trigPin 12
#define echoPin 11
#define ledred 13
#define ledgreen 5
#define RelaisOut1 10
#define RelaisOut2 9

long cnt=0;
long cnt2=0;

void setup() {
  Serial.begin (9600);
  pinMode(trigPin, OUTPUT);
  pinMode(echoPin, INPUT);
  pinMode(ledred, OUTPUT);
  pinMode(ledgreen, OUTPUT);
  pinMode(RelaisOut1, OUTPUT); //Pelletsförderung Übernahme Relay
  pinMode(RelaisOut2, OUTPUT); //Pelletsförderung Übernahme Relay
  digitalWrite(trigPin,LOW);
  digitalWrite(echoPin,LOW);
  digitalWrite(ledred,LOW);
  digitalWrite(ledgreen,HIGH);
//Leider funktioniert, aus welchen Gründen auch immer, die Ansteuerung invers.
  digitalWrite(RelaisOut1,HIGH);
  digitalWrite(RelaisOut2,HIGH);
//Daher nicht wundern.
  cnt=0;
  cnt2=0;
  Serial.println("Init finished");
}

double messen() {
  //Eine Messung
  digitalWrite(trigPin, LOW);  // Added this line
  delayMicroseconds(2); // 2 Added this line
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10); // 10 Added this line
  digitalWrite(trigPin, LOW);
  double abstand = pulseIn(echoPin, HIGH);
  double distance = abstand / 48;
  delayMicroseconds(50);
  return(distance);
}

double domessen() {
  //Viele Messungen addieren und anschliessend durch die Anzahl
  //der Messungen teilen, für einen guten Mittelwert
  long messungen=150;
  double d1;
  for (int n=0; n<messungen; n++) {
    d1+=messen();
  }
  return(d1/messungen);
}

void loop() {
  double distance;
  //messen
  distance=domessen();
  if (distance < 40) {  // genug pellets
    cnt2++;
    if(cnt2>=2) { //Möchte gern 2 Messzyklen die in Folge gleich sind.
      digitalWrite(ledgreen,HIGH);
      digitalWrite(ledred,LOW);
      digitalWrite(RelaisOut1,HIGH);
      digitalWrite(RelaisOut2,HIGH);
      cnt2=0;
    }
    Serial.print(distance);
    Serial.println(" cm Relais aus green");
    cnt=0;
  } else
  if (distance > 47) { //nachfüllen
    cnt++;
    // 50 x in Folge Abstand min 65cm soll Messfehlersicherheit erhöhen
    if(cnt>=150) {//Möchte gern 150 Messzyklen die in Folge gleich sind.
      digitalWrite(ledgreen,LOW);
      digitalWrite(ledred,HIGH);
      digitalWrite(RelaisOut1,LOW);
      digitalWrite(RelaisOut2,LOW);
      cnt=0;
    }
    Serial.print(distance);
    Serial.println(" cm Relais ein red");
    cnt2=0;
  } else {
    Serial.print(distance);
    Serial.println(" cm Zwischenzone");
    cnt=0;
    cnt2=0;
  }
}

Im Code kann man sehen, wieviel Messungen und Messzyklen ich benötige, um dafür zu sorgen, das der Bevoratungsbehälter nicht platzt, weil er zwischendurch immer wieder mal feststellte, das angeblich Pellets fehlen und aufgefüllt werden muß. Sehr ärgerlich diese Ultraschallmessung.

Habt Ihr eine Erklärung dafür, warum öfters spinnerte Werte gemessen werden?

Gruß Joe

Unser Projekt Rolleyes http://global-science-circle.net http://global-science-circle.org http://global-science-circle.info UND http://radio-gsc1.info
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
15.11.2014, 20:50
Beitrag #2
RE: Abstandsmessung mit Ultraschall
Hallo Joe,

Ultraschall Abstandsmessungen basieren auf einer Laufzeitmessung.
Man sendet einem Impuls, wartet bis das Echo kommt und misst die Zeit dazwischen.
Wenn man jetzt den Abstand auf eine nicht homogene Oberfläche, wie es Pellets nun mal sind, misst kommt es u.U. zu Störechos.
Wenn durch die unebene Oberfläche der Pellets mal kein direktes Echo zum Empfänger gelangt sondern von den Pellets erst an die Behälterwand und dann zum Empfänger werden aus 35cm auch mal 57cm.
Vielleicht hilft es den Empfänger etwas abzuschirmen, sodass er Echos von der Behälterwand nicht mehr empfängt.
Alternativ kann man vielleicht an der Behälterwand eine Struktur aufbringen welche auftreffende Echosignale zerstreut.

Gruß
Arne

ExclamationMit zunehmender Anzahl qualifizierter Informationen bei einer Problemstellung, erhöht sich zwangsläufig die Gefahr auf eine zielführende Antwort.Exclamation
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
15.11.2014, 21:19
Beitrag #3
RE: Abstandsmessung mit Ultraschall
Wobei sich bei so einem Behälter auch die Verwendung von 2 Lichtschranken anbieten würde... eine LS wo das nachfüllen startet und eine für die maximale Füllung. Alternativ wäre auch eine LS wo das nachfüllen startet und dann wird eben die Förderanlage nach einer gewissen Zeit die einstellbar ist wieder gestoppt nachdem die LS wieder unterbrochen wurde. Eine LS dürfte da weniger störanfällig sein was die Struktur der Pellets angeht.
lg
bk

1+1 = 10 Angel ...und ich bin hier nicht der Suchmaschinen-Ersatz Dodgy...nur mal so als genereller Tipp..
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
15.11.2014, 22:46 (Dieser Beitrag wurde zuletzt bearbeitet: 15.11.2014 22:48 von JoeDorm.)
Beitrag #4
RE: Abstandsmessung mit Ultraschall
(15.11.2014 21:19)Bitklopfer schrieb:  Wobei sich bei so einem Behälter auch die Verwendung von 2 Lichtschranken anbieten würde... eine LS wo das nachfüllen startet und eine für die maximale Füllung. Alternativ wäre auch eine LS wo das nachfüllen startet und dann wird eben die Förderanlage nach einer gewissen Zeit die einstellbar ist wieder gestoppt nachdem die LS wieder unterbrochen wurde. Eine LS dürfte da weniger störanfällig sein was die Struktur der Pellets angeht.
lg
bk

Hallo,

da habe ich auch schon drüber nachgedacht.
Im Grunde würde auch eine Lichtschranke ausreichen.
Wenn die Lichtschranke schaltet, für 1 .. x Sekunden die Schnecke laufen lassen.
Allerdings bräuchte ich dafür eine IR-Schranke, denn wenn ich den Deckel aufmache um zu sehen wie der Stand ist, soll das einfallende Licht nicht die Schnecke starten lassen.

Oder man haut da soviel Licht drauf, das das einfallende Licht nur einen geringfügigen Einfluss nimmt?

Gruß Joe
PS: Eure Tips sind allesamt gut und brauchbar. Werde doch zuerst versuchen das mit dem Röhrchen auf dem Echomesser.
HMMMMM: Welches ist der Empfänger, und welcher der Sender?
Danke

Unser Projekt Rolleyes http://global-science-circle.net http://global-science-circle.org http://global-science-circle.info UND http://radio-gsc1.info
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
15.11.2014, 23:04
Beitrag #5
RE: Abstandsmessung mit Ultraschall
Hallo,

was Sender und Empfänger ist weiß ich leider auch nicht, hab auch kein solches Teil hier. Vielleicht steht auch irgend ein Code auf den beiden Töpfchen mit dem es sich dann herausfinden lässt.

Die Lichtschranken Idee ist auch nicht schlecht. Der Empfänger lässt sich bestimmt in ein kurzes Röhrchen einbauen, sodass direktes Fremdlicht nicht mehr ran kommt.
Bei Lichtschranken besteht aber u.U. die Gefahr dass der Sender oder der Empfänger mit der Zeit zustaubt. Oder sind die Pellets staubfrei?

Gruß
Arne

ExclamationMit zunehmender Anzahl qualifizierter Informationen bei einer Problemstellung, erhöht sich zwangsläufig die Gefahr auf eine zielführende Antwort.Exclamation
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
15.11.2014, 23:16
Beitrag #6
RE: Abstandsmessung mit Ultraschall
(15.11.2014 23:04)ardu_arne schrieb:  Oder sind die Pellets staubfrei?

Eigentlich nur, wenn ich sie vorher einöle oder lackiere ;-)

Danke Joe

Unser Projekt Rolleyes http://global-science-circle.net http://global-science-circle.org http://global-science-circle.info UND http://radio-gsc1.info
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
16.11.2014, 10:29 (Dieser Beitrag wurde zuletzt bearbeitet: 16.11.2014 11:28 von Bitklopfer.)
Beitrag #7
RE: Abstandsmessung mit Ultraschall
Hmmm... Pellets lackieren....mit Nagellack z.B. eine gute Beschäftigung für die Familie an kalten Winterabenden...Big GrinBig GrinBig Grin manno sind wir wieder creativ...Angel

1+1 = 10 Angel ...und ich bin hier nicht der Suchmaschinen-Ersatz Dodgy...nur mal so als genereller Tipp..
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
16.11.2014, 11:01
Beitrag #8
RE: Abstandsmessung mit Ultraschall
Hallo!
Bei Schüttgut gibts beim befüllen immer eine "Halde", die zu Reflexionen an
der Behälterwand führt.
Auch die prof. Systeme können nur annähern und ausblenden.
Gut war der mechanische Silopilot, ein Seil wird abgerollt und die Länge gemessen.
IR ist voll ok, verstaubt auch nicht so schnell, und wenn, wird der Silo leergefahren.
Perfekt arbeitet die Schwinggabel..allerdings zu Pro Preisen..
Für den DIY..eine Metallplatte mit Micro/Näherungsschalter sitzt vor dem
Schneckenauslauf...solange der Behälter leer ist ,fallen die Pellets runter.
Wirds voll, schieben die Pellets die Schaltfahne hoch...

mfg Martin
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Ultraschall mit HC-SR04 Mathias 18 501 04.12.2016 23:22
Letzter Beitrag: Bitklopfer
Tongue Ultraschall mit einer 3,2 Zoll verbinden jgrothe 14 2.703 14.06.2015 12:22
Letzter Beitrag: jgrothe
  Ultraschall erkennung in cm jgrothe 7 1.018 17.05.2015 13:47
Letzter Beitrag: jgrothe
  Ultraschall bergfrei 0 757 27.04.2015 15:56
Letzter Beitrag: bergfrei
Sad L298n und Ultraschall modul urmel3 0 824 11.10.2014 15:55
Letzter Beitrag: urmel3
  Kann Ultraschall-Sensor durch LED-Befehle gestört werden? to-wer 4 1.722 01.05.2014 11:12
Letzter Beitrag: to-wer
  Abstandsmessung für grbl MAB 7 3.041 15.03.2014 06:58
Letzter Beitrag: MAB

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste