Назад

Чтение аналоговых датчиков на Raspberry Pi Pico с Velxio

Введение

Добро пожаловать в очередное практическое руководство в блоге Velxio! Сегодня мы погружаемся в АЦП (аналого-цифровой преобразователь) Raspberry Pi Pico. Pico — это мощная маленькая плата, и одна из её самых крутых особенностей — возможность считывать аналоговые напряжения, что идеально подходит для датчиков, потенциометров и многого другого. В этом примере мы будем считывать три внешних аналоговых сигнала с потенциометров, а также получать значение внутреннего датчика температуры. Всё это работает прямо в вашем браузере с помощью SPICE-точной симуляции Velxio.

Схема подключения pico-adc-read на холсте симулятора Velxio

Разбор схемы

Давайте посмотрим на схему. У нас есть Raspberry Pi Pico (вариант Nano RP2040 в Velxio), подключенный к двум потенциометрам и светодиоду.

Компоненты

Детали подключения

Примечание: Выводы АЦП Pico рассчитаны на 3.3V, поэтому мы используем источник питания 3.3V. Потенциометры работают как делители напряжения, обеспечивая переменное напряжение от 0 до 3.3V на своем среднем выводе.

Разбор кода

Теперь давайте рассмотрим код. Он написан на C++ в стиле Arduino для Raspberry Pi Pico.

// Raspberry Pi Pico — Тест чтения АЦП
// Читает аналоговые значения с A0-A2 (GPIO26-28) и внутреннего датчика температуры

void setup() {
  Serial.begin(115200);
  delay(500);
  Serial.println("=== Pico ADC Read ===");
  Serial.println("A0=GP26  A1=GP27  A2=GP28  Temp=внутренний");
  Serial.println("12-битное разрешение (0-4095), опорное 3.3V");
  Serial.println();

  analogReadResolution(12);
}

void loop() {
  int a0 = analogRead(A0);
  int a1 = analogRead(A1);
  int a2 = analogRead(A2);

  // Внутренний датчик температуры на канале 4
  // T = 27 - (V - 0.706) / 0.001721
  int tempRaw = analogRead(A3); // Канал 4 отображается на A3 ядром Pico
  float voltage = tempRaw * 3.3f / 4095.0f;
  float tempC = 27.0f - (voltage - 0.706f) / 0.001721f;

  Serial.print("A0: "); Serial.print(a0);
  Serial.print("  A1: "); Serial.print(a1);
  Serial.print("  A2: "); Serial.print(a2);
  Serial.print("  Temp: "); Serial.print(tempC, 1); Serial.println(" C");

  delay(1000);
}

Ключевые моменты

Ключевые концепции

Типичные ошибки и советы по отладке

Предлагаемые расширения

Попробуйте сами!

Готовы экспериментировать? Откройте живой пример в Velxio и начните изменять схему или код. Нажмите на ссылку ниже, чтобы запустить симуляцию прямо в вашем браузере.

Запустить пример Pico ADC Read на Velxio

Удачных экспериментов!


Поделиться:
David Montero

Автор

David Montero

Creator of Velxio, the open-source circuit and Arduino simulator.

GitHub velxio.dev

Похожие статьи


Предыдущая статья
Демонстрация нескольких протоколов на Pico: Serial, I2C, SPI и ADC на RP2040
Следующая статья
Pico SPI Loopback: проверка последовательной связи вашего RP2040