В то время как стандартный Arduino UNO R3 имел только аналого-цифровые преобразователи, новый Arduino UNO R4 имеет по крайней мере один реальный цифро-аналоговый преобразователь (ЦАП), который не эмулируется широтно-импульсной модуляцией. Аналоговый выход подключен к выводу A0 (который, очевидно, не может использоваться в качестве входа, пока работает ЦАП).

В описании указано, что ЦАП имеет разрешение 12 бит. Что именно это значит? Цифровое значение нуля становится ноль вольт. А максимальное значение 4095 должно давать что-то около 5 вольт (на самом деле несколько меньше). Таким образом, один шаг будет 5/4096 вольт, чуть больше 1 милливольта. Для проверки работы ЦАП в рамках данной концепции был написан код, который приведен далее.
void setup() {
analogWriteResolution(12);
}
void loop() {
for (int y = 0; y < 10; y++) {
analogWrite(DAC, y);
delayMicroseconds(100);
}
analogWrite(DAC, 0);
delayMicroseconds(200);
}
И вот результат, который можно получить на осциллографе (шаги от 0 до 9).

Осциллограф был настроен на 0,2 мс/см по горизонтали и 5 мВ/см по вертикали. Давайте посчитаем: девять шагов по 5/4096 вольт равны 0,01098 вольт. Прицел показывает линию на высоте 2 см, что дает 2 x 5 мВ = 10 мВ, что примерно равно. Эта настройка была сохранена для всех следующих изображений. Далее разрешение было установлено на 11 бит: analogWriteResolution(11). И вот как выглядит результат.

Снизим разрешение до 10 бит и посмотрим на осциллограмму.

Видны некоторые артефакты. Давайте уменьшим разрешение до 9 бит и посмотрим.

В данном случае шаги стали весьма высоки, осциллограф показывает лишь первые из них. Далее уменьшим разрешение до 8.

Здесь нам видны лишь шаги 0, 1 и 2. И-наконец, уменьшим разрешение до 7.

Видны лишь шаги 0 и 1. Нет смысла продолжать дальше.
© digitrode.ru