Sparrow-Apps: Messen und Testen
Feuchtigkeitstester für Blumenerde von Leander Hackmann
Zwei
Eisendrähte oder Grafit-Elektroden (Bleistiftminen) werden in die
Blumenerde gesteckt und an B4 und GND angeschlossen. Der Sparrow misst
dann die Leitfähigkeit und damit die Feuchtigkeit der Blumenerde. Alle
zwei Sekunden gibt es einen Lichtblitz: Grün für feucht oder Rot für
trocken. Der Tiny13 schaltet jeweils für einen kurzen Moment seinen
Pullup-Widerstand am Port B4 ein. Dieser bildet einen Spannungsteiler
mit dem externen Sensorwiderstand. Die Schaltschwelle liegt bei etwa 30
kOhm. Die App ist extrem sparsam und damit tauglich für den
Dauerbetrieb. Nach jedem LED-Impuls geht der Controller in den
Power-Down-Modus und wird erst durch den Watchdog-Timer nach etwa zwei
Sekunden neu gestartet.
Download: Sparow_BlumenTester.zip
Direkt hochladen: http://tiny.systems/categorie/cheepit/BlumenTester.html
'ATtiny13 Blume-Tester,
'Warnung bei trockener Blumenerde
'Lowpower-Betrieb mit Watchdog
'Sensordrähte an B4 und GND
$regfile = "attiny13.dat"
$crystal = 1200000
$hwstack = 8
$swstack = 4
$framesize = 4
Config Portb = &B000001010
Dim D As Word
Led1 Alias Portb.1
Led2 Alias Portb.3
Config Watchdog = 2048
Start Watchdog
Config Adc = Single , Prescaler = Auto
Start Adc
Portb.4 = 1 'Pullup
D = Getadc(2) 'ADC2 an B4
Stop Adc
Portb.4 = 0
Ddrb.4 = 1
If D > 500 Then 'dry: red LED
Led2 = 1
Waitms 10
Led2 = 0
Else 'wet: green LED
Led1 = 1
Waitms 10
Led1 = 0
End If
Powerdown
End
Das akustische Voltmeter
Wenn man
genau aufpasst wohin man die Messkabel hält fällt es manchmal schwer,
gleichzeitig auf das Voltmeter zu sehen. Dann braucht man das akustische
Voltmeter. Die gemessene Spannung wird in eine Tonhöhe umgesetzt. Und null Volt
ist Stille, damit es nicht dauernd nervt. Der Messeingang ist ADC3 (B3),
und der Soundausgang ist B1. Die Signale werden über PWM0B erzeugt. Der Timer
wird mit festem Vorteiler betrieben. Aber die Tonhöhe wird über das
Osccal-Register verändert, d.h. der interne RC-Oszillator des Tiny13 wird
abgestimmt und damit die gesamte Taktrate. Am Eingang empfiehlt sich ein
Schutzwiderstand mit 10 k gegen Überspannungen und ein Widerstand mit ca. 100 k
gegen GND, damit offene Messkabel keine Spannung haben.
Download: Sparrow_ADCsound.zip
Direkt hochladen: http://tiny.systems/categorie/cheepit/Voltmeter.html
'Sparrow_ADCsound.bas
$regfile = "attiny13.dat"
$crystal = 1200000
$hwstack = 8
$swstack = 4
$framesize = 4
Dim D As Integer
Ddrb = 2 'Sound Output B1
Config Adc = Single , Prescaler = Auto
Start Adc
Config Timer0 = Pwm , Prescale = 8 , Compare B Pwm = Clear Up
Do
D = Getadc(3) 'Voltage Input B3
D = D / 10
Osccal = D
If D < 1 Then Pwm0b = 0 Else Pwm0b = 40
Waitms 18
Loop
End
Siehe auch:
http://tiny.systems/article/sparrowTemperaturwarner.html
http://tiny.systems/categorie/cheepit/Temperaturwarner.html
Einstellbarer Magnet-Schalter, von Rainer R.
Der
Magnet-Sensor CYL49E stammt aus einem Franzis-Lernpaket. Er hat drei
Beine: +, GND, Output) Es geht aber auch mit anderen wie
z.B. A1302. Im laufenden Betrieb legt man mit einem Druck auf S1
fest, dass die aktuelle Sensorspannung die Schaltschwelle werden soll.
LED 1 und LED2 zeigen dann ob dieser Wert über- oder
unterschritten wird. Es geht auch ohne Tastendruck, denn beim Start
wird ebenfalls der aktuelle Messwert übernommen. Das gleiche Verfahren
kann auch für ganz andere Sensoren verwendet werden.
Download: Sparrow_Hall1.zip
Direkt hochladen: http://tiny.systems/categorie/cheepit/MagnetSensor.html 'ATtiny13 Sparrow Hallsensor
'Hall-Sensor über 1k an ADC1 (Pin 7 - PB2) und 1k (beim progen ab) nach GND
'Referenzstellung beim Einschalten oder durch drücken S1
$regfile = "attiny13.dat"
$crystal = 1200000
$hwstack = 8
$swstack = 4
$framesize = 4
Config Portb = &B000011010
Dim X As Integer
Dim S As Integer
Config Adc = Single , Prescaler = Auto
Start Adc
L1 Alias Portb.1
L2 Alias Portb.3
S1 Alias Pinb.0
S2 Alias Pinb.2
L1 = 1
L2 = 1
Waitms 500
S = Getadc(1)
L1 = 0
L2 = 0
Do
X = Getadc(1)
If X < S Then L1 = 1
If X > S Then L1 = 0
If X < S Then L2 = 0
If X > S Then L2 = 1
If S1 = 0 Then
L1 = 1
L2 = 1
S = Getadc(1)
Waitms 50
Do
Loop Until S1 = 1
Waitms 50
End If
Waitms 50
Loop
End