4 Kanal Schalter mit PICAXE 08M2

Es ist mal wieder Zeit für etwas PICAXE Bastelei. Thomas Paul hatte mich angesprochen, ob ich den Mehrkanalschalter aus meinem XXVIw nicht auch in klein hätte. Hatte ich nicht, war aber leicht dran zu kommen.
Zur Erinnerung: im XXVIw hatte ich einen Mehrkanalschalter mit Tipfunktion eingebaut über den ich die Ausfahrgeräte gesteuert habe. Rund um einen etwas fetteren PICAXE 18M2 entstanden 5 bistabile Relaisstufen für die elektrisch angetriebenen Ausfahrgeräte und eine Servoverzögerung für den Klappschnorchel, alles in Tippbetrieb gesteuert. Geht natürlich auch eleganter mit Kaufprodukten, aber nicht so flexibel. Ich hatte nach einiger Zeit den „Morse“schalter durch eine 12er Tastatur ersetzt auf der die gewünschten Funktionen direkt angesprochen werden konnten. Nun, Boot ist verkauft und Sender wieder zurück gebaut, aber das Programm existiert noch und so habe ich auf mehrfachen Wunsch eines Einzelnen die nicht benötigten Programmteile einfach entfernt.
Das nun vorliegenden Programm läuft auf einem PICAXE 08M2, somit ergeben sich 4 Ausgänge die geschaltet werden können. Angeschlossen ist die Schaltung wie ein Servo, die Endstufen kann man nach Belieben ausführen. In diversen Onlineshops lassen sich für schmalen Schekel (ca. 7 Euro) Relaisplatinen erwerben, auf denen alle notwendigen Treiber integriert sind und man nur noch 4 Strippen plus Masse zum PICAXE ziehen muss.
Gesteuert wird der PICAXE über Kippschalter oder Knüppel:
1x lang = Ausgang 1 an
1x kurz, 1x lang = Ausgang 2 an
2x kurz, 1x lang = Ausgang 3 an
3x kurz, 1x lang = Ausgang 4 an
4x kurz, 1x lang = alle Ausgänge aus

Ist ein Ausgang bereits eingeschaltet, so schaltet die korrespondierende Tastfolge den Ausgang aus. Erreicht wird dies durch den Befehl toggle in der Programmierung.

Etwas Augenmerk muss man auf den Schaltpunkt legen. Wenn der Befehl „debug“ auskommentiert wird, so erscheint beim nächsten Start nach Verbinden des Senders im Code Explorer unter der Variable „empfänger“ ein Wert. Dieser muss natürlich zum schalten der Prozedur grösser sein, als der Wert, welcher in Zeile 20 vorgegeben wurde. Ist das der Fall, so muss der Befehl „debug“ wieder einkommentiert und das Programm neu überspielt werden.

Auf meiner Testplatine habe ich der Einfachheit halber mal 4 LEDs mit 1K Widerständen direkt an den PICAXE angeschlossen. Zu Demozwecken geht das. Der Schaltplan ist auch nur zur Verdeutlichung der Ein/Ausgänge. Hier gibt es keine Spannungsregelung oder Schutzschaltungen, da muss man sich selbst drum kümmern.

schaltplan

Wenn man weitere Ausgänge benötigt und sich das Programm nicht auf mehr Kanäle und einen grösseren Chip umbiegen will, dann kann man sich mit einem kleinen Kniff behelfen. Ein zweiter PICAXE 08M2 wird mit seinem Eingang parallel zum ersten Chip geschaltet. Im zweiten Chip wird die Zeile 20 gegen:
if empfaenger < 120 then
und Zeile 32 gegen
if empfaenger > 140 then
ausgetauscht, und schon kann man mit einem Kipptaster mit Mittelstellung den einen Chip über die obere Tasterstellung ansprechen, und den anderen Chip über die untere Tasterstellung.

Das Programm:


;4kanalschalter mit 08m2

sertxd ("4kanalschalter mit 08m2",cr,lf) ;text wird bei einschalten zur identifizierung des chips gesendet
disablebod
symbol zaehler = b0
symbol lednummer = b1
symbol empfaenger = b3
symbol Eingang = c.3

;ports initialisieren
Let pinsC = %00000000
lednummer =-1

main:
if time >1 then ;setzt den ledzaehler zurueck wenn keine eingabe
lednummer=0
endif

pulsin Eingang,1,empfaenger
if empfaenger > 180 then ;taste ist gedrueckt
gosub signal
endif
;debug
goto main ;und von vorne

signal:
zaehler =0 ;zaehler auf null
time=0 ;zeit zuruecksetzen

signal2:
pulsin Eingang,1,empfaenger
if empfaenger < 160 then ;wenn taste losgelassen dann wieder alles von vorne
return
endif

zaehler=zaehler+1 ;ansonsten zaehler starten
pause 10 ;kleine pause

select case zaehler
case 2 ;kurz gedrueckt dann lednummer inkrementieren
inc lednummer

case 5 ;lang gedrueckt dann auswahl
branch lednummer,(btn0,rel1an,rel2an,rel3an,rel4an,ende)

btn0:
goto raus

rel1an:
toggle c.4
goto raus

rel2an:
toggle c.2
goto raus

rel3an:
toggle c.1
goto raus

rel4an:
toggle c.0
goto raus

ende:
Let pinsC = %00000000 ; alle leds aus

raus:
endselect
pause 100 ;kleine pause
goto signal2

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.