Archiv der Kategorie: Autonome Roboter

Raspberry PI 3 + Motorsteuerung

Ziel ist es mit dem Raspberry PI 3 unter Zuhilfenahme einer Motorbrücke, 2 Gleichstrommotoren zu betreiben.

Dies soll später genutzt werden um einen zweirädrigen Roboter anzutreiben.


Hardware

PI3 (oder älter bitte auf die richtigen Pins achten)
Motorbrücke L9110s
2x DC Motor
Diverse Kabel ( Vorgefertigte Pin-Header Kabel)


Testaufbau

GPIOs am Raspberry

  • Motor1 Richtung GPIO 26
  • Motor1 Geschwindigkeit GPIO 1
  • Motor2 Richtung GPIO 24
  • Motor3 Geschwindigkeit GPIO 23

(Die GPIOs gelten nur in Verbindung mit pi4j und wirePi)

Plan


Software

Entwicklungsumgebung

Als Entwicklungsumgebung verwende ich BlueJ auf dem PI selbst. Hiermit habe ich vier Klassen erstellt. Diese werden im folgenden Abschnitt kurz erklärt.


Code

Da ich anfänglich ein paar Probleme hatte und die Motorbrücke nicht wie erwartet reagierte, habe ich mich langsam an das Thema herangetastet.

Digitale Ansteuerung

Zuerst habe ich eine kleine Testklasse geschrieben, welche die Motoren digital ansteuert. Hiermit konnte ich die richtige Verkabelung sicherstellen. Mit diesem Test ist noch keine Geschwindigkeitsregulierung möglich.

[gistpen id=“197″]

PWM Ansteuerung

Als nächstes habe ich eine Testklasse erstellt, die den Hardware PWM benutzt und ebenfalls die Richtungen wechselt.

[gistpen id=“205″]

Funktionalität in Klasse gepackt

Als letzten Schritt habe ich eine Klasse Drive zur Steuerung beider Motoren und die dazu gehörende Testklasse erstellt.

Drive Klasse

Klasse zur Steuerung der zwei Motoren.

[gistpen id=“207″]

Test-Drive Klasse

Klasse zum Testen der Motoren. Diese testet, wie auch im vorhergehenden Beispiel,  unterschiedliche Geschwindigkeiten und Richtungen.

[gistpen id=“209″]

 


Tips

Motoren drehen nicht in die richtige Richtung

Sollten die Motoren nicht in die richtige Richtung drehen, einfach die polarität am Anschluss an der Motorbücke vertauchen bis es passt. Sollte das nicht möglich sein, die Methoden forwardLeft/Right() und backwardLeft/Right() entsprechend anpassen.

Raspberry rebooted bei Aktivierung/Betrieb der Motoren

Sollte beim Einschalten/Betrieb der Motoren der Raspberry neu booten, kann dies am hohen Stromverbrauch der Motoren liegen. Dann sollte man überlegen die Motoren entweder über eine zusätzliche Spannungsquelle zu versorgen oder zumindest die Motoren mit einer Spule zu entstören. Condensatoren können zusätzlich Spannungspitzen abfangen.

Mehr zur Entstörung:

http://www.bnhof.de/~ho1645/entstoer.htm
https://www.mikrocontroller.net/articles/Motoransteuerung_mit_PWM

Schaltung mit zusätzlicher Spannungsquelle:

Hier wird der L9110 mit einem LiPo versorgt, wichtig ist es die Masse des Lipo mit der des Raspberries zu verbinden, sonst funktioniert es nicht. Der Lipo sollte im Bereich 3.7v und < 12V liegen (Beschränkung des L9910).

 


Quellen

Beispiel auf GitHub
PI4j Webseite
PWM + Motoren allgemein beim RoboterNetz

Einige andere Webseiten waren auch noch nützlich, einfach mal Google bemühen.


Anhang

Pin-Belegung

http://www.pi4j.com

Autonomer Roboter – Projektstart

Ich habe das Internet durchforstet und nette kleine Projekte mit fahrenden und teils autonomen Roboter gesichtet. Da ich in der Vergangenheit schon einige Erfahrung mit Atmel, Arduino und ESP8266 gesammelte, habe ich nun den Entschluss gefasst mein eigenes Roboter „Projekt“ auf die Beine zu stellen. Es geht mir hierbei nicht darum das Rad neu zu erfinden, sondern viel mehr zu schauen welche Anforderungen solch ein Projekt hat und wie es sich umsetzen lässt.

Die Posts hier werden sich mit der Zeit entwickeln, ich werde versuchen nicht all zu unvollständige Beiträge zu veröffentlichen damit die jeweiligen Einheiten in sich abgeschlossen und verständlich sind.

Anforderungen

Autonomer Roboter – Anforderungen

Die Anforderungen an solch ein Projekt sind eher beliebig da kein besonderer Zweck vorliegt. Somit werde ich  hier einfach ein paar Annahmen treffen und damit die eigentliche Funktionalität festlegen.

Grundlegend sehe ich hier 2 Komponenten den Roboter und ein zentrales übergeordnetes System.

Roboter

Mein Roboter soll:

Hard Skills

  • vor- und rückwärts fahren und die die Richtung ändern können.
  • Hindernisse erkennen können.
  • Seine Bewegung und Orientierung messen können.
  • Mit einem übergeordneten System drahtlos kommunizieren können.

Soft Skills

  • die Möglichkeit haben autonom zu fahren und Hindernissen automatisch auszuweichen.
  • auch fern/fremd gesteuert fahren können.
  • ein „Selbsttest durchführen können“.
  • eine Kalibrierung falls notwendig durchführen können.
  • Nachrichten mit einem übergeordneten System austauschen können.

Übergeordnetes System

Soll folgende Funktionalitäten aufweisen:

  • Kommunikations mit mehreren Robotern.
  • Einzelne oder mehrere Roboter gleichzeitig  (fern) steuern können.
  • Die Kalibrierung etwaiger Sensoren unterstützen.
  • Roboter in geeigneter Form visualisieren.
  • Roboter Software updaten
  • Auswertungen anzeigen (Wobei hier noch nicht klar ist welche das sein sollen)

Dies sind die, hoffentlich genügend schwammig formulierten, Grundanforderungen an mein System. Weitere Anforderungen werden sicherlich noch folgen.