Selbstregelndes Schwungrad: Unterschied zwischen den Versionen
(→Umsetzung (HW/SW): Quellen hinzugefügt für PWM Library&Simulink MPU6050 Baustein) |
(→Umsetzung (HW/SW): Text für Halterung geschrieben) |
||
Zeile 181: | Zeile 181: | ||
==== Schwungrad ==== | ==== Schwungrad ==== | ||
Für die Entwicklung unseres Schwungrads wählten wir den 3D-Druck mit einem FDM-Drucker für den Heimgebrauch. Diese Entscheidung basierte auf der Verfügbarkeit eines eigenen Druckers, der kostengünstigen Druckmöglichkeit und der möglichkeit, entworfene Modelle schnell umzusetzen. Es war wichtig, dass das Schwungrad absolut rotationssymmetrisch ist, um Vibrationen zu vermeiden. Eine besondere Herausforderung stellte die Montage des Schwungrads auf dem Motorrotor dar. Zunächst nutzten wir eine Flanschkupplung, um das Schwungrad mit dem ersten Motor zu verbinden. Nach dem Wechsel zum Nidec24H Motor mussten wir die Lochgröße entsprechend anpassen. Der Nidec24H Motor besitzt eine Zahnung am Rotor, wodurch wir das Schwungrad direkt darauf montieren konnten. Da ein neuer Druck des Schwungrads notwendig war, entschieden wir uns außerdem, Löcher für M8 Schrauben entlang des äußeren Randes zu integrieren. Dies ermöglicht es, das Gewicht des Schwungrads und somit auch die Schwungmasse durch das Hinzufügen oder Entfernen von Schrauben modular anzupassen. | Für die Entwicklung unseres Schwungrads wählten wir den 3D-Druck mit einem FDM-Drucker für den Heimgebrauch. Diese Entscheidung basierte auf der Verfügbarkeit eines eigenen Druckers, der kostengünstigen Druckmöglichkeit und der möglichkeit, entworfene Modelle schnell umzusetzen. Es war wichtig, dass das Schwungrad absolut rotationssymmetrisch ist, um Vibrationen zu vermeiden. Eine besondere Herausforderung stellte die Montage des Schwungrads auf dem Motorrotor dar. Zunächst nutzten wir eine Flanschkupplung, um das Schwungrad mit dem ersten Motor zu verbinden. Nach dem Wechsel zum Nidec24H Motor mussten wir die Lochgröße entsprechend anpassen. Der Nidec24H Motor besitzt eine Zahnung am Rotor, wodurch wir das Schwungrad direkt darauf montieren konnten. Da ein neuer Druck des Schwungrads notwendig war, entschieden wir uns außerdem, Löcher für M8 Schrauben entlang des äußeren Randes zu integrieren. Dies ermöglicht es, das Gewicht des Schwungrads und somit auch die Schwungmasse durch das Hinzufügen oder Entfernen von Schrauben modular anzupassen. | ||
<br> | |||
<br> | <br> | ||
<br> | <br> | ||
Zeile 187: | Zeile 188: | ||
[[Datei:SelbstregelndesSchwungrad_Halterung.png|200px|thumb|rechts|Halterung CAD-Zeichnung]] | [[Datei:SelbstregelndesSchwungrad_Halterung.png|200px|thumb|rechts|Halterung CAD-Zeichnung]] | ||
==== Halterung ==== | ==== Halterung ==== | ||
Die Konstruktion der Halterung mag einfach erscheinen, doch sie muss bestimmte Anforderungen erfüllen. Zunächst ist eine stabile Verbindung zum Boden erforderlich, um einerseits eine freie Rotation zu ermöglichen, andererseits aber so fest mit dem Boden verbunden zu sein, dass keine Schwingungen auftreten beim Betrieb des Motors auftreten. In unserer CAD-Zeichnung haben wir dafür ein Loch vorgesehen, in das ein Zylinder (ebenfalls 3D-Druck) mit einem Zweikomponentenkleber fest eingeklebt wird. Dieser Zylinder wird dann in die Kugellager eingesetzt, um eine feste, aber dennoch drehbare Verbindung zu gewährleisten. | |||
Außerdem ist die Halterung so konstruiert, dass der Motor zentral positioniert ist, was das Gewicht optimal verteilt. Durch die zahlreichen Löcher in der Halterung kann der Motor in insgesamt sechs verschiedenen Positionen befestigt werden. Dies bietet nicht nur mehr Flexibilität bei der Montage, sondern erleichtert auch die Verlegung der Kabel. | |||
Zusätzlich sind in der Halterung zwei Löcher vorgesehen, um das Gyroskop MPU6050 fest anzuschrauben. Dies ist entscheidend, um die genaue Position und Ausrichtung der Halterung kontinuierlich zu messen, was für die Präzision des gesamten Systems von großer Bedeutung ist. | |||
=== Software === | === Software === | ||
Das Ziel unserer Softwareentwicklung war es nach dem EVA-Prinzip (Eingabe, Verarbeitung, Ausgabe) das Selbstregelnde Schwungrad zu steuern. Dafür teilten wir den Entwicklungsprozess in drei Hauptbereiche auf: die Erfassung der Sensor-Daten (Eingabe), die Verarbeitung dieser Daten durch einen eigenen Regler, und schließlich die Umsetzung der berechneten Werte in die Motorsteuerung (Ausgabe). | Das Ziel unserer Softwareentwicklung war es nach dem EVA-Prinzip (Eingabe, Verarbeitung, Ausgabe) das Selbstregelnde Schwungrad zu steuern. Dafür teilten wir den Entwicklungsprozess in drei Hauptbereiche auf: die Erfassung der Sensor-Daten (Eingabe), die Verarbeitung dieser Daten durch einen eigenen Regler, und schließlich die Umsetzung der berechneten Werte in die Motorsteuerung (Ausgabe). |
Version vom 15. Januar 2024, 22:25 Uhr
Autor: Bastian Hannappel, Paul Janzen
Betreuer: Prof. Göbel
Kategorie: Projekte ET MTR BSE WS2023
Einleitung
Das Projekt "Selbstregelndes Schwungrad" im Rahmen des Moduls Mechatronische Systeme 2 im 5. Semester des Studiengangs Mechatronik handelt von einem Schwungrad, welches durch einen Motor an einer Halterung angebracht ist. Die Halterung ist an einer Stelle mit dem Boden verbunden, kann aber entlang einer Ebene um diesen Punkt rotieren. Durch ein Gyroskop erkennt ein Arduino ob die Halterung senkrecht stehen. Sollte etwas die Halterung in eine Richtung kippen lassen, kann das Schwungrad durch gezielte Drehungen dem entgegenwirken und sich wieder senkrecht aufstellen.
Anforderungen
Nr. | Anforderung | Bereich | Zuständig | Umsetzung |
---|---|---|---|---|
1 | Das selbstregelnde Schwungrad muss aus einem Schwungrad, montiert an einer Halterung bestehen. | Hardware | Basti & Paul | Das Schwungrad wird auf dem Rotor des Motors montiert. Der Motor ist fest mit der Halterung verbunden. Die Halterung ist mithilfe von 2 Stehkugellagern auf der Basisplatte verschraubt. |
2 | Das Schwungrad muss von einem DC-Motor betrieben werden. | Hardware | Basti & Paul | Das Schwungrad wird von einem 24V BDCM Nidec24H Motor angetrieben. |
3 | Das Gyroskop muss die Stellung der Halterung feststellen können. | Hardware/Software | Basti & Paul | Mithilfe eines Blocks der Arduino Simulink Library kann der Sensor in Simulink ausgelesen und die Daten verarbeitet werden. |
4 | Eingabe, Verarbeitung und Ausgabe muss mit einem Arduino und Matlab Simulink realisiert werden. | Software | Basti & Paul | Sensor, Regler & Motoransteuerung wurden in Simulink realisiert und werden mithilfe eines Arduino Mega ausgeführt. |
5 | Mithilfe eines PID Reglers muss sich das Selbstregelnde Schwungrad senkrecht ausrichten. | Software | Basti & Paul | TDB! |
6 | Optional: Das Schwungrad muss sich selber aus der Ruhestellung aufrichten können. | Software | noch offen | noch offen |
Funktionaler Systementwurf/Technischer Systementwurf
Im folgenden Systementwurf wird das Projekt in Systemkomponenten unterteilt:
- Arduino: Programmiert mit Matlab Simulink.
- Halterung/Motor/Schwungrad: Steuerung des Motors, antreiben des Schwungrads
- Gyroskop: Positionsabfrage mittels eines Gyroskops
- Regler: Regler zur Senkrechtstellung
-
Technischer Systementwurf
-
Funktionaler Systementwurf - Skizze
Projektplanung
Meilensteine
Direkt zum Anfang des Projektes haben wir uns wichtige Meilensteine in dem Programm Gantt Projekt gesetzt.
Datum | Meilenstein | Kommentar |
---|---|---|
28.09.2023 | Projektstart | Kick-off Veranstaltung GET-Fachpraktikum |
03.10.2023 | Vorbereitung Abgeschlossen | Projektidee Eingereicht und Projektplan erstellt |
17.11.2023 | Planung abschließen | Anforderungen, Systementwurf, CAD-Datein, Schaltpläne, Bauteile bestellen |
25.12.2023 | Projekt umgesetzt | Projekt fertig aufgebaut, Einzelkomponenten getestet und Programm fertiggestellt |
18.01.2024 | Projektmesse | Tests erfolgreich bestanden, Dokumentation in Wiki&Video |
Den kompletten Projektplan mit allen Unteraufgaben finden Sie unter Projektplan.
Bauteile
Nr. | Bauteil | Kosten | Link |
---|---|---|---|
1 | Arduino MEGA 2560 | 38,50€ | Reichelt.de |
2 | L298N Motortreiber mit doppelter H-Brücke | 2,65€ | Roboter-Bausatz.de |
3 | 3-Achsen Beschleunigungs-/ Lagesensor - GY-521 MPU-6050 | 2,95€ | Roboter-Bausatz.de |
4.1 | DC Motor 12V 9800 RPM 0.16A | 1,45€ | Roboter-Bausatz.de |
4.2 | STEPPERONLINE Schrittmotor Nema 17 | 13,99€ | Amazon.de |
4.3 | Nidec 24H Brushless DC Motor | 4,04€ | Aliexpress.com |
5 | Breadboard | 0,95€ | Roboter-Bausatz.de |
6 | Flanschkupplung 3mm | 2,76€ | GTech-Shop.de |
Zusätzliche Komponenten, wie ein Holzbrett, Verbindungskabel sowie verschiedene Schrauben und Muttern, waren bereits vorhanden. Daher ist eine detaillierte Auflistung dieser Teile nicht möglich. Die Halterung und das Schwungrad wurden mithilfe eines 3D Druckers aus PLA Gedruckt und sind somit ebenfall nicht genau zu beziffern.
Umsetzung (HW/SW)
Hardware
Motor
Am Anfang unserer Projektarbeit lag der Fokus auf der Motorsteuerung. Wir planten zunächst, ein Schwungrad mittels eines einfachen 12V DC Motors zu betreiben. Dazu sollte ein L298N Motortreiber mit doppelter H-Brücke verwendet werden, um ein PWM-Signal vom Arduino zu empfangen und auf 12V zu verstärken. Allerdings stellten wir in Tests fest, dass dieser Motor nicht leistungsfähig genug war und insbesondere schnelle Richtungswechsel nicht bewältigen konnte. Daher mussten wir uns nach einer Alternative umsehen.
Anfänglich erwogen wir den Einsatz eines Nema 17 Schrittmotors. Jedoch erwies sich die Ansteuerung der einzelnen Phasen in korrekter Reihenfolge und mit hoher Geschwindigkeit, besonders in Simulink, als sehr komplex. Letztendlich entschieden wir uns für einen Nidec 24h Servomotor. Ein entscheidender Vorteil dieses Motors ist der integrierte Treiber, der separate Anschlüsse für die Spannungsversorgung und die Steuerspannung bietet. Dies ermöglichte uns den Betrieb ohne zusätzlichen Motortreiber, was die Implementierung deutlich vereinfachte.
Gyroskop
Das Gyroskop MPU6050 ist ein Sensor, der sowohl ein Gyroskop als auch einen Beschleunigungssensor integriert hat. Diese Kombination ermöglicht es ihm, präzise Informationen über die Orientierung, die Beschleunigung und die Rotationsbewegungen eines Objekts zu liefern.
Diese Eigenschaften machen das MPU6050 ideal für Anwendungen, bei denen präzise Bewegungsanalyse und Lagebestimmung erforderlich sind, wie in unserem Projekt zur Stabilisierung des Schwungrades. Durch die Nutzung des I2C-Busses für die Kommunikation kann der MPU6050 effizient mit Mikrocontrollern wie dem Arduino kommunizieren.
Mit Hilfe eines in der Simulink Arduino Library inkludierten Bausteins ist es uns möglich, die Daten des Gyroskops unkompliziert auszulesen. Diese Daten werden anschließend in unserem Regelkreis eingesetzt, um das Schwungrad immer senkrecht zu halten.
Schwungrad
Für die Entwicklung unseres Schwungrads wählten wir den 3D-Druck mit einem FDM-Drucker für den Heimgebrauch. Diese Entscheidung basierte auf der Verfügbarkeit eines eigenen Druckers, der kostengünstigen Druckmöglichkeit und der möglichkeit, entworfene Modelle schnell umzusetzen. Es war wichtig, dass das Schwungrad absolut rotationssymmetrisch ist, um Vibrationen zu vermeiden. Eine besondere Herausforderung stellte die Montage des Schwungrads auf dem Motorrotor dar. Zunächst nutzten wir eine Flanschkupplung, um das Schwungrad mit dem ersten Motor zu verbinden. Nach dem Wechsel zum Nidec24H Motor mussten wir die Lochgröße entsprechend anpassen. Der Nidec24H Motor besitzt eine Zahnung am Rotor, wodurch wir das Schwungrad direkt darauf montieren konnten. Da ein neuer Druck des Schwungrads notwendig war, entschieden wir uns außerdem, Löcher für M8 Schrauben entlang des äußeren Randes zu integrieren. Dies ermöglicht es, das Gewicht des Schwungrads und somit auch die Schwungmasse durch das Hinzufügen oder Entfernen von Schrauben modular anzupassen.
Halterung
Die Konstruktion der Halterung mag einfach erscheinen, doch sie muss bestimmte Anforderungen erfüllen. Zunächst ist eine stabile Verbindung zum Boden erforderlich, um einerseits eine freie Rotation zu ermöglichen, andererseits aber so fest mit dem Boden verbunden zu sein, dass keine Schwingungen auftreten beim Betrieb des Motors auftreten. In unserer CAD-Zeichnung haben wir dafür ein Loch vorgesehen, in das ein Zylinder (ebenfalls 3D-Druck) mit einem Zweikomponentenkleber fest eingeklebt wird. Dieser Zylinder wird dann in die Kugellager eingesetzt, um eine feste, aber dennoch drehbare Verbindung zu gewährleisten.
Außerdem ist die Halterung so konstruiert, dass der Motor zentral positioniert ist, was das Gewicht optimal verteilt. Durch die zahlreichen Löcher in der Halterung kann der Motor in insgesamt sechs verschiedenen Positionen befestigt werden. Dies bietet nicht nur mehr Flexibilität bei der Montage, sondern erleichtert auch die Verlegung der Kabel.
Zusätzlich sind in der Halterung zwei Löcher vorgesehen, um das Gyroskop MPU6050 fest anzuschrauben. Dies ist entscheidend, um die genaue Position und Ausrichtung der Halterung kontinuierlich zu messen, was für die Präzision des gesamten Systems von großer Bedeutung ist.
Software
Das Ziel unserer Softwareentwicklung war es nach dem EVA-Prinzip (Eingabe, Verarbeitung, Ausgabe) das Selbstregelnde Schwungrad zu steuern. Dafür teilten wir den Entwicklungsprozess in drei Hauptbereiche auf: die Erfassung der Sensor-Daten (Eingabe), die Verarbeitung dieser Daten durch einen eigenen Regler, und schließlich die Umsetzung der berechneten Werte in die Motorsteuerung (Ausgabe).
Im Eingabebereich konzentrierten wir uns auf die genaue Erfassung und Aufbereitung der Sensordaten. Die Verarbeitungsphase beinhaltete die Entwicklung eines Reglers, der auf Basis der Sensordaten die Stellgröße, also die Motordrehgeschwindigkeit regelt. Im Ausgabebereich stand die genaue Umsetzung dieser berechneten Werte in die Motorsteuerung im Vordergrund.
Jeder dieser Bereiche wurde durch spezifische Komponententests überprüft, um die Funktionalität und Effizienz der einzelnen Teile sowie des Gesamtsystems zu gewährleisten
Auslesen des Sensors
Der Gyroskop- und Beschleunigungssensor MPU6050 kann nahtlos in Simulink integriert werden. Dies erfolgt durch die Verwendung eines vordefinierten Simulink-Bausteins aus dem Simulink Support Package für Arduinos, der speziell für die Interaktion mit dem MPU6050 entwickelt wurde[3]. Dieser Baustein ermöglicht das direkte Auslesen von Sensordaten wie Beschleunigungs- und Gyroskop-Werten innerhalb der Simulink-Umgebung.
Die Konfiguration des MPU6050 Sensors kann ebenfalls direkt in Simulink vorgenommen werden, dazu stehen spezielle Blockeinstellungen zur Verfügung. Diese ermöglichen es dem Benutzer, verschiedene Sensorparameter anzupassen, einschließlich der Einstellung der Anschlusspins des I2C Busses.
Während des Komponententests werden die von dem MPU6050 Sensor erfassten Daten in Simulink auf ihre Richtigkeit überprüft. Dies Umfasst das Auslesen und Analysieren der Sensordaten in verschiedenen Ausrichtungen, um die Gewährleistung der Zuverlässigkeit und Genauigkeit des Sensors sicherzustellen. Die erzielten Testergebnisse konnten in Simulink visualisiert und erfolgreich validiert werden.
Regler
TBD
Ansteuerung des Motors
Die Steuerung des Motors stellte eine besondere Herausforderung dar. Wir begannen mit einem einfachen Gleichstrommotor (DC-Motor) aus einem früheren Projekt. Dieser Motor wurde mittels eines L298N Motortreibers angesteuert. Das bedeutete konkret, dass wir an einen Pin ein PWM-Signal anlegten und über einen zweiten Pin den Motor durch ein High-Signal vorwärts und durch ein Low-Signal rückwärts laufen ließen. Allerdings stellten wir fest, dass dieser Motor für unsere Zwecke zu wenig Leistung bot und vor allem bei Richtungswechseln träge reagierte. Daraufhin versuchten wir, einen Nema 17 Schrittmotor zu verwenden, der jedoch eine höhere Leistung benötigte, als der Motortreiber bereitstellen konnte. Zudem war es eine Herausforderung, die verschiedenen Phasen in der richtigen Reihenfolge schnell genug anzusteuern, damit der Motor sich entsprechend drehte. Schließlich entschieden wir uns für den Nidec 24H Motor, der über einen integrierten Motortreiber verfügt. Dieser Treiber benötigt einen separaten Anschluss für 24V und drei Pins für ein PWM-Signal, die Drehrichtung und eine Bremse. Eine weitere Schwierigkeit war die Notwendigkeit eines PWM-Signals mit einer Frequenz von 15-25kHz. Nach verschiedenen Versuchen fanden wir die AVR_PWM Library[4], die es uns ermöglichte, die Frequenz des PWM-Signals und den Duty Cycle zur Steuerung der Drehgeschwindigkeit einzustellen. Damit konnten wir die Geschwindigkeit des Motors sehr präzise regulieren.
Programmcode S-Function
<div class="mw-collapsible-content">
/* Includes_BEGIN */
#ifndef MATLAB_MEX_FILE
#include <AVR_PWM.h>
#define PWM_Pin 8
//Erstelle Frequenz&dutyCycle
float frequency = 20000;
float dutyCycle;
//Erstelle PWM Instanz
AVR_PWM* PWM_Instance;
#endif
/* Includes_END */
/* Externs_BEGIN */
/* extern double func(double a); */
/* Externs_END */
void MotorDriverSF_Start_wrapper(real_T *xD)
{
/* Start_BEGIN */
#ifndef MATLAB_MEX_FILE
PWM_Instance = new AVR_PWM(PWM_Pin, 20000, 0);
#endif
/* Start_END */
}
void MotorDriverSF_Outputs_wrapper(const real_T *PWM,
const real_T *xD)
{
/* Output_BEGIN */
#ifndef MATLAB_MEX_FILE
PWM_Instance->setPWM(PWM_Pin, frequency, map(PWM[0], 0, 255, 100, 20));
#endif
/* Output_END */
}
void MotorDriverSF_Update_wrapper(const real_T *PWM,
real_T *xD)
{
/* Update_BEGIN */
/* Update_END */
}
void MotorDriverSF_Terminate_wrapper(real_T *xD)
{
/* Terminate_BEGIN */
/*
* Custom Terminate code goes here.
*/
/* Terminate_END */
}
Komponententest
Bevor die verschiedenen Bauteile fest miteinander verlötet und eingebaut werden konnten, war es notwendig, zunächst Tests an den einzelnen Komponenten durchzuführen. Dies diente dazu, die Funktionsfähigkeit jedes Einzelteils sicherzustellen.
Test-Nr. | Bauteil | Testinhalt | Ergebnis | Kommentar |
---|---|---|---|---|
1 | Motor | Einfacher DC-Motor über L298N Motorreiber ansteuern, schnelle Richtigungswechsel | Durchgefallen | Richtungswechsel nicht schnellgenug möglich |
2 | Motor | Nema 17 Schrittmotor ansteuern, schnelle Richtungswechsel | Durchgefallen | Schnelle Ansteuerung der Phasen nur schwer möglich ohne zusätzlichen Treiber |
3 | Motor | Nidec 24h ansteuern, schnelle Richtungswechsel | Erfolgreich | Schnelle Richtungswechsel und präzise Steuerung gut möglich. |
4 | Halterung | Halterung mit wenig Reibung auf Basisplatte montieren | Erfolgreich | Mithilfe von 2 Stehkugellagern senkrechtes Aufstellen mit wenig Reibung bei bewegung |
5 | Gyroskop | Gyroskop auslesen und Werte in Simulink anzeigen | Erfolgreich | Mithilfe eines Blocks aus dem Arduino Support Package, konnten alle Werte ausgelesen und in Simulink angezeigt werden. |
Ergebnis
Zusammenfassung
Lessons Learned
Projektunterlagen
Projektplan
-
Projektplan Selbstregelndes Schwungrad(mit GanttProjekt erstellt).
Projektdurchführung
YouTube Video
Weblinks
Literatur
→ zurück zur Übersicht: WS 23/24: Projekte GET Fachpraktikum (MTR)
- ↑ Bild: Nidec 24H Brushless DC Motor | Abgerufen am 15. Januar 2024.
- ↑ Bild: MPU6050 mit Achsen | Abgerufen am 15. Januar 2024.
- ↑ 3,0 3,1 Mathworks: MPU6050 Baustein | Abgerufen am 15. Januar 2024.
- ↑ GitHub khoih-prog: AVR_PWM Libary | Abgerufen am 15. Januar 2024.