Geschwindigkeitsmessstrecke mit Arduino: Unterschied zwischen den Versionen
Zeile 148: | Zeile 148: | ||
<gallery widths="300" heights="480"> | <gallery widths="300" heights="480"> | ||
Datei:Sensor cover.jpg|500px|mini|Abb. | Datei:Sensor cover.jpg|500px|mini|Abb. 8: 3D-Design der Sensorabdeckung <ref> Eigenes Dokument </ref> | ||
Datei:Sensor-cover-printed.jpg|500px|mini|Abb. | Datei:Sensor-cover-printed.jpg|500px|mini|Abb. 9: 3D-gedruckter Teil der Sensorabdeckung <ref> Eigenes Dokument </ref> | ||
</gallery> | </gallery> | ||
Version vom 12. Juli 2023, 11:24 Uhr
Author: Syed Rafsan Ishtiaque
Art: Praxissemester
Dauer: 02.05.2023 - 21.08.2023
Betreuer: Prof. Dr.-Ing Ulrich Schneider
Einleitung
Entwicklung der Geschwindigkeitsmesseinheit für jedes Fahrzeugprojekt. Das Messwerkzeug basiert auf Infrarotsensoren, die analoge Daten von einem vorbeifahrenden Auto erhalten und die Daten auf einem Arduino berechnen. Das Ergebnis kann auf einem LCD-Display angezeigt werden.
Anforderungen
ID | Inhalt | Ersteller | Datum | Geprüft von | Datum |
---|---|---|---|---|---|
1 | Die Geschwindigkeit eines vorbeifahrenden RC-Fahrzeugs muss in m/s auf 3 Nachkommastellen genau gemessen werden. | Ulrich Schneider | 30.06.2023 | ||
2 | Die Geschwindigkeitsmessstrecke muss im Akkubetrieb laufen. | Ulrich Schneider | 30.06.2023 | ||
3 | Die Geschwindigkeitsmessstrecke muss über einen Schalter ein- und ausgeschaltet werden können. | Ulrich Schneider | 30.06.2023 | ||
4 | Die Geschwindigkeitsmessstrecke muss auf einem Display auf 2 Nachkommastellen in m/s angezeigt werden. | Ulrich Schneider | 30.06.2023 | ||
5 | Der Aufbau muss robust und professionell sein und mind. 10 Jahre betrieben werden können. Alle Verbindungen müssen hierzu zugentlastet sein. | Ulrich Schneider | 30.06.2023 | ||
6 | Die Arduino IDE muss für die Programmierung verwendet werden. Die Programmierrrichtlinien sind einzuhalten und der Quelltext ist nachhaltig zu kommentieren. | Ulrich Schneider | 30.06.2023 | ||
7 | Der Quelltext ist in SVN zu sichern und in diesem Artikel zu verlinken. | Ulrich Schneider | 30.06.2023 |
Funktionaler Systementwurf/Technischer Systementwurf
-
Abb. 2: Dieser Entwurf zeigt die Wechselwirkungen zwischen den Komponenten des Systems [1]
-
Abb. 3: Diese Animation zeigt, wie die Messeinheit funktionieren wird. Hier 300 mph(mile per hour) = 3 mps(meter per second) [2]
Komponentenspezifikation (Elektronische Komponenten)
Sensor
Sharp 2D120X F 09
Der Sharp Abstandsmesssensor wird verwendet, um die Geschwindigkeit der Kabineneinheit zu bestimmen. In diesem Fall wurden zwei identische Sensoren verwendet. Nach Angaben des Herstellers SHARP [3], Die Reichweite des Sensors beträgt 4 cm bis 30 cm, typische Ansprechzeit ca. 39 ms, typische Einschaltverzögerung ca. 44 ms, durchschnittliche Stromaufnahme: 33 mA. Die Betriebstemperatur beträgt -10°C bis 60°C, was ideal für dieses Projekt ist. Laut dem Stempel auf dem Sensor war das Herstellungsdatum September 2016. Laut Datenblatt sollte der Sensor auf einem beliebigen Rahmen so montiert werden, dass er das optimales Ergebnis liefert. Dazu gibt es eine allgemeine Anleitung auf der Data Sheet [3].
[Aktualisierung]
Wir hatten ein Problem mit dem Sharp D120XF09 Modell des Infrarotsensors. Deshalb haben wir die Infrarotsensoren komplett ausgetauscht. Wir haben ein neues Modell eingesetzt, Sharp 0A41SKF94 [4]
Display
LED-basierte 8-Segment-Anzeige
Der ursprüngliche Plan für das Projekt war eine einfache LED-basierte 8-Segment-Anzeige. Als Referenz, die LED tutorial [5] Leitfaden für Mikrocontroller verwendet wurde. Aber das hatte seine Grenzen.
Deshalb haben wir beschlossen, das Display mit C547B transistor [6] .
Ein erstes Modell wird mit dem Transistor C547B entwickelt.
[Aktualisierung]
1. Die Schaltung für die LED-Anzeige hat funktioniert. Sie wurde für ein Segment, bestehend aus zwei LED, getestet. Die Versorgungsspannung war 5V, Basiswiderstand 1K Ohm, Kollektorwiderstand 470 Ohm.
2. Wir haben den kompletten Schaltungsaufbau für die LED-Anzeige abgeschlossen. Aber wir werden jetzt eine LCD-Anzeige implementieren. Der Grund dafür ist, dass eine digitale LCD-Anzeige es uns ermöglicht
mehr Daten im Zusammenhang mit dem Geschwindigkeitsmesssensor anzuzeigen. Außerdem sind die Daten übertragbar und können für spätere Zwecke gespeichert werden.
LCD-Anzeige Blau mit I²C
Die LCD-Anzeige, die wir verwenden werden, ist QAPASS LCD I²C. Dies ist eine Variante der normalen LCD-Anzeige. Es ist kombiniert mit einer I²C module [7]. Dies wird es uns ermöglichen, dem System weitere Funktionen hinzuzufügen. Die nächste Entwicklung von I²C ist I³C. Sowohl I²C als auch I³C wurden als "Controller"- und "Target"-Bussystem konzipiert (früheres Master- und Slave-Buskonzept). Die beiden Signalleitungen für I²C sind SCL: Serial Clock und SDA: Serielle Datenleitung. Aber wir müssen die distance der Datenübertragung bei Verwendung des I²C. Das LCD-Display ist funktionsfähig. Es empfängt Meldungen und zeigt sie an. Der nächste Schritt wird sein, die Sensordaten zu optimieren und ein robustes System zu entwickeln.
Weiterentwicklung mit display
Anstatt ein LCD-basiertes Display zu verwenden, können wir das MQTT-Protokoll implementieren, um das Endergebnis vom Sensor in unserem Smartphone mit Hilfe des Raspberry Pi zu erhalten. So können wir das Ergebnis bequemer aufzeichnen. Während der Implementierung des MQTT-Protokolls wird das Raspberry Pi-Modul als MQTT-Broker arbeiten und sowohl Arduino als auch Smartphone werden MQTT-Clients sein. Der Broker empfängt Sensordaten vom Arduino (1. Client) und leitet die Nachricht an das Smartphone (2. Client) weiter. Da das System nur dazu verwendet wird, die vom Sensor gesammelten und vom Arduino verarbeiteten Daten zu empfangen und den Sensor nicht zu steuern, wird es unidirektional sein; das bedeutet, dass wir den Teil ausschließen, der jeden Sensor von der Smartphone-Anwendung aus steuern kann.
Externe Energiequelle
Wir haben auch eine externe Stromquelle für die Messeinheit eingeführt. Wir verwenden 6 Stück 1,5-V-Batterien. Die Gesamtspannung beträgt 8,07 V. Die Batterien befinden sich in einem Batteriehalter, der ebenfalls an der Hauptstruktur befestigt ist.
Arduino-Schild
Unser Hauptmikrocontroller ist ein Arduino Uno. Aber wir haben ein externes Schild auf ihm verwendet. Der Grund für die Verwendung des Shields ist es, all die Drähte von den Sensoren und dem Display mit einer externen Einheit zu verbinden, die wiederum mit dem Haupt-Arduino verbunden ist. Die Verbindung zwischen dem Shield und den verschiedenen Sensoren/Displays/elektronischen Komponenten ist robuster, da wir sie mit Schrauben festziehen können. Auch die Pins des Shields haben wir nach unseren Anforderungen verlötet. Auf diese Weise müssen wir den Haupt-Arduino nicht anlassen, können aber trotzdem die Verdrahtung und die Verbindungen nach unseren Bedürfnissen ändern.
Umsetzung (Hardware)
LCD-Display-Halter
Um den LCD-Bildschirm an der Hauptstruktur zu befestigen, haben wir eine Halterung in Solidworks entworfen und im 3D-Drucker ausgedruckt. Das Halterungsmodell kann je nach Bedarf aktualisiert werden.
-
Abb. 4: Die Vorderansicht des LCD-Display-Halters [8]
-
Abb. 5: Die Rückansicht des LCD-Display-Halters [9]
LCD kable zugentlastung
Unser LCD hat 4 Pins. Aber vor, die Drähte mit den Stiften verbunden waren nicht stabil genug. Manchmal hatten wir das Problem, dass die Verbindung nicht kohärent war. Dann haben wir eine kable zugentlastung entwickelt, um das Problem zu lösen. Es gab nur wenige Modelle davon auf dem Markt, aber wir haben sie nach unseren Anforderungen angepasst. Sie wird auf der Rückseite des LCD-Halters montiert.
-
Abb. 6: 3D-Konstruktion der Kabelzugentlastung [10]
-
Abb. 7: 3D gedruckte Teile von Kabelzugentlastung [11]
Abdeckung für Sensor
Um den Infrarotsensor vor Lichtreflexionen zu schützen, haben wir diese 3D-gedruckte Abdeckung angebracht. Diese wird oben auf den Sensor montiert.
Programmierung
Komponententest
Beispiel
ID | Testfallbeschreibung | Eingänge x,y,PosAlt,Ausrichtung,Karte,Bumper,Ultraschall,Perimeterschleife | Erwartetes Ergebnis | Testergebnis | Testperson | Datum |
---|---|---|---|---|---|---|
1 | Der Mäher fährt kein Feld weiter. | 0.1, 0.0, [0;0], 0, Karte, 0, 0, 1000 | Kein neues Feld wird blau markiert. | OK | Prof. Schneider | 21.01.2018 |
Zusammenfassung
Link zum Quelltext in SVN
Source Code
The arduino code for the sensor and LCD displays are developed and implemented. We used median filters to cancel out/ limit the noise. We will made two separated arrays for the median filter. For each array there will be separate index pointers. So the two sensors data will be filtered out separately, in that way one's noise will not affect the other.
The next modification can be bidirectional measurement. That means the speed tracker can measure the speed from both direction.
- The code for this project is uploaded in the SVN server
Test Run
We tested our measurement setup the remote controlled car and it worked good for uni-directional way. For bi-Directional, we still are in development phase.
Literature
- ↑ Eigenes Dokument
- ↑ Eigenes Dokument
- ↑ 3,0 3,1 https://www.pololu.com/file/0J157/GP2D120-DATA-SHEET.pdf
- ↑ https://global.sharp/products/device/lineup/data/pdf/datasheet/gp2y0a41sk_e.pdf
- ↑ https://www.mikrocontroller.net/articles/LED
- ↑ https://datasheetgo.com/c547b-datasheet-npn-transistor/ C547B
- ↑ https://de.wikipedia.org/wiki/I%C2%B2C
- ↑ Eigenes Dokument
- ↑ Eigenes Dokument
- ↑ Eigenes Dokument
- ↑ Eigenes Dokument
- ↑ Eigenes Dokument
- ↑ Eigenes Dokument
→ zurück zum Hauptartikel: Messaufbauten mit Arduino