Arduino Projekt: Servomotor mit einem Potentiometer steuern: Unterschied zwischen den Versionen

Aus HSHL Mechatronik
Zur Navigation springen Zur Suche springen
Zeile 273: Zeile 273:


==== Motor und Poti verbinden====
==== Motor und Poti verbinden====
Um mit dem Potentiometer den Motor drehen zu können, müssen ihre Werte sich aneinander anpasse.
Um mit dem Potentiometer den Motor drehen zu können, müssen ihre Werte sich aneinander anpassen.
* Dies lässt sich mit der Funktion <code>'''Position = map(Regler_Wert, 0, 1023, 0, 180);'''</code> lösen.
* Dies lässt sich mit der Funktion <code>'''Position = map(Regler_Wert, 0, 1023, 0, 180);'''</code> lösen.
* Dieser Code wird unter dem Code <code>'''Regler_Wert = analogRead(A0);'''</code> geschrieben.
* Dieser Code wird unter dem Code <code>'''Regler_Wert = analogRead(A0);'''</code> geschrieben.
Zeile 311: Zeile 311:


----
----
==== Motor positionieren====
==== Motor positionieren====
Im letzten Schritt muss dem Motor seine gewünschte Postion übergeben werden.
Im letzten Schritt muss dem Motor seine gewünschte Postion übergeben werden.

Version vom 5. September 2023, 12:27 Uhr

Abb. 1: Servomotor mit Potentiometer

Autor: Justin Frommberger

Ablaufplan

Um das Projekt "Servomotor mit einem Potentiometer steuern" durchzuführen, wird der folgende Ablauf empfohlen:

  1. Betrachte das Video (Abbildung 1) und lese die Aufgabenstellung sorgfältig durch.
  2. Überprüfe, ob alle erforderlichen Materialien von der Materialliste vorhanden sind.
  3. Lies dir das "Vorab wichtig zu wissen" durch.
  4. Fahre mit Abbildung 3 fort und baue die Schaltung des Projekts nach.
  5. Vor der Programmierung ist es wichtig, das benötigte Programm gemäß den Angaben unter "Benötigtes Programm" herunterzuladen.
  6. Abschließend wird eine Anleitung zur Programmierung präsentiert.
  7. Um die Aufgaben zu vereinfachen, wird empfohlen, den Code in der gleichen Position wie in der Lösung zu platzieren!

Aufgabenstellung

Entwickel eine Arduino-Schaltung, um einen Servomotor mit einem Potentiometer zu steuern.

  • Der Servomotor soll sich entsprechend der Potentiometerposition drehen.
  • Implementiere eine Funktion, die den Potentiometerwert erhält und den Servomotor entsprechend positioniert.
  • Teste die Schaltung, indem der Servomotor durch Drehen des Potentiometers in verschiedene Positionen gebracht wird.

⇒ Für den Fall, dass kein Arduino zur Verfügung steht, kann ein webbasierter Arduino Emulator verwendet werden. [klicken]

Benötigte Materialien

Tabelle 1: Materialliste
Nr. Anz. Beschreibung Bild
1 Funduino Arduino UNO R3
1 Typ 2
10 Jumper Kabel, männlich/männlich
1 Steckbrett
1 Potentiometer 10k
1 TowerPro SG90 Servomotor

Vorab wichtig zu wissen

Arduino Uno R3

Der Arduino besitzt unterschiedliche Schnittstellen, weil der Arduino ein digitaler Mikrocontroller ist, kann er nur  5 Volt ausgeben oder annehmen.

  • Deshalb wird für das Projekt 2 eine PWM Schnittstelle benötigt.
  • Die PWM Schnittstellen sind an diesem Zeichen (~) zu erkennen.
  • Das Zeichen ist auf dem Arduino bei den digitalen Zahlen zu finden (siehe Abbildung 3).

Servomotor Kabel

Abb. 2: Servo_Farben
Tabelle 2: Servomotor Farberkennung
Schwarz oder Braun Masse (GND)
Rot VCC/+ 5 V
Orange, Gelb oder Weiß PWM-Signal

Potentiometer

Ist ein elektronisches Bauteil, das den elektrischen Widerstand in einem Stromkreis verändern kann

  • Es besteht aus einem drehbaren Schleifer, der über einen Widerstand gleitet.
  • Durch Drehen des Schleifers kann der Widerstandswert des Potentiometers verändert werden.
  • Desto höher der Widerstand, desto niedriger der Strom.

Steckbrett

Erklärung zum Arbeiten mit einem Steckbrett [klicken]

Taster

Ein Taster verbindet den Stromkreis. Sobald er gedrückt wird, wird dieser unterbrochen, sobald man ihn loslässt.
Meistens ist eine kleine Feder eingebaut, die ihn wieder öffnet. !!!!!!!!!!!!!!!!!1

Aufbau Schaltung

Abb.3 Schaltung

In Abb. 3 wird die Schaltung für das Projekt "Servomotor mit einem Potentiometer steuern" dargestellt.
Bevor mit der Programmierung begonnen werden kann, muss die Schaltung des Projekts aufgebaut werden.

  • Beachte, dass die Kabel genau wie in Abbildung 3 verbunden werden müssen.
  • Achte auf die Vertikalen und Horizontalen Reihen!
  • Stecke das Potentiometer mit seinen 3 Beinchen in das Steckbrett.

Plus (+) und Minus (-) sind beim Anschließen des Potentiometers für das Projekt frei wählbar.

Programmierung

Benötigtes Programm!

Lade die aktuellste Version der Arduino IDE herunter. [klicken]
Beachte, die richtige Version für deinen PC auszuwählen (siehe Abbildung 4).

Abb. 4: ArduinoIDE



Erstellen der Arduino Datei

Starte das Programm Arduino IDE.
Sobald das Programm gestartet ist, öffne ein neues Projekt und speichere es anschließend.
Stelle sicher, dass dein Arduino über ein Kabel mit dem Computer verbunden ist.

  • Wichtig: Unter jeder Anleitung ist ein Beispiel vorhanden, das durch Klicken auf "Ausklappen" sichtbar wird.

⇒ Überprüfe, ob das richtige Board ausgewählt wurde.

⇒ Überprüfe, ob der richtige Port ausgewählt wurde.

  • Die Port Nummer ist für jede Schnittstelle anderes. Beachte den Namen, der in Klammern angegeben ist (Arduino Uno).

Wichtig für die Programmierung

Es ist wichtig, die Programmierrichtlinien beim Verfassen des Programmcodes zu beachten und einzuhalten.
[Programmierrichtlinien]

Die Grundkenntnisse dienen als Nachschlagewerk, um während der Programmierung einen Code zu überprüfen.
[Grundkenntnisse pulsierende LED] und [Grundkenntnisse Servomotor].


Start der Programmierung

Wichtig vorab:

  • Überprüfe die Lösungen sorgfältig und stelle sicher, dass dein Code genau wie im Beispiel angeordnet ist.
  • Beachte die Klammer vor, hinter oder nach jedem Wort. Diese sind sehr wichtig in der Programmierung.
  • Dein Code muss wie im Beispiel: Quelltext 1: Start.ino aussehen.

[Quelltext 1: Start.ino]

void setup()         
{  
                  
}
void loop() 
{ 

}

Bibliothek hinzufügen

Für das Projekt wird ein Servomotor verwendet, hierfür wird eine Bibliothek benötigt.

  • Diese wird über den Befehl #include <Servo.h> hinzugefügt.
  • Dieser Code wird immer nach ganz oben in dem Programm geschrieben.

[Quelltext 1: Servo.ino]


Initialisierung (Zuweisung)

Im nächsten Schritt werden alle erforderlichen Variablen in der Arduino IDE mit ihrem entsprechenden Namen und Datentyp versehen.
Um das Verständnis zu wiederholen, wird empfohlen, sich erneut mit den Grundkenntnissen der Initialisierung und Datentypen vertraut zu machen.

Es müssen 3 Variablen angelegt werden:

  • Für den verwendeten Motor: Servo Motor;
  • Speichern des Wertes vom Drehpotentiometers: unsigned int Regler_Wert;
  • Speichern der Position des Motors: unsigned int Position;
  • Schreibe den Code zwischen #include <Servo.h> und dem void setup(). Beachte, dass jedes Zeichen übernommen werden muss.

[Quelltext 2: Servo.ino]

Motor Pin zuweisen

In diesem Schritt wird dem Arduino mitgeteilt, über welche PWM Schnittstelle der Motor verbunden ist.

  • Dies kann mithilfe der Funktion Motor.atach(9); zugewiesen werden.
  • Bei Fragen zum Motor, siehe Grundkenntnisse Servo.h
  • Der Befehl wird ins void setup() geschrieben.

[Quelltext 3: Servo.ino]


Potentiometer Wert auslesen

Um den Motor mit dem Potentiometer steuern zu können, müssen seine Werte ausgelesen und in einer Variable gespeichert werden
(siehe Grundkenntnisse analogRead();).

  • Hierfür muss diese Funktion Regler_Wert = analogRead(A0); verwendet werden.
  • Auf diese Weise kann später mithilfe der Variable überprüft werden, ob das Potentiometer gedreht wurde.
  • Dieser Code wird in die Klammern vom void loop() geschrieben.

[Quelltext 4: Servo.ino]


Motor und Poti verbinden

Um mit dem Potentiometer den Motor drehen zu können, müssen ihre Werte sich aneinander anpassen.

  • Dies lässt sich mit der Funktion Position = map(Regler_Wert, 0, 1023, 0, 180); lösen.
  • Dieser Code wird unter dem Code Regler_Wert = analogRead(A0); geschrieben.
  • Wenn der Regler_Wert kleiner oder größer wird, passt sich die Postion an.

Zur genauen Erklärung der Funktion schaue in die Grundkenntnisse Funktionen map();

[Quelltext 5: Servo.ino]


Motor positionieren

Im letzten Schritt muss dem Motor seine gewünschte Postion übergeben werden.

  • Hierfür benötigt man den Code Motor.write(Position);
  • Write übergibt die in der Klammer festgelegten Werte zum Motor.
  • Siehe Grundkenntnisse write();

Schreibe den Code unter die Funktion Position = map(Regler_Wert, 0, 1023, 0, 180);.

[Quelltext 6: Servo.ino]

Musterlösung

Sollte der Code nicht ordnungsgemäß funktionieren, überprüfe ihn anhand der Musterlösung.

Quelle: Link



→ zurück zum Hauptartikel: BA: Arduino-Projekte für die Lehre