piątek, 7 października
Shadow

Raspberry Pi Pico – odczyt temperatury

Tym razem zajmiemy się Raspberry Pi Pico, a dokładnie odczytem temperatury z czujnika zintegrowanego w RP2040. Pico posiada wewnętrzny czujnik temperatury podłączony do jednego z kilku specjalnych pinów zwanych ADC (konwerterami analogowo-cyfrowymi). W dalszej części wpisu odczytaną wartość temperatury wyświetlimy na wyświetlaczu I2C OLED.

Raspberry Pi Pico ze złączami

Potrzebne komponenty

  • RaspberryPi Pico lub odpowiednik z MCU RP2040
  • Wyświetlacz OLED I2C

Czujnik temperatury RP2040

Wewnętrzny czujnik temperatury, jak już wcześniej wspomniałem jest podłączony do jednego z przetworników ADCe. W płytce Pico RP2040 piny ADC obsługują 12 bitów , co oznacza, że ​​wartość może wynosić od 0 do 4095. Jednak kod MicroPython może skalować wartości ADC do zakresu 16-bitowego . Tak więc efektywnie uzyskujemy zakres od 0 do 65535 . Mikrokontroler pracuje z napięciem 3,3 V , co oznacza, że ​​pin przetwornika ADC zwróci wartość 65535 po przyłożeniu do niego 3,3 V lub 0, gdy nie ma napięcia. Wszystkie wartości pośrednie możemy uzyskać, gdy napięcie przyłożone do pinu wynosi od 0 do 3,3 V .

raspberrypi Pico R3 Pinout

Piny ADC na płycie Pico używają własnego schematu numeracji, zamiast iść według numeru pinu GPIO. Na powyższym schemacie pinów widać piny oznaczone ADC0, ADC1, ADC2 i ADC_VREF (technicznie ADC3), które są czterema dostępnymi z zewnątrz pinami ADC. Czujnik temperatury nie ma fizycznego pinu na płytce, ale jest dostępny jako ADC4, ku naszej uciesze.

Odczytywanie wartości temperatury za pomocą MicroPython

Jako edytora MicroPython dla RPI Pico osobiście od jakiegoś czasu wykorzystuje edytor thonny do pobrania z https://thonny.org/. Po podłączeniu skopiuj poniższy kod i naciśnij przycisk uruchom.

Kod programu

import machine
import utime

sensor_temp = machine.ADC(4)
conversion_factor = 3.3 / (65535)

while True:
reading = sensor_temp.read_u16() * conversion_factor
temperature = 27 - (reading - 0.706)/0.001721
print(temperature)
utime.sleep(2)

raspberry pi pico temperatura odczyt

Małe objaśnienie kodu wykorzystanego powyżej tu jest wskazane.

import machine
import utime
sensor_temp = machine.ADC(4)
conversion_factor = 3.3 / (65535)

Najpierw importujemy machine oarz utime. Moduł machine udostępnia nam klasę ADC() do pracy z pinami ADC.

reading = sensor_temp.read_u16() * conversion_factor

Jeśli odczytamy wartość temperatury, otrzymasz liczbę całkowitą z zakresie od 0 do 65535. Więc musimy przekonwertować tę wartość na skalę stopni Celsjusza lub Fahrenheita. Czujnik temperatury w RPi Pico działa poprzez dostarczenie na pin ADC4 napięcia proporcjonalnego do temperatury. Z danych wynika, że ​​temperatura 27 stopni Celsjusza dostarcza napięcie 0,706V. Z każdym dodatkowym stopniem napięcie spada o 1,721 mV lub jak kto woli 0,001721V.

Pierwszym krokiem w konwersji 16-bitowej temperatury jest przekształcenie jej z powrotem na wolty, co odbywa się w oparciu o maksymalne napięcie 3,3 V używane przez płytkę Pico. Dzięki tej konwersji wartość temperatury ma wartość od 0 do 3,3. Znowu musimy wykonać drugą konwersję, która wyświetli temperaturę w tym przypadku w stopniach Celsjusza.

temperature = 27 - (reading - 0.706)/0.001721

Dla chętnych poniżej konwersja, która wyświetli temperaturę w tym przypadku w stopniach Fahrenheita.

fahrenheit_degrees = celsius_degrees * 9 / 5 + 32

5/5 - (1 ocena/y)

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.

Witryna wykorzystuje Akismet, aby ograniczyć spam. Dowiedz się więcej jak przetwarzane są dane komentarzy.