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.