Zur Startseite

RC-Schalter
(mit Atmel ATtiny13)

Neben Servos und Fahrreglern (ESC) spielen RC-Schalter bei der Fernsteuerung von Modellen eine große Rolle. Immer dann, wenn nur einfache Ein/Aus Schaltfunktionen gebraucht werden, sind sie gefragt.

Mit kleinen RISC Prozessoren, wie dem ATtiny13 von ATMEL, lässt sich solch ein Teil sehr einfach realisieren.

Die einfachste Variante ist hier unten im Schaltplan zu sehen:

Hier sind nur vier Pins des ATtiny belegt. Pin 4 ist Masse (-5V), Pin 8 ist VCC (+4V), Pin 5 ist der Port PB0 (Eingang Signal) und Pin 3 ist PB4 (Ausgang für eine LED).
Zusätzlich gehört über GND und VCC noch der obligatorische 100nF Blockkondensator.

Die Ports eines ATtiny können maximal 40 mA liefern. Das ist mehr als genug für eine LED. Ich betreibe teilweise mehrere LEDs an einem Port ohne zusätzlichen Treiber-Transistor. Allerdings stelle ich sicher, dass nie mehr als ca. 25 mA Strom gezogen wird. Damit bin ich auf der sicheren Seite.

Das Programm ist in Bascom geschrieben. Ich verwende den Bascom-internen "Pulsein" Befehl. Das macht die Routine sehr einfach. Ganz wichtig ist das deaktivieren der Fuse CKDIV8 und die korrekte Frequenzeinstellung auf 9,6 MHz, ansonsten stimmen die Impulszeiten nicht! Übrigens brenne ich die ICs mit Atmel-Studio und STK500.

Hier das Bascom-Script für den 1-Kanal RC-Schalter:

$regfile = "attiny13.dat"
$crystal = 9600000                   
 'Fuse (CKDIV8) deaktivieren !
$hwstack = 16
$swstack = 8
$framesize = 24

Config Portb.0 = Input                'Rc Signal an PB0 / PIN5
Config Portb.4 = Output             
'Ausgang an PB4 / PIN3

Dim W As Word

Do
Pulsein W , Pinb , 0 , 1
If W<= 150 Then
Portb.4 = 0
End If

If W> 150 And W<= 200 Then
Portb.4 = 1
If W> 200 Then W = 200
End If
Loop
End

Profis machen das eher etwas komplizierter (dafür aber genauer) mit dem internen Timer. "Pulsein" ist unter echten Könnern nicht so beliebt, glaube ich. Dieser Befehl hat aber neben der wirklich sehr einfachen Programmroutine einen weiteren großen Vorteil, zu dem wir weiter unten kommen.

Dieses Bild zeigt, wie klein der RC-Schalter bei Einsatz eines SMD-Typs sein kann. Es ist aus dem Torpedoboot M.A.S. bei dem die Verdrahtung der LEDs mit dünnem CuL-Draht gemacht wurde. Die Pille ist der Block-C. Ein einfacherer RC-Schalter ist wohl kaum denkbar.

Nun zum Vorteil der "Pulsein"-Lösung gegenüber der Timer-Routine:
Pulsein erlaubt die Abfrage mehrerer Kanäle in einer Hauptschleife. Der Tiny13 hat insgesamt 6 Ports. Damit sind drei Eingänge und drei Ausgänge möglich. Die einzige Einschränkung liegt im geringeren Ausgangsstrom auf PortB.5. Dieser kann nur max. 1 mA liefern. Zumindest an diesem Ausgang sollte also ein Transistor als Treiber zum Einsatz kommen.
Außerdem muss der PortB.5 erst per Fuse-Änderung zum I/O Port gemacht werden. Bei der Fuse-Programmierung muss also hier zusätzlich "RSTDISBL" aktiviert werden.
Aber Vorsicht: Zuerst das Programm in den Chip laden, dann die Fuses setzen!
Nach RSTDISBL lässt sich der Chip nämlich nur noch mit Hochvolt-Programmierung brennen, denn ISP braucht den Reset-Anschluss und den haben wir ja nun entfernt.

Hier oben die Schaltung für einen 3-Kanal RC-Schalter. Am PB5 hängt der Treiber. Der mögliche Strom hängt hier vom Transistor ab. Bei einem BC547 wären das 100 mA. PB3 und PB4 würde ich mit max. 25 mA belasten. Natürlich könnten alle drei Ausgänge Treiber haben und dann größere Ströme liefern sowie bei Bedarf dann auch Relais schalten.

Im Folgenden das Bascom-Script für den 3-Kanal RC-Schalter:

$regfile = "attiny13.dat"
$crystal = 9600000                       
 'Fuse (CKDIV8) deaktivieren!
$hwstack = 16
$swstack = 8
$framesize = 24

Config Portb.0 = Input                    'Rc Signal K1 an PB0/PIN5
Config Portb.1 = Input                   
'Rc Signal K2 an PB1/PIN6
Config Portb.2 = Input                    
'Rc Signal K3 an PB2/PIN7
Config Portb.4 = Output                 
'Ausgang 1 an PB4/PIN3
Config Portb.3 = Output                 
'Ausgang 2 an PB3/PIN2
Config Portb.5 = Output                 
'Ausgang 3 an PB5/PIN1

Dim W1 As Word
Dim W2 As Word
Dim W3 As Word

Do
'*** Auswertung Kanal 1 ***
Pulsein W1 , Pinb , 0 , 1
If W1 <= 150 Then
Portb.4 = 0
End If

If W1 > 150 And W1 <= 200 Then
Portb.4 = 1
If W1 > 200 Then W1 = 200
End If

'*** Auswertung Kanal 2 ***
Pulsein W2 , Pinb , 1 , 1
If W2 <= 150 Then
Portb.3 = 0
End If

If W2 > 150 And W2 <= 200 Then
Portb.3 = 1
If W2 > 200 Then W2 = 200
End If

'*** Auswertung Kanal 3 ***
Pulsein W3 , Pinb , 2 , 1
If W3 <= 150 Then
Portb.5 = 0
End If

If W3 > 150 And W3 <= 200 Then
Portb.5 = 1
If W3 > 200 Then W3 = 200
End If
Loop
End

Abschließend ein Foto vom Aufbau eines 3-Kanal RC-Schalters auf Lochraster.

Dieser spezielle Schalter ist für mein Boom-Boot konzipiert und schaltet drei Beleuchtungsquellen.

1. Positionsleuchten (drei Lötpunkte unten links, drei LEDs gegen GND)
2. Suchscheinwerfer (ein Lötpunkt links mittig, eine LED gegen GND)
3. Kabinenbeleuchtung (ein Lötpunkt oben mittig, fünf LEDs über Treiber an
    VCC)

Im Boot ist diesmal genügend Platz, so das ein normaler DIL Chip sogar im Stecksockel Platz gefunden hat. Die Maße der Platine sind 33 x 19 mm.

 

nach oben