Измерение температуры встроенным датчиком Raspberry Pi Pico


В этой статье мы рассмотрим считывание значений со встроенного датчика температуры платы Raspberry Pi Pico. Эта плата имеет внутренний датчик температуры, подключенный к одному из нескольких специальных контактов, называемых контактами АЦП (аналого-цифрового преобразования).

Измерение температуры встроенным датчиком Raspberry Pi Pico

Мы подключим I2C OLED-дисплей к плате Raspberry Pi Pico и считаем данные о температуре с ее встроенного датчика. Затем мы отобразим температуру на OLED-экране. Вы можете использовать математическое уравнение для преобразования значения температуры по Цельсию в градусы Фаренгейта.

Необходимые компоненты

  1. Плата Raspberry Pi Pico (купить на AliExpress).
  2. OLED дисплей с интерфейсом I2C (I2C OLED display) (купить на AliExpress - для данного проекта выбирайте вариант дисплея с 4 контактами).
  3. Макетная плата.
  4. Соединительные провода.

Реклама: ООО "АЛИБАБА.КОМ (РУ)" ИНН: 7703380158

Схема проекта

Поскольку мы хотим отображать значение температуры на OLED-дисплее, то у нас должно быть соединение между платой Raspberry Pi Pico и OLED дисплеем. Схема соединения приведена ниже. Более подробно о подключении OLED дисплея к плате Raspberry Pi Pico вы можете прочитать в этой статье.

Схема подключения OLED дисплея к плате Raspberry Pi Pico

Подключите контакты SDA и SCL OLED-дисплея к контактам GP8 и GP9 платы Raspberry Pi Pico соответственно. Вы можете использовать макетную плату для сборки схемы, как показано ниже.

Собранная на макетной плате конструкция проекта

Встроенный датчик температуры Raspberry Pi Pico

Внутренний датчик температуры, который поставляется с платой Raspberry Pi Pico, подключен к одному из контактов АЦП. Контакт АЦП поддерживает диапазон значений, который определяется входным напряжением, подаваемым на его.

В микроконтроллере RP2040 контакты АЦП поддерживают разрешение 12 бит, что означает что значение на их выходе может изменяться от 0 до 4095. Но код MicroPython может масштабировать значения АЦП до 16-битного диапазона. Таким образом, мы фактически получаем диапазон от 0 до 65535. Микроконтроллер работает при напряжении 3,3 В, что означает, что контакт АЦП вернет значение 65535 когда на него подано 3,3 В, или 0, когда напряжение отсутствует. Мы можем получить все промежуточные значения, когда напряжение, приложенное к контакту, находится в диапазоне от 0 до 3,3 В.

Распиновка платы Raspberry Pi Pico

Контакты АЦП на плате Raspberry Pi Pico используют собственную схему нумерации вместо номера контакта GPIO. На схеме контактов выше вы можете видеть контакты, обозначенные как ADC0, ADC1, ADC2 и ADC_VREF (технически ADC3), являются четырьмя доступными извне контактами АЦП. Датчик температуры не имеет физического контакта на плате, но к нему обращаются как к ADC4 .

Чтение значения температуры с помощью кода MicroPython

Теперь давайте посмотрим на код считывания значений со встроенного датчика температуры платы Raspberry Pi Pico. Скопируйте следующий код и нажмите кнопку загрузки и запуска.

В окне начнет отображаться значение температуры в градусах Цельсия.

Тестирование работы кода в окне программной оболочки

Объяснение работы кода

Сначала импортируем библиотеки machine и utime. Модуль machine предоставляет класс ADC() для работы с контактами АЦП (ADC).

Если вывести значение температуры, вы получите целое число от 0 до 65535. Поэтому нам нужно преобразовать это значение в шкалу градусов Цельсия или Фаренгейта.

Датчик температуры работает, подавая на вывод ADC4 напряжение, пропорциональное температуре. Согласно техническому описанию, температура 27 градусов Цельсия обеспечивает напряжение 0,706 В. С каждым дополнительным градусом напряжение уменьшается на 1,721 мВ или 0,001721 В. Первым шагом в преобразовании 16-битной температуры является ее обратное преобразование в вольты, что выполняется на основе максимального напряжения 3,3 В, используемого платой Raspberry Pi Pico.

При таком преобразовании значение температуры имеет значение от 0 до 3,3. Нам снова нужно сделать второе преобразование, которое приводит температуру к шкале Цельсия.

Если вы хотите перевести значение температуры из градусов Цельсия в градусы Фаренгейта, вы можете воспользоваться этим математическим уравнением.

Отображение значений температуры с Raspberry Pi Pico на OLED дисплее

Теперь давайте напишем дополнительный код для отображения значения температуры на OLED-экране. Для этого нам нужно сначала написать код OLED-драйвера, так как драйвер SSD1306 недоступен. Весь код разделен на 2 части.
1. ssd1306.py
2. Main.py

ssd1306.py

Откройте новую вкладку и скопируйте следующий код. Сохраните файл под именем ssd1306.py.

main.py

После загрузки SSD1306.py снова создайте новую вкладку и скопируйте следующий код. Сохраните этот код под именем main.py.

После запуска кода на OLED-дисплее начнет отображаться значение температуры.

Тестирование работы проекта

Вот как вы можете считывать данные о температуре с помощью встроенного датчика температуры платы Raspberry Pi Pico. Вы также можете подключить внешний датчик температуры, например DS18B20, к RPI Pico для более точного считывания температуры.

(Проголосуй первым!)
Загрузка...
8 просмотров

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *