Archiv der Kategorie: Roboter Hardware

Sensor KY-018 Photowiderstand

Das Board KY-018 ist mit einem Licht abhängiger Widerstand und einen Vorwiderstand bestückt.

Daten

Spannung: 3V-5V
Ausgang: analoger Spannungswert

Ich vermute das hier ein GL5528  verbaut wurde.

Ansicht

 

(Front/Rückansicht)

 

 

Beschaltung

Masse
+ V+ (3V-5V)
S Signal

3 G V S.png

Funktionsweise

Verändert sich die Lichtstärke die auf den Sensor trifft, verändert dieser seinen Widerstand. Dies ist am Signalausgang als analoge Größe messbar.

Anwendungsgebiete

Das Sensorboard kann zur Messung der Herzfrequenz, als  Optokoppler oder einfache als Lichtschranke verwendet werden.

Versuchsaufbau

Testprogramm

Hier ein kleines Testprogramm welches den analogen Port 0 ausliest. Hierbei ist zu beachten, dass die Ausgabe invertiert ist (wenig Licht hoher Wert).

void setup() {
  Serial.begin(115200);
  pinMode(A0, INPUT);
}
void loop() {
  int LDR = analogRead(A0);
  Serial.println(LDR);
}

Ausgabe

Bibliotheken

Arduino Bibliothek

Quellen

http://sensorkit.joy-it.net/index.php?title=KY-018_Fotowiderstand_Modul

https://github.com/rdiot/rdiot-s002

http://home.roboticlab.eu/de/examples/sensor/photoresistor

Datenblatt zum GL5528

Datenblatt zur GL55 Serie

Arduino Bibliothek

Gut erklärte Lux berechnung (eng)

MQTT Protokoll + Versuchsaufbau

Ich bin im Netz auf den Begriff MQTT gestossen und fand den Ansatz dahinter richtig gut. Deshalb habe ich mir mal einen kleinen Versuchsaufbau gegönnt, den ich im folgenden beschieben habe.

Vorab ein paar Details zu MQTT

Infos zu MQTT

Allgemeines

MQTT regelt die Kommunikation zwischen Datenquellen und Datensenken mittels eines Brokers.

Datenquelle

Quellen für Daten können ganz unterschiedliche Geräte sein, eines haben sie jedoch alle gemeinsam, sie können Netzwerkverbindungen aufbauen um Ihre Daten weiter zu geben und sie haben was, was sie mitteilen wollen.

In der IoT können dies Sensor-Knoten sein, welche ihre Daten an einen oder mehrere Empfänger senden wollen.  Die Liste der möglichen Daten ist hierbei nahe unendlich. Beispiele sind Temperaturwerte, Schaltzustände,  Helligkeitswerte usw.

Die Quelle meldet sich an einem (oder mehreren Brokern?) an. Ihre Daten sendet sie so lange bis diese vom Broker quittiert wurden.

Datensenken (Interessenten)

Senken für Daten sind bei MQTT die sog. Interessenten. Diese möchten bestimmte Informationen von Quellen erhalten und diese dann Auswerten (Berechnung) oder einfach nur Präsentieren (Bildschirmanzeige). Beispiele sind Handy Apps, eine Lampe die wissen will wann sie eingeschaltet wird usw.

Broker

Der Broker dient als Bindeglied zwischen den Quellen und den Senken. Er hat die Aufgabe, Daten von Quellen zu sammeln und diese an die Interessenten weiter zu reichen.  Eine Auswertung/ Aufbereitung der Daten ist ihm nicht gestattet, jedoch darf er die Daten zwischenspeichern, um zum Beispiel neuen Interessenten mit dem zuletzt empfangenen oder auch mit historischen Werten zu versorgen.

Die Idee hinter dem Protokoll ist, dass Leistungsschwache Sensorknoten nur eine Verbindung mit einem Broker (Empfänger Server) aufbauen und nur an diesen senden sie ihre Daten. Der leistungstärkere Broker verteilt die Informationen dann an die Interessenten.

Ein kleines Projekt

Ich habe ein kleines Projekt aufgesetzt, mit einem Sensorknoten als Quelle, einem Broker auf einem Raspberry Pi und meinem Handy als Senke.

Quelle

  • Board Node MCU ESP8266
  • Temperatursensor DHT11
  • Bibliothek pubsubclient

Der genaue Aufbau ist in einem anderen Beitrag bereits beschrieben, weshalb ich mich hier nur auf die MQTT basierten Fakten stürze.

http://fambach.net/dht10-mit-esp8266/

Die Bibliothek installieren:

Hier ist der nach MQTT angepasste Quellcode:

ESP8266TempSensorMQTT

Bitte die Netzwerkdaten und die Brokerdaten an eure Topologie anpassen. Achtung der DHT Sensor benötigt auch eine Bibliothek wie im gelinkten Beitrag beschrieben.

Broker

Raspberry nach belieben aufsetzten oder so wie hier:

http://fambach.net/raspberry-pi-zero-w-headless-installation/

Auf dem Pi dann die Mosquitto software installieren.

Software Download

Link: http://mosquitto.org/download

Die letzte Version holen, der Link kann von der obigen Seite kopiert werden. Die aktuelle Version kann mit wget direkt auf den PI geholt werden:

sudo wget <direkter link zum paket>

in meinem Fall war das

sudo wget http://mosquitto.org/files/source/mosquitto-1.5.tar.gz

Installation

Benötigte libs installieren mit

sudo apt-get install libwrap0-dev libcurl4-openssl-dev libmysqlclient-dev libssl-dev apt-get install uuid-dev 

Paket auspacken:

tar zxf ./mosquitto-1.5.tar.gz

In den ausgepackten Ordner springen und mosquitto …

cd mosquitto-1.5/

… bauen und Installieren …

make
sudo make install
sudo ldconfig

… noch starten

Den ESP8266 starten und die erste Verbindung sollte klappen:

Senke

Ich verwende mein Handy als Senke und einen MQTT Empfänger APP. Ich habe ein paar probiert, bin dann aber erstmal mal bei „IoT MQTT Panel“ hängen geblieben, weil sie auf Anhieb funtkionierte und auch Platzhalter unterstüzt.

Hier der Link

Folgende Einstellungen habe ich vorgenommen, ihr müsst diese natürlich an eure Applikation und Netzwerktopoligie anpassen.

Erstmal eine neue Verbindung erstellen mit den Verbindungsdaten des Mosquitto Servers.

Die Neue Verbindung öffnen

Fazit

Solch ein MQTT Projekt ist in wenigen Stunden aufgebaut und macht Spaß. Dabei hat es noch großes Potential, denn man kann leicht mehrere Knoten mit einem standard Server verbinden und sich die Daten z.B. auf dem Handy anzeigen lassen.

Quellen

https://de.wikipedia.org/wiki/MQTT

Java Client Phao

MQTT Git-hub Community Wiki
https://github.com/mqtt/mqtt.github.io/wiki

Github Seite mit MQTT libs
https://github.com/mqtt/mqtt.github.io/wiki/libraries

Lib für ESP8266 und Andere
https://github.com/knolleary/pubsubclient

Mosquitto Broker Konfigurationhilfe

Quick Guide to The Mosquitto.conf File With Examples

MQTT best practice

MQTT Essentials Part 5: MQTT Topics & Best Practices

 

NodeMCU V2 Motorplatine

Für den NodeMCU V2 gibt es ein Erweiterungsplatine mit Motortreiber. Mit ihr können zwei kleine Motoren (bis 1,2 Ampere) über eine Motorbrücke L293DD angesteuert werden.  Auch der Anschluss eines Schrittmotors ist möglich.

Sie bietet weiterhin zwei getrennte Anschlüsse für die Stromversorgung der Platine und die der Motoren. Die meisten Pins des ESP sind mit einem zusätzlichen Masse/Strom Pin herausgeführt, was den Anschluss von Peripherie erleichtert.

Die Pins D1, D2, D3, and D4 sind von der Motorbrücke belegt.

Daten

Stromversorgung: 4,5V bis 9 V
Motorspannung: 4,5V – 36V
Maximaler Motor Strom: 1,2 A

Ansicht

Frontansicht

Rückansicht

Anschlüsse

Pin-Belegung

Mit den Pins D1 -D4 können die Motoren angesteuert werden weitere Belegungen können der Tabelle unten entnommen werden.

Programmierung

Der Versuchsaufbau gestaltet sich simpel. Den ESP8266 aufs Board stecken, zwei Motoren an die entsprechenden Kontakte anschliessen und das Beispielprogramm unten, auf den ESP laden.

Bibliothek

… habe nach kurzer Suche keine gefunden, für jeden Tip bin ich dankbar.

Eigenes Testprogramm

Hier ein simpler Test. Er lässt beide Mortoren vorwärts drehen, rückwärts drehen und stoppen.

ESP8266MCUV2Motorplatine

Eigene Lib

Werde mir wohl in naher Zukunft mal eine Klasse schreiben, welche alle Funktionen kapselt.

 

Quellen

https://cdn.hackaday.io/files/8856378895104/user-mannual-for-esp-12e-motor-shield.pdf

http://www.instructables.com/id/Motorize-IoT-With-ESP8266/

ESP8266: NodeMCU Motor Shield Review

SSD1306 Monochrom OLED 128×64 I2C

Ich habe mir zwei fast baugleiche 128×64 Displays gekauft um diese zu testen. Diese werden über den Wire (I2C) Bus angesteuert. Es gibt aber auch Varianten für den SPI Bus, die hier aber nicht behandelt werden.

Die beiden Displays haben auf den ersten Blick nur zwei offensichtliche Unterschiede. Erstens sie haben unterschiedlich große Bohrlöcher und zweitens bei ihnen ist VCC und GND vertauscht. Also aufpassen beim anschliessen eines ähnlichen displays, sonst raucht’s.
Als ich sie das erstes Mal leuchteten sah, fiel mir noch auf, dass das eine Display blaue Schrift hat und das andere weiße. Wenn man den schnellen Ali fragt, findet man noch weitere Variationen.

Versuchsaufbau

Zuerst habe ich mal einen Testaufbau mit einem NodeMCU V3 gesteckt. Die Spannungsversorgung hole ich mir vom Node. Die Kommunikation habe ich an die Pins D5 und D6 angeschlossen. Die Schaltung sieht wie folgt aus:

Bibliothek

Da ich andere Pins für den Wirebus verwende als die standard Arduino und ich feststellen musste, dass in der entsprechenden Adaruit Libray zum einen der Wirebus hardcodiert ist und zum anderen diese für Displays mit Resetanschluss gedacht ist. Habe ich mich, ohne weiter zu forschen für die ThingPulse Biliothek entschieden. Diese kann entweder über GIT herunter geladen werden oder über den LibraryManager in der Arduino Gui installiert werden.

Nach SSD suchen und die von Daniel Eichorn auswählen.

Programmierung

Beispielprogram

Als Testprogramm nutze ich mir die Uhr aus dem Beispielen.

Noch die richigen Pins eingetragen, hier ist der Code:

ESP8266_SSD1306ClockDemo

Kompiliert und den ESP programmiert und so sah es aus.

Die Genaue Uhr

Damit die Uhr auch stimmt habe ich kurzer Hand nocht die NTP Server abfrage eingebaut.

ESP8266_SSD1306ClockDemoNTP

ein Bild erübrigt sich, da sich hieran nichts geändert hat.

Nachtrag 27.06.2018: Ich habe einige fertige NTP Clients gefunden, ihre Verwendung ist wahrscheinlich leichter als als meine kleinst Entwicklung aus zusammen gestückelten Quellen.

https://github.com/aharshac/EasyNTPClient

https://github.com/gmag11/NtpClient

Weitere Projekte

NodeMCU V3 mit Oled Display aufmotzen

Quellen

 

 

NodeMCU V3 mit Oled Display aufmotzen

Ich hatte noch zwei Oled display von einem Test da, und überlegt was ich damit machen könnte.

Da ich in letzter Zeit mit Knoten mit integriertem Display experimentiert habe. Hatte ich vor meine alten ESP8266 NodeMCU  V3 etwas zu pimpen.

Den Weg hierzu möchte ich hier kurz umreissen, bei Fragen nicht zögern und einen Kommentar einstellen.

Display Umbau

Die Pins der Displays habe ich ausgelötet und durch Kabel ersetzt. Dies ging leider nicht ohne kleinere Kerben.

Befestigung auf dem ESP

Das Display wollte ich per Abstandshalter direkt auf dem NodeMCU befestigen. Leider stimmten die Lochabstände nicht ganz und so habe ich sie geschraublötet.

Verbindung zum Node

Die Kabel des Displays habe ich auf der rechten Seite an die Pins 3V, G , D5, D6 gelötet (Siehe auch vorheriges Bilde). Bei der Gelegenheit habe ich auchg gleich noch ein Anschlusskabel für einen LIPO Akku angelötet. Den LIPO kann man zwar auch direkt auf die Pins des Knotens stecken, aber man muss immer auf die Polung achten. Ausserdem kann man dann den Knoten nicht mehr gerade hin legen.

Ergebnis

Hier die beiden Knoten im Vergleich, auch gut zu sehen die getauschten Anschlüsse der Spannungsversorgung.

Da einer der beiden Knoten kaputt gegangen ist. (Eines meiner Kinder hat ihn von der Couch geworfen…) Habe ich noch eine Horizontale Variante, mit dem wieder frei gewordenen Display, erstellt. Der Vorteil dieser Variante ist, dass so die Löcher am Display genau mit denen des NodeMCU übereinstimmen. Die Rückseite des Displays und den ESP8266 habe ich vorher mit Klebeband isoliert, da ich annehme, dass nicht der Sturz von der Couch sondern eher ein Kurzschluss, der damit einherging den alten Node in die ewigen Jagtgründe geschickt hat.

Programmierung

Die Programmierung des Knotens, kann dem Vorgängerprojekt entnommen werden.

SSD1306 Monochrom OLED 128×64 I2C

Fazit

Ich habe jetzt zwei ESP8266 MCU Nodes V3 mit Display 😉

Zwei kleinere Displays warten noch darau auf einen Knoten geschraublötet zu werden. Der Beitrag hierzu folgt demnächst. Wobei ich mir noch nicht ganz einig bin ob ich hierfür den MCU Node V3 oder den kleineren V2 nehme.

GY-302 mit Sensor BH1750

Der BH1750 ist ein Sensor zur Lichtstärkenmessung. Ich verwende den Sensor nicht diskret sondern auf dem Board GY-302. Es wird über den I2c (Wire) Bus angesteuert. Da das GY-302 Board mit 5V betrieben wird, ist es zur Ansteuerung über den Ardunio Uno geeignet.

Ansicht

 

Daten

NameGY-302 mit Sensor BH1750
SensortypLuxmeter (Lichtstärkemessung)
Betriebsspannung5V
Sensorspannung 1,8-3,6V
BusI2c ( 0x23 / 0x5C )
Genauigkeit1 Lux
Messbereiche1 - 65535 Lux

Schaltung

Die Schaltung ist ähnlich (siehe Skizze) wie bei anderen GY Boards. Das GY-302 bietet zusätzlich die Möglichkeit zwischen zwei Bus-Adressen zu wählen. Dies ermöglicht es 2 Chips der gleichen Art am selben Bus zu betreiben. Standardeinstellung ist Masse oder einfach unbeschaltet lassen.

 

Anschluss

GND Masse
ADDR I2c Adresse Masse = 0x23 / + 5v = 0x5C
SDA I2C SDA
SCL I2C SCL
VCC 5 V

Einsatzzwecke

  • Steuerung von Jalousien oder Rollos
  • Findung der hellsten Stelle
  • Lichtmessung im Büro
  • Zeitsteuerung nach Sonnenauf/untergang

Programmierung

Bibliothek

Im Github gibts eine Bibliothek, welche den Sensor ansteuern kann.
Diese habe ich für meine Tests verwendet. Der Eintrag im Git hat auch eine detaillierte Beschreibung zu Verkabelung und Verwendung.

https://github.com/claws/BH1750

Die Bibliothek als Zip-Datei herunterladen und über den Bibliotheksmanager installieren.

 

Testprogramm

Bei der Bibliothek sind 3 Testprogramme enthalten, ich habe mich für BH1750test.ino entschieden.

Per Beispielmenü auswählen, kompilieren und den Uno programmieren.

Ausgabe

Die Ausagbe ist schlicht und zeigt den aktuell gemessenen Lux Wert.

Leider kann ich mangels Referenzwert nicht vergleichen wie genau die Messungen sind.

Probleme

Generelle I2c Probleme

http://fambach.net/uno-wire-scannen/

Quellen

https://github.com/claws/BH1750

https://www.mysensors.org/build/light-bh1750

http://www.mouser.com/ds/2/348/bh1750fvi-e-186247.pdf

GY-68 mit Sensor BMP85/BMP180

Der Bosch BMP85 ist ein barometrischer Sensor.  Er kann den Luftdruck und die Temperatur messen, um daraus die aktuelle Höhe über 0 zu berechnen.  Der BMP85 wird nicht mehr hergestellt und wurde durch den BMP180 abgelöst. Der BMP180 ist von der Bauform kleiner aber ansonsten fast baugleich mit seinem Vorgänger.  Unterschiede können den gelinkten Datenblättern entnommen werden.  Bei den Kerndaten habe ich bis auf den höheren Stromverbauch beim BMP180 keine Unterschiede feststellen können. (Datenblätter BMP85 / BMP180)
Der Sensor kann mit 1,8v bis 3,6V betrieben werden. Da der Arduino einen 5V I2c Bus hat empfiehlt es sich ein Sensorboard wie das GY-68 zu verwenden.

Ansicht

Daten

NameGY-68 mit Sensor BMP85/180
SensortypBarometer
Thermometer
Betriebsspannung5V
Sensorspannung 1,8-3,6V
BusI2c
Genauigkeit0,01 hPa
0,1°C
Messbereiche300hPa bis 1100 hPa
0°C bis +65°C

Schaltung

Anschluss

GND Masse
SDA I2C SDA
SCL I2C SCL
Vin 5 V

 

Einsatzzwecke

  • Bestimmung der Höhe über 0
  • Ausgleich/Vergleich von Aussen- und Innendruck
  • Warnung vor Überdruck
  • Erhöhung der Genauigkeit bei GPS

Programmierung

Bibliothek

Es gibt von Adafruit zwei Treiber-Bibliotheken. Eine ältere und die neue „Unified“. Beide leisten das Gleiche. Die „Unified“ folgt den Adafruit Programmierrichtlinien für Sensoren und ist somit bei einem Sensorwechsel leichter austauschbar.

Testprogramm

Das Beispielprogramm ist  in der Bibliothek enthalten. Diese habe ich für meine ersten Test verwendet.

Ausgabe

Die Ausgabe sieht erstmal OK aus. Mangels Vergleichswerten konnte ich diese, bis auf die Temperatur, nicht auf ihre Genauigkeit überprüfen. Die Temperatur war rund 2 Grad zu hoch.

Probleme

Generelle I2c Probleme

http://fambach.net/uno-wire-scannen/

Quellen

https://github.com/adafruit/Adafruit-BMP085-Library

https://github.com/adafruit/Adafruit_BMP085_Unified

Uno – Wire Scannen

Der I2c oder auch 2 Wire Bus genannt, arbeitet mit zwei Kabeln und  theoretisch mit einer Geschwindigkeit von bis zu 5 Mbit/s. Für den Hobbybedarf mit Freiluftverkabelung sind es wahrscheinlich eher weniger.

Der Uno hat den Wire-Anschluss am analogen Ausgang 4 und 5. Zum Testen habe ich ein GY-68 Barometer angeschlossen welches auf Port 0x77 des I2C Busses arbeitet.

Schaltung

Programm

Das folgende Testprogramm habe ich mir aus einigen Beispielen zusammen „gesucht“. Es dient dazu, einfach mal zu schauen ob die aufgebaute Schaltung auch richtig verdrahtet ist.
Das Porgram geht alle Adressen des I2C Busses durch und klopft mal beim Empfänger an. Antwortet dieser, wird der Port und am Schluss die Anzahl der gefundenen Teilnehmer angezeigt.

Quellocode

ScanWiree.ino

Ausgabe

Probleme

Das Wire Modul antwortet nicht

Einfach mal SDA und SDC vertauschen.

Sollte das Problem immer noch bestehen, mal veruschen Pullup Widerstände in die Schaltung einzubauen. Der Uno hat allerdings schon Pullups, sollte also eigentlich nicht nötig sein.

Quellen

https://de.wikipedia.org/wiki/I%C2%B2C

https://www.mikrocontroller.net/topic/88806

https://playground.arduino.cc/Main/I2cScanner

https://gist.github.com/tfeldmann/5411375

Arduino Motor Platine V1

Die Motorplatine ist perfekt für kleine Roboter-Projekte geeignet, bei denen 2 bis 4 Antriebsmotoren verwendet werden.

Zusätzlich bietet sie Anschlüsse für zwei Servos und die analogen Ports und mit ihnen auch der I2C Bus, sind durchgeschleift.

Überblick

Hier die wichtigsten Daten im Überblick:

  • 2 Servoanschlüsse
  • 2 Motorbrücken
  • 1 Schieberegistert
  • 1 Resetschalter
  • 1 Externer Spannungsanschluss
  • 1 Power LED
  • Jumper – zur Unterbrechung der Boardspannung

Ansicht

Beschaltung

Einsatz

  • Zwei-Achs-Plotter
  • 2 oder 4 Rad-Roboter
  • Pan/Tilt Stativ

Motorbrücken

Mit Hilfe der Motorbrücken können 4 Gleichstrommotoren oder 2  Schrittmotoren (mit 4 Leitungen) betrieben werden. Die L293D Motorbrücken können Motoren bis zu einem Strom vom 600mA versorgen. (Kurzzeitig bis zu 1,2 A). Wird ein höherer Strom benötigt können weitere L293D IC’s huckepack auf die vorhandenen aufgelötet und parallel betrieben werden.

Das Schieberegister, ermöglicht es mit nur 3 Pins des Arduinos die Drehrichtungen der Motoren zu bestimmen.

(evtl. mal einen Beitrag zum Scheiberegister einfügen…).

Für die Ansteuerung der Motoren gibt es unteranderem eine Bibliothek von Adarfruit. Diese kann über Git oder die Arduino GUI herunter geladen werden (siehe unten).

https://github.com/adafruit/Adafruit-Motor-Shield-library/zipball/master

Die Motorbrücken belegen die folgenden Pins am Arduino:

  • Pin 11 Motor 1 – Geschwindigkeit
  • Pin   3  Motor 2 – Geschwindigkeit
  • Pin   5  Motor 3 – Geschwindigkeit
  • Pin   6  Motor 4 – Geschwindigkeit
  • Pin   4, 7, 8, 12 Richtungsvorgabe für alle Motoren über 74HC595 Register.

Servoanschlüsse

Das Bord verfügt über zwei Steckplätze für Standardservos. Jeder Steckplatz hat drei Pins jeweils einen für Strom, Masse und den Steuereingang.

Die Steuereingänge belegen die folgenden Pins am Arduino:

  • Pin 9    – Servo 1
  • Pin 10 – Servo 2

Externe Spannungsversorgung

Hier können von 4.5V bis zu 25V an Schraubklemmen angelegt werden. Bitte auf die Polung achten sonst rauchts …

Kompatibilität

Der Shield kann mit folgenden Boards verwendet werden.

Arduino Uno

Arduino Uno

Arduino Leonardo

Arduino Leonardo

Uno + WiFi

Bedingt kompatibel, es wird eine externe Spannungquelle benötigt um mehr als einen Servo zu betreiben.

Arduino Uno + WiFi

Software

Bibliothek installieren

Ich habe mir die Bibliothek über GitHub herunter geladen und sie manuell installiert. Über die Arduino GUI geht es etwas einfacher.

Bibliotheksmanger aufrufen:

Nach „motor“ suchen und die „Adafruit Motor Shield Library“ in der letzten Version installieren.  Aufgepasst es gibt eine „Adafruit Motor Shield V2“ diese kann leider nicht für die V1 Platine verwendet werden. (Motorplatine V2).

Servos ansteuern

Im Grunde werden die Servos ganz normal über die Arduino Bibliothek angesprochen. Wichtig für die Motorplatine ist nur, dass hier die Servos an Port 9 und 10 angeschlossen sind.

Meine Billigservos, harkeln einwenig an den Endpunkten, diese könnte man noch ausschliessen indem man die Konstanten min und max anpasst.

Über den Faktor kann die Schrittgröße bestimmt werden und über wait die wartezeit zwischen den einzelnen Schritten.

#include  // inlcude library for servos

// init servos 
#define SERVO_PIN_1 9
#define SERVO_PIN_2 10
Servo servo1;
Servo servo2;

void setup() {

  // initialize serial port
  Serial.begin(9600);
  
  // leonardo workaround waiting for serial port to be ok
  while(!Serial)delay(1);

  // init servos
  Serial.print("Init Servos .");
  servo1.attach(SERVO_PIN_1); Serial.print(".");
  servo2.attach(SERVO_PIN_2); Serial.println(".");
}

const int min = 0, max = 255;
int  cur = 0, factor = 1, wait = 10;

void loop() {
  // put your main code here, to run repeatedly:
  if(cur <= min){ // change to positive direction
    cur = 0; factor *= -1;
    Serial.println("Start positive direction");
  }else if( cur >= 255){ // change to negative direction
    cur = 255; factor *= -1;
    Serial.println("Start negative direction");
  } 

  Serial.print(".");
  servo1.write(cur);
  servo2.write(cur);
  
  cur += factor;
  delay(wait);
}

ServoTest.ino

Motoren Ansteuern

Für einen ersten Test habe ich das vorhandene Beispielprogramm verwendet.

Einfach auswählen, kopilieren und schon läuft Motor 1.

Um alle 4 Motoren zu testen, was nützlich erscheint um die Drehrichtungen (Polung) zu überprüfen, habe ich die Datei wie folgt angepasst.

MotorTest2.ino

Die Ausgabe sollte dann wie folgt aussehen.

Quellen

https://playground.arduino.cc/Main/AdafruitMotorShield

https://learn.adafruit.com/adafruit-motor-shield/library-install

https://learn.adafruit.com/adafruit-motor-shield

https://learn.adafruit.com/adafruit-motor-shield/faq

 

Motorbrücken

Die Ausgänge von Mircrocontroller sind meist nur mit wenigen milli Ampere Strom belastbar. Dies reicht zur Ansteuerung einer LED aus ,ist aber für Motoren und andere Bauteile die mehr Leistung benötigen, nicht ausreichend.

Weiterhin ermöglicht die Motorbrücke eine Erhöhung der Betriebspannung, so können an Microcontrollern die mit 3.3V oder 5V betrieben werden, auch Motoren mit einer Spannung von beispielsweise 12V angeschlossen werden.

Unter folgenden Link ist die Funktion der Motorbrücke sehr gut beschieben, weswegen ich hier auf eine erneute Beschreibung verzichte.

http://www.asurowiki.de/pmwiki/pmwiki.php/Main/Motorbruecke

Schaltung

http://www.asurowiki.de/pmwiki/pmwiki.php/Main/Motorbruecke Copyright GNU FDL

Ansicht

Einfache Motorbrücke für zwei Motoren

Motorbrücken zum Aufstecken auf den Arduino UNO. Hat Ausgänge für 4 Motoren oder 2 vierpolige Schnrittmotoren.

Link zum Artikel

Weitere Bilder folgend …

Quellen

http://www.asurowiki.de/pmwiki/pmwiki.php

https://de.wikipedia.org/wiki/ASURO