Корректировка аналогового выхода Arduino Due под диапазон входа
Компоненты и материалы
| Arduino Due | ×1 |
| Конденсаторы C1, C2: 100 нФ (керамика или полиэстер) | ×1 |
| Резистор R1: 100 кОм, ±1%, ¼ Вт | ×2 |
| Резистор R2: 150 кОм, ±1%, ¼ Вт | ×2 |
| Резистор R3: 1.3 кОм, ±1%, ¼ Вт | ×1 |
| Резистор R4: 6.8 кОм, ±1%, ¼ Вт | ×1 |
| Подстроечный резистор Rp: 200 Ом (многооборотный лучше) | ×1 |
| Операционный усилитель U1: LM358 (см. текст) | ×1 |
О проекте
Цель: изменить аналоговый выход Arduino Due так, чтобы его диапазон совпадал с диапазоном входа (0–Vref).
Arduino Due не выдаёт напряжение от 0 до Vref, а от 1/6 до 5/6 опорного напряжения. При Vref = 3.3 В это 0.55 В и 2.75 В (подтверждается документацией Atmel). Диапазон ЦАП всего 2.2 В, разрешение 2.2/4095 ≈ 0.537 мВ.
Используется простой дифференциальный усилитель на операционном усилителе для снятия смещения 0.55 В и усиления сигнала до нужного уровня. Схема показана на рисунке 1.
Опорное напряжение Vp = 0.55 В получается делителем R3, R4 и Rp. Подстроечный резистор Rp регулируется так, чтобы на выходе усилителя при коде 0 ЦАП было близко к 0 В (в прототипе ~8 мВ).
Коэффициент усиления дифференциального усилителя:
G = Vo / (Vi - Vp) = R2 / R1
Для получения выходного диапазона 0–3.3 В нужен коэффициент G = 3.3 / 2.2 = 1.5.
Рекомендации: используйте резисторы с точностью 1% или лучше, особенно в усилителе. Не подходят LM741, LM1458, TL081 и др. для однополярного питания. Если нужен выход выше 3.3 В — применяйте rail-to-rail усилитель (например, TLC2272).
Схема

Производственный процесс
- Измерение качества воздуха с OpenSensors: руководство по Arduino и Python
- Создание универсального ИК-пульта на Arduino: пошаговое руководство
- Умные шторы: автоматическое управление светом на Arduino с солнечной энергией
- Создание сенсорной игры «Крестики-нолики» на Arduino Due
- Цифровой стадиометр на Arduino: отслеживание роста лазерным датчиком VL53L0X
- Простой ИК-датчик препятствий на Arduino: ИК-светодиод и фотодиод
- Компактное руль-триммер для FlightGear на Arduino Nano
- Создание настраиваемой «бьющейся» клавиши на Arduino: пошаговое руководство
- Использование термистора: пошаговое руководство для Arduino
- Гальванически разделённый аналоговый вход для Arduino на LM331 и оптопаре 4N25