реклама на сайте
подробности

 
 
> Влияние каналов АЦП друг на друга?, ATMega16
hd44780
сообщение Sep 25 2011, 06:47
Сообщение #1


Профессионал
*****

Группа: Свой
Сообщений: 1 202
Регистрация: 26-08-05
Из: Донецк, ДНР
Пользователь №: 7 980



Собирается прибор для одновременного измерения сетевого напряжения и тока.
Входные каскады - схема. БП на LM7805, МК (ATMega16, 8 MHz), LCD типа HD4478, кнопки, светодиодики не рисовал, там всё стандартно.

ОУ DA2.1 - средняя точка 2.5в, регулируется R3.
Входы ADC1, 2 АЦП опрашиваются 20 раз за период 50 Гц (в обработчике таймера, 1 мс):

// Замер напряжения - ADC1
adc = read_adc(ADC_U);
// убираем смещение
adcU=adc-adcUsm;

// Квадрат
adcSqr=adcU;
adcSqr*=adcU;

// Сумма квадратов напряжения
summUsqr+=adcSqr;

....................................

Для тока (ADC2) абсолютно также, переменные другие. Все расчёты здесь - 100% целочисленные, никакой плавающей точки.
АЦП работает без прерываний, по опросам:

// ADC initialization
// ADC Clock frequency: 1000,000 kHz
// ADC Voltage Reference: AREF pin
// ADC Auto Trigger Source: None
ADMUX=0x00;
ADCSRA=0x83; // 0x10000011 - Enable, CLK/8=1MHz
.......................

// Read the AD conversion result
word read_adc(byte adc_input)
{
ADMUX=adc_input;
// Delay needed for the stabilization of the ADC input voltage
delay_us(10);

// Start the AD conversion (ADSC)
ADCSRA|=0x40;

// Wait for the AD conversion to complete (ADIF)
while ((ADCSRA & 0x10)==0);

ADCSRA|=0x10;

// Обнуляем мл. бит
return ADCW&0xFFFE;
} // read_adc

Функция read_adc сгенерирована генератором кода CvAVR. Я её не менял.
Напряжение средней точки (ADC0) - adcUsm - замеряется в начале каждого цикла замеров. Каждый цикл - 0.5 сек - 10 периодов 50 Гц.
ADC2 - канал измерения большого тока (>4A) контроллером пока не обрабатывается.

Далее идут пересчёты в напряжение сети и ток.

Начал отлаживать. Канал напряжения (ADC1) откалибровал, работает. Показывает почти также, как и мультиметры. Для нашего брата сойдёт biggrin.gif .

Приступил к току (ADC2). Вот тут начались странности.
Когда напряжение подано, а нагрузки нет, тока нагрузки нет, на выходе ТТ - чистый 0, а прибор показывает на входе АЦП - 0.01-0.02в (округлённо - %.2f). Вопроса пересчёта напряжения на АЦП в амперы я здесь не касаюсь.
Облазил весь код - ничего, всё нормально.

Потом случайно отключил обмотку измерения напряжения T3 (подключена через разъёмчик), остался только R2, запаянный в плату. И, о, чудо - увидел 0в на обоих входах АЦП 08.gif .
После целенаправленных разборок в этом направлении увидел, что напряжение на ADC1 как-то влияет на ADC2.

Вопрос - можно ли как-то избавиться от этого влияния и как? Может я чего не учёл? Или взять модификацию ATMega16A? Слышал, что у них аналоговая часть сделана более грамотно.
Ставить внешний АЦП? У меня есть микрочиповский MCP3202. Где гарантия, что и у него нету подобных эффектов?

PS. Пошарив по интернету, нашёл ещё пару жалоб на такой же эффект в ATMega8, но решений так и нету. Где-то предлагали реже опрашивать АЦП, но мне это не выход, т.к. идеально вообще - ток и напряжение замерять строго одновременно.

Спасибо.

Сообщение отредактировал hd44780 - Sep 25 2011, 06:50
Эскизы прикрепленных изображений
Прикрепленное изображение
 


--------------------
Чтобы возить такого пассажира, необходим лимузин другого класса.
(с) Мария Эдуарда
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
hd44780
сообщение Sep 27 2011, 10:19
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 202
Регистрация: 26-08-05
Из: Донецк, ДНР
Пользователь №: 7 980



Осциллографом глядел миллион раз. Когда нагрузки нет - на ADC2 идеально ровная полоса 2.5в.

Переделал алгоритм, теперь использует прерывания АЦП и ждёт 50 нс после переключения мультиплексора - ещё хуже стало.
Теперь при полном отсутствии сигнала и по напряжению и по току показывает 0.1в и 0.4-0.5в соответственно.

Я иссяк sad.gif . Пошёл менять АЦП на MCP3202....


--------------------
Чтобы возить такого пассажира, необходим лимузин другого класса.
(с) Мария Эдуарда
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- hd44780   Влияние каналов АЦП друг на друга?   Sep 25 2011, 06:47
- - Клим   Цитата(hd44780 @ Sep 25 2011, 09:47) а пр...   Sep 25 2011, 08:05
|- - hd44780   Цитата(Клим @ Sep 25 2011, 11:05) Попробу...   Sep 25 2011, 09:38
|- - Клим   Цитата(hd44780 @ Sep 25 2011, 12:38) А чт...   Sep 25 2011, 15:54
- - hd44780   Дифф режим не использую, смещение вычитается прогр...   Sep 25 2011, 08:15
- - -SANYCH-   ЦитатаВопрос - можно ли как-то избавиться от этого...   Sep 25 2011, 10:45
- - Юрий_СВ   Цитата(hd44780 @ Sep 25 2011, 09:47) (ATM...   Sep 25 2011, 11:23
- - hd44780   Поставил частоту синхронизации 125 кГц и добавил 2...   Sep 25 2011, 13:14
- - dac   имхо косяк в отрицательном напряжении на входе. мн...   Sep 25 2011, 13:24
|- - Юрий_СВ   Цитата(dac @ Sep 25 2011, 16:24) 100кОм с...   Sep 25 2011, 14:23
- - hd44780   BAS70-04 в прайсе нашёл, доберусь до магазина, куп...   Sep 26 2011, 06:14
|- - MaslovVG   Цитата(hd44780 @ Sep 26 2011, 10:14) Насч...   Sep 26 2011, 09:46
|- - Stanislav_S   Известная проблема Я делаю так: - делитель тактир...   Sep 26 2011, 09:47
- - Navovvol   Я как то словил интересный баг на быстром переключ...   Sep 26 2011, 11:01
- - Юрий_СВ   Попробуйте увеличить задержку в word read_adc(byte...   Sep 26 2011, 11:20
|- - dac   а еще попробуйте померить осциллографом, что реаль...   Sep 26 2011, 12:12
|- - Клим   Цитата(hd44780 @ Sep 27 2011, 13:19) Осци...   Sep 28 2011, 03:50
- - ArtemKAD   Как-то натыкался на взаимовлияние каналов. Лечилос...   Sep 27 2011, 18:05
- - -SANYCH-   Сначала не обратил внимание но когда присмотрелся ...   Sep 28 2011, 06:55
|- - Клим   Цитата(-SANYCH- @ Sep 28 2011, 09...   Sep 28 2011, 08:00
|- - hd44780   Цитата(Клим @ Sep 28 2011, 11:00) назначе...   Sep 28 2011, 08:08
- - Lexdaw   Вы будете смеятся ,но в одном из приборов взаимовл...   Sep 29 2011, 07:06
- - SAWushka   Не по делу, так как все что мог придумть уже посов...   Sep 29 2011, 09:41
|- - hd44780   Цитата(SAWushka @ Sep 29 2011, 12:41) Как...   Sep 29 2011, 13:27
- - hd44780   Вот изобразил текущую схему. Может уже оффтоп в д...   Sep 29 2011, 15:12
- - defunct   Пропускайте первое измерение после смены канала.   Oct 1 2011, 21:57
- - hd44780   Всё работает. Сделал 50 нс ожидания после переключ...   Oct 9 2011, 16:24


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 22nd June 2025 - 17:57
Рейтинг@Mail.ru


Страница сгенерированна за 0.01429 секунд с 7
ELECTRONIX ©2004-2016