Alle Beiträge von sfambach

Motorbrücke L9110s

Hier ein paar Informationen über die Motorbrücke L9110s. Ich habe ein Modul mit zwei dieser Treiber im Einsatz. Ein Hauptvorteil dieses Moduls ist der geringe Preis. Ein Nachteil ist die geringe Stromabgabe die ihn für größere Motoren unbrauchbar macht.

Zur Steuerung der Motoren sind jeweils zwei Pins pro Motor nötig.

Pinbelegung

Laut dateblatt ist die Beschaltung wie folgt:

Vorwärts:

Pin1 – PWM-Signal für die Geschwindigkeit
Pin2 – Auf Masse

Rückwärts:

Pin1 – Auf Massse
Pin2 – PWM-Signal für die Geschwindigkeit

! Die Beschaltung wie bei Anderen Motorbrücken z.B. L293 .. :

Pin1 – gibt die Geschwindigkeit mit Hilfe einen PWM Signals vor
Pin2 – gibt die Richtung mit digital High/Low vor.

Hat mit diesem Modul nicht funktioniert.

Es gibt jedoch einen Trick um trotzdem nur 2 PWM Pins verwenden zu können:

Vorwärts:

Pin1 – PWM-Signal für die Geschwindigkeit
Pin2 – Auf Masse

Rückwärts:

Pin1 – PWM-Max – PWM-Signal für die Geschwindigkeit
Pin2 – Auf VCC.

PWM-Max ist hierbei der maximale Wert bei dem Der PWM über die komplette Periodendauer auf High ist. Beispiel PWM von 0-255. dann ist PWM-Max = 255.

Technische Daten

BeschreibungWert
Anz. Motor2
TreibershipL9110s
VCCmin2,5V
VCCmax12V
Imax0,8A
Größe2,8 cm x 2,1 cm
Preis~ 0,60€

Beschaltung des Modules

Laut Datenblatt

Vorwärts

A-1A – PWM signal gibt die Geschwindigkeit an
A-1B – auf Masse

B1A – PWM signal gibt die Geschwindigkeit an
B1B- auf Masse

Rückwärts

A-1A – auf Masse
A-1B – PWM signal gibt die Geschwindigkeit an

B1A – auf Masse
B1B- PWM signal gibt die Geschwindigkeit an

Links? drehen

A-1A – PWM signal gibt die Geschwindigkeit an
A-1B – auf Masse

B1A – auf Masse
B1B- PWM signal gibt die Geschwindigkeit an

Rechts? Drehen

A-1A – auf Masse
A-1B – PWM signal gibt die Geschwindigkeit an

B1A – PWM signal gibt die Geschwindigkeit an
B1B – auf Masse

Schaltung mit nur 2 PWMs

PWM-Max = 1000

Vorwärts

A-1A – PWM Signal gibt die Geschwindigkeit an
A-1B – auf Masse

B1A – PWM Signal gibt die Geschwindigkeit an
B1B- auf Masse

Rückwärts

A-1A – 1000 – PWM Signal gibt die Geschwindigkeit an
A-1B – auf Vcc

B1A – 1000 PWM Signal gibt die Geschwindigkeit an
B1B- auf Vcc

Links? drehen

A-1A – PWM Signal gibt die Geschwindigkeit an
A-1B – auf Masse

B1A – 1000 – PWM Signal gibt die Geschwindigkeit an
B1B – auf Vcc

Rechts? Drehen

A-1A – 1000 – PWM Signal gibt die Geschwindigkeit an
A-1B – auf Vcc

B1A – PWM Signal gibt die Geschwindigkeit an
B1B – auf Masse

Quellen

Datenblatt l9110
Datenblatt Platine

Mit dem Raspberry PI 3 den Entfernungsmesser US-100 ansteuern

Ansteuerung eines Ultraschall-Entfernungsmessers US-100 mit dem Raspberry PI3 ( oder früher). Ich habe nur Tutorials für den SR-04 gefunden, dieser wird allerdings analog zum US-100 eingebunden.


Hardware

PI3 (oder älter bitte auf die richtigen Pins achten)
US-100 ( Ultraschallsensor)
Brot-Board (zum leichteren Aufbau)
Diverse Kabel ( Vorgefertigte Pin-Header Kabel)


Aufbau

Der US-100 arbeitet mit 3.3V womit man ihn direkt am Raspberry betreiben kann.

Verdrahtung

  • Trigger Pin am GPIO 28
  • Echo Pin an den GPIO 25

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

 


Software

Entwicklungsumgebung

Als Entwicklungsumgebung verwende ich BlueJ auf dem PI selbst. Hiermit habe ich zwei Klassen erstellt.


Code

Distance-Klasse

Klasse zur Steuerung des US-015, mit den Methoden

  • getDistanceMM – Entfernung in Millimetern
  • getDistanceCM – Entfernung in Zentimetern

[gistpen id=“156″]

Test-Klasse

Klasse mit Main-Methode zum Testen der Distance-Klasse. In der Main-Methode wird alle 5 Sekunde ein neuer Wert vom Sensor abgefragt und auf die Console geschrieben.

[gistpen id=“158″]

Tips

Bei größerer Beanspruchung des PI ist zu beachten, dass Java die zeitlichen Abfolgen nicht garantiert. Somit kann es zu verfälschten oder keinen Ergebnissen bei der Messung kommen.

Quellen

https://www.modmypi.com/blog/hc-sr04-ultrasonic-range-sensor-on-the-raspberry-pi

http://t1m0b0t.blogspot.de/2014/04/using-ultrasonic-range-sensor-on.html

http://www.lediouris.net/RaspberryPI/HC-SR04/readme.htmlhttps://github.com/OlivierLD/raspberry-pi4j-samples/tree/master/RangeSensor

http://pi4j.com/pins/model-3b-rev1.html

Interfacing HC-SR04 Ultrasonic Sensor with Raspberry Pi

 

Entfernung messen mit Ultraschallsensor HC-SR04 – Raspberry Pi

Anhang

Pin-Belegung

 

Raspberry PI 3 LED ansteuern

Hier der erste Versuch eine LED mit dem Raspberry PI 3 anzusteuern. Aufgebaut wird das Ganze auf einem Brotboard mit Freiluft-Verkabelung.


Hardware

PI3 (oder älter bitte auf die richtigen Pins achten)
LED (Ich habe ne grüne Standard-Led 1,5V)
220 Ohm (Vorwiderstand für die LED)
Brot-Board (zum leichteren Aufbau)
Diverse Kabel ( Vorgefertigte Pin-Header Kabel)


Aufbau

Schaltplan

Verdrahtung


Software

Entwicklungsumgebung

Als Entwicklungsumgebung habe ich zum ersten mal BlueJ auf dem PI verwendet. Mir gefällt daran, dass man hier mit Klassendiagrammen erst einmal die Struktur definiert und im nächsten Schritt mit dem gleichen Tool die Implementierung realisieren kann.

Ein weiterer Vorteil bietet die Testumgebung. Es ist möglich Instanzen von Klassen per Knopfdruck zu erstellen und deren Methoden mit ein paar Klicks zu testen.


Code

LED-Klasse

Klasse zur Steuerung einer LED mit den Methoden On, Off und Toggle.

[gistpen id=“110″]

Der Try/Catch Block im Konstruktor ist dem Umstand geschuldet, dass meine ersten Tests auch mal schief gingen und dann die GPIOs nicht frei gegeben wurden.
Die Freigabe mache ich aktuell wenig elegant im Konstruktor. Schöner wäre vorher abzufragen ob der Pin schon initialisiert wurde und dann entsprechend weiter zu machen.

Test-Klasse

Klasse mit Main-Methode zum Testen der LED Klasse. In der Main-Methode ist eine Endlosschleife, welche die LED in einem Intervall von 2 Sekunden an und wieder aus schaltet.

[gistpen id=“114″]

Tips

Starten des Programms als Root

Die GPIOs müssen als Root angesprochen werden. Im BlueJ gibt es in den Einstellungen einen Button aber dieser scheint nicht richtig initialisiert zu sein. Diesen einfach nochmal rausnehmen und wieder setzten, die Einstellungen speichern, dann sollte es gehen.

Fehlende pi4j Klassen

Wenn es beim compilieren Probleme mit fehlen pi4j Klassen gibt muss das entsprechende Paket installiert werden. (Hier gibt es Hilfe)

LED geht nicht an

Die LED geht einfach nicht an, evtl. mal mit GPIO auf der Console testen. Vielleicht stimmt die Verdrahtung nicht,  es fehlen Einstellungen oder die Pinbelegung stimmt nicht (Hier gibt es Hilfe dazu)

Quellen

http://pi4j.com/example/control.html

Raspberry Pi 2 – mit Java die GPIO ausreizen

 

US-100

Der US-100 ist ein Ultraschall-Enfernungsmesser mit einer Versorgungsspannung von 3V – 5V.  Er kann somit direkt an modernen Microcontrollern mit 3.3V Versorgungspannung betrieben werden.

Allgemein

Technische Daten

BeschreibungWert
Messung [mm]20 - 3500
Winkel [Grad]15
Genauigkeit [mm]3
Spannung [V]3-5
Strom [mA]2

Technische Daten US-100

Pin-Belegung

  1.  Versorgungsspannung 3-5V
  2. Trigger (Auslöser)
  3. Echo („Empfänger“)
  4. Masse
  5. Masse

Besonderheiten

Der US-100 kann in zwei Modi betrieben werden

  1. Im seriellen modus, Jumper auf der Rückseite ist gesetzt.
  2. Entfernungsmessung per Puls, der Jumper auf der Rückseite ist nicht gesetzt.
Serieller Modus

Hier wird der Trigger-Pin dan den TX port der UART-Schnittstelle (Serielle Schnittstelle) und der Echo-Pin an den RX-Port der UART-Schnittstelle angeschlossen.

Um den serielle port mit einem Microcontroller auslesen zu können muss dieser auf 9600 boud, 8 Datenbits, keine Parität und 1 Stopbit eingestellt werden.

Um die Messung zu starten muss ein einzelnes Byte 0x55 über den seriellen Port an den US-100 gesendet werden. Dananch kann die Enfernung mit 2 Bytes gelesen werden (High und Low byte). Um die Entfernung in Millimeter zu berechnen kann die folgenden Formel vewendet werden.

EntfernungInMM = ErstesByte * 256 + ZweitesByte

Durch senden eine Byte 0x50 kann zusätlich die Temperatur abgefragt werden. Die Anwort ist in diesem Fall 1 Byte lang und die Tempatur kann wie folgt berechnet werden

Temperatur °C  = GelesenesByste – 45

Pulsmessung

Hierfür müssenen der Trigger Pin und der Echo pin mit zwei digitalen Pins des Mircocontrollers verbunden werden.

Um die Entfernung abzufragen muss muss der Trigger für mindestens 50 micorsekunden auf low gesetzt werden.

Danach wird der Echo-Pin auf High gesetzt bis das Ultraschallsignal zum Hinderniss und wieder zurück gereist ist. Durch die Messung der Zeit kann die Entfernung mit der folgenden Formel errechnet werden.

Entfernung [cm] = Reisedauer [ms] / 58,2

Quellen

Datenblatt

SR-04

Der SR-04 ist einer der weit verbreitetsten Entfernungssensoren und dementsprechend günstig.

Allgemein

Technische Daten

BeschreibungWert
Messung [mm]20 - 4000
Winkel [Grad]15
Genauigkeit [mm]3
Spannung [V]5
Strom [mA]<2

Technische Daten SR-04

Pin-Belegung

  1.  Versorgungsspannung 5V
  2. Trigger (Auslöser)
  3. Echo („Empfänger“)
  4. Masse

Quellen

Datenblatt

Guter Einführung in den SR04

Super Einführungsvideo in englisch (eher technisch)

US-015

Der US-015 ist eine Ultraschall Entfernungsmesser, er kann Reichweiten bis zu 7m messen und ist gering im Stromverbrauch.

Allgemein

 

Technische Daten

BeschreibungWert
Messung [mm]20 - 7000
Winkel [Grad]15
Genauigkeit [mm]3
Spannung [V]5
Strom [mA]2

Technische Daten US-015

Pin-Belegung

  1.  Versorgungsspannung 5V
  2. Trigger (Auslöser)
  3. Echo („Empfänger“)
  4. Masse

Quellen

Tech Blog

Sensoren zur Entfernungsmessung

Hier sollen einige Sensoren zur Entfernungsmessung gezeigt werden. Die Aufstellung erhebt keinen Anspruch auf Vollständigkeit. Es werden nur die Sensoren beschrieben, die ich in meinen Projekten gerade verwende.


Ultraschallsensoren

Ultraschallsensoren senden einen Schallimpuls aus und warten dann auf eine Reflektion des Impulses durch ein Hinderniss. Trifft der Impuls nicht auf ein Hinderniss, wird er auch nicht zurück geworfen und der Sensor läuft auf eine Timeout. Dies ist bei der Verwendung dieser Sensoren zu berücksitigen.

SR-04 – Ultraschall Entfernungsmesser

US-015 Ultraschall Entfernungsmesser

US-100

 

 IR-Sensoren

Gegenüberstellung

SensornameEntfernung [mm]Genauigkeit [mm]Winkel [Grad]Spannung [V]Strom [mA]
US-01520 - 7000 3 155<2mA
SR-0420 - 40003155<2mA
US-10020 - 35003153-5<2mA

 

 

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.