SparrowR2 Anwendugnen

Elektronik-Labor  Projekte  AVR 



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


Elektronik-Labor  Projekte  AVR