Abstandsmessungen mit dem Netduino
Links: HC-SR04 Ultraschall Sensor, Rechts: GP2-1080 Optischer Sensor |
Für die Abstandsmessung kann wahlweise ein Ultraschall- oder ein optischer Sensor verwendet werden. Naja beides könnte man auch verwenden, es kommt aber auf die Anwendung an:
- Welche Entfernungen muss ich messen können?
- In welcher Umgebung wird agiert?
- Wie sieht es mit Störfaktoren aus?
- Wie viel darf der Sensor kosten?
Was nun von beidem besser ist, möchte ich hier nicht begründen, da beide Varianten eine Daseinsberechtigung haben. Für einen richtigen Vergleich hätte ich allerdings mehr einkaufen müssen, daher ist meine Vergleichstabelle nur als Ansatz gedacht.
HC-SR04 | GP2-1080 | |
Betriebsspannung | 5V | 4,5V-5,5V |
Stromaufnahme | 15mA | 33mA |
Messung erfolgt | Abstand von Trigger Puls bis Echo Puls | Ergebnis wird als Analoges Spannungssignal ausgegeben |
Distanzmessung | 2cm - 400cm | 10cm – 80cm |
Nachteile | Kann durch Geräusche gestört werden | Funktioniert auf Reflektierenden Oberflächen nicht |
Vorteile | weite Distanz-Messung | Kann leicht in Analoge Schaltungen verwendet werden. |
Preis | 1,86€ (Ebay, aus China Import), ab 4,99€ (Amazon) | 7,05€ (Reichelt) |
Im programmatischen Anteil sind beide recht unterschiedlich von der Handhabung. Wo es beim optischen Sensor geradezu ein Kinderspiel ist, zeigt sich der Ultraschallsensor wesentlich aufwendiger.
Schaltbild für den optischen Sensor |
So einfach der Aufbau, so einfach ist auch der Programmcode.
public static void Main() while (true) |
Die Ausgabe zeigt einen Wert zwischen 0 bis 1000 an. |
Ich glaube, dass ist bisher unter den Sensoren der übersichtlichste Programmcode, was ich bisher posten konnte. Im Grunde wird nur ein Pegel vom Infrarotsensor gemessen. Beim Ultraschallsensor ist nur die einfache Verkabelung, der Rest sieht daher leider anders aus.
Die Schaltung mit dem Ultraschall Sensor ist unwesentlich gegenüber dem optischen Sensor. (Leider gibt es in der Fritzing Software den Ultraschallsensor nicht.) |
Für den Ultraschallsensor habe ich versucht, so weit wie möglich zu kürzen. Naja, das ist dabei herausgekommen:
private static long _End; public static void Main() long begin; while (true) // Werte auf Startpunkt festlegen // Bis in 50 Millisekunden sollte die Messung erfolgt sein. if (_End > 0) Debug.Print("Result: " + result.ToString()); |
Deutlich mehr als das, was man vermutet. |
Wenn man sich unbelastet und die Sache als Unerfahrener von außen betrachtet, würde man davon ausgehen, dass die vielen Chips auf dem HC-SR04 bereits diese Arbeit abnimmt. Wer nicht viel drum herum programmieren möchte, der sollte zumindest eine fertige Klasse schreiben. Wer Threads verwendet, der sollte berücksichtigen, dass es zu Messfehlern kommen kann.
Fazit: Wer einen großen Messbereich für wenig Geld benötigt, für den ist der Ultraschallsensor das Richtige. Für einfache und präzise Anwendungen dürfte der optische Sensor die ideale Lösung sein.
Kommentare