Аналоговый выход 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 = "";
}
}
}
@aaaaa says reinstate Monica, 👍0
Обсуждение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
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
- AnalogWrite(DAC0, X), Аналоговое напряжение на выводе DAC0 выше при меньшем значении X - это нормально?
- Есть ли способ воспроизводить звуки с Arduino без использования звукового экрана?
- В чем разница между analogWrite и digitalWrite?
- Какова частота PWM-выхода на Arduino
- Arduino Due vs Mega 2560
- Как вывести истинное аналоговое напряжение на выходной контакт
- Отправка значения с одного Arduino на другой
- Точность часов времени Arduino
Какое напряжение на 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