Forum: Mikrocontroller und Digitale Elektronik ESP32 BLDC Controller Problem


von Falk O. (chr0nos)


Angehängte Dateien:

Lesenswert?

Moin, ich lese hier hin und wieder gerne mal mit und hab hier auch schon 
oft indirekt Hilfe erhalten und Probleme lösen können. Vielen Dank 
dafür!

Nun habe ich ein Problem bei dem ich absolut nicht weiterkomme und hoffe 
das ihr mir helfen könnt.

Einmal vorweg, ich arbeite an einem Projekt das mithilfe von zwei ESP32 
eine funkbetriebene Motorsteuerung realisiert.

Zum Aufbau, ich habe ein ESP32 als Bedienteil (Joystick) und ein ESP32 
als Motorsteuereinheit welcher 4 DC Motoren über zwei L298N ansteuert 
und zwei 24V BLDC mit Hall Sensoren über zwei Controller 
(https://amzn.to/3aRkEh8).

Grundsätzlich klappt auch alles, aber mein Problem liegt nun in der 
Ansteuerung der BLDC Motorcontroller, im Endeffekt soll der ESP32 nur 
die Motorcontroller EL-Pin,Z/F-Pin, auf 5V oder GND ziehen und den 
VR-Pin mit einem Pegel zwischen 0-3,3V versorgen.

Ich hab dazu einen Pegelwandler 3,3V<>5V zwischen geschaltet und LV und 
Masse des Pegelwandlers mit dem 3,3V Pin und GND des ESP32 verbunden, HV 
und Masse mit den Pins der beiden Motorcontroller.

Das Fehlerbild ist dann im Endeffekt, wenn beide Motoren drehen sollen, 
dreht sich nur einer. Ich habe herausgefunden das wenn der Motor am 
Anfang versucht anzulaufen und der Input zu klein ist das der in einen 
Überlastmodus fällt, das habe ich dadurch umgehen wollen, dass die 
Motoren im Stillstand über den EL-Pin der Controller abgeschaltet werden 
sollen.

Ich habe nochmal alle steckverbindungen überprüft aber scheinbar wird 
der EL-Pin nicht sauber auf 0V gezogen und dadurch fällt ein 
Motorcontroller am anfang in diesen "Überlastmodus". Das kuriose daran 
ist, ich habe es zwischenzeitlich zum laufen gebracht und nun fällt es 
wieder aus, ich hatte einen "Wackelkontakt" im Verdacht weil der Fehler 
durch umstecken der Kabel auf den anderen Motor reproduzierbar war aber 
solangsam glaube ich das der Fehler woanders liegen muss.

Die Programmierung des ESP32 ist soweit in Ordnung, wenn ich die Pegel 
an den Pins des  ESP32 messe, liegt das an was erwartet wird, verbinde 
ich nun den Pegelwandler mit dem ESP32 und den Controllern, messe ich 
bei einem Pin an dem eigentlich 0V anliegt, 0,9V... ziehe ich das Kabel 
vom 3,3V Pin liegt der Pin wieder auf 0V wie er soll.

Wenn die Pins der Motorcontroller nicht mit dem Pegelwandler verbunden 
sind, hab ich folgende Spannungen gemessen:
GND<>VR  -> 0V
GND<>Z/F -> 4,99V
GND<>EL  -> 4,99V

Ist der Aufbau ESP32<>Pegelwandler<>Motorcontroller so korrekt?


Edit:
Ich merke natürlich erst jetzt nach dem verfassen des Beitrages, das es 
sich ja um einen bidirektnionalen Pegelwandler handelt, könnt das schon 
das Problem sein?

Wäre es sinnvoller die Pins Z/F und EL über ein Transistor zu schalten?

: Bearbeitet durch User
von Stefan F. (Gast)


Lesenswert?

Die entscheidenden Leitungen auf deinem Plan sind fast unsichtbar.

Wo sind denn die technischen Unterlagen zu dem Motorcontroller und dem 
Pegelwandler-Board?

Deiner Beschreibung entnehme ich, dass dein Pegelwandler-Board den 
Ausgang des ESP scheinbar hoch zieht. Dies würde so kontrollieren:

Entferne den Pegel Wandler und belaste den Ausgang des ESP mit einem 1kΩ 
Pull-Up Widerstand. Wie sehen dann die HIGH und LOW Pegel auf einem 
Oszilloskop aus? Verwende einen Pull-Down Widerstand, wie sehen die 
Pegel dann aus?

Außerdem würde ich mal mit einem Ampere-Meter messen wie viel Strom der 
Pegelwandler (mit Motortreiber) an seinen Eingängen bei LOW und bei HIGH 
aufnimmt. Also wenn du die Eingänge (ohne ESP32) durch das Amperemeter 
mit GND bzw 3,3V verbindest.

Danach schauen wir weiter.

von Falk O. (chr0nos)


Lesenswert?

Hallo Stefan,

danke für die schnelle Rückmeldung.
Ein Oszilloskop besitze ich leider nicht, zu dem Pegelwandler

Adafruit 757
Bidirektionaler Logikpegelkonverter BSS138

gibts es folgendes Datenblatt:(https://t1p.de/ofp9).

Zu den Brushless Controllern gibt es leider kein Datenblatt.

Ich werde später dann mal messen, ist die Idee mit einer 
Transistorschaltung denn eine Option oder spricht da was gegen?

von Wolfgang (Gast)


Lesenswert?

Falk O. schrieb:
> Adafruit 757
> Bidirektionaler Logikpegelkonverter BSS138
> gibts es folgendes Datenblatt:(https://t1p.de/ofp9).

Der BSS138 ist ein ganz normaler Kleinsignal N-Kanal MOSFET.
Ob daraus ein Pegelkonverter wird, hängt von der Beschaltung ab.

p.s.
Das Datenblatt brauchst du nicht schamvoll hinter einem kryptischen Link 
zu verstecken. Klicke einfach auf BSS138

von Stefan F. (Gast)


Lesenswert?

Falk O. schrieb:
> Ein Oszilloskop besitze ich leider nicht,

Dann messe mit einem Multimeter und mache die Pegelwechsel dazu passend 
langsam. Oder kaufe dir ein DSO150, du wirst es noch öfter brauchen.

> Zu den Brushless Controllern gibt es leider kein Datenblatt.

Das ist ziemlich schlecht.

> ist die Idee mit einer Transistorschaltung denn eine Option

Nein, du ziehst das Pferd von hinten auf. Erstmal musst du die 
Problemursache finden.

von Falk O. (chr0nos)


Lesenswert?

Wolfgang schrieb:
> Der BSS138 ist ein ganz normaler Kleinsignal N-Kanal MOSFET.
> Ob daraus ein Pegelkonverter wird, hängt von der Beschaltung ab.

Es handelt sich um eine fertige Pegelwandlerplatine von Adafruit.

Wolfgang schrieb:
> p.s.
> Das Datenblatt brauchst du nicht schamvoll hinter einem kryptischen Link
> zu verstecken. Klicke einfach auf BSS138

Das war nicht meine Absicht, ich wollte nur der Übersichtlichkeit halber 
die URL kürzen. ;)

Stefan ⛄ F. schrieb:
> Dann messe mit einem Multimeter und mache die Pegelwechsel dazu passend
> langsam. Oder kaufe dir ein DSO150, du wirst es noch öfter brauchen.

Kommt auf die Anschaffungsliste, werde morgen die Messungen durchführen 
und mich nochmal melden.

: Bearbeitet durch User
von Falk O. (chr0nos)


Lesenswert?

So, habe nun nachgemessen...
1
Aufbau:
2
Pegelwandler <> BLDC Controller
3
4
Einang Ausgang
5
3,3V LV <> HV  5V BLDC
6
     A1 <> B1  nicht belegt
7
     A2 <> B2  EL BLDC
8
     A3 <> B3  DIR BLDC
9
     A4 <> B4  nicht belegt
10
GND GND <> GND GND BLDC
11
12
Stromaufnahme Pegelwandler 
13
LOW
14
GND<>A1  0,82mA
15
GND<>A2 30,6mA
16
GND<>A3  1,9mA
17
GND<>A4  0,82mA
18
19
HIGH
20
LV<>A1  0,0mA
21
LV<>A2  0,0mA
22
LV<>A3  0,0mA
23
LV<>A4  0,0mA
24
25
und dann habe ich die betroffenen Pins des ESP32 ohne den Pegelwandler mal mit Pullup- und Pulldown 1kOhm beschaltet.
26
27
Pullup     LOW 0,143V HIGH 3,345V
28
Pulldown   LOW 0,037V HIGH 3,25V

Hoffe es lässt sich nachvollziehen

: Bearbeitet durch User
von Stefan F. (Gast)


Lesenswert?

Falk O. schrieb:
> GND<>A2 30,6mA

Da ist etwas kaputt!

Da dein ESP32 mit dem Widerstand als Last gute Pegel ausgegeben hat, ist 
wohl entweder das Pegelwandler-Board kaputt oder einer der beiden 
Motorcontroller.

Nächster Schritt: Nimm den Pegelwandler raus und teste die beiden 
Motorcontroller einzeln.

Lege deren Eingänge durch einen 1kΩ Widerstand abwechselnd auf LOW und 
HIGH und messe die Spannung. Es werden annähernd 0V und 5V erwartet. 
Sollte das nicht der Fall sein, ist diese Board vermutlich defekt.

Wenn der Test OK war nimmst du dir das Pegelwandler Board ganz alleine 
ohne Quellen und Lasten an den I/O Pins vor. Also nur mit der 
Versorgungsspannung 3,3V, 5V und GND.

Dann legst du nacheinander alle 8 Eingänge (2x4 pro Seite) mit dem 1kΩ 
Widerstand einzeln auf HIGH. Müsste jeweis 3,3V oder 5V am jeweiligen 
Eingang ergeben. Dann legst du die 8 Eingänge über den Widerstand 
einzeln auf Low. Die Low Pegel müssten kleiner als 0,6 Volt sein.

von Falk O. (chr0nos)


Lesenswert?

Habe folgendes gemessen:
 EL Pin <1kOhm> 5V  -> 4,96V
 EL Pin <1kOhm> GND -> 0,87V

 Z/F Pin <1kOhm> 5V  -> 4,96V
 Z/F Pin <1kOhm> GND -> 3,75V!!

Hab bei beiden Controllern in etwa die gleichen Werte.
Der Pegelwandler war unauffällig, HIGH knapp 5V und LOW 0,685V bei 3,4 
Referenzspannung.

von Stefan F. (Gast)


Lesenswert?

> Habe folgendes gemessen....

An welchem Motorcontroller? Du solltest sie einzeln ausmessen, da fehlt 
mir also die Hälfte der Ergebnisse.
> GND<>A2 30,6mA
> Z/F Pin <1kOhm> GND -> 3,75V!!

Was ist denn nun plötzlich der "Z/F" Pin? In deiner Zeichnung im 
Eröffnungsbeitrag kann ich das nicht wieder finden.

Also wenn A2 = Z/F ist, dann ist wohl ein Motorcontroller defekt.

Ich schätze, du hast nun das Prinzip verstanden, wie man so einen Fehler 
einkreist und kommst nun alleine klar.

von Falk O. (chr0nos)


Lesenswert?

Stefan ⛄ F. schrieb:
> An welchem Motorcontroller? Du solltest sie einzeln ausmessen, da fehlt
> mir also die Hälfte der Ergebnisse.

Ich habe beide Controller ohne Pegelwandler jeweils einzeln gemessen und 
exakt die gleichen Werte für beide Controller erhalten.

Stefan ⛄ F. schrieb:
> Was ist denn nun plötzlich der "Z/F" Pin? In deiner Zeichnung im
> Eröffnungsbeitrag kann ich das nicht wieder finden.

Sorry für die Verwirrung, oben in der Skizze ist der Pin mit "Direction" 
gekennzeichnet, auf der Platine selber aber mit Z/F.

Stefan ⛄ F. schrieb:
> Also wenn A2 = Z/F ist, dann ist wohl ein Motorcontroller defekt.

Ja, A2 war ja Pegelwandler LV Seite, B2 dann HV zu Z/F an den beiden 
Controller.

Mich wundert es nur das ich bei beiden die gleichen Werte gemessen habe, 
als Kontrolle hatte ich noch einen neuen, der hat ebenfalls diese Werte.

von Stefan F. (Gast)


Lesenswert?

Falk O. schrieb:
> Ich habe beide Controller ohne Pegelwandler jeweils einzeln gemessen und
> exakt die gleichen Werte für beide Controller erhalten.
> als Kontrolle hatte ich noch einen neuen, der hat ebenfalls diese Werte.

Das alle drei gleich kaputt sind, käme mir komisch vor. Vielleicht 
stimmt die Anschlussbelegung nicht. Damit kommen wir zurück auf die 
Frage nach den technischen Unterlagen zu dem Board.

von Falk O. (chr0nos)


Lesenswert?

Ja das ist echt schlecht wegen dem fehlenden Datenblatt, gibt es sonst 
ohne technische Dokumentation zu den Controllern noch weitere 
Möglichkeiten? Um aber irgendwie weiter zu kommen, würde ich nochmal auf 
meine Frage vom Eingangspost zurückkommen.

Wenn ich die Pegel mithilfe einer Transistorschaltung sauber auf 0V 
ziehen kann wäre mir ja schon geholfen, denke ich.

Natürlich ist die Ursache damit nicht gefunden, aber wäre es denn 
möglich?
Ich habe noch ein paar 2N7000 MOSFETs hier rumliegen, würde gerne deine 
Meinung dazu hören.

Vielen Dank für deine Mühe.

von Stefan F. (Gast)


Lesenswert?

Falk O. schrieb:
> Wenn ich die Pegel mithilfe einer Transistorschaltung sauber auf 0V
> ziehen kann wäre mir ja schon geholfen, denke ich.

Klingt nach "bist du nicht willig, so brauch ich Gewalt".

Niemand kann dir ohne Einsicht in die technischen Unterlagen bestätigen, 
dass das eine gute Idee ist. Ein falscher Ratschlag zerstört die Boards 
womöglich, deswegen halte ich mich da zurück.

von Falk O. (chr0nos)


Lesenswert?

Ja das kann ich verstehen, gibt es sonst alternative Controller die ich 
verwenden könnte? Habe leider kaum welche gefunden die auch 
HALL-Sensoren unterstützen und in etwa die selbe Abmaße haben? Hast du 
da mit welchen schon gute Erfahrungen gemacht?

von Stefan F. (Gast)


Lesenswert?

Falk O. schrieb:
> und in etwa die selbe Abmaße haben?

Kommt es nicht viel eher darauf an, dass die Treiber zu deinem Antrieb 
passen? Wenn die Anforderungen alle klar zusammen getragen sind, kannst 
du einen passenden Treiber suchen oder entwickeln.

Das ist aber ehrlich gesagt nicht unser Job - es sei denn jemandem fällt 
zufällig gerade ein passendes Produkt ein, dass er gerade gut kennt 
(kann ja sein).

Nenne die Anforderungen. Und zwar alle. Mit Glück bekommst du einen 
passenden Vorschlag. Von mir wird da mangels Erfahrung nichts kommen.

von Falk O. (chr0nos)


Lesenswert?

Danke für deine Hilfe.

Stefan ⛄ F. schrieb:
> Kommt es nicht viel eher darauf an, dass die Treiber zu deinem Antrieb
> passen? Wenn die Anforderungen alle klar zusammen getragen sind, kannst
> du einen passenden Treiber suchen oder entwickeln.
>
> Das ist aber ehrlich gesagt nicht unser Job - es sei denn jemandem fällt
> zufällig gerade ein passendes Produkt ein, dass er gerade gut kennt
> (kann ja sein).
>
> Nenne die Anforderungen. Und zwar alle. Mit Glück bekommst du einen
> passenden Vorschlag. Von mir wird da mangels Erfahrung nichts kommen.

Das würde jetzt den Rahmen sprengen, da sich das Verhalten bei drei 
Platinen rekonstruieren lässt, suche ich erstmal nach einer Möglichkeit 
wie ich die Controller sauber auf 0V ziehen kann um die Funktionen 
abzubilden.

Vielleicht hat ja jemand noch eine Idee?

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.