Start
Experimente
Grundlagen
Produkte
- Sparrow - Schlafradio - Voltmeter - Bauteileset
Neues
Impressum
|
Das Sparrow-Schlafradio
Das Schlafradio basiert
auf dem BK1068-Breakout-Board. Senderabstimmung, Lautstärkeverstellung,
Power-Down. NF-Endverstärker, all das ist ja schon vorhanden, sodass
ein Radio mit dieser Platine sehr einfach zu bauen ist. Wenn
dann noch alles mit einem Mikrocontroller gesteuert wird, hat man ganz
andere Möglichkeiten. Hier geht es um das gute Einschlafen. Das Radio
soll eine halbe Stunde lang laufen, dann immer leiser werden und
schließlich abschalten. So kann es beim Übergang in die Nacht
helfen. Dass
gerade der Sparrow für dieses Projekt ausgesucht wurde hat seinen Sinn.
Dieser kleine Controller kann nämlich problemlos mit auf die Platine
gesteckt werden. Die wichtigsten Bedienelemente sind schon vorhanden.
man muss nur einmal das Programm aufspielen, dann geht es los.
Das
Radio selbst basiert auf der schon vorgestellten Schaltung. Auch hier
wieder gibt es zwei Tasten für die Senderwahl. Aber die Lautstärke
(Vol) wird nun vom Mikrocontroller bedient, genau wie die
Power-Down-Funktion (On).
|
Damit beide Platinen zusammen auf ein Steckboard
passen muss der Sparrow zwei Pfostenleisten mit insgesamt acht
Anschlüssen bekommen. Alle Anschlüsse des Tiny13A sind dann auf dem
Steckboard zugänglich.
|
Beide Platinen liegen an derselben
Betriebsspannung von 3 V und sind nur über zwei weitere Leitungen
verbunden. Der Vol-Eingang ist ein Tristate-Eingang, der im Ruhezustand
eine mittlere Spannung von 1,5 V annimmt. Zieht man die Spannung nach
oben wird es lauter, zieht man sie nach Masse wird es leiser. Der Port
B4 muss daher im Ruhezustand ein hochohmiger Eingang sein, der nur bei
einer Veränderung der Lautstärke in den Ausgangszustand umgeschaltet
wird und dabei entweder High oder Low wird. Gleichzeitig ist der
Anschluss ein AD-Eingang und kann daher messen, ob der Radiochip sich
im aktiven Zustand mit ca. 1,5 V befindet. Im Power-Down-Zustand
dagegen steigt die Spannung auf 3 V.
Über den Anschluss PB3
wird die Power-Down-Funktion mit einem kurzen Low-Impuls bedient.
Praktisch kann das Radio über diesen Pin ein- und ausgeschaltet werden,
wobei der gerade vorhandene Zustand am Vol-Pin abgelesen werden kann.
|
Die Bedienung ist einfach. S2 schaltet das Radio
ein und erhöht die Lautstärke in insgesamt 16 Stufen. S1 dagegen
reduziert die Lautstärke und schaltet das Radio schließlich ganz
ab. Den Betriebszustand des Radios zeigt der Sparrow über die
LED1 (grün) an. Die rote LED ist immer an, wird jedoch im Aus-Zustand
des Radios in der Helligkeit reduziert, damit beide Platinen zusammen
im Ruhezustand nicht mehr als 1 mA brauchen.
|
Das Steuerprogramm wurde in Bascom geschrieben
und erklärt sich weitgehend selbst. Es gibt Prozeduren für die
Grundfunktionen Lauter, Leiser, An und Aus. Die Laufzeit wird in
T gemessen und beim Druck auf die Lauter-Taste zurückgesetzt. Im
Aus-Zustand versetzt das Programm den Port B3 in den hochohmigen
Zustand mit Pullup. Der Strom für die LED2 fließt dann über den
Pullup-Widerstand im Tiny13 und über den Pullup am On-Pin des
Radiochips. Das Ergebnis ist ein schwaches Standby-Leuchten der
roten LED, sodass man das Radio auch im Dunkeln leicht findet. Falls
man doch mal wieder aufwacht...
Quelltext-Download : Sparrow_SchlafRadio.zip App in den Sparow laden: http://tiny.systems/categorie/cheepit/SparrowSchlafradio.html'ATtiny13 Sparrow Schlafradio $regfile = "attiny13.dat" $crystal = 1200000 $hwstack = 8 $swstack = 4 $framesize = 4 Config Portb = &B000001010
Dim N As Byte Dim L As Byte Dim T As Word Dim T2 As Word Dim U As Word
Led1 Alias Portb.1 Led2 Alias Portb.3 S1 Alias Pinb.0 S2 Alias Pinb.2
Declare Sub An Declare Sub Aus Declare Sub Lauter Declare Sub Leiser
Config Adc = Single , Prescaler = Auto Start Adc
Waitms 100
Led2 = 1 An Led1 = 1 For N = 1 To 16 Lauter Next N
Do If S2 = 0 Then An Waitms 50 Lauter T = 0 Waitms 100 End If If S1 = 0 Then Leiser Waitms 100 End If Waitms 100 If L > 0 Then T = T + 1 If T > 18000 Then '30 Min T2 = T - 18000 T2 = T2 Mod 50 'Pro 5 s eine Stufe leiser If T2 = 0 Then Leiser End If Loop
Sub An U = Getadc(2) If U > 900 Then Led2 = 0 Waitms 40 Led2 = 1 Waitms 40 End If Led1 = 1 Ddrb.3 = 1 End Sub
Sub Aus U = Getadc(2) If U < 900 Then Led2 = 0 Waitms 40 Led2 = 1 Waitms 40 L = L + 1 If L = 16 Then L = 16 End If Led1 = 0 Ddrb.3 = 0 End Sub
Sub Lauter If L < 16 Then Portb.4 = 1 : Ddrb.4 = 1 Waitms 50 Ddrb.4 = 0 : Portb.4 = 0 Waitms 50 L = L + 1 End If End Sub
Sub Leiser If L > 0 Then Portb.4 = 0 : Ddrb.4 = 1 Waitms 50 Ddrb.4 = 0 : Portb.4 = 0 Waitms 50 If L > 0 Then L = L - 1 If L = 0 Then Aus End If End Sub
End |
|