Schwarz auf Weiß

Auch als Buch mit dem Titel '10 Selbstbauprojekte', ISBN-Nr. 978-3-7448-3433-9 und als e-book mit der ISBN-Nr. 9783744806299 erschienen.

Besuchen Sie auch meine Art site https://khomet.de

Freitag, 17. August 2018

RC Car mit PIC18F25K22


Inhaltsverzeichnis

Motivation
Aufbau
Power Modul
Hauptplatine

Software
Entwicklungsumgebung
Downloads
Fotostrecke

Motivation
Der Reiz war, ein Auto eines 14in1 ROBOT SET's mit einer Lenkung, einer Motorsteuerung und einer Fernbedienung im low-cost Bereich auszustatten. 







Aufbau
Als Grundlage dient der Solar-Motor, der Getriebeblock und die angetriebene Hinterachse des 14in1 Robot Kits. Die Vorderachse wird am Servo SG90 befestigt. Die Solarzelle wird durch einen Knopfzellenakku LIR2477 und einer Ladeeinrichtung mit USB-Anschluss ersetzt. Die Hauptplatine nimmt den PIC18F25K22, das Servo SG90, die H-Bridge ZXMHC6A07T8 und den IR-Receiver vs1838b auf. In Version 1 kommt noch eine Hinderniserkennung, Blinken links und rechts und Bremslicht bei Drücken der Taste '0' hinzu. Die Leiterplatte ist so gestaltet, dass der Kühlergrill und die Montageteile abgetrennt werden können. Der Zusammenbau erfolgt durch Löten. Das Fernbedienungskit ist z. B. von KEYES und wird über ebay angeboten.

Power Modul
Das Power Modul versorgt die Hauptplatine mit nominal +3,6 V. Um einen Wechsel der Knopfzelle zu vermeiden, wird eine Lithium-Akku Knopfzelle verwendet. Die Aufladung erfolgt über ein USB-Kabel. Der LTC4054 kontrolliert das Laden. Mit R6 und R7 wird der Ladestrom programmiert, hier CC=90 mA (0,5C). Die Ladeschlussspannung beträgt 4,20 V. Bei CC=0,074C wird die Ladung beendet. Eine LED signalisiert den Ladestatus. Der Akku darf max. mit 1C=180 mA entladen werden. Dieser Strom könnte dann über 1 h entnommen werden.
Um zu verhindern, dass bei der Ladung des Akkus Strom entnommen wird, ist ein Schalter, bestehend aus der H-Brücke ZXMHC6A07T8, vorgesehen. Die zwei n-chan MOSFETs leiten nicht, weil UGS=0 V ist. Die zwei p-chan MOSFETs sind parallel geschaltet, um einen Durchgangswiderstand von ca. 0,2 Ohm zu realisieren. Die Gates sind über 1k parallel geschaltet und werden von einem Spannungsteiler, gespeist aus den +5 V der USB Spannung, angesteuert. Ist kein USB Kabel angeschlossen, schalten die p-chan MOSFETS durch und die Batteriespannung steht am Ausgang zur Verfügung. Um die Stromaufnahme der Hauptplatine kontrollieren zu können, ist ein entsprechender Jumper vorgesehen. 
Die Hauptplatine benötigt mindestens eine Batteriespannung von 3,25 V. Das entspricht einer Ladung von 15%. Ausgehend von einer voll aufgeladenen Zelle stehen also 85% Ladung zum Betrieb zur Verfügung. Das ergibt ca. 50 Minuten Fahrspaß.  

Schaltplan des Power Moduls





Platine Bestückungsseite des Power Moduls
Platine Lötseite des Power Moduls
Platine des Power Moduls Bestückungsseite bestückt
Platine des Power Moduls Lötseite bestückt
Ladestrom und Kapazität über die Zeit
Ladestrom und Batteriespannung über die Zeit



Hauptplatine

Die Hauptplatine besteht aus dem Prozessor PIC18F25K22, dem Micro-Servo SG90, dem IR-Empfänger VS1838B und dem Motortreiber für den Solarmotor (H-Brücke ZXMHC6A07T8). Die Hinderniserkennung ist in Version 1 hinzugekommen. Sie kann mit einem Jumper über JP19 und JP18 aktiviert oder deaktiviert werden. 



Schaltbild Hauptplatine V1




Hauptplatine Bestückungsseite
Hauptplatine Lötseite
Hauptplatine zerlegt
Montage Kühlergrill

Montage Laschen für Getriebeblock

Montage seitliche Halterung
Animation Zusammenbau Vorderachse





Software
Die Firmware für den PIC18F25K22 ist in C für den XC8 Compiler Version 1.34 geschrieben. Um Strom zu sparen, wird der PIC mit 1 MHz getaktet. Weiterhin werden alle nicht benutzten Ein-/Ausgänge als Ausgang mit Ausgangspegel 0 V initialisiert.


IR-Receiver VS1838B



Die Fernbedienung verwendet das NEC Protokoll. Es setzt sich zusammen aus der Startsequenz, einer 8-Bit Startadresse, einer invertierten 8-Bit Startadresse, dem 8-Bit Command Wort und dem invertierten 8-Bit Command Wort. Der Carrier hat eine Frequenz von 38 kHz.





komplettes NEC-Protokoll für die OK-Taste



8-Bit Command Wort nicht invertiert für die OK-Taste 





komplettes NEC-Protokoll wenn die OK-Taste länger gedrückt wird

Der Ausgang des VS 1838B wird dem CCP2 (Pin12) des PIC zugeführt. Der CCP2 detektiert jede abfallende Flanke und löst dabei einen Interrupt aus. Mit Timer3 wird die Zeit von Interrupt zu Interrupt gemessen. Die Startsequenz mit 9 ms low und 4,5 ms high ergibt ca. 159 counts. Alle folgenden Bits haben 131 counts bei high und 16 counts bei low. Die counts je Bit werden sequentiell in einem Array gespeichert und entsprechend interpretiert. Es wird nur das nicht invertierte Command-Wort ausgewertet [17] ... [24], da die Adresse (die ersten 16 Bits) immer konstant ist. 

NEC-Protokoll (z. B. OK Taste): 0x00  0xFF  0x40  0xBF   




Motor Driver ZXMHC6A07T8
Der ZXMHC6A07T8 ist eine H-Brücke bestehend aus 2 n-chan MOSFET's 2 p-chan MOSFET's. Der Solarmotor ist zwischen D1/D2 und D3/D4 angeschlossen.

H-Bridge mit Solarmotor


Der PIC18F25K22 bietet die Möglichkeit, über 4 Ports direkt eine H-Bridge anzusteuern.
Dazu wird das Modul  ECCP1 mit dem CCP1CON-Register für Fullbridge und  Forward/Reverse initialisiert. Die Ausgänge liegen auf den Ports P1A/RC2/pin 13, P1B/RB2/pin 23, P1C/RB1/pin 22, P1D/RB4/pin 25. Mit CCPR1L kann die Pulsweite und damit die Speed eingestellt werden. Timer 4 stellt die Zeitbasis des PWM dar und wird auf eine Periode von 4,08 ms eingestellt. Die Diagramme wurden mit der Logikanalysator-Funktion des PICkit3.5 aufgenommen, deshalb sind jeweils nur 3 Kanäle zu sehen. Um alle 4 Kanäle darzustellen, wurden 2 Aufnahmen mit entsprechender Kanalkombination gemacht.

Motor-Forward P1A - P1C - P1D, Periodendauer 4,08 ms

Motor-Forward P1B - P1C - P1D, Periodendauer 4,08 ms

Motor-Reverse P1A - P1B - P1C, Pulsweite 580 us (speed=10%)

Motor-Reverse P1B - P1C - P1D, Pulsweite 580 us (speed=10%)

Lenkung mit Servo SG90
Der Servo Eingang wird vom PWM5 des PIC angesteuert (Pin 6). Basis Counter ist Timer 2. Die Periodendauer beträgt 20 ms. Der aktuelle Lenkeinschlag wird dem Register SetDCPWM5 übergeben.

Servo Linksanschlag

Servo Mittelstellung

Servo Rechtsanschlag
Servo Periodendauer



Messung der Batteriespannung
Um einer Tiefentladung vorzubeugen, wird laufend die Batteriespannung am Eingang AN2/Pin4 gemessen. Unterschreitet diese 3,25 V, blinken alle LED's. Dann sollte die Akku-Zelle wieder aufgeladen werden. 

Entwicklungsumgebung

C-Compiler für den PIC18F25K22 ist der freie XC8 Version 1.34 (hier ist die plib noch enthalten). Editor und Umgebung ist das ebenfalls freie, komfortable MPLAB X IDE V4.01. Als In-Circuit Emulator/Debugger wird das PICkit 3.5 eingesetzt. Das  3D-Modell für die Konstruktion der Leiterplatte wurde mit FreeCAD 0.17 64Bit Version 13519 (Git) erstellt. Die Leiterplatten-Layouts wurden mit Eagle 7.7.0 Hobbyist 64Bit realisiert. Alle Werkzeuge laufen unter Windows 10. Für die Oszillogramme wurde ein zweites PICkit3.5 eingesetzt, das mittels der PICkit3-Software mit einem OS beschrieben wurde. Dadurch öffnet sich die Möglichkeit einen Logikanalysator zu verwenden. 


Downloads
Source C-Programm: mainV1.zip
Eagle:                        14in1_Eagle_V1.zip 
FreeCAD:                    14in1_FreeCAD_V1.zip           



Fotostrecke
Die folgenden Bilder zeigen die Version 0 der Leiterplatten. Deshalb gibt es noch diverse Korrekturen in Form von Drahtbrücken. 

Das funktionsfähige Modell, die Frontscheinwerfer sind eingeschaltet



Rücklichter und Rückfahrlicht (Fahrrichtung rückwärts) sind eingeschaltet

Unteransicht

Lenkung, das Ruderhorn des Servos befindet sich zwischen den beiden schmalen Platinen unter der Achse


Antrieb Hinterrad
Die Fernbedienung z. B. von KEYES