Prosty system pomiarowy oparty na STM32:
- Pomiar temperatury (°C), przewodności EC (µS/cm) oraz pH w roztworach.
- Kalibracja EC i pH przy użyciu przycisków.
- Wskaźnik błędów i stanów systemu przez LED.
- Komunikacja z komputerem przez UART.
System zapisuje dane kalibracyjne w pamięci Flash, dzięki czemu nie są tracone po restarcie.
Komendy:
take- wysłanie polecenia do pobrania próbki wodyrelease- wysłanie polecenia do zrzutu pobranej wody
Po zakończonej operacji żądanej komendą, wysyłana jest informacja zwrotna:
ready- zakończono pobór / zrzut próbki wodyerror- nie otrzymano informacji zwrotnej (timeout 5 - 10 s) lub otrzymano błędny sygnał od kontrolera silnika (malformed)
Sterowanie elementami wykonawczymi odbywa się w sposób:
take- MOTOR_CMD LOW->HIGH, oczekiwanie na MOTOR_FB = HIGHrelease- obrót serwomechanizmu o 90°, odczekanie 5 s
Przykładowa ramka wysyłana co 1 sekundę:
MEAS,T=24.34,EC=1423.06,pH=4.21
T– temperatura w °CEC– przewodność w µS/cmpH– pH roztworu
Dodatkowo można wykorzystać komendy:
meas on/off- włączenie lub wyłączenie przesyłania ramki z pomiaramireset- reset mikrokontrolera
Przytrzymanie przycisku PB12 przelicza nową wartość k_val na podstawie referencyjnej przewodności EC w funkcji temperatury.
- Klik → wejście w tryb kalibracji
- Klik → przeliczenie stałej
k_vali zapisanie jej do pamięci flash.
Kalibracja odbywa się za pomocą przycisku PB13 jako 3-etapowy proces wykonany najpierw dla próbki 7 pH, a następnie 4 pH:
- Klik → wejście w tryb kalibracji
- Klik → odczyt napięcia i rozpoznanie bufora:
- ~1500 mV → pH 7 (
neutralVoltage) - ~2000 mV → pH 4 (
acidVoltage)
- ~1500 mV → pH 7 (
- Klik → zapis danych do Flash
- LED na PC13 sygnalizuje błędy.
- Flagi błędów (
error_flags):- 1 blink – temperatura poza zakresem (0°C … 50°C)
- 2 blinki – EC poza zakresem (≤300 lub >20000 µS/cm)
- 4 blinki – pH poza zakresem (0 < pH ≤ 14)
- LED mruga co 100 ms, po sekwencji 2–3 s przerwy, a błędy sie sumują.
Dane kalibracyjne są zapisane na pamięć flash, aby zachować je po restarcie urządzenia. Dane do sondy przewodności znajdują się na innym sektorze flash (1kB) niż dane z sondy pH.
| Parametr | Adres |
|---|---|
| K (EC) | 0x0800FC00 |
| pH neutral | 0x0800F800 |
| pH acid | 0x0800F804 |
| Pin MCU | Nazwa/Opis | Funkcja w projekcie |
|---|---|---|
| PC13 | LED | Wskaźnik błędów / status |
| PB12 | EC_cal_Pin | Kalibracja EC |
| PB13 | pH_cal_Pin | Kalibracja pH |
| PA0 | ADC_CHANNEL_0 | Czujnik temperatury |
| PA1 | ADC_CHANNEL_1 | Czujnik EC |
| PA2 | ADC_CHANNEL_2 | Czujnik pH |
| PA9 | USART1_TX | UART – transmisja |
| PA10 | USART1_RX | UART – odbiór |
| PB0 | MOTOR_FB | Sygnał zwrotny z kontrolera silnika |
| PB1 | MOTOR_CMD | Komenda do kontrolera silnika |
| PA7 | TIM3_CH2 | Wyjście PWM dla serwomechanizmu |
- Czujnik temperatury → PA0
- Czujnik EC → PA1
- Czujnik pH → PA2
- Przycisk EC → PB12 do GND
- Przycisk pH → PB13 do GND
- UART → PA9 (TX), PA10 (RX)
- MOTOR_FB → PB0, MOTOR_CMD → PB1
- Serwomechanizm → PA7
- Nie dopuścić do wyschnięcia sondy
- Przechowywać w:
- roztworze KCl
- lub buforze pH 4
- lub wodzie z niewielką ilością soli (awaryjnie)
- Nie dotykać szklanej końcówki
- Utrzymywać złącze BNC suche i czyste
