Hier werden die Unterschiede zwischen zwei Versionen gezeigt.
Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
projektesose24:m-o:projektdokumentation [2024/09/29 22:27] jana_alexandra |
projektesose24:m-o:projektdokumentation [2024/09/30 02:05] (aktuell) jana_alexandra |
||
---|---|---|---|
Zeile 13: | Zeile 13: | ||
> **Abbildung 2:** Putzroboter M-O "Microbe Obliterator" | > **Abbildung 2:** Putzroboter M-O "Microbe Obliterator" | ||
- | Seine Hauptaufgabe ist es, einer zuvor definierten Strecke, in Form einer schwarzen Linie auf einer möglichst ebenen Oberfläche, zu folgen und dabei mittels einer an den Armen angebrachten Rolle die besagte Oberfläche zu reinigen. Das Ziel ist es, eine möglichst originalgetreue Abbildung seines Verhaltens aus dem Film zu erschaffen. Dies wird in erster Linie durch den begrenzten Arbeitsbereich ermöglicht, da M-O im Film seine Arbeit ebenfalls nur im Bereich einer klar definierten Linie verrichten darf.\\ | + | Seine Hauptaufgabe ist es, einer zuvor definierten Strecke in Form einer schwarzen Linie auf einer möglichst ebenen Oberfläche zu folgen und dabei mittels einer an den Armen angebrachten Rolle die besagte Oberfläche zu reinigen. Das Ziel ist es, eine möglichst originalgetreue Abbildung seines Verhaltens aus dem Film zu erschaffen. Dies wird in erster Linie durch den begrenzten Arbeitsbereich ermöglicht, da M-O im Film seine Arbeit ebenfalls nur im Bereich einer klar definierten Linie verrichten darf.\\ |
Das allein reicht jedoch nicht aus, um eine originalgetreue Abbildung von M-O darzustellen, weshalb weitere Überschneidungen von Verhalten und Aussehen zum Film benötigt werden. Um den Beginn seines Arbeitsprozesses, sowie seine Arbeitsbereitschaft anzukündigen, soll er zudem - wie im Film - seine Arme samt der Rolle bewegen können. In unserem Fall soll er die Arme zu Beginn enthusiastisch hochwerfen und anschließend wieder runternehmen, um mit seiner Aufgabe anzufangen. | Das allein reicht jedoch nicht aus, um eine originalgetreue Abbildung von M-O darzustellen, weshalb weitere Überschneidungen von Verhalten und Aussehen zum Film benötigt werden. Um den Beginn seines Arbeitsprozesses, sowie seine Arbeitsbereitschaft anzukündigen, soll er zudem - wie im Film - seine Arme samt der Rolle bewegen können. In unserem Fall soll er die Arme zu Beginn enthusiastisch hochwerfen und anschließend wieder runternehmen, um mit seiner Aufgabe anzufangen. | ||
Zeile 31: | Zeile 31: | ||
- Ausgabe von Audiodateien im MP3-Format | - Ausgabe von Audiodateien im MP3-Format | ||
- | Aufgrund von Zeitmangel, unzureichendem Programmierspeicherplatz sowie ausgelasteten Digitalpins, konnte die ursprünglich geplante fünfte Baugruppe nicht umgesetzt werden: Das Generieren von Augen über LED-Matrizen. | + | Aufgrund von Zeitmangel, unzureichendem Programmierspeicherplatz sowie ausgelasteten Digitalpins, konnte die ursprünglich geplante fünfte Baugruppe nicht umgesetzt werden: Das **Generieren von Augen über LED-Matrizen**. |
+ | |||
+ | {{:projektesose24:m-o:m-o_angeschlossen_an_akku_und_powerbank.jpg?nolink&300|M-O angeschlossen an Akku und Powerbank}} | ||
+ | {{:projektesose24:m-o:m-o_aufbau.jpg?nolink&300|M-O Aufbau}} | ||
+ | {{:projektesose24:m-o:schaltung_3.jpg?nolink&300|M-O Innenleben - Schaltung}}\\ | ||
+ | |||
+ | > **Abbildung 3:** Aufnahmen von unserem gegenwärtigen Roboter, M-O. | ||
==== Systembestandteile im Detail ==== | ==== Systembestandteile im Detail ==== | ||
- | - **Linienerkennung** | + | **1.) Linienerkennung**\\ |
+ | \\ | ||
Zu Beginn der Projektphase hatten wir ursprünglich Ultraschallsensoren zur Hinderniserkennung und räumlichen Orientierung eingeplant. Doch alsbald erinnerten wir uns daran, wie M-O sich im Film fortbewegt: Er folgt einer fest definierten Strecke, um seine Putzarbeit zu verrichten. Es ist ihm untersagt vom Weg abzuweichen. Aus diesem Grund haben wir uns dafür entschieden einen Infrarotsensor anstelle eines Ultraschallsensors zu integrieren. Infrarotsensoren nutzen den photoelektrischen Effekt zur Detektion. Das vom Sensor ausgehende Infrarotlicht wird von einem Objekt reflektiert und vom Phototransistor empfangen. Die Reflexion kann hierbei durch ein Objekt oder eine unterschiedlich gefärbte Fläche entstehen. Somit lassen sich Infrarotsensoren u.a. zur Linienerkennung einsetzen. Für eine erfolgreiche Linienerkennung, musste zunächst die Reichweite der Infrarotsensoren ermittelt werden, welche von Modell zu Modell unterschiedlich ausfällt. Durch Ausprobieren, Nachjustieren und Verstellen der Stellschraube (Potentiometer) konnten wir die Sensorreichweite, welche nur wenige Millimeter beträgt, ausmachen. Der Programmcode zum Ansteuern und Testen der Infrarotsensoren befindet sich unter den [[projektdokumentation#Programmcode und Rohdaten|Rohdaten]] dieser Seite. | Zu Beginn der Projektphase hatten wir ursprünglich Ultraschallsensoren zur Hinderniserkennung und räumlichen Orientierung eingeplant. Doch alsbald erinnerten wir uns daran, wie M-O sich im Film fortbewegt: Er folgt einer fest definierten Strecke, um seine Putzarbeit zu verrichten. Es ist ihm untersagt vom Weg abzuweichen. Aus diesem Grund haben wir uns dafür entschieden einen Infrarotsensor anstelle eines Ultraschallsensors zu integrieren. Infrarotsensoren nutzen den photoelektrischen Effekt zur Detektion. Das vom Sensor ausgehende Infrarotlicht wird von einem Objekt reflektiert und vom Phototransistor empfangen. Die Reflexion kann hierbei durch ein Objekt oder eine unterschiedlich gefärbte Fläche entstehen. Somit lassen sich Infrarotsensoren u.a. zur Linienerkennung einsetzen. Für eine erfolgreiche Linienerkennung, musste zunächst die Reichweite der Infrarotsensoren ermittelt werden, welche von Modell zu Modell unterschiedlich ausfällt. Durch Ausprobieren, Nachjustieren und Verstellen der Stellschraube (Potentiometer) konnten wir die Sensorreichweite, welche nur wenige Millimeter beträgt, ausmachen. Der Programmcode zum Ansteuern und Testen der Infrarotsensoren befindet sich unter den [[projektdokumentation#Programmcode und Rohdaten|Rohdaten]] dieser Seite. | ||
- | - **Fortbewegung** | + | **2.) Fortbewegung**\\ |
+ | \\ | ||
+ | Die Art der Fortbewegung durch den Raum wurde im ersten Aufgabenpaket geklärt. Nun galt es diese auch zu ermöglichen durch erfolgreiches Ansteuern der mit LEGO-Rädern bestückten Schrittmotoren. Das größte Aufgabenpaket bestand darin, die Nema 11 Schrittmotoren mit den DRV8834 Schrittmotortreiberträgern zu verbinden. Insbesondere musste die Spulenanordnung der Schrittmotoren berücksichtigt werden: Die Pins B2/B1 des Drivers werden mit der Spule D/B des Schrittmotors verbunden. A1/A2 entsprechend mit A/C. Diese Aufgabe stellte insofern eine kleine Herausforderung dar als das wir zu Beginn des Projekts zunächst mit einem anderen Driver, dem DRV8825, zu Testzwecken gearbeitet haben.\\ | ||
+ | Eine weitere Aufgabe bestand darin, die Strombegrenzung für den Driver zu berechnen und am Potentiometer einzustellen. Dieser Schritt ist wichtig, denn wenn eine zu hohe Referenzspannung beim Driver vorliegt, können Schäden am Motor, aufgrund einer zu hohen Schrittrate, entstehen. Unser Motor zieht bei jeder Phase 0.67 Ampere bei 3.8 Volt. Die Referenzspannung am Driver ergibt sich aus der Division des Nennstroms mit zwei: 0.67 Ampere / 2 = 0.335. Mithilfe eines Multimeters können wir die am Driver anliegende Spannung messen und durch Drehen der Stellschraube korrekt einstellen.\\ | ||
+ | |||
+ | Obwohl alle Einstellungen von uns mehrfach geprüft wurden, fuhr M-O noch nicht erwartungsgemäß einer Linie hinterher. Dies hing mit der Einstellung der Schritte pro Umdrehung im Programmcode zusammen.\\ | ||
+ | Zunächst mussten wir feststellen, welches der Räder sich nach vorne bewegen würde. Aufgrund der spiegelverkehrten Befestigung, drehte sich ein Schrittmotor zwangsläufig in die entgegengesetzte Richtung. Dementsprechend musste entweder die Schrittzahl vom linken oder vom rechten Rad negativ gesetzt werden. Dies ließ sich durch schlichtes Ausprobieren schnell ausmachen. Um eine Kurvendrehung zu ermöglichen, musste zuletzt die Schrittzahl des entsprechenden Rades herabgesetzt werden, in welche Richtung M-O sich bewegt. Wenn M-O bspw. nach links abbiegen soll, so muss das linke Rad deutlich weniger Schritte pro Umdrehung ausführen als das rechte Rad, um ein Abbiegen zu ermöglichen.\\ | ||
+ | {{:projektesose24:m-o:drv8834_schaltung.png?nolink|Schaltplan für den Anschluss eines Mikrocontrollers an einen DRV8834 Schrittmotortreiberträger}} | ||
+ | > **Abbildung 4:** Schaltplan für den Anschluss eines Mikrocontrollers an einen DRV8834 Schrittmotortreiberträger. [[projektdokumentation#Quellenverzeichnis|1.)]] | ||
+ | {{:projektesose24:m-o:nema_11_schrittmotor_spulenanordnung.png?nolink|Schaltplan des bipolaren Schrittmotors - Spulenanordnung}}\\ | ||
+ | > **Abbildung 5:** Schaltplan des bipolaren Schrittmotors. Die Anordnung der Spulen ist beim Anschluss des Schrittmotors an den Driver zu beachten. [[projektdokumentation#Quellenverzeichnis|2.)]] | ||
+ | **3.) Gestikulation**\\ | ||
+ | \\ | ||
+ | Unter Gestikulation verstehen wir die Arm- und Kopfbewegungen von M-O während einzelner Phasen seines Lebenszyklus. So soll er bspw. seine Arme samt Putzrolle emporheben, um seine Arbeitsbereitschaft zu signalisieren. Diese Gesten unterstreichen seine Persönlichkeit und sind Szenen aus dem Film nachempfunden. Um diese Bewegungen zu ermöglichen, müssen jedoch die Standardpositionen der Servomotoren aufeinander abgestimmt werden. Der linke und rechte Servomotor hatten jeweils eine andere Ausgangseinstellung, was bei der Befestigung der Arme berücksichtigt werden musste. Durch ständiges Nachjustieren der Arme und Verändern der Gradzahl im Programmcode, konnten die Servomotoren schließlich aufeinander abgestimmt werden, sodass beide Arme synchron nach oben bewegt wurden. Die gleiche Herangehensweise verwendeten wir, um die Auf- und Abbewegung des Kopfes einzustellen. | ||
+ | **4.) Ausgabe von Audiodateien im MP3-Format**\\ | ||
+ | \\ | ||
+ | Um dem Bild von M-O möglichst nahe zu kommen, konnten wir nicht auf seine einzigartige, niedliche Stimme verzichten! Bei der letzten umgesetzten Baugruppe bestand die Aufgabe darin, Audioausgaben über einen Arduino Nano und unter Verwendung eines simplen Piezolautsprechers zu ermöglichen. Wir entschieden uns für drei Audioausschnitte, die während einzelner Phasen seines Lebenszyklus abgespielt werden sollten:\\ | ||
+ | \\ | ||
+ | {{:projektesose24:m-o:m-o_name.mp3|M-O_Name}}\\ | ||
+ | {{:projektesose24:m-o:m-o_scream.mp3|M-O_Scream}}\\ | ||
+ | {{:projektesose24:m-o:m-o_confirmation.mp3|M-O_Confirmation}}\\ | ||
+ | > Nicht eingebundene Audiodateien:\\ | ||
+ | {{:projektesose24:m-o:m-o_woah.mp3|M-O_Woah}}\\ | ||
+ | {{:projektesose24:m-o:m-o_complain_and_scream.mp3|M-O_Complain and Scream}}\\ | ||
+ | Nicht eingebundene Audiodateien stellten Alternativen zu den bestehenden dar. | ||
+ | Um kurze Audioausschnitte auf einem Arduino Nano abspielen zu können, müssen wir zunächst die Größe der MP3-Dateien anpassen. Mithilfe des kostenlosen Audio-Editors Audacity, stellen wir ein 16-bit-Format ein und setzen die Projektrate auf das kleinstmöglichste Niveau (8000 Hz). Anschließend exportieren wir die Dateien. Um die Dateien nun einbinden zu können, dekodieren wir sie mithilfe einer Software genannt „EncodeAudio“ für Windows. Der dekodierte Code wird direkt in die Zwischenablage kopiert und kann einfach im Programmcode eingefügt werden. Einzig verändert werden musste die eingebundene Bibliothek „PCM.h“. Aufgrund der Inkompatibilität der Bibliotheken „Servo.h“ und „PCM.h“, bedingt durch gleiche Timer-Konfiguration (Timer 1), mussten wir auf die alternative Bibliothek „FlagPCM.h“ umsteigen, welche einen anderen Timer verwendet, um nicht in Konflikt mit der Servo-Bibliothek zu geraten.\\ | ||
+ | |||
+ | Das Abspielen von Audiodateien nimmt mit Abstand den größten Teil vom Programmierspeicherplatz ein. Unter Berücksichtigung der anderen Baugruppen, werden 95% des Speichers für M-Os Anwendung belegt. Dies ist einer der Gründe, weshalb die nächste Baugruppe - mit einem Programmierspeicherplatz von 8% - nicht implementiert wurde. | ||
+ | **5.) Generieren von Augen über LED-Matrizen**\\ | ||
+ | \\ | ||
+ | Die Augen generierenden LED-Matrizen hätten M-Os Bild vervollständigt. An sich ist der Programmcode fertig. Es gibt drei verschiedene Modi, um seinen Gemütszustand auszudrücken: neutral, wütend und angestrengt/konzentriert. Der Code müsste lediglich in Zusammenhang mit dem Hauptprogramm gebracht werden, gäbe es da nicht das Problem mit dem mangelnden Speicherplatz. Zudem ist unklar, ob erneut Bibliotheken in Konflikt geraten, aufgrund gleicher Timer-Konfigurationen. Außerdem könnte sich die Schaltung ans Breadboard als schwierig erweisen, zudem so gut wie alle Digitalpins am Arduino Nano belegt sind. Möglicherweise gelingt es zukünftigen Gruppen, Ideen für diese Probleme zu entwickeln. | ||
+ | ---- | ||
{{ :projektesose24:m-o:schaltplan_m-o_steckplatine.png?nolink |Steckplatine M-O}} | {{ :projektesose24:m-o:schaltplan_m-o_steckplatine.png?nolink |Steckplatine M-O}} | ||
- | > **Abbildung 3:** Steckplatine von M-O erstellt mit dem open-source Programm [[https://fritzing.org/|Fritzing]]. \\ Da die LED-Matrizen noch nicht im Gesamtsystem integriert sind, werden sie im gegenwärtigen Schaltplan nicht aufgeführt. | + | > **Abbildung 6:** Steckplatine von M-O erstellt mit dem open-source Programm [[https://fritzing.org/|Fritzing]]. \\ Da die LED-Matrizen noch nicht im Gesamtsystem integriert sind, werden sie im gegenwärtigen Schaltplan nicht aufgeführt. |
^Pinbelegung am Arduino Nano ^^ | ^Pinbelegung am Arduino Nano ^^ | ||
Zeile 65: | Zeile 103: | ||
|**<color #7092be>D11</color>**|Base-Pin Transistor | | |**<color #7092be>D11</color>**|Base-Pin Transistor | | ||
- | > **Abbildung X:** Pinbelegungstabelle. Ausschließliche Verwendung von Digitalpins. | + | > **Abbildung 7:** Pinbelegungstabelle. Ausschließliche Verwendung von Digitalpins. |
+ | |||
+ | ---- | ||
==== Liste verwendeter Bauteile ==== | ==== Liste verwendeter Bauteile ==== | ||
Zeile 102: | Zeile 142: | ||
Das Zusammenfügen der Einzelbestandteile erfolgte mittels einer Heißklebepistole. Zur Verbesserung der Stabilität der Konstruktion, empfehlen wir Nachbau-Interessierten, den Einsatz von Schrauben und Ähnlichem. Um die Verkabelung der elektrotechnischen Bestandteile mit der Steckplatine zu ermöglichen, wurden mehrere Löcher in die obere und untere Holzbasis gebohrt. | Das Zusammenfügen der Einzelbestandteile erfolgte mittels einer Heißklebepistole. Zur Verbesserung der Stabilität der Konstruktion, empfehlen wir Nachbau-Interessierten, den Einsatz von Schrauben und Ähnlichem. Um die Verkabelung der elektrotechnischen Bestandteile mit der Steckplatine zu ermöglichen, wurden mehrere Löcher in die obere und untere Holzbasis gebohrt. | ||
* **Gehäuse:** | * **Gehäuse:** | ||
- | * mehrere DIN-A3 Blätter harte Pappe | + | * mehrere DIN-A3 Blätter harte Pappe, Orientierung an einem Papiermodell von [[https://paper-replika.com/index.php/disney/m-o-paper-model|Paper Replika]]. [[projektdokumentation#Quellenverzeichnis|4.)]] |
- | \\ | + | |
- | + | ||
- | {{:projektesose24:m-o:piezolautsprecher_und_transistor_2.jpg?nolink&300|Schaltung des Piezolautsprechers und Transistors}} | + | |
- | {{:projektesose24:m-o:piezolautsprecher_und_transistor_1.jpg?nolink&300|Schaltung des Piezolautsprechers und Transistors}}\\ | + | |
- | \\ | + | |
- | Eine ganze Reihe an Bildern...\\ | + | |
- | \\ | + | |
- | {{:projektesose24:m-o:m-o_angeschlossen_an_akku_und_powerbank.jpg?nolink&300|}} | + | |
- | {{:projektesose24:m-o:m-o_aufbau.jpg?nolink&300|}} | + | |
- | {{:projektesose24:m-o:schaltung_3.jpg?nolink&300|}}\\ | + | |
- | \\ | + | |
- | + | ||
- | > Audiodateien, die während des Lebenszyklus abgespielt werden:\\ | + | |
- | {{:projektesose24:m-o:m-o_name.mp3|M-O_Name}}\\ | + | |
- | {{:projektesose24:m-o:m-o_scream.mp3|M-O_Scream}}\\ | + | |
- | {{:projektesose24:m-o:m-o_confirmation.mp3|M-O_Confirmation}}\\ | + | |
- | + | ||
- | > Nicht eingebundene Audiodateien:\\ | + | |
- | {{:projektesose24:m-o:m-o_woah.mp3|M-O_Woah}}\\ | + | |
- | {{:projektesose24:m-o:m-o_complain_and_scream.mp3|M-O_Complain and Scream}}\\ | + | |
- | + | ||
- | + | ||
- | {{:projektesose24:m-o:drv8834_schaltung.png?nolink|Schaltplan für den Anschluss eines Mikrocontrollers an einen DRV8834 Schrittmotortreiberträger}} | + | |
- | > **Abbildung 4:** Schaltplan für den Anschluss eines Mikrocontrollers an einen DRV8834 Schrittmotortreiberträger. [[projektdokumentation#Quellenverzeichnis|1.)]] | + | |
- | + | ||
- | {{:projektesose24:m-o:nema_11_schrittmotor_spulenanordnung.png?nolink|Schaltplan des bipolaren Schrittmotors - Spulenanordnung}}\\ | + | |
- | > **Abbildung 5:** Schaltplan des bipolaren Schrittmotors. Die Anordnung der Spulen ist beim Anschluss des Schrittmotors an den Driver zu beachten. [[projektdokumentation#Quellenverzeichnis|2.)]] | + | |
===== Ergebnis und Diskussion ===== | ===== Ergebnis und Diskussion ===== | ||
Zeile 154: | Zeile 167: | ||
{{:projektesose24:m-o:m-o_testfahrt_auf_gerader_strecke.mp4|M-O: Testfahrt auf gerader Strecke}}\\ | {{:projektesose24:m-o:m-o_testfahrt_auf_gerader_strecke.mp4|M-O: Testfahrt auf gerader Strecke}}\\ | ||
- | > **Video 1:** Jungfernfahrt auf gerader Strecke. (Die Kurvenerkennung über die Infrarotsensoren erfolgt zwar einwandfrei, doch aufgrund der eingestellten Schrittzahl/Schritte pro Umdrehung der Räder, ist M-O nicht in der Lage, rechtzeitig die Kurve zu kriegen.) Das Abbiegen ist noch nicht geglückt.\\ | + | > **Video 1:** Jungfernfahrt auf gerader Strecke. Aufgrund der im Abschnitt [[projektdokumentation#Systembestandteile im Detail|Systembestandteile im Detail]] unter dem Punkt Fortbewegung genannten Hindernisse, ist das Abbiegen zu diesem Zeitpunkt noch nicht geglückt.\\ |
{{:projektesose24:m-o:m-o_testfahrt_-_fehlgeschlagenes_abbiegen.mp4|M-O: Testfahrt im Kreis}}\\ | {{:projektesose24:m-o:m-o_testfahrt_-_fehlgeschlagenes_abbiegen.mp4|M-O: Testfahrt im Kreis}}\\ | ||
Zeile 163: | Zeile 176: | ||
===== Programmcode und Rohdaten ===== | ===== Programmcode und Rohdaten ===== | ||
- | <note important>Ergänzende Bemerkungen zu den Files!</note> | ||
* {{:projektesose24:m-o:m-o_programmcode.zip|}}\\ | * {{:projektesose24:m-o:m-o_programmcode.zip|}}\\ | ||
* {{:projektesose24:m-o:m-o_rohdaten.zip|}}\\ | * {{:projektesose24:m-o:m-o_rohdaten.zip|}}\\ |