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
Frage zur Programmierung eines Ultraschallsensors
20.09.2016, 18:29
Beitrag #1
Frage zur Programmierung eines Ultraschallsensors
Hallo

ich habe mal eine kurze Frage zur Programmierung eines Ultraschallsensors (HC-SR04) parallel mit einem Taster mit dem Arduino UNO.

Ich verwende zurzeit folgenden Basiscode
Code:
int trigger=7;
int echo=6;
long dauer=0;
long entfernung=0;
int taster=5;
int tasterstatus=0;

void setup()

{
Serial.begin (9600);
pinMode(trigger, OUTPUT);
pinMode(echo, INPUT);
pinMode(taster, INPUT);
}

void loop()
{
tasterstatus=digitalRead(taster);

digitalWrite(trigger, LOW);
delay(5);
digitalWrite(trigger, HIGH);
delay(10);
digitalWrite(trigger, LOW);

dauer = pulseIn(echo, HIGH);
entfernung = (dauer/2) / 29.1;

if (entfernung >= 500 || entfernung <= 0)
{ Serial.println("ULTRASCHALL"); }

if (tasterstatus == HIGH)
{ Serial.println("TASTER"); }

}

Das Problem ist jetzt, dass nicht jede Betätigung des Tasters auch vom Arduino erkannt wird, da es ja - durch den Ultraschallsensor bedingt - eine Pause gibt.

Meine Frage daher: Gibt es eine Möglichkeit das der Sketch verändert werden kann, dass beides Fehlerfrei läuft?!
Oder was habt ihr für Ideen um das Problem zu beheben?

Über eure Antworten bin ich sehr dankbar.

Gruß Jalu4601
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
20.09.2016, 19:10
Beitrag #2
RE: Frage zur Programmierung eines Ultraschallsensors
Hallo,
die Abfrage einer Taste ist im Regelfall ausreichend, wenn man das alle 150 ms macht. Die Abfrage des Echosensors dauert im Normalfall maximal 20 ms, wenn innerhalb des Erfassungsbereichs kein Gegenstand detektiert wird, maximal 200 ms.
D.h. wenn kein Gegenstand detektiert wird, könnte es dir bei Betätigen der Taste auffallen, dass sie träge reagiert.
Was ich bei deinem Programm nicht verstehe, warum du im Loop hintereinander 2-mal das Triggersignal auf Low setzt.
Außerdem benötigt der Sensor nicht einen 10 ms Impuls, sondern nur einen 10 us (Mikrosekunden)-Impuls, also nicht delay(10), sondern delayMicroseconds(10).
Gruß
Retian
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
20.09.2016, 20:06
Beitrag #3
RE: Frage zur Programmierung eines Ultraschallsensors
(20.09.2016 19:10)Retian schrieb:  Hallo,
die Abfrage einer Taste ist im Regelfall ausreichend, wenn man das alle 150 ms macht. Die Abfrage des Echosensors dauert im Normalfall maximal 20 ms, wenn innerhalb des Erfassungsbereichs kein Gegenstand detektiert wird, maximal 200 ms.
D.h. wenn kein Gegenstand detektiert wird, könnte es dir bei Betätigen der Taste auffallen, dass sie träge reagiert.
Was ich bei deinem Programm nicht verstehe, warum du im Loop hintereinander 2-mal das Triggersignal auf Low setzt.
Außerdem benötigt der Sensor nicht einen 10 ms Impuls, sondern nur einen 10 us (Mikrosekunden)-Impuls, also nicht delay(10), sondern delayMicroseconds(10).
Gruß
Retian

Hallo,

Danke für deine schnelle Antwort! Wärst du so nett und würdest vielleicht meinen Sketch verbessern? Habe das noch nicht so ganz verstanden.

Gruß Jalu4601
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
20.09.2016, 21:03
Beitrag #4
RE: Frage zur Programmierung eines Ultraschallsensors
Hallo,
gerne kann ich dir bei dem Sketch helfen, aber vorher brauche ich noch ein paar Infos von dir:
Du hast geschrieben, dass dein Problem ist, dass der Tastendruck nicht immer erkannt wird. Wie sieht deine Schaltung mit dem Taster aus (Pullup- oder Pulldown-Widerstand oder gar keiner) ?
Und ich denke, das ist nicht das einzige Problem.
Hast du dir angesehen, was deine Entfernungsmessung für ein Ergebnis bringt? Ich habe deinen Sketch nicht ausprobiert, aber die Formel für die Entfernung kann nicht stimmen. "dauer" gibt dir die Signallaufzeit in us (Mikrosekunden) an. Du dividierst dauer/2 (das ist ok) und anschließend durch 29,1. Was soll das bringen?
Um von der Signallaufzeit auf die Entfernung zu kommen, muss man nach der Formel "Weg = Schallgeschwindigkeit * Zeit", die Laufzeit mit der Schallgeschwindigkeit multiplizieren (und anschließend durch 2 dividieren, da ja der Schall den doppelten Weg zurücklegt).
Sieh dir auf meiner Homepage an, wie man aus der Impulsdauer "dauer" die Entfernung ermittelt: http://arduino-projekte.webnode.at/proje...r-hc-sr04/

Auch weiß ich nicht, was du mit "if (entfernung >= 500 || entfernung <= 0)" bezweckst. Die "entfernung" sollte dir ein Ergebnis zwischen 2 cm und 400 cm liefern, es kann also gar keinen Wert kleiner 0 geben.
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
20.09.2016, 21:20
Beitrag #5
RE: Frage zur Programmierung eines Ultraschallsensors
Hi,
schon mal dran gedacht arduino.cc zu befragen weil da die Funktion pulseIn() erklärt wird ?
Zum Beispiel steht da auch das default ein Timeout von 1sec eingestellt ist wenn kein Impuls kommt....und solange steht dann auch der Programmablauf.
lgbk

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
20.09.2016, 21:33
Beitrag #6
RE: Frage zur Programmierung eines Ultraschallsensors
Hallo Bitklopfer,
der Fall dürfte nur Auftreten, wenn das Programm gestartet wird, aber gar kein Sensor angeschlossen ist. Wenn der Sensor mit der negativen Flanke des Triggersignals gestartet wird, gibt er nach Abgabe eines 40 kHz-Burst-Signals immer einen Impuls am echo-Pin aus. Dieser Impuls ist im schlechtesten Fall, nämlich wenn kein Gegenstand im Beobachtungsbereich des Sensors erkannt wird, 200 ms lang.
Gruß
Retian
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
20.09.2016, 21:38 (Dieser Beitrag wurde zuletzt bearbeitet: 20.09.2016 21:39 von Bitklopfer.)
Beitrag #7
RE: Frage zur Programmierung eines Ultraschallsensors
(20.09.2016 21:33)Retian schrieb:  Hallo Bitklopfer,
der Fall dürfte nur Auftreten, wenn das Programm gestartet wird, aber gar kein Sensor angeschlossen ist. Wenn der Sensor mit der negativen Flanke des Triggersignals gestartet wird, gibt er nach Abgabe eines 40 kHz-Burst-Signals immer einen Impuls am echo-Pin aus. Dieser Impuls ist im schlechtesten Fall, nämlich wenn kein Gegenstand im Beobachtungsbereich des Sensors erkannt wird, 200 ms lang.
Gruß
Retian

hmmm...meinsu... ist schon ein paar Monate her das ich mit den US Sensoren experimentiert habe... aber das mit den 200mS ist mir nicht in Erinnerung... weil woher soll der Sensor der keine Intellenz drin hat entscheiden ob er den 200mS Impuls ausgeben soll oder nicht wenn der Empfänger kein Echo dedektieren kann ? Also bei mir war das immer so das ohne Echo auch kein Impuls erzeugt wurde...
Und nu Undecided
Von daher ist es kein Fehler ein Timeout zu setzen das der Aufgabe gerecht wird.
lgbk

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
20.09.2016, 21:57 (Dieser Beitrag wurde zuletzt bearbeitet: 20.09.2016 21:59 von Retian.)
Beitrag #8
RE: Frage zur Programmierung eines Ultraschallsensors
Also, dass der HC-SR04 keine Intelligenz hat, glaub ich nicht. Da sind hinten 3 Chips drauf und soweit ich mich an einen Artikel im Internet erinnern kann, ist einer davon ein uP. Und der Impuls wird ja auch schon vor dem Echo erzeugt und dauert so lange, bis das Echo am Sensor eingetroffen ist. Die Impulslänge ist dann das Maß für die Dauer des Ultraschalltons vom Absenden bis zum Empfangen.
Gruß
Retian
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  ESP8266 ESP12-E Webserver-Frage Claus_M 8 248 14.11.2016 22:02
Letzter Beitrag: Claus_M
  NRF24L01 Packet / Msg Frage Marc2014 5 123 07.11.2016 18:08
Letzter Beitrag: hotsystems
  Slider Steuerung, Programmierung blueblack 21 614 16.10.2016 22:31
Letzter Beitrag: blueblack
  Ansteuern eines Schrittmotors Uwe1475 28 1.014 03.09.2016 21:03
Letzter Beitrag: Uwe1475
  Steuern von 4 Servo mittels eines Taster und eines Potis Jackie09 17 755 16.07.2016 11:43
Letzter Beitrag: Binatone
  Frage zu One Button in Kombination mit Fast LED Wolfgang_2801 3 239 26.06.2016 22:11
Letzter Beitrag: hotsystems
  Frage zu FastLed First Light Wolfgang_2801 1 228 19.06.2016 16:57
Letzter Beitrag: hotsystems
  Zerlegung eines Programmcodes hello_world 5 534 30.04.2016 11:01
Letzter Beitrag: rkuehle
  Frage zu Serial SMoTH 3 463 09.03.2016 18:13
Letzter Beitrag: SMoTH
  Oszillation eines Steppermotors Nimes 12 909 07.03.2016 17:47
Letzter Beitrag: Binatone

Gehe zu:


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