Mario(s) Kart

25.9.2020

Mario(s) Kart

Nach der Seifenkiste mit Akkuschrauber als Antrieb gehe ich nun einen Schritt weiter und baue mal was richtiges. Ein Kart mit zwei BLDC-Motoren aus einem Hoverboard als Antrieb und gehackter Hoverboard Firmware auf der originalen Steuerplatine. 

Vorgaben:

  • Größe passend für meine Kinder und für Erwachsene ebenso, also ein verstellbarer Sitz,
  • Orientierung an der eFKV (Elektrokleinstfahrzeuge Verordnung),
  • d.h. zwei unabhängige Bremsen,
  • maximale Breite 700mm,
  • Beleuchtung vorn und hinten,
  • zulässige maximale Geschwindigkeit 20km/h,
Werbeanzeigen

Die Motoren

Als Antrieb habe ich mich für zwei Hoverboard Räder entschieden. Die Räder haben 8,5″ Durchmesser und je 350W. Die Räder haben je drei Phasenwicklungen und integrierte Hall Sensoren zur Positionserkennung.

Auf dem Bild sieht man im Vordergrund die beiden Antriebsräder und im Hintergrund die beiden Vorderräder mit Bremsscheiben.

Die Antriebsräder im Vordergrund
Hoverboard Wheel
geöffnetes Rad mit integriertem BLDC-Motor

Die Befestigung der Räder habe ich prinzipiell übernommen und mir die Kontur zur Aufnahme der Achsen in je zwei Halbschalen fräsen lassen. Diese werden dann jeweils in das Kastenprofil der Hinterachse gesteckt und mit je vier Schrauben M8 verschraubt.

Hinterachse mit Bohrungen für Radbefestigung
Werbeanzeigen

Der Akku

Das Akkupack habe ich auf E-Bay bestellt. Das war das reine Akkupack ohne BMS. Ein passendes BMS konnte ich auch gut gebraucht auf E-Bay erwerben.

Akkupack (Quelle: Ebay)

Der Akkupack besteht aus 30 Stück Panasonic NCR18650PF Zellen, zehn in Reihe und drei parallel. Die Kapazität beträgt 8,7Ah, der maximale Entladestrom beträgt 32 Ampere und die Spannung 36V.

Das BMS sowie die Anschlusskabel musste ich nachträglich selber anlöten.

BMS
BMS Platine
Akkupack
Mit BMS und Kunststoffhülle sowie etwas Klebeband sieht das dann so aus.
Werbeanzeigen

Die Hauptplatine

Die Hauptplatine ist eine Ersatzplatine für ein Hoverboard. Diese kann man recht günstig bei Ebay oder bei AliExpress erwerben. Wenn man kein Hoverboard zum Schlachten hat.

Hoverboard Platine Mainboard
Hauptplatine aus Hoverboard

Die Platine lässt sich nicht 1 zu 1 verwenden. Hier haben sich einige schlaue Leute viele Gedanken gemacht und eine neue Firmware für die Platine geschrieben. Somit lässt sich die Platine für verschieden Anwendungsfälle verwenden:

  • Hovercar
  • Transpotter
  • Bobbycar
  • uvm.

Die verschiedenen Softwarepakete kann man sich hier herunterladen:

https://github.com/NiklasFauth/hoverboard-firmware-hack

https://github.com/EmanuelFeru/hoverboard-firmware-hack-FOC

https://github.com/larsmm/hoverboard-firmware-hack-bbcar

Meine Entscheidung fiel auf die FOC-Variante von Emanuel Feru. Die Laufkultur der Motoren ist einfach besser. Hier mal zwei Videos zum Vergleich:

Video-1

Video-2

Was die PC-Software zur Programmierung angeht, habe ich mich einmal für ST-Link direkt von ST und parallel für Microsoft Visual Studio Code mit der Erweiterung Platform IO entschieden. Die Firmwareversionen stellen eine Datei für Platform IO bereit. Das macht die Auswahl der zu flashenden Version (Hovercar, Bobbycar …) sehr komfortabel.

Normalerweise klappt die Programmierung mit Visual Studio Code sehr gut. ST-Link wird benötigt, um den Chip zu entsperren, welcher im Lieferzustand der Platine gelockt ist, und eventuell um den Flash der Hauptplatine komplett zu löschen. Das kann notwendig sein, wenn man Daten der Auto-Kalibrierung der ADC-Eingänge wieder löschen will, aber dazu später mehr.

Zum Programmieren des ST32 Chips auf der Hauptplatine benötigt man einen Programmieradapter. Der kostet ca 8€ auf Ebay oder Amazon.

Quelle: Ebay

Ich möchte Niklas Faut und Emanuel Feru für die geleistete Arbeit danken. Wenn man sich vorstellt, dass hier ohne jegliche Informationen mittels Reverse Engineering das komplette Platinenlayout erarbeitet wurde, ziehe ich einfach nur den Hut. Von der neuen Firmware ganz zu schweigen.

Werbeanzeigen

Hauptplatine vorbereiten

Programmierschnittstelle

Auf der Hauptplatine befindet sich neben dem Hauptprozessor die Programmierschnittstelle. Hier ist es ratsam sich eine vierer Stiftleiste einzulöten damit man einfacheren Zugang zum Programmieren hat. Das sieht dann so aus wie auf dem unteren Bild.

eingelötete Stiftleiste

Manche Boards haben auf der Unterseite einen geschlossenen Kühlkörper. Da kommt man von unten nicht an die Kontakte. Hier muss man etwas improvisieren und die Stiftleiste von oben anlöten. Das geht wenn man den Plastikhalter auf der Stiftleiste etwas nach oben schiebt.

Die Programmierschnittstelle ist folgendermaßen beschaltet (klick ins Bild):

Pinout der Hauptplatine

Zum Programmieren habe ich mich für Visual Studio Code mit Platform IO entschieden. Die Software kann man kostenlos bei Microsoft herunterladen.

Hat man die Software installiert, muss man noch die Platform IO Erweiterung hinzufügen. Hierzu klickt man in der linken Leiste auf das Symbol mit den vier Kästchen und gibt im Suchfeld Platform IO ein. Danach kann man die Erweiterung auswählen und hinzufügen.

Hat man das erledigt, fügt man über Datei / Ordner öffnen den Ordner mit der gewünschten Firmware hinzu.

Darin befindet sich eine Datei für Platform IO welche in der linken Übersicht auswählbar ist. Wählt man diese aus, dann sieht das so aus.

Im rechten Fenster kann man dann die Firmwarekonfiguration wählen. Dann klickt man unten links auf Build (das Häkchen) und die Firmware wir kompiliert.

Nun kann man den Programmieradapter an das Mainboard anschließen und die Firmware flashen.

Programmieradapter mit Kabel
Kabel vom Programmieradapter mit Mainboard verbunden

Hat man alles verbunden, kann man auf Upload (Pfeil nach rechts) drücken und die Firmware in den Prozessor schreiben. Folgendes ist dabei noch sehr wichtig:

  1. Die 3,3V Verbindung vom Programmieradapter nur benutzen, wenn das Mainboard nicht mit dem Akku verbunden ist!
  2. Ist das Mainboard mit dem Akku verbunden, würde es sich u.U. einschalten und die 3,3V selbst zur Verfügung stellen. Gleichzeitig 3,3V vom Programmieradapter und vom mainboard selbst kann zur Zerstörung des Prozessors führen. Weiterhin muss man den Einschalter des Mainboards gedrückt halten solange der Upload stattfindet. Besser man nutz statt dem Taster einen Jumper. Damit bleibt das Mainboard immer an. Der Hintergrund ist folgender. Das Mainboard wird nach dem Einschalten vom Prozessor am Leben erhalten. Beim Programmieren wird die Software auf dem Prozessor gelöscht und dadurch würde das Mainboard ausgehen. Der Upload würde fehlschlagen und wenn es ganz dumm läuft der Prozessor sterben.

Sollte die Programmierung fehlschlagen, kann es daran liegen, dass der Speicher schreibgeschützt ist. Hierzu muss erst der Schreibschutz aufgehoben werden. Wie das geht findet man hier:

https://github.com/EmanuelFeru/hoverboard-firmware-hack-FOC/wiki/How-to-Unlock-MCU-flash

Rahmen und Räder

Werbeanzeigen

E-Kart Rahmen / e-kart frame
Rahmen im CAD

Für den Rahmen habe ich mich aus einer Konstruktion aus Aluminiumprofilen entschieden. Diese sollten die nötige Stabilität haben, damit auch ich damit unbeschadet fahren kann.

Die einzelnen Profile hat mir mein Sandkastenfreund geschweißt. Er kann das und zwar gut.

Die Vorderachse sollte auf alle Fälle schwenkbar sein, damit nicht immer ein Rad in der Luft hängt wenn der Untergrund uneben ist. Hierfür verwende ich zwei 15 mm Flanschlager K002. Der Rahmen hat eine 8mm dicke Frontplatte, an welcher die Achse für die beiden Flanschlager befestigt wird.

Hier mit den Vorderrädern

Vorderrad mit Bremssattel und Lenkachse

Die Vorderradaufhängung besteht aus einem Aluminiumprofil 20x20mm welches die Radachse, den Lenkhebel und das Halteblech für den Bremssattel trägt. Die Lenkachse wir durch je zwei 10 mm Stehlager realisiert. Die Vorderräder sind für einen Elektroroller gedacht und mussten leicht modifiziert werden, da sie ursprünglich eine durchgehende Achse hatten und beidseitig befestigt wurden. Hierfür habe ich die originale Achse entfernt und jeweils eine neue Distanzhülse, welche zwischen die beiden Radlager kommt, gedreht.

die originale Achse hier wurde durch besagte Hülse ersetzt

Gas- und Bremspedal

Die Firmwareversion „Hoverkart“ erlaubt die Steuerung über zwei Analogeingänge. Ein Eingang für Gas und der andere für Bremse. Ich habe mir über Ebay zwei Pedale mit analog Hallsensoren bestellt. Diese funktionieren kontaktlos und scheinen recht robust zu sein. Die Pedale können mit 3,3V betrieben werden.

Ein Datenblatt des Hallsensors findet man hier.

Die Pedale gibt es z.B. hier.

Die ausgegebene Spannung geht nicht ganz von 0V bis 3,3V aber das lässt sich in der Firmware sehr gut einstellen, damit min./ max. oder besser kein Gas und Vollgas richtig ausgewertet werden.

Die Einstellungen für die Analogeingänge befinden sich in der config.h Datei. Die Änderungen lassen sich schnell in Visual Studio erledigen.

Werbeanzeigen

Das Bremspedal dient einmal natürlich zum Bremsen und zweitens mittels „Doppelklick“ zur Aktivierung der Rückwärtsfahrt. Das Mainboard piept sogar beim Rückwärtsfahren. Das finden die Kinder ziemlich cool.

Ansicht von unten, Hallsensor und gewölbter Magnet

Werbeanzeigen

Fahrwerksgeometrie

Für die Auslegung der Fahrwerksgeometrie habe ich mich an allgemein gültigen Prinzipien orientiert. Das äußere Rad beschreibt dabei einen größeren Radius als das innere. Hierfür gibt es ein geometrisches Modell. Das muss bei der Auslegung der Lenkung berücksichtigt werden. Normalerweise wird dies über das sogenannte Lenktrapez gewährleistet. Leider hatte ich nicht den nötigen Platz für eine zusätzliche Verbindungsstange zwischen den beiden Vorderrädern. Ich konnte mir aber mit CAD helfen und bin somit bis auf 1° Abweichung an der idealen Auslegung. Auf Sturz habe ich bei der Konstruktion verzichtet um es einfach zu halten. Das Kart geht trotzdem um die Kurve als wäre der Teufel hinter ihm her. Ebenso wenig hat das Kart einen Nachlauf. Das merkt man sehr, da die Lenkung sehr direkt fast schon nervös reagiert.

Neuer Akku

Der derzeitige Akku funktioniert zwar, aber die Kapazität lässt doch sehr zu wünschen übrig und ein weiterer Punkt wirkt sich eher negativ aus. Momentan sind Panasonic NCR18650PF Zellen verbaut. Für den neuen Akku habe ich Samsung INR18650-25R Zellen verwendet. Die Samsung Zellen habe einen maximalen Entladestrom von 20A gegenüber den Zellen von Panasonic mit 10A. Das bringt den entscheidenden Vorteil, dass die Spannung der Samsung Zellen beim Entladen nicht so schnell einbricht und das Kart somit erstens mehr Leistung hat und zweitens das Board nicht so schnell abschaltet weil es der Meinung ist, der Akku wäre leer. Dabei hat man einfach nur mal kurz beschleunigt.

Wie auf dem Bild zu sehen ist, habe ich mich für 10S5P entschieden. Das entspricht einer Gesamtspannung von 42V und einer Kapazität von 12,75Ah. Theoretisch kann der Akku 100A liefern sofern die Verbinder und das BMS dies zulassen. Zur Zellenverbindung habe ich mich für Löten entschieden. Die Akkucommunity ist hier sehr Zwiespalten. Viele halten Löten für zu gefährlich, weil die Akkus explodieren können. Wenn man aber nur sehr kurz (2s – 3s) mit einem mind. 100W Lötkolben lötet geht das ziemlich gut. Der Akkupack ist hier noch nicht ganz fertig, da zwei Zellen getauscht werden müssen weil sie defekt sind. Ebenso müssen noch alle Brücken isoliert werden, damit es keinen Kurzschluss zwischen dem Becher (Minuspol) jeder Zelle und dem Pluspol gibt falls mechanische Beanspruchungen die Brücken eindrücken. Ich schiebe einfach ein Stück Pappe unter die Brücke und fixiere diese dann mit Klebeband.

Die Brücken sind aus 1mm versilbertem Kupferdraht. Laut VDE 0298 T4 06/13 kann ein Draht mit einem Querschnitt von 0,75mm² mit einen Strom von max. 15A belastet werden. Mit 1mm Durchmesser liegt man bei 0,785mm² und somit etwas höher. Das entspricht bei drei Bücken ca. 45A. Das reicht dicke, da die Software in der Grundeinstellung bei 17A pro Rad abschaltet.

Das BMS muss noch dran und das Pack muss noch eingepackt werden. Witzigs Wortspiel 😉 !

14.12.2020

So, nachdem alles ordentlich zusammengebaut wurde habe ich mich dran gemacht die Kapazität des Akkupacks zu messen. Man will ja schließlich wissen was man da so zusammengekloppt hat. Dafür habe ich mir für 20€ einen Leistungsmesser für Modellbauanwendungen gekauft.

https://www.banggood.com/ToolkitRC-WM150-150A-50V-Watt-Meter-Power-Analyzer-LCD-Display-Power-Voltage-Current-Tester-PWM-Output-p-1593171.html?cur_warehouse=CN

Quelle: Banggod

Das Display zeigt die Daten nach einer Testfahrt mit dem Kart. Die Elektronik hat 33,7A gezogen. Das Entspricht einer Leistung von 1130W. Bei einem eher pessimistisch angesetzten Wirkungsgrad von 90% wären das ca. 1,5PS. Was will man mehr.

Den Kapazitätstest habe ich mit 3 PKW Glühlampen a 12V in Reihe durchgeführt.

Hier kann man sehr schön sehen, dass nach knapp 13min 1Ah verbraucht wurde bei einem konstanten Strom von 4,7A. Das Maximum von 7,4A war der Einschaltstrom der Glühlampen. Das ist übrigens der Grund warum die Dinger immer nur beim Einschalten kaputt gehen.

Am Ende ist übrigens herausgekommen, dass der Akkupack knapp über 12Ah Kapazität hat. Das ist etwas weniger als die errechneten 12,75Ah könnte aber daran liegen, dass noch nicht alle Akkus 100%ig ausbalanciert sind und das BMS abschaltet wenn eine Reihe parallel geschalteter Akkus unter 2,8V fällt während andere Akkus noch 3V haben. Ich hoffe, dass das BMS das irgendwann geregelt kriegt.

Die Zusatzplatine

Im Kart habe ich eine Platine zusätzlich zur Hoverboardplatine verbaut. Diese wird verwendet um das Signal des Gaspedals beeinflussen zu können. Weiterhin können die verschiedenen Sounds per Handy abgespielt werden, das Licht über Handy an und ausgeschaltet, sowie verschieden Statusinfos auf das Handy übertragen werden. Die Verbindung zum Handy läuft über Bluetooth 4.0.

Die besagte Platine habe ich ursprünglich auf einer Lochrasterplatine aus Hartpapier aufgebaut. das ist nicht gut, da das Hartpapier Feuchtigkeit aufnimmt und sich stark wölbt. Jetzt habe ich die Reißleine gezogen und eine neue Platine entworfen und diese aus Epoxy fertigen lassen.

Schaltplan der neuen Zusatzplatine
Zusatzplatine Marios Kart
3D-Modell der Zusatzplatine

Es fehlen noch ein paar Bauelemente dann kann es ans Bestücken gehen. Links und rechts befinden sich Klemmleisten für die ganzen Anschlüsse. Dann kommt auf der linken Seite das MP3 Modul für die Sounds. In der Mitte oben ein Bluetoothmodul für Statusmeldungen von der Hoverboardplatine. Darunter ein Spannungsregler. Dann kommt der 4fach Optokoppler für die Ansteuerung des MP3-Moduls vom ESP32 welcher rechts angeordnet ist. Ganz unten in der Mitte die Schaltung für das Licht und unten rechts der Spannungsregler für die ankommenden 42V. Dieser stellt 6V zur Verfügung. Damit werden alle anderen Baugruppen und Spannungsregler betrieben. Leider läuft der Hallsensor für die Geschwindigkeitsmessung am Hinterrad nur mit min. 6V. Sonst könnte ich mir den Spannungswandler für das MP3-Modul sparen und alles mit 3,3V betreiben.

fertig bestückte Zusatzplatine für das Kart

Das ist die Oberfläche fürs Handy. Mit dem linken Regler lässt sich die maximale Geschwindigkeit einstellen, mit dem rechten Regler das maximale Drehmoment. Unten ist der Batteriestatus und darüber der Wert für die max. Geschwindigkeit. Darüber die Schnecke zeigt an, dass das Kart momentan nur langsam fahren kann. Stellt man die max. Geschwindigkeit höher kommt der Roadrunner. Ganz oben sind die Tasten für die Sounds, das Licht und die Bluetoothverbindung.

Handyoberfläche in BLYNK

Die neuste Softwareversion für die Hoverboard Platine von Emanuel Feru bietet die Möglichkeit viele Werte während des Betriebes einzustellen. Diese können über die Serielle Schnittstelle gesendet werden. Für die Maximale Drehzahl der Antriebsräder heißt der Befehl SET N_MOT_MAX (Value). Dieser Befehl wird jedes Mal gesendet, wenn der Regler für die maximale Geschwindigkeit verändert wird. Somit kann die maximale Geschwindigkeit immer und während des Betriebes geändert werden. Das ist ein Feature, welches ich mir schon lange gewünscht habe, danke Emanuel.

Es gab schon von Anfang an die Möglichkeit das maximale Drehmoment über die Pedale einzustellen. Das war aber etwas umständlich und kann vom Fahrer jederzeit geändert werden. Das war also keine Option.

So, die neue Platine ist erfolgreich eingebaut worden. Es funktioniert alles zu meiner Zufriedenheit.

eingebaute Zusatzlatine

Ein Video zum Schluss

Fortsetzung folgt!