Slotcar Controller V2

Aus naheliegenden Gründen (eigene Spannungsversorgung) durfte ich meinen ersten Slotcar Controller nicht mehr verwenden.

Nun muß also ein neuer her. Geplant ist, die komplette Elektronik in den Joystick einzubauen.

Zu den bereits vorhandenen Funktionen, soll eine Bluetooth Schnittstelle hinzukommen, sowie eine SD-Karte auf der die Profile der Fahrzeuge abgespeichert werden. Die Analoge Fahrzeugversorgung wird durch eine PWM-Endstufe ersetzt.
Der Turboknopf entfällt und wird durch eine programmierbare „Kickdown“ Funktion ersetzt.
Das wichtigste aber ist, das die Spannungsversorgung durch die Bahn bereitgestellt wird, und die Bahnspannung auch die maximalspannung darstellt. Bei mir allerdings ohne Voltage Drop am Regler.

Um vorerst meine Möglichkeiten auszuloten, baue ich mit Version 2 einen Regler, der alles hat, was meiner Meinung nach nötig ist, und zusätzlich zu den zukünftigen Steuerelementen auch noch die des alten Reglers hat.

Da Basti parallel zu mir, seinen Regler baut, allerdings mit abweichendem Konzept, gibt es Basiselemente die kompatibel bleiben sollen. Datenstruktur SD, PWM-Endstufe, AVR etc.

Aus diesem Grund habe ich für die Hardware ein Mainboard entworfen, und die Platine mit meiner Maschine gefräst. Das Ergebnis hat sogar mich verblüfft.

Das Mainboard besitzt einen 40 pooligen Sockel um die „CPU“ jederzeit gegen eine andere tauschen zu können. Hier wird lediglich das passende Pinout Board benötigt.
Als nächstes gleich noch die SMD-Platine für die 7-Segment Anzeige gefräst.

Und alles bestückt.

Bei PCB-Pool habe ich die Pinout-Boards für einen Atmel ATmega644 inklusive FTDI USB Chip bestellt.
An dieser Platine habe ich dann meine ersten Erfahrungen im Heißluft SMD löten gesammelt.

Als nächstes wird die Frontblende gefräst, und dann kann ich mit dem Programmieren witermachen.

…to be continued

Slotcar Controller V2

Inzwischen ist mein neuer Slotcar Controller fertig.

Die Elektronik ist in ihrem Gehäuse.
Alle benötigten Steuerelemente und Stecker sind eingebaut.

Nachdem die Hardware komplett getestet ist, und alles läuft, habe ich das Gehäuse inzwischen geschlossen.

Mein erstes eigenes Mikrocontrollerprojekt (Software) wächst auch.
An der ein oder anderen Stelle hängt es zwar noch beim c++ Programmieren, und ich muß zum Nachhilfeunterricht.
Beispielsweise habe ich Chan’s FAT32 Treiberpacket nicht zum laufen bekommen.

Aber es geht voran, und inzwischen komme ich ganz gut mit dem GCC und Atmel Studio 6 klar.

Die Basisfunktionen laufen.
Das Display zeigt die diversesten Informationen.
Man wird durch den Kalibrierablauf für den angeschlossenen Controller geführt.
Die gewünschte Drückerkennlinie wird dynamisch berechnet.
Es wird zwischen Poti und SD-Karten Betrieb unterschieden.
Im Poti Betrieb werden die Parameter, die nicht an den Potis eingestellt werden, aus dem EEProm geladen.
Alle Parameter können über die Buttons geändert werden.
Alle Parameter können über USB abgefragt und geändert werden.
Die SD-Karte wird initialisiert, und Dateien können ausgelesen werden.
Die Struktur auf der SD-Karte ist festgelegt.
Man kann die User und Fahrzeug auswählen.

In der Software fehlt jetzt noch:
ASR Berechnung
Motor Preload
SD-Karten Modus
Anzeige der Fahrzeugnummer (danke für die Idee Markus)

Übersicht aller Parameter:

preload
// 0-255 Motorspannung bei 0 power_out; 0 = OFF
zero_brake
// 0-1 Nullpunktbremse ON/OFF
zero_brake_release
// 0-255 *1000 ms Nullpunktbremse loslassen; Wenn preload ON
motion_brake
// 0-255 Bremsintensität der Bremse beim Fahren; 0 = OFF
motion_brake_duretion
// 0-255 *1 msec Bremsdauer; Wenn motion_brake ON
motion_brake_delta
// 0-255 Eingreifgrenze bei negativer PWM-Änderung; Wenn motion_brake ON
motion_brake_msec
// 0-255 Zeit für motion_brake_delta; Wenn motion_brake ON
motion_brake_dynamic
// 0-1 Dynamisches verhalten der Fahrbremse in Intensität und Dauer
boost
// 0-255 Boostintensität des Turbos (PWM); 0 = OFF
boost_duretion
// 0-255 msec Boostdauer; Wenn boost ON
boost_delta
// 0-255 Eingreifgrenze bei positiver PWM-Änderung; Wenn boost ON
boost_msec
// 0-255 Zeit für boost_delta; Wenn boost ON
boost_dynamic
// 0-1 Dynamisches verhalten des Turbos in Intensität und Dauer
asr
// 0-255 maximal x PWM-Schritte pro msec steigern; 0 = OFF
asr_max
// 0-255 ASR verwenden bis x PWM; Wenn asr ON
asr_dynamic
// 0-1 Dynamisches Verhalten der ASR

Nun noch ein paar Bilder

Die Blenden

Das Innenleben

Frontseite

Rückseite