Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Проблемы с АЦП в режиме дифференциального входа
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
Ingreeh
Доброго времени суток! Помогите пожалуйста разобраться.

Исходная задача: необходимо реализовать на atmega8535 флюгер(схема досталась в наследство). Суть в том, что на 8 основных направлениях на вход АЦП подается разное напряжение. Просто снять напряжение в лоб нельзя, диапазон очень маленький задран к значению напряжения питания схемы флюгера, как следствие, погрешность результата высокая.

Решили использовать режим дифференциального входа, на одну ножку подается напряжение питания схемы нашего флюгера, на вторую полезный сигнал. Работаем с разницей между уровнями напряжения на обеих ножках(коэф. усиления 10).

Симуляция в Proteus работает исправно, а вот в железе нет, хотя если запросить уровень сигнала на обеих ножках как есть, то значения приходят. В общем, ниже прикладываю кусок кода ибо курение даташита мне не помогает, может быть, кто-то сталкивался с подобными проблемами, может "глазастые" увидят в коде ошибку, которую я проглядела, одним словом, надеюсь на вашу помощь и заранее благодарю.
Navovvol
Как именно не работает в железе ? всегда нули ? значения несходятся с расчетными ? значение всегда одно и тоже ? или как ?
Ingreeh
Если снимать напряжения с ножек "в лоб", то на ножке с полезным сигналом будет значение в диапазоне от 980 до 1023 (чистое значение без калибровки), на ножке с питанием - 1023, а при попытке вывести результат работы в режиме дифференциального входа всегда одно и тоже значение - 1023
Navovvol
тип корпуса известен ?
"
...
2 Differential Input Channels with Optional Gain of 10x and 200x(1)
...
Note: 1. The differential input channel are not tested for devices in PDIP and PLCC Package.
This feature is only guaranteed to work for devices in TQFP and QFN/MLF Packages.
"
даже не знаю что именно тут ни так.
может добавить побольше делаев? Этот код с 3 секундным делаем уже ничем не испортишь
Код
unsigned int read_FLUGER(void)
{
ADMUX=0x49;
delay_us(10);
ADCSRA|=0x40;
delay_us(25);     //////// вот тут например
while ((ADCSRA & 0x10)==0);
ADCSRA|=0x10;
return ADCW;
}
Ingreeh
Спасибо, про корпус уточню еще, попробуем поставить delay
hd44780
Дифференциальный режим гарантированно работает только в контроллерах в корпусе TQFP. Не только Ваша 8535, а вообще любая мега, где есть АЦП и диф режим у него.

Хотя я лично это не проверял...
ILYAUL
Коллеги , там такая схема включения , что ему не нужен абсолютно диф. режим . Просто схемку немного поправить и всё- обычный резисторный делитель наряжения на 8 значений.
Ingreeh
К сожалению, схему подправить нельзя, нужно работать с тем, что есть, в противном случае я бы не заморачивалась с диф.режимом
sKWO
Цитата(Ingreeh @ May 23 2012, 21:58) *
К сожалению, схему подправить нельзя, нужно работать с тем, что есть, в противном случае я бы не заморачивалась с диф.режимом

я надеюсь Вы сделали следующим образом (внимание на выделенный фрагмент)
Цитата
The ATmega8535 features a 10-bit successive approximation ADC. The ADC is con-
nected to an 8-channel Analog Multiplexer which allows eight single-ended voltage
inputs constructed from the pins of Port A. The single-ended voltage inputs refer to 0V
(GND).
The device also supports 16 differential voltage input combinations. Two of the differen-
tial inputs (ADC1, ADC0 and ADC3, ADC2) are equipped with a programmable gain
stage, providing amplification steps of 0 dB (1x), 20 dB (10x), or 46 dB (200x) on the dif-
ferential input voltage before the A/D conversion. Seven differential analog input
channels share a common negative terminal (ADC1), while any other ADC input can be
selected as the positive input terminal.
If 1x or 10x gain is used, 8-bit resolution can be
expected. If 200x gain is used, 7-bit resolution can be expected.

также обращаю внимание на
Цитата
When switching to a differential gain channel, the first conversion result may have a
poor accuracy due to the required settling time for the automatic offset cancellation cir-
cuitry. The user should preferably disregard the first conversion result.

в коде у Вас я этого не увидел и ещё
Цитата
If differential gain channels are used, the input circuitry looks somewhat different,
although source impedances of a few hundred k? or less is recommended.

по поводу корпусного исполнения МК
Цитата
The differential input channel are not tested for devices in PDIP and PLCC Package.
This feature is only guaranteed to work for devices in TQFP and MLF Packages.

не вижу в Вашем коде вычисления диф измеряного значения:
(от напряжения канала отнять напряж на ADC1(негативное)) умножаете на коэф усил (Ваш = 10) * на 512 и делите на опорное
формула на 215 странице ДШ

Цитата(Ingreeh @ May 22 2012, 15:51) *
на одну ножку подается напряжение питания схемы нашего флюгера, на вторую полезный сигнал.

?????
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.