I²C-Treiber für 16 Servos oder LEDs

Alles rund um TX(T) und RoboPro, mit ft-Hard- und Software
Computing using original ft hard- and software
Forumsregeln
Bitte beachte die Forumsregeln!
Antworten
chehr
Beiträge: 157
Registriert: 07 Apr 2015, 21:07
Wohnort: Friedrichshafen

I²C-Treiber für 16 Servos oder LEDs

Beitrag von chehr » 06 Feb 2016, 16:31

Hallo,
Habe im Dowloadbereich unter folgendem Link http://ftcommunity.de/data/downloads/ro ... ion1.0.rpp einen I2C Treiber hinterlegt, mit dem man bis zu 16 Servos oder LEDs via RoboPro steuern kann. Der Treiber funktioniert mit einem Board mit Baustein PCA9685. Dieser kann bis zu 16 LEDs aus-, einschalten oder dimmen, oder aber bis zu 16 Servo Motoren ansteuern - auch die von fischertechnik. Dieses Board gibt es für ca 5€ z.B. bei ebay zu kaufen. Außerdem benötigt man noch eine geregelte Spannungsquelle, die die Servos via Board mit Strom versorgt (max 6.0V).
Dieser Punkt ist sehr wichtig, weil man kann schnell das Board und/oder den Servo beschädigen - da schreibe ich aus Erfahrung. Ich hatte den Treiber schon vor ca. 1 Jahr fertig, konnte ihn aber selbst nicht erfolgreich verifizieren via Tests (ursprünglich hatte ich ein Netzgerät mit bis zu 6.8V verwendet) erst nachdem ich neue Servos gekauft hatte, hat auch die Hardware funktioniert. Also Vorsicht!!! Jedenfalls ist die Anwendung des Treibers auf eigene Verantwortung, ich übernehme keine Gewähr!!
Aber man kann mit diesem Treiber und dem Board den TX, bzw TXT enorm erweitern (z.B. für Roboter wie laufen oder heben- senken etc).
Momentan ist der Treiber so programmiert, das man eine Zahl vorgibt (z.b. zwischen 225 und 425) wobei der Servo dann mit voller Leistung diese Position anfährt (Mittelstellung ist bei 325). Das bedeutet das der Servo schnelle Bewegungen mit exakte X-beliebige Positionen anfährt, nicht aber langsame.
Anmerkung: Aus Performance Gründen sollte man max 7 Servos gleichzeitig steuern, das hängt mit der Transferrate via I2C im Onlinemodus zusammen. In diesem Fall gibt es ein spezielles UP "PCA9685-S0-S6"
Danke auch an Dirk W. - von ihm kam der Anstoß und erste Testergebnisse für diesen Treiber.

Gruß
Christian

DasKasperle
Beiträge: 107
Registriert: 26 Mai 2013, 13:02
Wohnort: Düsseldorf

Re: I²C-Treiber für 16 Servos oder LEDs

Beitrag von DasKasperle » 10 Feb 2016, 16:04

Hallo Christian,
vielen Dank für deine Beschreibung und das Programm. Endlich gibt es einen unkomplizierten Weg, um mit dem TXT/TXC Servos einzubinden.

Konstruktive Grüße
Kai
Konstruktive Grüße aus Düsseldorf
Kai
PS: Ich suche IMMER eine Mitfahrgelegenheit zu ft-Events!

chehr
Beiträge: 157
Registriert: 07 Apr 2015, 21:07
Wohnort: Friedrichshafen

Re: I²C-Treiber für 16 Servos oder LEDs

Beitrag von chehr » 11 Feb 2016, 20:38

Hallo Kai,
vielen Dank für deine Rückmeldung, das ist ein Ansporn den Treiber frei zugänglich zu machen, damit hoffentlich weitere interessante fischertechnik Modelle entstehen. Bin mal gespannt über die ersten Erfahrungen.
Tipp 1: Als PCA9685 12-bit Board empfehle ich die mit den Schwarz, Rot und Gelbe Steckerleisten, weil die Farben stimmen dann fast mit den meisten Servos überein (Braun, Rot, Gelb).
Tipp 2: Es gibt auch günstige Servos die nahezu Baugleich mit dem fischertechnik Servo sind, d.h. man kann dann das fischertechnikgehäuse und den Hebelarm (wenn man diese Teile hat) verwenden um die Servos dann direkt in fischertechnik Modelle zu integrieren.
Gruß
Christian

Benutzeravatar
thomasdr
Beiträge: 135
Registriert: 02 Nov 2010, 17:00
Kontaktdaten:

Re: I²C-Treiber für 16 Servos oder LEDs

Beitrag von thomasdr » 10 Mär 2016, 08:15

Hallo,
ich habe einen Clon vom Adafruit 16-Channel 12-bit PWM/Servo Driver.
Am Arduino funktioniert das Teil einwandfrei.
Am TXT und TX bekomme ich den Treiber ihn nicht zum laufen.

Verdrahtung:
TXT/TX ----> Masse, SDA, SCL
Driver <------ Masse, VCC und V+ externes Netzteil, 5 Volt und alternativ 3,3 Volt

TX:
Man kann mehr schlecht als recht eine Position einstellen. Ein Kommunikation scheint wohl irgendwie zustande zu kommen. Der Servo zappelt aber ständig rum.

TXT:
Die Servos bewegen sich total chaotisch.

Um Level Probleme beim TXT zu vermeiden habe ich beim Board 3,3 Volt verwendet.

Hat es jemand schon besser hinbekommen?

Gruß Thomas

chehr
Beiträge: 157
Registriert: 07 Apr 2015, 21:07
Wohnort: Friedrichshafen

Re: I²C-Treiber für 16 Servos oder LEDs

Beitrag von chehr » 13 Mär 2016, 10:43

Hallo Thomas,
in der Tat, bei mir funktionieren auch nicht alle Servos.
Habe den Treiber für die gängigen Modellbauservos die über eine Pulsweitenmodulation (PWM) angesteuert werden, programmiert. Über die Breite der Pulse wird der Winkel, auf den der Servoarm gestellt werden soll, gesteuert. Gängig ist ein 50-Hz-Signal (20 ms Periodenlänge, über PRESCALE 0x79), welches zwischen ca. 1 ms (linker Anschlag) und ca. 2 ms (rechter Anschlag) auf High-Pegel und den Rest der Periodenlänge auf Low-Pegel ist. Viele Servos haben in diesem Wertebereich jedoch nicht ihre volle Bewegungsfreiheit ausgenutzt. Deshalb muss dieser Wert an den Servo angepasst werden, da die Werte, bei denen der Servo ganz links bzw. rechts ist, können auch unterhalb 1 ms bzw. oberhalb 2 ms liegen. Die Periodendauer von 20 ms ist kein kritischer Wert, auch die 60Hz z.B. funktionieren bei mir problemlos.

Bei mir funktinieren die Fischertechnik Servos, auch z.B. der Micro servo Tower Pro MG90S, jedoch nicht der MG996R.

Da bei dir der Servo via Arduino funktioniert, kannst du mal schauen, welche Periodenlänge, und welche min/max Pulslänge verwendet wird?
Deine Verdrahtung scheint i.O. zu sein, auch habe ich versucht zu schauen ob die Kommunikation via USB oder BT eine Rolle spielt, welches zwar eine Auswirkung hat haber nicht die Ursache ist.

Gruß
Christian

chehr
Beiträge: 157
Registriert: 07 Apr 2015, 21:07
Wohnort: Friedrichshafen

Re: I²C-Treiber für 16 Servos oder LEDs

Beitrag von chehr » 03 Apr 2016, 18:51

Hallo ft user,
im Downloadbereich ist nun der verbesserte LED und Servo Treiber "I2C PCA9685 Servoansteuerung Version 2.0.rpp".
Link anbei: http://ftcommunity.de/data/downloads/ro ... ion2.0.rpp

Verbesserung:
Die Geschwindigkeit der Servos können nun eingestellt werden indem man ein UP vorschaltet (schnell, mittel, langsam).
Ein neues UP extra für LEDs. LED kann aus-, eingeschaltet oder gedimmt werden.

Die Mittelstellung der Servos sollte man an jeden Servo anpassen. Dazu die Servowerte in die entsprechende Regler eintragen. Momentan ist eingestellt 200 / 300 / 400, wobei 200 die rechte -, 300 die mittel- und 400 die linke Position ist.
Die gewünschte Servoposition wird über die Schieberegler eingestellt. Im bereitgestellten Treiber V2.0 gibt es Beispiele wie man die langsame und schnelle Geschwindigkeit ins Programm einbaut, auch ein UP mit LED Schaltung auf Ausgang 8 ist vorhanden.
Es gibt 4 UPs für:
Servo Ausgang 0
Servo Ausgang 1
Servo Ausgang 2
und
LED Ausgang 8.

Die UPs können aber modifiziert werden um alle 16 Ausgänge zu verwenden.
:idea: Übrigens falls der Servo nur zappelt, könnte es an einer der folgenden Ursache liegen:
  • - der Servo ist in einer verbotenen Position
    - die Versorgungsspannung ist nicht ausreichend geglättet
    - oder die Servo Versorgungsspannung ist eingebrochen.
:idea: Wichtig ist, das die Servos mit einer geregelten Spannung versorgt werden. Das PCA9685 Board erlaubt da für V+ max 6V.
Die Servo Spannungsversorgung mit dem alten graune fischertechnik Netzgerät funktioniert nicht, weil der Spannung nicht ausreichend geregelt bzw geglättet ist. Damit kann man die Servos beschädigen. :!:

Der Treiber wurde erfolgreich mit 3 Miniservos und 1 LED getestet mit einem TX. Den Treiber mit einem TXT habe ich noch nicht getestet, sollte aber auch funktionieren.

Gruß und viel Spaß
Christian

Antworten