SparrowR2 Anwendugnen
Automatische Ansteuerung eines Andreaskreuzes von Michael Gaus
Mit
dieser Schaltung kann die automatische Ansteuerung eines Andreaskreuzes
erfolgen, sobald ein Zug der Modelleisenbahn eine bestimmte Gleisstelle
überfährt. Es wird dann ein Warnblinklicht für unbeschrankte
Bahnübergänge erzeugt, indem zwei LED-Ausgänge wechselweise blinken.
Nach Auslösung des Kontaktes wird das Blinklicht für eine gewisse Zeit
eingeschaltet und anschließend wieder abgeschaltet. Als Kontakt wird
ein Reed-Schalter verwendet, der durch einen Magnet betätigt werden
kann. Je nach Montageort des Reedschalters (z.B. im Gleisbett) kann
evtl. ein vorhandener Permanentmagnet in der Lok zur Auslösung dienen
oder aber es wird ein kleiner Magnet in die Lok oder einen Waggon
geklebt.
Prädestiniert
für so eine Steuerung ist ein kleiner Mikrocontroller wie z.B. der
Sparrow. Ein erster Test der Firmware kann dann auch ganz einfach durch
Betätigen des Tasters S1 auf der Sparrow-Platine erfolgen, sodass
dadurch die beiden LEDs eine gewisse Zeit lang wechselseitig blinken.
In
der Firmware wird zunächst gewartet, bis der Reedschalter am Eingang
PB0 auslöst, d.h. nach GND schaltet. Dann werden in einer Zählschleife
mit der Zählvariablen count die beiden LEDs abwechselnd für jeweils 500
ms eingeschaltet. Solange der Reedschalter noch geschlossen ist, wird
count jeweils wieder auf Null zurückgesetzt. Nachdem der Reedschalter
wieder offen ist, wird count bis auf 10 hochgezählt, sodass noch 10x
weiter geblinkt wird. Danach werden beide LEDs ausgeschaltet und es
erfolgt ein Sprung zurück an den Programmanfang.
Die
Firmware wurde mit der kostenlosen Evaluation-Version (bis 4 kBytes
Codegröße) des C-Compilers CodeVision AVR V3.10 geschrieben. Die
Taktfrequenz beträgt 1,2 MHz (Clock prescaler = 8).
Links:
C-Compiler CodeVisionAVR V3: http://www.hpinfotech.ro/cvavr_download.html
Download: Andreaskreuz.zip
Direkt laden: http://tiny.systems/categorie/cheepit/Andreaskreuz.html/*******************************************************
This program was created by the
CodeWizardAVR V3.10 Evaluation
Automatic Program Generator
© Copyright 1998-2014 Pavel Haiduc, HP InfoTech s.r.l.
http://www.hpinfotech.com
Chip type : ATtiny13
AVR Core Clock frequency: 1,200000 MHz
Memory model : Tiny
External RAM size : 0
Data Stack size : 16
*******************************************************/
#include <tiny13.h>
#include <delay.h>
#define PIN_REED PINB.0
#define PULLUP_REED PORTB.0
#define P_LED1 PORTB.1
#define DP_LED1 DDRB.1
#define P_LED2 PORTB.3
#define DP_LED2 DDRB.3
void main(void)
{
unsigned char count;
// Crystal Oscillator division factor: 8
#pragma optsize-
CLKPR=(1<<CLKPCE);
CLKPR=(0<<CLKPCE) | (0<<CLKPS3) | (0<<CLKPS2) | (1<<CLKPS1) | (1<<CLKPS0);
#ifdef _OPTIMIZE_SIZE_
#pragma optsize+
#endif
// Analog Comparator initialization
// Analog Comparator: Off
// The Analog Comparator's positive input is
// connected to the AIN0 pin
// The Analog Comparator's negative input is
// connected to the AIN1 pin
ACSR=(1<<ACD) | (0<<ACBG) | (0<<ACO) | (0<<ACI) | (0<<ACIE) | (0<<ACIS1) | (0<<ACIS0);
ADCSRB=(0<<ACME);
PULLUP_REED = 1;
DP_LED1 = 1;
DP_LED2 = 1;
while (1)
{
if(PIN_REED == 0)
{
for(count = 0; count < 10; count++)
{
P_LED1 = 1;
P_LED2 = 0;
delay_ms(500);
P_LED1 = 0;
P_LED2 = 1;
delay_ms(500);
if(PIN_REED == 0)
{
count = 0;
}
}
P_LED2 = 0;
}
}
}
Sparrow-Stimmungsindikator
Zwischenmenschliche
Beziehungen basieren auf eindeutigen Signalen. Aber nicht immer ist es
leicht, die richtigen Worte zu finden. Der Sparrow kann da helfen. Er
fungiert als eine Art Stimmungs-Ampel und macht es unnötig, dass
Sätze wie "Quatsch mich nicht an!" ausgesprochen werden. Nach dem
Start blitzt der Sparrow nur so vor sich hin und signalisiert seine
Bereitschaft. Der Benutzer wählt dann die momentane Stress-oder
Entspannungsstufe mit den beiden Tastern (up/down). Was das dann
jeweils genau bedeutet, muss man natürlich vereinbaren. Es könnte
zum Beispiel so aussehen:
Modus 1: Doppelblitze rot/grün: Maximaler Stress, am besten nicht ansprechen
Modus 2: Einzelblitze rot/grün: Stark belastet, Kopf ist nicht frei
Modus 3: Doppelblitze rot: Versuch der Entspannung läuft
Modus 4: Einzelblitze rot: Gut entspannt, alles easy
Modus 5: Einzelblitze grün: Bereit zu neuen Taten
Modus 6: Doppelblitze grün: Let's go!
Download: Sparrow_Blink3.zip
Dirtekt laden: http://tiny.systems/categorie/cheepit/Stimmungsindikator.html
'ATtiny13 Sparrow Blink3.bas
$regfile = "attiny13.dat"
$crystal = 1200000
$hwstack = 8
$swstack = 4
$framesize = 4
Config Portb = &B000011010
Dim T As Byte
Dim N As Byte
Dim M As Byte
Led1 Alias Portb.1
Led2 Alias Portb.3
S1 Alias Pinb.0
S2 Alias Pinb.2
Do
If S2 = 0 Then
Waitms 50
If M < 6 Then M = M + 1
Do
Loop Until S2 = 1
Waitms 50
End If
If S1 = 0 Then
Waitms 50
If M > 1 Then M = M - 1
Do
Loop Until S1 = 1
Waitms 50
End If
If M = 0 Then 'Standby
Led1 = 1
Waitms 10
Led1 = 0
Waitms 500
End If
If M = 1 Then 'very busy
Led1 = 1 : Led2 = 1
Waitms 30
Led1 = 0 : Led2 = 0
Waitms 100
Led1 = 1 : Led2 = 1
Waitms 30
Led1 = 0 : Led2 = 0
Waitms 840
End If
If M = 2 Then 'busy
Led1 = 1 : Led2 = 1
Waitms 30
Led1 = 0 : Led2 = 0
Waitms 970
End If
If M = 3 Then 'relaxing
Led2 = 1
Waitms 30
Led2 = 0
Waitms 100
Led2 = 1
Waitms 30
Led2 = 0
Waitms 840
End If
If M = 4 Then 'relexed
Led2 = 1
Waitms 30
Led2 = 0
Waitms 970
End If
If M = 5 Then 'ready
Led1 = 1
Waitms 30
Led1 = 0
Waitms 970
End If
If M = 6 Then 'go
Led1 = 1
Waitms 30
Led1 = 0
Waitms 100
Led1 = 1
Waitms 30
Led1 = 0
Waitms 840
End If
Loop
End