4.03. Аналоговый сигнал и АЦП.md
В предыдущих параграфах мы научились «говорить» с внешним миром - отправляли чёткие команды «включить/выключить» с помощью цифровых сигналов и даже имитировали плавность с помощью ШИМ. Мы уже знаем, что окружающий нас мир — аналоговый, и его величины, такие как температура или яркость света, меняются непрерывно. Теперь пришло время научить наш Рудирон «слышать» и понимать этот мир.
Но как цифровое устройство, мыслящее нулями и единицами, может измерить бесконечное множество состояний аналогового сигнала? Для этого ему нужен специальный «переводчик». Этот узел микроконтроллера называется аналого-цифровой преобразователь, или АЦП (в английской литературе — ADC, Analog-to-Digital Converter).
Квантование — превращаем линию в ступеньки
Представьте аналоговый сигнал в виде гладкой наклонной линии — это непрерывный поток значений. Задача АЦП — измерить этот сигнал и превратить его в дискретный, то есть представить в виде конечного набора чисел. Этот процесс называется квантованием. АЦП как бы «округляет» плавный сигнал до ближайшей ступеньки на цифровой лестнице, которую микроконтроллер уже может обработать. Точность этого «перевода» напрямую зависит от разрядности АЦП.

Разрядность и опорное напряжение Рудирона
В микроконтроллере MDR32, установленном на Рудироне, используется 12-битный АЦП. Это ключевая характеристика, которая определяет точность измерений.
12 бит означают, что у АЦП есть 2^{12}, то есть 4096 уникальных уровней (или «ступенек») для представления сигнала. Таким образом, результат измерения будет числом в диапазоне от 0 до 4095.
Для правильного измерения АЦП должен знать, какому максимальному напряжению соответствует верхняя ступенька (4095). Это напряжение называется опорным. Важная особенность Рудирона - опорное напряжение для АЦП жёстко зафиксировано на уровне 3.3 В и его нельзя изменить стандартными функциями, такими как analogReference().
Это означает, что АЦП всегда будет измерять входящее напряжение в диапазоне от 0 В до 3.3 В.
- 0 будет соответствовать напряжению 0 В.
- 4095 будет соответствовать напряжению 3.3 В.
Теперь, зная это, мы можем вычислить «высоту» каждой ступеньки нашей цифровой лестницы. Эта высота называется шагом квантования — это минимальное изменение напряжения, которое Рудирон способен заметить:
Шаг = Опорное напряжение / Количество уровней = 3.3 В / 4096 ≈ 0.000805 В, или 0.8 мВ
Это означает, что каждая ступенька нашей цифровой лестницы имеет «высоту» всего 0.8 милливольта. Именно с такой невероятной точностью Рудирон может измерять аналоговый мир.

Чтение аналоговых значений — функция analogRead()
Для работы с АЦП используется всего одна простая функция — analogRead(). Она запускает процесс преобразования на указанном аналоговом пине и возвращает результат — целое число от 0 до 4095. На плате Рудирон пины для аналогового ввода помечены буквой A (например, A0, A1, A2).
Синтаксис функции:
int sensorValue = analogRead(номерПина);
номерПина. Номер аналогового пина, к которому подключён датчик (например,A0).
Пример (чтение данных с потенциометра):
const int potPin = A0; // Потенциометр подключен к аналоговому пину A0
void setup() {
Serial.begin(9600); // Инициализируем последовательный порт для вывода данных
}
void loop() {
// Считываем значение с АЦП (0-4095)
int potValue = analogRead(potPin);
// Выводим сырое значение в монитор порта
Serial.println(potValue);
delay(100); // Небольшая задержка, чтобы не забивать порт данными
}
В этом примере, вращая ручку потенциометра, вы будете изменять напряжение на пине A0 от 0 до 3.3 В, а в мониторе порта увидите, как значения плавно меняются от 0 до 4095.
Важное замечание о производительности! На плате Рудирон выполнение команды analogRead() является достаточно ресурсоёмкой операцией. Она занимает около 30 микросекунд (мкс). Для большинства проектов это незаметно, но в задачах, где требуется очень быстрая реакция или одновременное считывание многих датчиков, это время нужно учитывать.
Зачем это нужно?
АЦП — это наши «органы чувств», позволяющие микроконтроллеру воспринимать аналоговый мир. С помощью analogRead() вы можете:
- Считывать положение джойстика или потенциометра.
- Измерять уровень освещённости с помощью фоторезистора.
- Определять температуру с помощью термистора.
- Подключать любые другие датчики, которые выдают результат в виде изменяющегося напряжения.
Освоив АЦП, вы открываете дверь в мир интерактивных устройств, которые по-настоящему реагируют на окружающую среду.
Теперь, когда вы знаете, как «слышать» аналоговый мир, пора применить эти знания на практике. Переходите к лабораторным работам, чтобы научиться считывать данные с потенциометра и других датчиков. Если же вам не терпится узнать, как Рудирон может не имитировать, а по-настоящему генерировать аналоговые сигналы, отправляйтесь в следующий параграф.
- Страницы
- 1. Введение
- 1.01. Лабораторная работа №1.1
- 1.02. Лабораторная работа №1.2
- 1.03. Лабораторная работа №1.3
- 1.04. Лабораторная работа №1.4
- 1.05. Лабораторная работа №1.5
- 2. Основы электроники
- 2.01. Электрический ток и параметры цепи
- 2.01.1. Лабораторная работа №2.1.1
- 2.01.2. Лабораторная работа №2.1.2
- 2.02. Сопротивление в цепи
- 2.02.1. Лабораторная работа №2.2.1
- 2.02.2. Лабораторная работа №2.2.2
- 2.03. Полупроводники
- 2.03.1. Лабораторная работа №2.3.1
- 2.03.2. Лабораторная работа №2.3.2
- 3. Основы программирование на C++
- 3.01. Типы данных и переменные
- 3.01.1. Практикум
- 3.02. Операторы в C++
- 3.02.1. Практикум
- 3.03. Структуры ветвления
- 3.03.1. Практикум
- 3.04. Структуры повторения
- 3.04.1. Практикум
- 3.05. Массивы
- 3.05.1. Практикум
- 3.06. Функции
- 3.06.1. Практикум
- 3.07. Решения задач
- 4. Программирование микроконтроллеров
- 4.01. Цифровые сигналы и GPIO
- 4.01.1. Лабораторная работа №4.1.1
- 4.01.2. Лабораторная работа №4.1.2
- 4.01.3. Лабораторная работа №4.1.3
- 4.01.4. Лабораторная работа №4.1.4
- 4.01.5. Лабораторная работа №4.1.5
- 4.01.6. Лабораторная работа №4.1.6
- 4.01.7. Лабораторная работа №4.1.7
- 4.01.8. Лабораторная работа №4.1.8
- 4.02. Аналоговые сигналы и ШИМ
- 4.02.1. Лабораторная работа №4.2.1
- 4.02.2. Лабораторная работа №4.2.2
- 4.02.3. Лабораторная работа №4.2.3
- 4.02.4. Лабораторная работа №4.2.4
- 4.02.5. Лабораторная работа №4.2.5
- 4.03. Аналоговый сигнал и АЦП
- 4.03.1. Лабораторная работа №4.3.1
- 4.03.2. Лабораторная работа №4.3.2
- 4.03.3. Лабораторная работа №4.3.3
- 4.03.4. Лабораторная работа №4.3.4
- 4.03.5. Лабораторная работа №4.3.5
- 4.04. Аналоговый сигнал и ЦАП
- 4.04.1. Лабораторная работа №4.4.1
- 4.04.2. Лабораторная работа №4.4.2
- 4.05. Генерация и измерение импульсов
- 4.05.1. Лабораторная работа №4.5.1
- 4.05.2. Лабораторная работа №4.5.2
- 4.06. Аппаратные прерывания
- 4.06.1. Лабораторная работа №4.6.1
- 4.06.2. Лабораторная работа №4.6.2
- 4.07. Псевдопараллелизм
- 4.07.1. Лабораторная работа №4.7.1
- 4.07.2. Лабораторная работа №4.7.2
- 4.08. Интерфейсы связи - UART
- 4.08.1. Лабораторная работа №4.8.1
- 4.09. Интерфейсы связи - I2C
- 4.09.1. Лабораторная работа №4.9.1
- 4.10. Интерфейсы связи - SPI
- 4.10.1. Лабораторная работа №4.10.1
- home
-
imgs
- 1. Введение
- 1.01. Лабораторная работа №1.1
- 1.02. Лабораторная работа №1.2
- 1.03. Лабораторная работа №1.3
- 1.04. Лабораторная работа №1.4
- 1.05. Лабораторная работа №1.5
- 2. Основы электроники
- 2.01. Электрический ток и параметры цепи
- 2.01.1. Лабораторная работа №2.1.1
- 2.01.2. Лабораторная работа №2.1.2
- 2.02. Сопротивление в цепи
- 2.02.1. Лабораторная работа №2.2.1
- 2.02.2. Лабораторная работа №2.2.2
- 2.03. Полупроводники
- 2.03.1. Лабораторная работа №2.3.1
- 2.03.2. Лабораторная работа №2.3.2
- 3. Основы программирование на C++
- 3.01. Типы данных и переменные
- 3.01.1. Практикум
- 3.02. Операторы в C++
- 3.02.1. Практикум
- 3.03. Структуры ветвления
- 3.03.1. Практикум
- 3.04. Структуры повторения
- 3.04.1. Практикум
- 3.05. Массивы
- 3.05.1. Практикум
- 3.06. Функции
- 3.06.1. Практикум
- 3.07. Решения задач
- 4. Программирование микроконтроллеров
- 4.01. Цифровые сигналы и GPIO
- 4.01.1. Лабораторная работа №4.1.1
- 4.01.2. Лабораторная работа №4.1.2
- 4.01.3. Лабораторная работа №4.1.3
- 4.01.4. Лабораторная работа №4.1.4
- 4.01.5. Лабораторная работа №4.1.5
- 4.01.6. Лабораторная работа №4.1.6
- 4.01.7. Лабораторная работа №4.1.7
- 4.01.8. Лабораторная работа №4.1.8
- 4.02. Аналоговые сигналы и ШИМ
- 4.02.1. Лабораторная работа №4.2.1
- 4.02.2. Лабораторная работа №4.2.2
- 4.02.3. Лабораторная работа №4.2.3
- 4.02.4. Лабораторная работа №4.2.4
- 4.02.5. Лабораторная работа №4.2.5
- 4.03. Аналоговый сигнал и АЦП
- 4.03.1. Лабораторная работа №4.3.1
- 4.03.2. Лабораторная работа №4.3.2
- 4.03.3. Лабораторная работа №4.3.3
- 4.03.4. Лабораторная работа №4.3.4
- 4.03.5. Лабораторная работа №4.3.5
- 4.04. Аналоговый сигнал и ЦАП
- 4.04.1. Лабораторная работа №4.4.1
- 4.04.2. Лабораторная работа №4.4.2
- 4.05. Генерация и измерение импульсов
- 4.05.1. Лабораторная работа №4.5.1
- 4.05.2. Лабораторная работа №4.5.2
- 4.06. Аппаратные прерывания
- 4.06.1. Лабораторная работа №4.6.1
- 4.06.2. Лабораторная работа №4.6.2
- 4.07. Псевдопараллелизм
- 4.07.1. Лабораторная работа №4.7.1
- 4.07.2. Лабораторная работа №4.7.2
- 4.08. Интерфейсы связи - UART
- 4.08.1. Лабораторная работа №4.8.1
- 4.09. Интерфейсы связи - I2C
- 4.09.1. Лабораторная работа №4.9.1
- 4.10. Интерфейсы связи - SPI
- 4.10.1. Лабораторная работа №4.10.1
- home