Start
Experimente
Grundlagen
Produkte
- ES-M32
-- Erster Test
-- USB
-- Bascom
-- RAM
-- ADC
-- Ports
-- Relais -- Morsen --Datenlogger -- SIOS -- ASCII -- mV-Logger -- I/O12/24 V -- Bootloader
Neues
Impressum
|
ES-M32
Datenlogger
Diese Anwendung auf der Basis des ES-M32 verwendet das
interne EEPROM des Mikrocontrollers als Datenspeicher. Dabei werden maximal
1000 analoge Messwerte im Byte-Format gespeichert. Bei einem Messintervall von
einer Minute darf eine Messung knapp eine Woche dauern. Der Datenlogger
arbeitet in dieser Zeit autark und ohne Verbindung zum PC.
Die äußere Programmstruktur wurde vollständig aus dem
ESM-32-Starterbeispiel übernommen. Beim Einschalten werden vier Menüpunkte im Display
angezeigt, die man mit den tasten S1 bis S4 auswählten kann. S1 startet eine
Messung. Die Spannung am Kanal ADC1 wird dabei einmal pro Minute gemessen und laufend
im Display angezeigt. Zur Speicherung werden die Rohdaten durch vier geteilt
und damit auf den Wertebereich eines Byte ( 0…255) reduziert. Die Wartezeit
wird in 60 Sekundenabschitte geteilt, damit während der Messung die Taste S2
überwacht werden kann. Mit S2 bricht man die laufende Messung ab.
|
'Bascom ATmega32, Datenlogger
$regfile = "m32def.dat" $crystal = 11059200 $hwstack = 16 $swstack = 32 $framesize = 32 Baud = 9600
Declare Sub Test1 Declare Sub Test2 Declare Sub Test3 Declare Sub Test4
Dim Pwma As Integer Dim Pwmb As Integer Dim N As Integer Dim I As Integer Dim D As Word Dim U As Single Dim B As Byte
'Config Timer0 = Timer , Prescale = 64 'Start Timer0
Config Lcdpin = Pin , Db4 = Portb.4 , Db5 = Portb.5 , Db6 = Portb.6 , Db7 = Portb.7 , E = Portb.3 , Rs = Portb.2 Config Lcd = 16 * 2
Initlcd Cls Locate 1 , 1 Lcd "Data logger" Waitms 1500
Config Adc = Single , Prescaler = 64 , Reference = Off Start Adc
S1 Alias Pind.2 S2 Alias Pind.3 S3 Alias Pind.6 S4 Alias Pind.7
Config Portd = &B00110000 Portd.2 = 1 Portd.3 = 1 Portd.6 = 1 Portd.7 = 1
Out1 Alias Portd.4 Out2 Alias Portd.5
Cls Locate 1 , 1 Lcd "S1=Start S2=Stop" Locate 2 , 1 Lcd "S3=Load S4=Clear"
Do If S1 = 0 Then Cls Locate 1 , 1 Lcd "Logger" Waitms 1000 Test1 End If If S2 = 0 Then Cls Locate 1 , 1 Lcd "Stop" Locate 2 , 1 Waitms 1000 Test2 End If If S3 = 0 Then Cls Locate 1 , 1 Lcd "Load" Waitms 1000 Test3 End If If S4 = 0 Then Cls Locate 1 , 1 Lcd "Clear" Waitms 1000 Test4 End If Waitms 30 Loop
Sub Test1 For N = 1 To 1000 D = Getadc(1) U = D / 1023 U = U * 5 Locate 2 , 1 Lcd Fusing(u , "#.###") Lcd " V" D = D / 4 B = D Writeeeprom B , N Print B For I = 1 To 60 Waitms 1000 If S2 = 0 Then Exit Sub Next I Next N End Sub
Sub Test2 Locate 1 , 1 Lcd "Stop " End Sub
Sub Test3 Locate 1 , 1 Lcd "Load " For N = 1 To 1000 Readeeprom B , N If B = 255 Then Exit Sub Print B Waitms 10 Next N End Sub
Sub Test4 For N = 1 To 1000 B = 255 Writeeeprom B , N Next N End Sub
End
Download: ESM32logger.zip (5 K)
S3 startet die Datenübertragung zum PC. Die Datren werden
als Zahlenwerte im ASCII-Format gesendet und können direkt in einem Terminal
empfangen werden. Zur weiteren Auswertung lassen sie sich aus dem Terminal
kopieren und z.B. in eine Excel-Tabelle einfügen. Nach erfolgter Übertragung
sollte man mit S4 den gesamten Speicher löschen, damit das Ender der nächsten Messung eindeutig erkannt werden kann.
|
Eine typische Anwendung des Datenloggers ist die Untersuchung
des Spannubngsverlaufs an einem Akku. Das Bild oben zeigt die Messung an einem Lithium-Akku,
der im Verlauf von sieben Stunden über einen Widerstand von 27 Ohm entladen
wurde. Nach sechs Stunden hat die Schutzschaltung den Akku bei ca. 2,5 V
abgeschaltet. Die mittlere Spannung lag bei 3,7 V. Aus der Entladekurve kann
eine Kapazität von ca. 700 mAh ermittelt werden.
|
|