Start

Experimente

Grundlagen

Produkte
Sparrow  
- Schlafradio  
- Voltmeter  
- Bauteileset 

 

Neues

Impressum

Das Sparrow-LED-Voltmeter

www.ak-modul-bus.de/stat/entwicklungssystem_sparrow.html

Der Sparrow eignet sich ideal für kleine Softwareprojekte in Schule, Ausbildung und Hobby. Jede Programmiersprache ist möglich, solange am Ende ein Hex-File vorliegt. Dieses kann dann mit dem hex2wav Konverter online in den Sparrow übertragen werden. Falls jemand lieber offline arbeitet kann er auch einen seriellen Anschluss und das Programm SparrowRS232  verwenden. Fertige Anwendungen von allgemeinem Interesse werden dann in eine App umgesetzt. Alles in der Cloud für alle, anklicken und fertig.

Die typischen Enwticklungsschritte bei der Softwareentwicklung sollen hier an einem einfachen Beispiel gezeigt werden. Verwendet wird Bascom, weil die Programme damit besonders einfach und leicht lesbar sind. Es geht um ein einfaches Voltmeter, also um die Messung und Anzeige von Spannungen.  Die Messung selbst ist einfach, denn dafür gibt es ja den 10-Bit AD-Wandler und den freien Pin B4 (=ADC2).
Config Adc = Single , Prescaler = Auto
Start Adc
U = Getadc(2)

Bleibt das Problem der Anzeige. Es gibt bereits mehrere Lösungen, eine davon ist die Vierbit-Anzeige mit zwei LEDs. Eine LED steht im Normalfall für ein Bit. Zwei Bit pro LED sind machbar, wenn man bestimmte Blinkmuster zusätzlich verwendet: 0 = Aus, 1 = kurze Lichtblitze, 2 = langes Blinken, 3 = An.  Insgesamt hat man jetzt vier Bit an zwei LEDs und kann Zahlen im Bereich  0...15 darstellen.  Das Ablesen erfordert etwas Übung, weil man praktisch eine Binärzahl liest. Wer das Verfahren vorab auf seine Praxistauglichkeit testen will kann z.B. den Sparrow Up/Down-Counter ausprobieren.

Für das Voltmeter bedeutet die Beschränkung auf 15 Ausgabestufen eine Auflösung von 0,2 V und eine Endspannung von 3 V bei entsprechender Betriebsspannung. Genau genommen muss die Betriebsspannung 3,2 V betragen, was bei zwei ganz frischen Alkalizellen gerade passt. Die Messspannung kann direkt am Anschluss B4 zugeführt werden, besser ist aber ein Schutzwiderstand von 10 kOhm in Reihe zum Messkabel.

Das folgende Programm zeigt eine erste mögliche Lösung. Der Messwert U wird durch 64 geteilt um die Auflösung auf vier Bit zu reduzieren. In N wird dann ein Wert im Bereich 0 bis 15 weiter verarbeitet und zur Anzeige gebracht. Trotz der geringen Auflösung der Anzeige hat das Messgerät einen praktischen Nutzen. Man kann es nämlich nach etwas Übung aus dem Augenwinkel ablesen, während man auf das Messobjekt und die Messkabel schaut.

'ATtiny13 Sparrow Spannung 0...15
$regfile = "attiny13.dat"
$crystal = 1200000
$hwstack = 8
$swstack = 4
$framesize = 4

Dim U As Word
Dim N As Byte
Dim H As Byte
Dim L As Byte

Led1 Alias Portb.1
Led2 Alias Portb.3
S1 Alias Pinb.0
S2 Alias Pinb.2
Config Portb = &B000001010

Config Adc = Single , Prescaler = Auto
Start Adc

Do
U = Getadc(2)
U = U / 64
N = U
L = N And 3
H = N
Shift H , Right , 2
H = H And 3
If L = 0 Then Led1 = 0 Else Led1 = 1
If H = 0 Then Led2 = 0 Else Led2 = 1
Waitms 50
If L < 2 Then Led1 = 0
If H < 2 Then Led2 = 0
Waitms 100
If L < 3 Then Led1 = 0
If H < 3 Then Led2 = 0
Waitms 100
Loop

End
Messbereichsumschaltung

Das AD-Wandler des Tiny13 kann wahlweise die interne Referenz von 1,1 V verwenden oder die Betriebsspannung VCC. Mit einem einfachen Spannungsteiler am Eingang kommt man daher auf einen Messbereich von 1,5 V oder bei passender Betriebsspannung von 4,5 V auf einen Messbereich von ca. 6 V. Für mehr Genauigkeit müsste man noch ein Poti einbauen, aber für einfache Messungen und zur Erläuterung des Messprinzips reichen zwei Festwiderstände. Damit hat man zugleich einen Überspannungsschutz. Eine zu große oder eine negative Eingangsspannung würde durch die internen Schutzdioden am Eingang begrenzt.


Für die Umschaltung kann man die beiden Taster S1 (kleiner Bereich) und S2 (großer Bereich) verwenden. Dabei wird jeweils der AD-Wandler neu konfiguriert. Zur Verdeutlichung der Umschaltung soll während des Tastendrucks jeweils eine der beiden LEDs leuchten. 

Download Quelltext und Hex-Datei: Sparrow_SpannungLED.zip
Direkt in den Sparrow laden: http://tiny.systems/categorie/cheepit/LEDVoltmeter.html

'ATtiny13 Sparrow Spannung 1,1V/VCC
$regfile = "attiny13.dat"
$crystal = 1200000
$hwstack = 8
$swstack = 4
$framesize = 4

Dim U As Word
Dim N As Byte
Dim H As Byte
Dim L As Byte

Led1 Alias Portb.1
Led2 Alias Portb.3
S1 Alias Pinb.0
S2 Alias Pinb.2
Config Portb = &B000001010


Config Adc = Single , Prescaler = Auto
Start Adc

Do
If S2 = 0 Then
Config Adc = Single , Prescaler = Auto , Reference = Internal
Start Adc
Led1 = 1
Led2 = 0
Waitms 300
Do
Loop Until S2 = 1
Waitms 10
Led1 = 0
End If
If S1 = 0 Then
Config Adc = Single , Prescaler = Auto , Reference = Avcc
Start Adc
Led2 = 1
Led1 = 0
Waitms 300
Do
Loop Until S1 = 1
Waitms 10
Led2 = 0
End If
U = Getadc(2)
U = U / 64
N = U
L = N And 3
H = N
Shift H , Right , 2
H = H And 3
If L = 0 Then Led1 = 0 Else Led1 = 1
If H = 0 Then Led2 = 0 Else Led2 = 1
Waitms 50
If L < 2 Then Led1 = 0
If H < 2 Then Led2 = 0
Waitms 100
If L < 3 Then Led1 = 0
If H < 3 Then Led2 = 0
Waitms 100
Loop

End

Die Umschaltung der Messbereiche arbeitet wie ein RS-Flipflop. Damit hat man auch einen Berührungspunkt mit der digitalen Elektronik.  Aber auch physikalische und technische Aspekte sind enthalten (Spannungsteiler, AD-Wandler, Binärzahlen), sodass das Gerät in verschiedensten Zusammenhängen im Unterricht eingesetzt werden kann. Und nicht zuletzt ist es ein kleines und vielseitiges Messgerät für die verschiedensten Anwendungen von der Batterieüberwachung bis zu Messwertanzeige unterschiedlicher physikalischer Größen.