=AK= 17 1 июля, 2009 Опубликовано 1 июля, 2009 · Жалоба Хорошее предположение, а если наоборот +100 мВ, тогда ошибка уже будет 250 мВ. Вы этим резистором просто добавили ошибку в 150 мВ. Если Vcc=5В, то при равенстве потенциалов земель на входе ADCin2 будет 147 мВ. 10-битный АЦП при Vcc=Vref=5В имеет разрешение 4.883 мB. То есть, измерив 147 мВ он в идеале выдаст значение 30. Следовательно, вычитая из результата измерения ADCin1 результат измерения ADCin2, мы вносим систематическую погрешность величиной 30 каунтов. Чтобы от нее избавиться, вычисления надо производить так: RESULT = ADCin1 - ADCin2 + 30 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dimka76 60 1 июля, 2009 Опубликовано 1 июля, 2009 · Жалоба RESULT = ADCin1 - ADCin2 + 30 Тогда можно использовать режим дифференциальных входов. И вычислять ничего не придется. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
OlegH 0 1 июля, 2009 Опубликовано 1 июля, 2009 · Жалоба Есть криминал в сырце опроса АЦП...я сам недавно накололся на мегах 16/128 (думаю в этой врядле может быть по другому). Пока усреднял измерение в канале по 100 точкам, некорректность была малозаметна. А как уменьшил число усредняемых точек, сразу вылезло - пришлось разбираться. После изменения номера канала, записанного в ADMUX, первое измерение будет с большой вероятностью некорректным (точне оно просто будет отражать предыдущий опрашиваемый канал), поскольку изменения в ADMUX будут переданы на мультиплексор не сразу, а синхронно с клоком тактовой частоты ADC (подробности написаны в даташите, но я сейчас уже запамятовал, тогда решил что проще просто отбросить первое преобразование после изменения номера канала). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dimka76 60 1 июля, 2009 Опубликовано 1 июля, 2009 · Жалоба После изменения номера канала, записанного в ADMUX, первое измерение будет с большой вероятностью некорректным (точне оно просто будет отражать предыдущий опрашиваемый канал), поскольку изменения в ADMUX будут переданы на мультиплексор не сразу, а синхронно с клоком тактовой частоты ADC (подробности написаны в даташите, но я сейчас уже запамятовал, тогда решил что проще просто отбросить первое преобразование после изменения номера канала). Запускаем измерение ADCin1 и сразу после этого изменяем мультиплексор на ADCin2. Сразу после запуска измерения ADCin2 меняем канал мультиплексора на ADCin1. Вот и все. Вот для mega644 The MUXn and REFS1:0 bits in the ADMUX Register are single buffered through a temporary register to which the CPU has random access. This ensures that the channels and reference selection only takes place at a safe point during the conversion. The channel and reference selection is continuously updated until a conversion is started. Once the conversion starts, the channel and reference selection is locked to ensure a sufficient sampling time for the ADC. Continuous updating resumes in the last ADC clock cycle before the conversion completes (ADIF in ADCSRA is set). Note that the conversion starts on the following rising ADC clock edge after ADSC is written. The user is thus advised not to write new channel or reference selection values to ADMUX until one ADC clock cycle after ADSC is written. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться