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.
|
|