Arduino UNO und PCA9685 - Problem mit externer Spannungsversorgung

Ich bin total verzweifelt und hoffe, Sie können mir helfen.
Ich baue seit einiger Zeit an einem Projekt, bei dem ich mehrere Servos ansteuern muss. Dazu habe ich mir einige MG996Rund eine PCA9685 16-Kanal Servo
Treiber Platine. Außerdem kaufte ich eine geeignete Stromversorgung (DV 5V - max 3A).

Zunächst habe ich meinen Controller und die Platine wie folgt angeschlossen und das Netzteil an der vorgesehenen Stelle befestigt: v1 hosted at ImgBB — ImgBB

Alles funktionierte wie gewünscht und ich konnte z.B. einen Servo mit diesem Beispielskript ansteuern.

#include <Wire.h>
    #include <Adafruit_PWMServoDriver.h>
    
    Adafruit_PWMServoDriver myServos = Adafruit_PWMServoDriver();

    #define SERVOMIN 150
    #define SERVOMAX 600
    
    uint8_t servonum = 0;
    uint8_t numberOfServos = 1;
    
    void setup() {
      myServos.begin();
      myServos.setPWMFreq(60);
      delay(10);
    }
    
    void loop() {
      myServos.setPWM(0, 0, 500);
      delay(1000);
      myServos.setPWM(0, 0, 300);
      delay(1000);
    }

Dann habe ich etwas anderes ausprobiert und ein paar Kabel umgesteckt, während die Stromversorgung noch eingeschaltet war (ich weiß sollte man nicht machen) - als ich zur ursprünglichen Schaltung zurückgekehrt bin (siehe Bild oben), hat sich kein Servo mehr bewegt. Danach habe ich versucht, das defekte Teil zu finden, konnte aber keines finden - also habe ich einen neuen Arduino, PCA-Platine und Netzteil gekauft, um zu versuchen, den Fehler zu finden - leider ohne Erfolg.

Dann habe ich durch Zufall herausgefunden, dass sich die Servos wieder bewegen, wenn ich die Masse des externen Netzteils mit dem Arduino verbinde und den Pluspol des Netzteils mit dem PCA9685 an V+ anschließe. D.h. jetzt funktioniert es wenn ich folgende Schaltung verwende: v2 hosted at ImgBB — ImgBB

Ich habe eine Packung mit drei neuen PCA9685 bestellt und wieder das gleiche Problem - die Servos bewegen sich nicht mehr, wenn ich den vorgesehenen Platz für die externe Stromversorgung auf der PCA9685-Platine verwende - was ist da los? Kann mir das jemand erklären und mir helfen, wo das Problem liegt?

Danke

Bitte hänge Deine Bilder hier an.
Dafür gibt es ein Button im Editor.
Auf Fremdseiten abgelegte wird nur ein Teil der User anklicken - und die sind dann irgendwann da gelöscht. Was zur Folge hat, das niemand mehr nachvollziehen kann, was Du für ein Problem hattest. Somit ist der gesamte Thread tot.

Welche Module beutzt Du? Hersteller- oder wenigstens Verkäuferlink zum Produkt.
Wie hast Du das aufgebaut? Foto - von oben. Jedes Kabel sollte erkennbar sein.

Für mich klingt das nach vertauschten/falsch angeschlossenen Kabeln.

Ich nehme mal an Du verwendest die Platine von Adafruit
Aus der Beschreibung der Platine Overview | Adafruit PCA9685 16-Channel Servo Driver | Adafruit Learning System

Power Pins

  • GND - This is the power and signal ground pin, must be connected
  • VCC - This is the logic power pin, connect this to the logic level you want to use for the PCA9685 output, should be 3 - 5V max! It's also used for the 10K pullups on SCL/SDA so unless you have your own pullups, have it match the microcontroller's logic level too!
  • V+ - This is an optional power pin that will supply distributed power to the servos. If you are not using for servos you can leave disconnected. It is not used at all by the chip. You can also inject power from the 2-pin terminal block at the top of the board. You should provide 5-6VDC if you are using servos. If you have to, you can go higher to 12VDC, but if you mess up and connect VCC to V+ you could damage your board!

Die Schaltung aus Bild 1 müßte funktionieren.


Du brauchst die 5V vom Arduino für die Elektronik auf der Platine und die Spannungsversorgung vom Netzteil für die Servos. Die Masse muß zusammengeschaltet sein was aber auf der Servoplatine schon gemacht wurde.


Das ist eine sehr gefährliche Schaltung da der gesamte Servostrom durch den Arduino geschickt wird und dieser bei den hohen Strömen möglicherweise kaputt geht ( Masseverbindugen überhitzen wegen des hohen Stroms. Gleiches gilt für das Breadboard.

Wenn Du nach Bild 1 verdrahtet hast leuchtet dann die LED auf der PCA9685 Platine?

Grüße Uwe

Hallo - danke für deine Antwort @uwefed :slight_smile:

Ja ich habe die Pins nach deiner Beschreibung angeschlossen und verwende auch die von dir verlinkte Einheit. Ja das licht am PCA Board leuchtet (wenn Netzteil an vorgesehenem Platz):

Komischerweise ging es heute morgen jetzt alles wieder perfekt - hab nur andere Kabel verwendet - aber kann es wirklich daran liegen?

Was ich auch noch geändert habe, ich habe den Arduino einmal über ein normalen USB Stecker 5V betrieben und nicht direkt über den Laptop - danach hat es aber auch wieder über den Laptop funtkioniert - sehr weird:D

Diese Kabel haben schnell einen Bruch und somit kein Durchgang mehr. (Oder Wackelkontakt) den Durchgang kannst du mit einem Multimeter prüfen.

Wackelkontakte und schlechte Kontakte sind immer Möglich. Breadboard und Steckkontakte mit Kabel von Arduino sind nicht 100% sicher.
Grüße Uwe

Hallo zusammen,

leider muss ich diesen Post wieder weiterführen - nachdem das Problem letztes mal durch Austausch der Kabel plötzlich weg ging, ist es jetzt einfach so wieder aufgetaucht - d.h. die Servos bewegen sich nur wenn ich das PCA Board über die 5V des Arduinos (was man ja nach @uwefed nicht machen sollte) betreibe. Bei externem Netzteil dreht sich wieder gar nichts ... ich verzweifel.. habe keine Ahnung warum das auf einmal nicht mehr tut.

Habe schon alle Kabel mehrmals getauscht und habe sonst keine Bauteile geändert im Vergleich zum funktionierenden Aufbau (siehe Bild weiter oben). Am Netzteil bzw. am vorgesehenen externen Anschluss des PCA Boards selbst liegen die 5-6V an, das habe ich mit einem Messgerät geprüft.

Jemand noch eine Idee woher das komische Problem kommen kann?

Bite beschreib die Stromversorgung besser.
Du hast ein Netzteil am PCA9685 Modul angeschlossen.

Wie versorgst Du den Arduino?
Welche Verbindungen hast Du zwischen Arduino und PCA9685 Modul?

Grüße Uwe

@uwefed danke für deine schnelle Antwort und entschuldige bitte meine ungenaue Beschreibung.

Ich hab das ganze mal eingezeichnet:

Also der Arduino wird mit einem USB Kabel vom Laptop versorgt - ich hab es auch einmal mit einem Standard 5v USB Netzteil versucht.
Verbindung vom Arduino zum PCA Board sind Ground, SCL, SCA und V++.

hier ein Bild des externen Netzteils (hier auf 6V gestellt - sowohl 5V als auch 6V probiert)

Ich hoffe das gibt etwas mehr Aufschluss über meinen Aufbau. Wie gesagt das komische ist, dass alles funktioniert wenn ich die externe Stromversorgung abstöpsel und zusätzlich eine 5V Verbindung zum Arduino zum V++ Pin des PCA Board stecke. Das verstehe ich einfach nicht...

VCC und V+ sind nicht das gleiche auf dem Board.

Wenn du USB entfernst, hat dein Arduino keine Versorgung mehr. Du kannst aber deinen Arduino mit den 5V aus dem Netzteil versorgen.

Edit: Den Arduino nicht zeitgleich mit den 5V des Netzteils und mit dem USB -Anschluss mit Spannung versorgen.

Ja, Vcc ist die +Spannung für die Elektronik und V+ ist die für die Leistung.

Gruß Tommy

@Plumps danke für deine Antwort,

ja das weiß ich - normalerweise hat es sonst immer funktioniert wenn ich VCC an den 5V Pins des Arduinos anschließe, das ist ja die Logikspannung. Das externe Netzeil für die Servos kommt dann an den vorgesehen Platz des PCA Boards wie im Bild oben dargstellt.

Den Arduino betreibe ich entweder über das USB Kabel vom Laptop oder auch hier einem externen 5V Netzteil.

Komischerweise funktioniert dieser Aufbau jetzt nicht mehr, das einzige was jetzt noch geht ist das externe Servo-Netzteil zu entfernen und auch den V+ Pol des PCA mit dem Arduino 5V Pin zu verbinden, was allerdings dazu führen kann, dass ein zu hoher Strom auf dem Arduino ist.

Ich habe schon alle Kabel ausgetauscht + PCA Board + Arduino und es will einfach nicht mehr klappen...

Dann hilft als erstes ein Blick auf den Plan.

Na dann nimm doch einfach mal ein Messgerät in die Hand.
Klemm den Arduino ab.
Steck das Netzteil an.
Auf den Klemmen der Servos musst Du zwischen V+ und GND Deine 5V messen.
Wenn nicht, ist vermutlich Q1 kaputt.
Alternativ eine kalte Lötstelle / gerissene Leiterbahn im Bereich J1, Q1. (Im Bereich D3)

Plan:


Alles andere ist an VCC - mithin am Arduino dran.
Selbst die einizige LED, was ich unglücklich finde.

Wahlloses tauschen von Kabel kann zwar eine Lösung bringen, du weist dann aber immer noch nicht warum es nicht bzw. danach funktioniert hat.

Ich würde mit einen Multimeter mal prüfen, wo die 5V vom Arduino verschwinden.

Oder wo die 5V vom Netzteil nicht mehr Anliegen, da du ja schreibst, das mit verbinden von VCC und 5+ vom PCB funktioniert. Also schlussfolgere ich aus der Ferne das die 5V vom Netzteil irgendwo unterbrochen sind (oder GND).

Auch ein prüfen der Verbindungen auf Durchgang mit dem Multimeter könnte aufschlussreich sein. (Im Stromlosen Zustand) Welche Verbindungen gegeben sein sollten, erkennst du im Schaltplan bzw. PCB Layout. Damit kannst du gleichzeitig deine Kabel prüfen.

Hallo zusammen - ich habe mal ein paar Messungen gemacht aber werde nicht schlau daraus. Ich habe diese mal hier in blau eingezeichnet (sorry ich wusste nicht genau wie ich es am besten darstelle):

Also am PCA-Board messe ich:

  • 5V zwischen GND und VCC - sowohl GND als auch VCC sind mit dem Arduino verbunden
  • 5V zwischen GND und V+ des externen Netzteils
  • 5V zwischen einem GND am Servo-Steckplatz und VCC (im Bild bei Steckplatz 4 eingezeichnet)
  • 0.1V zwischen GND und V+ an den Servo Steckplätzen (im Bild bei Steckplatz 15 eingezeichnet).

Für mich scheint es also so als würde das externe Netzteil die 5V liefern, aber aus irgendeinem Grund liegen die 5V nicht mehr an den einzelnen V+ Servo-Steckplätzen an. Der GND an den Steckplätzen scheint ja eine Verbindung zu haben.

Wenn ich das externe Netzteil nicht anschließe und dafür V+ mit 5V des Arduino verbinde dann liegt an den Servo-Steckplätzen auch 5V an und dementsprechend drehen sich die Servos.

Kann mit dieser Information jemand etwas vermuten oder soll ich noch etwas anderes messen?

Polarität an dem Anschluss für das externe Netzteil passt?
Wenn ja, ist wohl Q1 kaputt, eine Durchkontaktierung oder eine Lötstelle.

Gruß, Jürgen

Was hab ich denn oben geschrieben?
Hast Du den Plan verstanden?
Kannst Du danach messen?
Es würde schon reichen den abgehenden PIN von Q1 an 5V der Servos auf Durchgang zu prüfen.
Wenn das geht und Du von der Schraubklemme zuum Eingang von Q1 auch Durchgang hast, ist Q1 kaputt.
Hab ich oben geschrieben.
Und klemm den Arduino während der Messerei ab.
Und fürs Durchgang messen auch das Netzteil.

@my_xy_projekt danke für deine Antwort.
Um ehrlich zu sein blicke ich bei dem Plan nicht ganz durch.

Wo im Bild ist den Q1 bzw. was genau meinst du damit? Wie kann ich denn den Durchgang prüfen - schon einfach mit einem Spannungsgerät? Sorry das ist mein erstes Projekt und bin noch viel am lernen :wink:

Der Plan hat ein Koordinatensystem.

Auf Deiner Platine von + an C2 muss eine durchgehende Verbindung nach V+ der Servos.
Wenn das geht, kannst Du noch sehen, ob von + an C2 eine Verbindung zur Kühlfläche des FET besteht.
Datenblatt Fet: http://aosmd.com/pdfs/datasheet/AOD417.pdf

@my_xy_projekt ah verstehe ok - aber das koordinatensystem geht doch im Bild nur von A-D? wo meinst du dann mit Q1?

Mit welchem Gerät kann ich dass denn Überprüfen? einfach mit einem Spannungsmesser hinten auf dem Board an die Verbindungen?