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

Aus HSHL Mechatronik
Zur Navigation springen Zur Suche springen
Keine Bearbeitungszusammenfassung
Zeile 103: Zeile 103:


Servo Motor;    // Bezeichnung des Motors
Servo Motor;    // Bezeichnung des Motors
int reglerWert_int;   // speichert den analogen Wert des Drehpotentiometers           
unsigned int Regler_Wert;   // speichert den analogen Wert des Drehpotentiometers           
int position_int;   // Position des Motors
unsigned int Position;   // Position des Motors


void setup()         
void setup()         
Zeile 129: Zeile 129:


Servo Motor;    // Bezeichnung des Motors
Servo Motor;    // Bezeichnung des Motors
int reglerWert_int;   // speichert den analogen Wert des Drehpotentiometers           
unsigned int Regler_Wert;   // speichert den analogen Wert des Drehpotentiometers           
int position_int;   // Position des Motors
unsigned int Position;   // Position des Motors


void setup()         
void setup()         
Zeile 155: Zeile 155:


Servo Motor;    // Bezeichnung des Motors
Servo Motor;    // Bezeichnung des Motors
int reglerWert_int;   // speichert den analogen Wert des Drehpotentiometers           
unsigned int Regler_Wert;   // speichert den analogen Wert des Drehpotentiometers           
int position_int;   // Position des Motors
unsigned int Position;   // Position des Motors


void setup()         
void setup()         
Zeile 165: Zeile 165:
void loop()  
void loop()  
{  
{  
int reglerWert_int = analogRead(A0);    //A0 Poti Schnittstelle
Regler_Wert = analogRead(A0);    //A0 Poti Schnittstelle
}
}
</syntaxhighlight>
</syntaxhighlight>
Zeile 184: Zeile 184:


Servo Motor;    // Bezeichnung des Motors
Servo Motor;    // Bezeichnung des Motors
int reglerWert_int;   // speichert den analogen Wert des Drehpotentiometers           
unsigned int Regler_Wert;   // speichert den analogen Wert des Drehpotentiometers           
int position_int;   // Position des Motors
unsigned int Position;   // Position des Motors


void setup()         
void setup()         
Zeile 195: Zeile 195:
void loop()
void loop()
{
{
int reglerWert_int = analogRead(A0);          //A0 Poti Schnittstelle
Regler_Wert = analogRead(A0);          //A0 Poti Schnittstelle
/*
/*
map -> Umwandlung des gelesenen Wertes
map -> Umwandlung des gelesenen Wertes
Zeile 201: Zeile 201:
auf 0 bis 180 (Drehung des Motors)
auf 0 bis 180 (Drehung des Motors)
*/
*/
position_int = map(reglerWert_int, 0, 1023, 0, 180);
Position = map(Regler_Wert, 0, 1023, 0, 180);
}
}
</syntaxhighlight>
</syntaxhighlight>
Zeile 218: Zeile 218:


Servo Motor;    // Bezeichnung des Motors
Servo Motor;    // Bezeichnung des Motors
int reglerWert_int;   // speichert den analogen Wert des Drehpotentiometers           
unsigned int Regler_Wert;   // speichert den analogen Wert des Drehpotentiometers           
int position_int;   // Position des Motors
unsigned int Position;   // Position des Motors


void setup()
void setup()
Zeile 227: Zeile 227:
void loop()
void loop()
{
{
int reglerWert_int = analogRead(A0);          //A0 Poti Schnittstelle
Regler_Wert = analogRead(A0);          //A0 Poti Schnittstelle
/*
/*
map -> Umwandlung des gelesenen Wertes
map -> Umwandlung des gelesenen Wertes
Zeile 233: Zeile 233:
auf 0 bis 180 (Drehung des Motors)
auf 0 bis 180 (Drehung des Motors)
*/
*/
position_int = map(reglerWert_int, 0, 1023, 0, 180);
Position = map(Regler_Wert, 0, 1023, 0, 180);


Motor.write(Position);  // Motor zur Position bewegen
Motor.write(Position);  // Motor zur Position bewegen
Zeile 266: Zeile 266:
void loop()
void loop()
{
{
int Regler_Wert = analogRead(A0);          //A0 Poti Schnittstelle
Regler_Wert = analogRead(A0);          //A0 Poti Schnittstelle
/*
/*
map -> Umwandlung des gelesenen Wertes
map -> Umwandlung des gelesenen Wertes

Version vom 15. Juli 2023, 09:33 Uhr

Abb. 1: Servomotor mit Potentiometer

Autor: Justin Frommberger

Aufgabenstellung

In diesem Projekt soll ein Servomotor mithilfe eines Arduinos und einem Potentiometer steuerbar sein.

Benötigte Software

Aktuellste Arduino IDE mit der Version für ihren PC. (Download link)

Benötigte Materialien

Tabelle 1: Materialliste

Nr. Anz. Beschreibung Bild Pos. Anz. Beschreibung Bild
1 Funduino Arduino UNO R3
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.
  • Darum wird für das Projekt 2 eine PWM Schnittstelle benötigt.
  • Die [PWM] Schnittstellen sind ganz einfach zu erkennen an diesem Zeichen (~)

Servomotor:

  • Schwarz oder Braun = Masse (GND)
  • Rot = + 5 V
  • Orange, Gelb oder Weiß = PWM-Signal

Potentiometer:
Das Potentiometer greift eine Eingangsspannung auf und gibt verschieden große Mengen davon an einen Schaltkreis weiter.
So kann später der Servomotor ein und ausgeschaltet werden, mit dem Potentiometer.

Steckbrett:
Erklärung zum Arbeiten mit einem Steckbrett (klicken!)

Taster:
Ein Taster schließt einen Stromkreis, wenn man ihn drückt, lässt man ihn, loswird der Stromkreis unterbrochen.
Meistens ist eine kleine Feder eingebaut, die ihn wieder öffnet.

Abb.2 Schaltung Poti

Aufbau Schaltung

  • In Abb. 3 wird die Schaltung für das Projekt "Servomotor mit einem Potentiometer steuern" dargestellt.

Programmierung

Schritt 1:
Erstellen der ersten Arduino Datei. (Link zum Tutorial)
Schritt 2:
Geringe Kenntnisse in den Programmierrichtlinien für die Erstellung von Software. (Link)
Grundkenntnisse vom Projekt Pulsierende LED verstanden haben. (Link)
Grundkenntnisse für das Projekt Servomotor mit einem Potentiometer steuern verstehen. (Link).

Schritt 3:
Nachdem die Schritte 1 und 2 abgeschlossen sind, kann mit der Programmierung des Projektes gestartet werden.

1) #include
Für das Projekt wird ein Servomotor verwendet, hierfür wird eine Bibliothek benötigt.
Diese wird über den Befehl #include <Name> hinzugefügt.

Quelltext 1: Servo.ino

2) Initialisierung
Der nächste Schritt ist, alle Variablen zu initialisieren, die später verwendet werden.
Es müssen 3 Variablen angelegt werden, für den Motor, Variable um den analogen Wert des Potentiometers zu speicher und eine Variable für die Position des Motors.

Quelltext 2: Servo.ino

3) attach()
In diesem Schritt soll dem Arduino mitgeteilt werden, mit welcher PWM Schnittstelle der Motor verbunden ist.
Dies kann man mit der Funktion Variable.atach(Schnittstelle); zugewiesen werden.

Quelltext 3: Servo.ino

4) analogRead()
Um den Motor mit dem Potentiometer steuern zu können, müssen seine Werte ausgelesen werden und in einer Variable gespeichert werden.
Dafür muss diese Funktion verwendet werden, int SpeicherVariable = analogRead(Schnittstelle);

Quelltext 4: Servo.ino

5) map()
Um mit dem Potentiometer den Motor drehen zu können, müssen ihre Werte sich aneinander anpasse.
Dies lässt sich mit der Funktion map(value, fromLow, fromHigh, toLow, toHigh); lösen.
Value ist der Vorgabewert, da mit dem Potentiometer der Motor gesteuert wird, braucht man hier den Wert von der Poti Schnittstelle. In den anderen Spalten werden die minimalen und maximalen Werte der Hardware eingetragen (siehe Grundkenntnisse).

Quelltext 5: Servo.ino

5) write()
Der letzte Schritt, damit der Motor sich bewegt und die Postion erhält ist Motor.write(Variable);<brb> Write übertragt die in der Klammer festgelegten Werte zum Motor.

Quelltext 6: Servo.ino

Schritt 4

  • Nach dem Beenden von Schritt 3, kann nun das Ergebnis mit der Musterlösung verglichen werden.

Musterlösung

Quelle: Link



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