Почему мой аналоговый выход ограничен 2,7 В?
У меня есть MKR WIFI1000 (v2.0 [Arduino:XYZ]) с "настоящим" аналоговый выходной контакт (DAC0/A0/PIN15). Согласно документации, это 10-битный ЦАП, поэтому я предполагаю, что могу написать analogWrite(15, 1023), чтобы на этом выводе было 3,3 В.
Однако мне кажется, что оно не превышает 2,7 В, что уже достигнуто задолго до значения 256.
Это мой код:
#include <Arduino.h>
#define AN_OUTPUT 15
int counter = 0;
void setup()
{
pinMode(AN_OUTPUT, OUTPUT);
}
void loop ()
{
counter++;
if (counter > 1023) {
counter = 0;
}
analogWrite(AN_OUTPUT, counter);
delayMicroseconds(1);
}
А это соответствующий сигнал:

1 ответ
Лучший ответ:
Смотрите также:
- DHT11 аналоговый или цифровой?
- Управление сервоприводом без библиотеки сервоприводов
- Как подключить LCD i2c, используя только контакты A0 и A1 (приведены SDA, SCL, GND и VCC)
- Генерация истинного аналогового сигнала с помощью Arduino
- Как найти пиковое значение аналогового сигнала?
- Является ли AREF стабильным выходным опорным напряжением с аналоговым опорным значением (ВНУТРЕННЕЕ)?
- Как считывать аналоговое значение на ESP32-CAM с включенным считывателем SD-карт?
- Управлять яркостью светодиода с помощью потенциометра без кода, а также считывать значение потенциометра?
Вы явно установили A0 как выход? Прочтите [этот текст об аналоговом выходе на A0](https://learn.adafruit.com/adafruit-feather-m0-basic-proto/adapting-sketches-to-m0#analogwrite-dac-on-a0-3008984-8 )? Также помните, что максимальное значение для 10-битного ЦАП не 1024, а 1023 (2^10-1)., @StarCat
Ну, отчасти дело в том, что он в 8-битном режиме. И просто телеграфировать всем, кто хочет поглумиться над этим: нет, это не ответ. Это не объясняет, почему выходное напряжение графика не приближается к 3,3 В или, скорее, к 250/255 * 3,3. Если бы в вопросе было больше кода, было бы ясно, почему это даже не пилообразная форма. Предполагая, что для этого есть веская причина, если бы это был мой проект только для проверки работоспособности, я бы измерил контакт 3,3 В и увидел, что это действительно 3,3 В, а не что-то ближе к 255/250 * 2,7. Вы работаете от низкого заряда батареи?, @timemage
@StarCat Я установил его с помощью
pinMode (DRIVE_PIN, OUTPUT), а дляDRIVE_PINустановлено значение15., @Bart Friederichs@timemage Я питаю плату от USB-порта на своем ноутбуке., @Bart Friederichs
Что ж, у меня есть плата samd21, которая отличается от вашей, но использует ядро arduino: arduino для samd для определения платы. Я тестировал ядро версии 1.8.13. Я сделал аналоговую запись 255 для 8-битного разрешения по умолчанию на вывод ЦАП, и оно оказалось в пределах нескольких десятков мВ от 3,3 В. Ради всего святого я сделал это на выводе ШИМ, а не на выводе ЦАП, и он также почти полностью соответствует рельсу. Если я использую 250, это дает 3,22 В. Мой регулятор почти соответствует 3,30. Не уверен, что сказать вам, кроме как включить больше. Вся информация о коде и проводке, информация обо всех версиях и т. д., @timemage
@timemage я обновил свой вопрос, @Bart Friederichs
Хорошо, что вы добавили код. Я не знаю, к чему относится *"v2.0 [Arduino:XYZ]"*., @timemage
@timemage это то, что я получаю для «Версии», когда загружаю программу...., @Bart Friederichs
Что ж, кажется, вы сами ответили на него, так что, думаю, я просто не буду беспокоиться о том, что это значит. У вас не было кода в вопросе, когда я проводил тестирование, и я просто не использовал
pinMode/OUTPUT, потому что для этого не было причин. Итак, мне любопытно посмотреть, смогу ли я воспроизвести проблему теперь, когда я знаю, в чем она заключается, используя мою собственную плату., @timemage