Sparrow-Apps: Messen und Testen         

      
Elektronik-Labor  Projekte  AVR Sparrow 




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


Elektronik-Labor  Projekte  AVR Sparrow