Аналоговый выход Arduino Due имеет смещение 500 мВ

Я использую простое последовательное соединение, чтобы сообщить Due, что выводить на аналоговый выходной контакт. Однако выходы смещены примерно на 550 мВ (как видно на осциллографе), а максимальное значение 255 дает ~2,7 В. Что мне не хватает? Почему выходной сигнал ЦАП 0 – 3,3 В не может быть преобразован в значения 0–255?

int output = DAC1; // аналоговый выходной контакт
String inData;

void setup()
{
  Serial.begin(9600);
}

void loop() {
  while (Serial.available() > 0) {
    char value = Serial.read();
    inData += value;
    if(value == '\n'){
      val = inData.toInt(); // 0..255
      analogWrite(output, val);
      Serial.println(val);
      inData = "";
    }
  }
}

, 👍0

Обсуждение

Какое напряжение на VDDANA?, @Ignacio Vazquez-Abrams

как мне это проверить?, @aaaaa says reinstate Monica

С черным проводом цифрового мультиметра на земле и красным проводом на VDDANA, когда цифровой мультиметр работает в режиме постоянного напряжения., @Ignacio Vazquez-Abrams

он читает около 4,2 В, если под VDDANA вы имеете в виду вывод Vin. Я не знаю, где измерить VDDANA иначе, @aaaaa says reinstate Monica

В даташите на MCU указана его распиновка., @Ignacio Vazquez-Abrams

Из [схемы] (http://tekmovanje.ieee.si/wp-content/uploads/moxie_upload/arduino-due-schematic.pdf) видно, что VDDANA — это контакт 73 на самом чипе., @Greenonline

это известная проблема? На данный момент я далеко от карты, обновлю, как только вернусь к работе. Если это известная проблема, каковы приблизительные решения/что-то, что я могу попробовать?, @aaaaa says reinstate Monica


2 ответа


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

2

Я не знаю, сколько лет этой ветке, но я подумал, что не помешает дать некоторое представление, потому что я столкнулся с той же проблемой. Смотреть на: http://www.atmel.com/Images/Atmel- 42187-ATSAM3X-and-ATSAM3A-Series-Checklist_AP-Note_AT03462.pdf стр. 13: напряжение DAC0 и 1 находится между 1/6 ADVREF и 5/6 ADVREF, что примерно соответствует ADVREF=3,2 В; Размах (4/6)*3,2 = 2,1 В для периодических сигналов смещение можно удалить, используя небольшой развязывающий конденсатор, который будет действовать как фильтр верхних частот. Надеюсь, это поможет

,

Спасибо за помощь! Цифры в таблице данных atmega имеют смысл, они близки к тому, что я вижу на осциллографе., @aaaaa says reinstate Monica


0
int output = DAC1; // analog output pin
String inData;
int val; 


void setup()
{
  Serial.begin(9600);

}

void loop() {
  while (Serial.available() > 0) {
    char value = Serial.read();
    inData += value;
    if(value == '\n'){
      val = inData.toInt(); // 0..255
      val=constrain(val, 543, 2720);
      analogWrite(output, map(val,543,2720, 0, 255));
      Serial.println(val);
      inData = "";
    }
  }
}
,

Привет и добро пожаловать. Пожалуйста, [отредактируйте] свой ответ и объясните, почему ваш код работает. Ответы только на код не одобряются. Спасибо., @Greenonline