Forum: Projekte & Code 2-Kanal analoger Datenlogger, mobil


von Mi N. (msx)


Angehängte Dateien:

Lesenswert?

Zur Erfassung langsamer Spannungsänderungen wie zum Beispiel Lade-/ 
Entladekurven von Akkus oder Fehlererkennung (Heizungsbrenner) kann man 
unter Umständen ein Oszilloskop verwenden. Damit ist dieses Gerät 
blockiert und müßte ggf. an einem anderen Ort ohne direkte 
Stromversorgung betrieben werden.

Für einfache Anwendungen und geringen Anforderungen reicht es, analoge 
Signale mit einem µC zu messen, in einen Flash-Speicher zu schreiben und 
später per PC auszuwerten. Hierzu ein Schaltungsvorschlag mit einem 
STM32G031F µC und einen SPI-Flash W25Q128, der mit einer passenden 
Batterie oder besser LiIon-Zelle betrieben werden kann.
Mit bis zu 1000 Messungen/s und einem Kanal reicht der Speicherplatz für 
gut zwei Stunden. Mit 1 Messung/s für ganze 3 Monate. Da die Messwerte 
permanent ausgegeben werden können, kann auch ohne direkte Speicherung 
ein angeschlossener PC die Werte speichern/auswerten.

Die gezeigte Schaltung verwendet ein fertiges µC Modul (WeACT 
STM32G031), welches noch mit einem SPI-Flash (hier W25Q128) und ein paar 
diskreten Bauteilen nach Bedarf ergänzt werden muß bzw. kann. Damit ist 
ein Aufbau auf Lochrasterplatine möglich.

Eine genauere Beschreibung findet sich hier: 
http://mino-elektronik.de/Gemischtes/2-Kanal%20Datenlogger.html
Abschließend ist dort auch das vorläufige Programm zu finden, was noch 
weiterentwickelt wird. Es kann für eigene Bedürfnisse angepasst werden.

Letztlich sollen noch ein USART-USB-Modul mit CH340 (bzw. 
MAX232-Treiber)  und ein LiIon Lademodul mit TP4056 und 
Unterspannungsabschaltung ergänzt, und alles zusammen in ein Gehäuse 
gepackt werden. Bis dahin bleibt alles noch ‚vorläufig‘.
Konstruktive Anregungen sind willkommen.

von Niklas G. (erlkoenig) Benutzerseite


Lesenswert?

Wenn du den Flash-IC abschaltbar machst und einen STM32 der L- oder 
U-Reihe verwendest senkst du den Stromverbrauch noch mal und erhöhst die 
Batterielebensdauer.

Mi N. schrieb:
> Letztlich sollen noch ein USART-USB-Modul mit CH340 (bzw.
> MAX232-Treiber)

Ziemlich umständlich, nimm doch einen STM32 mit USB-Peripherie, dann 
brauchst du nur noch eine USB-Buchse.

von Mi N. (msx)


Lesenswert?

Der W25Q geht in den Stromsparmodus mit <= 25 µA sobald /CS auf '1' 
liegt. Beim Abschalten wird zudem der Befehl 'power off' gesendet, 
wodurch die Stromaufnahme auf <= 1 µA sinkt. Da ist kein Sparpotential.
Vergleiche ich die Typen G031 und L031, so scheint die Ersparnis beim 
L031 bei 10 - 20 % zu liegen. Dummerweise sind beide Typen nicht pin- 
und funktionskompatibel, sodaß bei Bedarf nicht 1:1 gewechselt werden 
kann.
Die Module für den G031 gibt es aktuell zu 2,09 Euro, was sehr günstig 
ist.

USB ist erst einmal ein Gimmick, was nicht zwingend notwendig ist aber 
eventuell gleich als Ladeanschluß (für LiIon) mit 5 V genutzt werden 
kann.
Ein Modul mit CH340N von USB-C auf 'TTL'-Signale gibt es ebenfalls 
günstig, ohne spezielles Layout oder SMD-Löterei, die nicht für 
jedermann einfach ist.

So ist meine Planung, was ich nicht als umständlich sondern eher als 
einfach und nachbaubar ansehe.

von Niklas G. (erlkoenig) Benutzerseite


Lesenswert?

Mi N. schrieb:
> wodurch die Stromaufnahme auf <= 1 µA sinkt. Da ist kein Sparpotential.

Naja, die sparsamen MCUs haben im Powerdown-Mode einen Verbrauch von 
<<1uA, somit ist das 1uA vom Flash ziemlich signifikant und könnte somit 
den Verbrauch im Powerdown verdoppeln, was mit einem simplen Transistor 
zu verhindern wäre.

Mi N. schrieb:
> ohne spezielles Layout oder SMD-Löterei, die nicht für jedermann einfach
> ist.

Es gibt doch einige MCU-Module mit USB-Buchse drauf, da hat man die 
USB-Verbindung direkt fertig...

: Bearbeitet durch User
von Mi N. (msx)


Lesenswert?

Niklas G. schrieb:
> Es gibt doch einige MCU-Module mit USB-Buchse drauf, da hat man die
> USB-Verbindung direkt fertig...

Ich kenne kein geeignetes Modul.

Im Ruhemodus mit <= 10 µA und einem kleinen LiPo-Akku, wie er in 
Mobiltelefonen verwendet wird (0,8 - 1 Ah) komme ich auf eine Laufzeit 
von über 10 Jahren. Wenn das nicht reicht, verwendet man einfach einen 
EIN-AUS-Schalter. Da Daten und Messparameter nichtflüchtig gespeichert 
sind, ist das problemlos machbar.
Aber das ist doch überhaupt nicht der Punkt. Hauptverbraucher ist der 
NOR-Flash-Speicher beim Löschen und Beschreiben. Danach kommen der µC 
und die LEDs, deren Einschaltdauer man noch reduzieren oder sie ganz 
abschalten sollte.

Bislang habe ich die PLL weggelassen und nur HSI16 als Takt verwendet. 
Da werde ich noch testen, ob ich sie doch verwende und nur die CPU damit 
takte. Da reichen 1 - 2 MHz wohl aus. Rechenintensiv ist nur die 
hex-dez-Wandlung; diese Routine kann sich den Takt ja kurzfristig auf 64 
MHz hochschalten. Dann gibt es auch bei 1 - 2 MBd keine Lücken bei der 
Ausgabe. Mehr lassen die USB-Wandler eh nicht mehr zu.

: Bearbeitet durch User
von Mi N. (msx)


Angehängte Dateien:

Lesenswert?

Die optional genannten L- und U-Typen der STM32 hatte ich mir noch 
einmal angesehen. Wie oben schon geschrieben, ist mir das 
Einsparpotential beim Versorgungsstrom zu gering, als diese Richtung 
weiter zu verfolgen.

Es sind ergänzende Optionen hinzugekommen. Zum einen SMD-Taster und 
SMD-LEDs als Anterntive zu den großen THT-Ausführungen. Ferner auf der 
Unterseite ein optional abschaltbarer RS232-Treiber und ein 
Sense-Eingang 'ext', womit man ggf. die USART-Signale direkt oder 
invertiert ausgeben könnte. Dann noch ein Lochrasterfeld für Zusatzkram. 
Mal sehen, ob das alles klappt.
Falls nicht, kann ich die Platine (43 x 59 mm²) minimalbestückt als 
blinkenden Weihnachtsbaumschmuck verwenden.

von Mi N. (msx)


Angehängte Dateien:

Lesenswert?

Der Musteraufbau funktioniert soweit – für den Weihnachtsbaum muß ich 
wohl etwas anderes nehmen ;-)

Das Programm ist erweitert worden. Zum einen wurde die Stromaufnahme im 
Betrieb auf 0,7 mA gesenkt, indem die nun typische Taktfrequenz von 1 
MHz nur bei Bedarf auf höhere Werte umgeschaltet wird. Zum anderen sind 
Befehle hinzugekommen, um die Status-LEDs abschaltbar und die Bedienung 
auch fernsteuerbar zu machen. Die Messwerte können passend zum 
verwendeten Eingangsspannungsteiler skaliert werden, wobei der Wert von 
10000 einem Faktor von 1,0000 entspricht. Somit bleibt bei der 
Umrechnung die Auflösung des ADC erhalten.
Bei der Abtastung kann nun gewählt werden, ob bei längeren Messperioden 
nur ein einziger ms-Wert gemessen wird, alle ms-Werte in der Periode 
gemittelt werden oder eine feste Anzahl zum Abtastzeitpunkt. So kann 
beispielsweise bei einer Messperiode von 1 s ein Intervall von 10 
Einzelwerten gemessen, gemittelt und abgespeichert werden.

Neben dem neuen Programm (immer noch IAR-IDE) sind jetzt auch 
Fertigungsdaten für die oben gezeigte Platine verfügbar.
Zunächst habe ich mich beim Musteraufbau für eine 9-pol. SUB-D Buchse 
entschieden, da diese genug Pins für die RS232 und analog-Signale 
bietet. Auch die 5 V für die Aufladung des lokalen LiPo-Akkus haben noch 
Platz. Der RS232-Treiber ist nicht bestückt.
Beim verwendeten Lademodul mit TP4056 mußte der Ladestrom passend zum 
Akku abgesenkt werden. Als Option kann ein fertiges USB-Modul mit CH340 
nachgerüstet werden.

Wenn man die Schaltung in ein Gehäuse einbaut, ist für die Frontplatte 
ein Mindestformat von 80 x 50 mm² notwendig. Die Tiefe sollte >= 25 mm 
betragen, damit genug Platz für einen flachen Akku bleibt. Alternativ 
kann der Akku auch zwischen Frontplatte und Platine untergebracht 
werden.
Soweit.

von Christian (dragony)


Lesenswert?

Niklas G. schrieb:
> somit ist das 1uA vom Flash ziemlich signifikant

So einen blöden Schwachsinn lese ich selbst hier selten.

von Christian (dragony)


Lesenswert?

Mi N. schrieb:
> Für einfache Anwendungen und geringen Anforderungen reicht es, analoge
> Signale mit einem µC zu messen

Sind die ADCs der STMs mittlerweile so gut, dass man auf externe 
verzichten kann? Bei den Atmels gibts nur 8 Bits und die mit 12 Bits 
rauschen so extrem, dass man auch da nur eher auf 9 bis 10 kommt.

Externe SAR ADCs mit 12-14 Bits kosten wenig, liefern mir aber immer 
einen echten Mehrwert.

von Niklas G. (erlkoenig) Benutzerseite


Lesenswert?

Christian schrieb:
> Niklas G. schrieb:
>> somit ist das 1uA vom Flash ziemlich signifikant
>
> So einen blöden Schwachsinn lese ich selbst hier selten.

Danke, habe ich extra für dich produziert.

von Mi N. (msx)


Lesenswert?

Christian schrieb:
> Sind die ADCs der STMs mittlerweile so gut, dass man auf externe
> verzichten kann? Bei den Atmels gibts nur 8 Bits und die mit 12 Bits
> rauschen so extrem, dass man auch da nur eher auf 9 bis 10 kommt.

Das Datenblatt sagt 10,8 ENOB. Derzeit habe ich für die Erfassung 
32-fache Überabtastung eingestellt. Das glättet die Messwerte bei 50 µs 
Wandlungszeit/Kanal deutlich, aber gibt immer noch 'Ausreißer', wenn man 
das so nennen möchte. Mit 0,01 s Abtastrate kann man noch einmal um den 
Faktor 10 mitteln, was die Werte nochmals verbessert. Endgültige Kuren 
zeige ich, wenn der Aufbau komplett ist.

Die Schaltung besteht im Kern aus einem µC und einem FLASH-Speicher. 
Dabei ging es mir um einen Kompromiss zwischen Aufwand und Nutzen und 
geringer Stromaufnahme. Wenn am Ende stabil 10 Bit erreicht werden, bin 
ich zufrieden. Damit können PT1000 bzw. KTY81 hinreichend aufgelöst 
gemessen werden. Für digitale Signale > 2 Kanäle, lassen sich 
improvisierte 'DACs' vorschalten. Und, und, und ...

Klar kann man externe ADCs ergänzen, kann mehr Kanäle dazubauen, kann 
alle Eingänge per OPV puffern und letztlich eine SD-Karte zur 
Speicherung einsetzen.
Das kann man alles und noch mehr machen - ich wollte es mobil und 
einfach halten.

von Mi N. (msx)


Lesenswert?

Ergänzend zum obigen Link, ist jetzt eine Version für die kostenlose 
Segger-IDE vorhanden.

von Mi N. (msx)



Lesenswert?

Um die Qualität des ADCs zu kontrollieren, habe ich eine recht leere 
NiMH Zelle an AIN1 angeschlossen:

1. Bild mit 10 ms Periodendauer und Mittelwertbildung über die gesamte 
Periode sieht gut aus. Die Mittelwertbildung glättet die Kurve.

2. Bild mit gleichen Bedingungen jedoch mit nur einem 1 ms Einzelwert 
ohne Mittelwertbildung. Da beide LEDs mit 1 Hz alternierend blinken, 
gibt es alle 0,5 s Störungen in der Kurve.

3. Bild zur Kontrolle wie Bild 2 jedoch mit autom. Abschaltung der LEDs 
nach 5 s. Ab da ist die Kurve stabil, bis nach 10 s durch Tastendruck 
die LEDs wieder aktiviert werden.

Bei Messungen mit Mittelwertbildung >= 10 ms liegen die Schwankungen im 
Bereich der Auflösung des ADCs. Die Stromimpulse der LEDs stören den 
ADC, da die 3,3 V Betriebsspannung auch gleichzeitig Vref ist. Das wird 
sich im Programm wohl noch beheben lassen, indem LEDs und ADC nicht 
gleichzeitig getriggert werden.

: Bearbeitet durch User
von Mi N. (msx)


Angehängte Dateien:

Lesenswert?

Nachdem die LEDs und die Datenspeicherung nun gezielt außerhalb der 
ADC-Wandlungen liegen, sind die Störungen auf den ADC deutlich 
zurückgegangen. Zudem habe ich dem W25Q128 noch einen eigenen 
Spannungsregler spendiert, was einfach umzusetzen ist. Als Beispiel die 
beiden angefügten Kurven.

Die Programme für IAR und Segger IDE sind angepaßt und für einen 
einstelligen Euro-Betrag bekommt man die Hardware beschafft.
Für mich mache ich noch eine Erweiterung, um 2 x PT1000 anschließen und 
auswerten zu können.

von Mi N. (msx)


Angehängte Dateien:

Lesenswert?

Die Sache mit der PT1000 Auswertung ist nun auch fertig und war 
letztlich mit ein Ziel dieser Schaltung. Die Taktung der Heizung, die 
Vorlauftemperaturen und Nachtabsenkungen spiegeln die Außentemperatur 
der letzten Tage und die Nutzung von Warmwasser wieder. Das werde ich in 
der laufenden Heizperiode genauer ansehen.

Die Programme für IAR und Segger sind auf dem aktuellen Stand und im 
'Markt' werde ich noch die überschüssigen Platinen für den Nachbau 
anbieten.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.