Sondersignalanlage für Modellfahrzeuge
von Martin Müller
Die
Sondersignalanlage erzeugt an zwei blauen LEDs (PB.3 und PB.4)
charakteristische Doppelblitze. Die asynchronen Lichtblitze lassen den Eindruck
entstehen, es handele sich um zwei voneinander unabhängige Blitzlichter. An
PB.0 und PB.2 wird durch den Timer 0 ein Zweiklanghorn simuliert, das
unabhängig von der Blinkfrequenz der LEDs, die typische Tonfolge eines
Martinshorns erzeugt. Die
Spitze-zu-Spitze-Spannung (USS)
des Signals übersteigt durch entgegengesetztes Einschalten der genannten Ports
deutlich die Größe der Betriebsspannung. Das Tonsignal wird über einen
Piezo-Schallwandler aus einem defekten Rauchmelder ausgegeben. Ein- und
ausgeschaltet wird die Sondersignalanlage durch einen positiven Flankenimpuls
an PB.1. Im vorliegenden Aufbau wird hierfür ein Reedkontakt verwendet. Bei
weiterer Miniaturisierung der Schaltung (Verwendung von SMD-Bauteilen), wobei
die größte Schwierigkeit in der Beschaffung eines geeigneten Schallwandlers
bestehen dürfte, wäre es möglich, beim Überfahren eines Magneten die
„Einsatzfahrt“ zu beginnen und beim Überfahren eines weiteren Magneten diese zu
beenden.
Der Schaltplan der Sondersignalanlage gestaltet sich denkbar einfach. In
Abhängigkeit von der zum sicheren Betrieb der LEDs notwendigen Spannung wird
die an die Schaltung anzulegende Versorgungsspannung gewählt und die
Widerstände R1 und R2 dimensioniert. Die von mir verwendeten LEDs leuchten
schon bei ca. 2,8 Volt angenehm hell. Somit kommt die Schaltung mit 3 Volt
Betriebsspannung aus. Die Vorwiderstände haben in diesem Fall jeweils den Wert
vom 39 Ohm.
Hier eine Aufbaumöglichkeit der Schaltung für ein Lego-Modell. Durch die
Verwendung von ø 3mm LEDs halten sich auch die Veränderungen an den
Legobausteinen in sehr überschaubaren Grenzen.
Die benötigten Widerstände und Kondensatoren wurden in SMD-Ausführung
direkt auf die Kupferseite der Punktrasterplatine gelötet.
Das Video zeigt die Anlage in Aktion, wobei die Tonhöhen des Zweiklanghorns, aufnahmetechnisch bedingt, leider nicht
originalgetreu wiedergegeben werden. http://youtu.be/0VCqn32Z-kw
Download: Sosi.zip
$regfile = "ATtiny13.DAT"
$crystal = 9600000 'Frequenz des internen Oszillators
$hwstack = 32 'default use 32 for the hardware stack
$swstack = 10 'default use 10 for the SW stack
$framesize = 40 'default Use 40 For The Frame
Stop Ac
Stop Adc
Config Portb = &B11111101 'Portb.1 auf 'Eingang' schalten
Portb = &B00000011 'Pullup Portb.1; Portb.0=1
Config Int0 = Rising
On Int0 Einaus 'INT0 konfiguriren, wird nur benutzt um Powerdown zu beenden
Dim A As Byte 'Softwarezähler LED an PortB.4
Dim B As Byte 'Softwarezähler LED an PortB.3
Dim C As Byte 'Softwarezähler Martinshorn
Dim D As Byte 'Variable für TCNT0
Anfang: 'Beginn Initialisierung
Waitms 10
A = 0
B = 67
C = 0
Enable Int0
Enable Interrupts
Portb = &B00000011
Powerdown
Config Timer0 = Timer , Prescale = 64 'TIMER0 erzeugt Tonfrequenzen
Tcnt0 = 97
On Timer0 Horn
Enable Timer0
Disable Int0
Schleife: 'Entprellen nach Beendigung von Powerdown
If Pinb.1 = 0 Then
Goto Schleife
End If
Do 'Do - Loop für die 3 Softwarezähler
Waitms 10
Incr A
Incr B
Incr C
If A = 79 Then
Portb.4 = 1
Elseif A = 90 Then
Portb.4 = 0
End If
If A = 99 Then
Portb.4 = 1
Elseif A = 105 Then
Portb.4 = 0
End If
If A = 105 Then
A = 0
End If
If B = 84 Then
Portb.3 = 1
Elseif B = 95 Then
Portb.3 = 0
End If
If B = 104 Then
Portb.3 = 1
Elseif B = 110 Then
Portb.3 = 0
End If
If B = 110 Then
B = 0
End If
If C = 1 Then
D = 97
Elseif C = 75 Then
D = 137
End If
If C = 150 Then
C = 0
End If
If Pinb.1 = 0 Then 'Ausschalten mit Entprellen
Stop Timer0
Portb = &B00000011
Kontakt:
If Pinb.1 = 0 Then
Goto Kontakt
End If
Goto Anfang
End If
Loop
Horn:
Toggle Portb.0
Toggle Portb.2
Tcnt0 = D
Return
Einaus:
nop
Return
End