1. 2-Kanal Datenlogger mit STM32G031 (in Entwicklung)

2024-10-11:
Die Kombination von einem STM32G031 µC und einem SPI-Flash W25Q128 ermöglich den Aufbau eines einfachen Datenloggers mit zwei analogen Eingangskanälen bis zu 1 kHz Abtastrate.
Der G031 bietet einen 12 Bit ADC, genug RAM zur Zwischenspeicherung und erledigt die Steuerung und das bei geringer Stromaufnahme. Der W25Q128 bietet Speicherplatz für 16 MB, was für 8 Millionen Einzelwerte bei 1-kanaliger und 4 Millionen Messpaare bei 2-kanaliger Betriebsweise reicht.

Die Eckdaten:

Sofern man keine fertigen Schaltungen bestehend aus STM32G031, 32,678 kHz Quarz und Spannungsregler verwendet, kann die Schaltung wie folgt aussehen:

Der STM32G031 läuft mit internem 16 MHz HSI Takt und der 32,768 kHz Quarzoszillator sorgt für genaues Timing. Die beiden analogen Eingänge werden über die Widerstände R1/R2 und die Kondensatoren C1/C2 leicht gefiltert. Sofern mit höheren Eingangsspannungen als der Versorgungsspannung (3,3 V) gerechnet werden muß, kann D1 die Eingänge des µC davor schützen. Alternativ kann mit R3/R4 jeweils ein Spannungsteiler ergänzt werden.

Der W25Q128 ist per SPI angebunden und die Signale RxD/TxD sind passend zu RS232-USB-Wandler invertiert und mit Ein- bzw. Ausgangswiderstand gegen Überlast geschützt. D2 kann passend ergänzt werden. Wenn eine höhere Stromaufnahme zugelassen werden kann, kann alternativ auch ein xyz232-Treiber IC verwendet werden.
Der µC kann per SWD oder auch per eingebautem Bootloader programmiert werden.

Als Spannungsregler ist hier ein TS9011 genannt, der max. 12 V am Eingang zuläßt. Eine geeignete Spannungsversorgung ist wohl eine LiIon/LiPo-Zelle, wobei auch Spannungsregler mit <= 5 V Eingangsspannung ausreichen.

Sofern man kein eigenes Platinenlayout erstellen möchte, gibt es die Möglichkeit bestückte Platinen mit STM32G031 und auch mit dem W25Q128 zu besorgen. Ergänzt mit bedrahteten Widerständen, Kondensatoren, Tastern und LEDs kann man die Schaltung auf einer Lochrasterplatine aufbauen. Beispielhaft sei auf dieses WeAct-Modul verwiesen.

Anmerkungen:
Die Baudrate ist mit 500 kBd so vorgegeben, daß ca. 10000 Messwerte/s ausgegeben werden können und angeschlossene RS232-Treiber dies noch zulassen. Alternativ kann man die Baudrate auf <= 230400 Bd senken.
Die Stromaufnahme ohne aktives SPI-Flash liegt bei etwa 1,7 mA. Je nach Messrate kann diese im Mittel auf etwa 4 mA steigen. Sofern man auf die ser. Datenausgabe und LEDs verzichten kann, kann die Grundstromaufnahme auf etwa 0,5 mA gesenkt werden, wenn in Pausen statt 'sleep mode' auf 'stop 0 mode' gegangen wird.

Im 'stop 1 mode' beträgt die Stromaufnahme < 10 µA. Sofern an RxD oder IN1/IN2 Spannungen > VCC auftreten können, müssen diese mit SD1, SD2 und T1 wirksam abgeleitet werden. Andernfalls könnte VCC für den µC auf unzulässig hohe Werte ansteigen. Sofern das nicht auftreten kann, können diese Bauteile entfallen.

Die manuelle Bedienung soll letztlich wie folgt aussehen:
Normalerweise bleibt die Versongungsspannung angeschlossen und der µC befindet sich im standby-Modus. Das Drücken eines der beiden Taster aktiviert den µC. Sind keine Daten im Flash vorhanden, blitzt (10 ms) die (grüne) LED am Start-Taster mit 3 Impulsen/s und zeigt damit 'Pause' an. Wird 'Start' gedrückt blinkt die LED jede Sekunde kurz auf: 1 x bei 1-kanaliger und 2 x bei 2-kanaliger Messung. Sobald ein Messwert erfaßt wurde blitzt (1 Hz) die (rote) LED am Stopp-Taster und zeigt damit an, daß Meßwerte vorhanden sind. Durch erneutes Drücken von 'Start' wird eine Messpause eingelegt. Nochmaliges Drücken führt die Messung fort.

Beendet wird eine laufende Messung mit der Stopp-Taste. Die LED, die zuvor schon angezeigt hat, daß Messwerte vorhanden sind, blitzt weiter im Sekundentakt. Die LED zum Start-Taster geht aus. Die Messwerte liegen im Speicher und können anschließend ausgegeben oder wieder gelöscht werden.
Mit Drücken von 'Start' wird die Ausgabe über die ser. Schnittstelle gestartet. Beu 1-kanaliger Messung im Format 'ASCII-Wert'<CR> und bei zwei Kanälen im Format 'ASCII-Wert','ASCII-Wert'<CR>. Der ASCII-Wert wird ohne führende Nullen ausgegeben. Während der Datenausgabe blinkt die Stopp-LED mit 1,5 Hz.
Die Messwertausgabe kann durch Drücken einer Taste abgebrochen, aber mit 'Start' auch wiederholt werden. Zum Start einer neuen Messung müssen die bisherigen Werte gelöscht werden. Hierzu muß die Stopp-Taste >= 3 s gedrückt werden. Anschließend blitzt die Start-Led wieder 3 x pro Sekunde.

Abgeschaltet wird der µC entweder manuell durch gleichzeitiges Drücken der beiden Taster, durch eingestelltes Timeout bei einer Messung oder nach Ablauf der Nachlaufzeit, wenn keine Messung aktiv ist. Gespeicherte Daten bleiben auch bei Abschalten der Versorgungsspannung und Neustart erhalten.

Messparameter mit ser. Befehlen einstellen:
Jede Befehlssequenz wird mit einem '.' eingeleitet; alternativ kann auch <ESC> verwendet werden. Anschließend folgt optional eine Dezimalzahl (nnn). Die Befehlssequenz wird mit dem eigentlichen Befehl (Großbuchstabe oder Zeichen) abgeschlossen.
Die eingestellten Werte lassen sich abfragen, indem nur der '.' und der Befehl gesendet werden. Als Antwort werden der Befehl und der eingestellte Zahlenwert ausgegeben.

Befehle (Leerzeichen dienen nur der Lesbarkeit und werden nicht gesendet):

.V Anfrage der Version, Ausgabe 'mino G031-Logger V1.0'
. * Ausgabe des Zeichens '*' als Echo zur Synchronisierung (Zeitmarke)
.? Status der Messung: 0 = STOP, 1 = LAEUFT, 2 = PAUSE
   
. nnn C Anzahl der Kanäle 1 oder 2
. nnn D direkte Messwertausgabe: 0 = aus, 1 = aktiv
. nnn N Nachlaufzeit in s für automatisches Abschalten: 1 - 3600, 0 = kein Abschalten
. nnn T Timeout für Beendigung einer Messung in s: 1 - 3600*24 (1 Tag), 0 = kein Timeout
. nnn P Messperiode in ms: 1 - 60000
. 123456 S Einstellungen in den FLASH-Speicher schreiben, Vorgabewerte bei Versorgungssannung 'EIN'
   
  Ein Beispiel für die Abfrage eines eingestellten Wertes (Messperiode 333 ms):
.P Antwort: P333<CR>

Das Programm ist noch nicht abschließend fertig, zeigt aber schon die Grundfunktion. Es ist mit einer IAR-IDE erstellt und kann für andere IDEs übernommen werden. Ein einfacher Weg ist die Erstellung eines neuen Projektes für den STM32G031F und das Einfügen der INC- und SRC-Verzeichnisse.

zurück zur Übersicht