Почему мой аналоговый выход ограничен 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);
}

А это соответствующий сигнал:

, 👍0

Обсуждение

Вы явно установили 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


1 ответ


Лучший ответ:

1

По этой ссылке был ответ, вы должны удалить строку pinMode(PIN, OUTPUT).

,