IMG 20210811 170002

Seit einigen Tagen in ich im Besitz eines Absima Sherpa Crawlers. Obwohl ich noch einen TRX-4 und einen Axial Capra habe, konnte ich einem gewissen Gruppenzwang nicht widerstehen und habe mir ebenfalls diesen Wagen gekauft.
Was mich persönlich von Anfang an bei dem Wagen "gestört" hat, ist die "Notwendigkeit", die Getriebesperren und den 1/2 Gang separat zu schalten. Nun muss ich dazu sagen, dass ich mich noch nicht all zu lange mit Autos, besonders Crawlern, beschäftige. Für mich selbst empfinde ich es als unnötig und umständlich, nach einer Marschfahrt erstmal in den ersten Gang zu schalten und dann noch beide Differentialsperren separat einzuschalten. Viel praktischer sind für mich 2 Modi; Fahrmodus und Geländemodus. Zu diesem Zweck hab ich mir mal die entsprechenden Servos angeschaut, die über Kanal 3, 5 und 6 an der Funke geschaltet werden. Natürlich lassen sich die Servos nicht einfach parallel schalten, wäre ja auch zu einfach gewesen. Ich habe die Länge der Impulse für die entsprechenden Kanäle daher in den jeweils geschalteten Endstellungen ausgemessen und folgende Werte bekommen:

Kanal K3 K5 K6 K4
an 1.736 2.033 0.873  li 0.872
aus  1.285 1.712 1.176  mi 1.511
        re 2.149

Wie man sieht, sind die Servos zum Teil nur wenig angesteuert. Ich denke, somit will man vermeiden, dass die Servos beim schalten in den Anschlag laufen und nur durch den Servosaver geschützt sind. Daraufhin hab ich die Funke mal geöffnet in der Hoffnung, an Potis und Schaltern Widerstände zu finden die die Impulslänge definieren. Waren auch welche, aber aufgrund von winzigsten SMD Bauteilen hab ich die Funke schnell wieder geschlossen. Das war mir dann doch etwas zu fummelig.

Also musste eine andere Lösung her. Da ich mich gerade in Urlaub befinde, und wie üblich meine halbe Werkstatt dabei habe, hab ich mich mit dem Problem befasst. Wie so oft in anderen Projekten, hab ich mich für einen PICAXE 08M2 entschieden. Mit den 8 Beinen sollte auszukommen sein. Wer PICAXE nicht kennt, das sind kleine PIC Prozessoren mit Vorprogrammierung. Passend dazu gibt es eine Programmierumgebung, in der die BASIC Programme geschrieben werden können. Über eine einfache serielle 3 Draht Schnittstelle werden die Programme in den Chip geschoben. Alles sehr einfach gehalten. Mehr dazu findet man unter https://picaxe.com/
Das dazu passende, zum Schluss nur 112 Byte grosse BASIC Programm war schnell geschrieben und ist leicht erklärt: Der Eingang c.3 liegt parallel zum Kanal 3 und detektiert, ob der erste oder zweite Gang geschaltet ist. Passend dazu wird jeweils ein Ausgang mit einem entsprechendem Servosignal beaufschlagt, welcher das vordere und hintere Differentialservo ansteuert. Die dazu notwendige Impulslänge wurde ja vorher ausgemessen und ist als Wert fest im Programm hinterlegt. Einzig beim K6 im Zustand "Diff gesperrt" musste etwas nachgeholfen werden, da das Servo nicht zuverlässig schaltete. Der Schaltzustand wird noch durch eine LED angezeigt, das hat aber nur kosmetischen Charakter.

IMG 20210801 213447 ergebnis

IMG 20210803 180900 ergebnis
Das ist im Prinzip auch schon alles. Nun sind die Kanäle 5 und 6 frei geworden und können über die Funke angesteuert werden. Kleiner Schönheitsfehler sind hier die ungewöhnlichen Impulslängen, die einen speziell dafür programmierten Schaltbaustein nötig machen. Die mir bekannten Schaltbausteine erwarten eine Mitte bei ungefähr 1,5 ms und schalten von dort aus ab einem gewissen Wert den Kanal ein oder aus. Hier liegt aber ein und aus bei den Kanälen an völlig anderen Stellen. Mal sehen, vielleicht erweitere ich ja mal bei Gelegenheit das Programm um zwei weitere Eingänge und Ausgänge, dann aber nur mit nem grösseren Chip.

Das Listing:

;kanalsaver_sherpa mit 08m2
;empfaenger 1/2 Gang (K3) an pin c.3, Diff hinten (K5) an pin c.4, Diff vorne (K6) an pin c.5
;der chip detektiert ersten oder zweiten gang und schaltet dann die ausgaenge entsprechend
;mit voreingestellten werten
;

#picaxe 08m2

sertxd ("kanalsaver_sherpa mit 08m2",cr,lf) ;text wird bei einschalten zur identifizierung des chips gesendet
disablebod
'
;gemessene werte fuer die kanaele
;kanal k3 k5 k6 k4
;an 1.736 2.033 0.873 li 0.872
;aus 1.285 1.712 1.176 mi 1.511
; re 2.149
;
symbol kanal3 = c.3 '1/2 Gang
symbol kanal5 = c.1 'Diff vorne
symbol kanal6 = c.2 'Diff hinten
symbol led = c.4 'LED
symbol k3 = b0 'Kanal3
symbol k5gesp=203 'vordefinierte werte, gemessen am empfaenger
symbol k5frei=171
symbol k6gesp=75 'dieser wert wurde angepasst damit das servo zuverlässig schaltet
symbol k6frei=118

 init:

servo kanal5, k5gesp 'Servos in definierte position beim start
servo kanal6, k6gesp
high led
pause 100
low led
pause 1000 'bisschen warten

do
pulsin kanal3,1,k3 'werte vom empfaenger lesen
select case k3 'und entscheiden

'langsamer gang
case 0 to 149 'Kanal 3 eingeschaltet
servo kanal5, k5gesp 'kanal 5 und 6 einschalten mit vordef. werten, led aus
servo kanal6, k6gesp
low led

'schneller gang
case 150 to 220 'kanal 3 ausgeschaltet
servo kanal5, k5frei 'kanal 5 und 6 ausschalten mit vordef. werten, led an
servo kanal6, k6frei
high led
endselect
pause 20 'wert ggfs an fernbedienung anpassen
loop

 

Demovideo zur Funktion des Bausteins:

 

Wir nutzen Cookies auf unserer Website. Einige von ihnen sind essenziell für den Betrieb der Seite, während andere uns helfen, diese Website und die Nutzererfahrung zu verbessern (Tracking Cookies). Sie können selbst entscheiden, ob Sie die Cookies zulassen möchten. Bitte beachten Sie, dass bei einer Ablehnung womöglich nicht mehr alle Funktionalitäten der Seite zur Verfügung stehen.