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

 
 
5 страниц V   1 2 3 > »   
Reply to this topicStart new topic
> Калибровка AD7732, Калибровка АЦП
Leonmezon
сообщение Feb 11 2009, 08:34
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 191
Регистрация: 11-02-09
Из: Краснодар
Пользователь №: 44 686



ДОбрый день.
Возникла необходимость (и соотвественно сложность) в калибровке АЦП AD7732.
Сейчас без калибровки получаю напряжение так (пример на 1 АЦП из 3 - все через цфировую логику подключены к Atmega640):
//Чтение регистра ADC Status
PORTF&=~BIT(0); // CS1 установить в 0 - выбор 1 АЦП
NOP();
SpiWriteByte(0x04+0x40);
reg=SpiReadByte();
// Выбор канала готовых данных (аппаратно RDY дает сигнал только о готовности данных,без указания канала
switch (reg)
{
case 0x01:
{
// Установка чтение 0 канала данных
//Устанавливаем регистр для чтения - выходные данные 24 бит - 3 байта
SpiWriteByte(0x08+0x40);
}
break;
case 0x04:
{
// Установка чтение 1 канала данных
//Устанавливаем регистр для чтения - выходные данные 24 бит - 3 байта
SpiWriteByte(0x0A+0x40);
}
break;
case 0x05:
{
// Установка чтение 0 канала данных
//Устанавливаем регистр для чтения - выходные данные 24 бит - 3 байта
SpiWriteByte(0x08+0x40);
}
break;
default: { return (0x00);}
}
//Чтение данных из регистра АЦП
// Читаем и заносим в буфер
SPDR = 0x00;
while (!(SPSR&0x80)); // ожидание готовности порта, прежде чем считывать
A=SPDR; //считать SPDR - 1 байт
SPDR = 0x00;
while (!(SPSR&0x80)); // ожидание готовности порта, прежде чем считывать
B=SPDR; //считать SPDR - 2 байт
SPDR = 0x00;
while (!(SPSR&0x80)); // ожидание готовности порта, прежде чем считывать
C=SPDR; //считать SPDR - 3 байт
// Закрываем АЦП
PORTF|=BIT(0); // CS1 установить в 1
// Получаем длиное целое из полученных байт
// с учетом что первым идет старший байт
rez=(C+(B<<8)+(A<<16));
// Далее преобразуем с типу double и Преобразуем к напряжению
U=(((double)(rez))*10)/0xFFFFFF; // Получаем напряжение от 0 до 10 В
// Отнимаем 5 В - для сдига в биполярный сигнал - получаем изменение напряжения от -5 до 5 В
U=U-5;
// Преобразуем в микровольты и возращаем результат
rez=(signed long)(U*1000000);
return (rez);

В целом работает не плохо, но возникла задача повысить точность установки нуля. Для этого удобно использовать внутреннею калибровку АЦП. А здесь возникает сложность: чития даташит не фига не понятно, а имеено: (привожу формулу из даташита для калибровки )

For bipolar ranges:
Data = ((ADC result – ADC ZS Cal. reg.) × ADC FS Reg./400000h + 800000h – Ch. ZS Cal. reg.) × Ch. FS Cal. reg./200000h
Where the ADC result is in the range of 0 to FFFFFFh.

Вопрос: как изменяется Data? (с учетом что ADC result может быть меньше ADC ZS Cal.reg.????) и как от нее перейти к напряжению, т.е. как после этой формулы получить для возращения микровольты?
Go to the top of the page
 
+Quote Post
Tanya
сообщение Feb 11 2009, 08:57
Сообщение #2


Гуру
******

Группа: Модераторы
Сообщений: 8 752
Регистрация: 6-01-06
Пользователь №: 12 883



Цитата(Leonmezon @ Feb 11 2009, 11:34) *
ДОбрый день.
Возникла необходимость (и соотвественно сложность) в калибровке АЦП AD7732.
Сейчас без калибровки получаю напряжение так (пример на 1 АЦП из 3 - все через цфировую логику подключены к Atmega640):
;

В целом работает не плохо, но возникла задача повысить точность установки нуля. Для этого удобно использовать внутреннею калибровку АЦП. А здесь возникает сложность: чития даташит не фига не понятно, а имеено: (привожу формулу из даташита для калибровки )

For bipolar ranges:
Data = ((ADC result – ADC ZS Cal. reg.) × ADC FS Reg./400000h + 800000h – Ch. ZS Cal. reg.) × Ch. FS Cal. reg./200000h
Where the ADC result is in the range of 0 to FFFFFFh.

Вопрос: как изменяется Data? (с учетом что ADC result может быть меньше ADC ZS Cal.reg.????) и как от нее перейти к напряжению, т.е. как после этой формулы получить для возращения микровольты?

Вам ничего вычислять не нужно. Написано, что будет делаться внутри (коррекция нуля и полной шкалы) с регистрами после проведения самокалибровки.
А Вы получите скорректированные данные. Можно эти регистры читать и писать самому (для умников). Читать не вредно... Можно увидеть дрейф...
Go to the top of the page
 
+Quote Post
DS
сообщение Feb 11 2009, 09:42
Сообщение #3


Гуру
******

Группа: СуперМодераторы
Сообщений: 3 096
Регистрация: 16-01-06
Из: Москва
Пользователь №: 13 250



Цитата(Tanya @ Feb 11 2009, 11:57) *
Вам ничего вычислять не нужно. Написано, что будет делаться внутри (коррекция нуля и полной шкалы) с регистрами после проведения самокалибровки.
А Вы получите скорректированные данные. Можно эти регистры читать и писать самому (для умников). Читать не вредно... Можно увидеть дрейф...


Там формат странноватый, надо найти и прочитать соответствующую appnotу. Если правилно помню, старший бит - знак, дальше нулевой бит, и смещение нуля - в прямом коде (т.е. модуль).

Нашел appnote.
Прикрепленные файлы
Прикрепленный файл  ad773xcr.pdf ( 96.9 килобайт ) Кол-во скачиваний: 48
 


--------------------
Не бойтесь тюрьмы, не бойтесь сумы, не бойтесь мора и глада, а бойтесь единственно только того, кто скажет - "Я знаю как надо". А. Галич.
Go to the top of the page
 
+Quote Post
Leonmezon
сообщение May 20 2009, 19:13
Сообщение #4


Частый гость
**

Группа: Участник
Сообщений: 191
Регистрация: 11-02-09
Из: Краснодар
Пользователь №: 44 686



Цитата(Tanya @ Feb 11 2009, 11:57) *
Вам ничего вычислять не нужно. Написано, что будет делаться внутри (коррекция нуля и полной шкалы) с регистрами после проведения самокалибровки.
А Вы получите скорректированные данные. Можно эти регистры читать и писать самому (для умников). Читать не вредно... Можно увидеть дрейф...


Если я правильно понял, то мне необходимо просто провести калибровку и уже читая результат измерения все будет уже учтено?
Go to the top of the page
 
+Quote Post
Tanya
сообщение May 20 2009, 19:44
Сообщение #5


Гуру
******

Группа: Модераторы
Сообщений: 8 752
Регистрация: 6-01-06
Пользователь №: 12 883



Цитата(Leonmezon @ May 20 2009, 23:13) *
Если я правильно понял, то мне необходимо просто провести калибровку и уже читая результат измерения все будет уже учтено?

Я Вас (то, что Вы выше написали) понять не могу. И не могу понять, почему Вы меня не можете понять... Или сомневаетесь...
Go to the top of the page
 
+Quote Post
Leonmezon
сообщение May 21 2009, 08:29
Сообщение #6


Частый гость
**

Группа: Участник
Сообщений: 191
Регистрация: 11-02-09
Из: Краснодар
Пользователь №: 44 686



Цитата(Tanya @ May 20 2009, 22:44) *
Я Вас (то, что Вы выше написали) понять не могу. И не могу понять, почему Вы меня не можете понять... Или сомневаетесь...

Попробую объяснить:
Я сейчас запускаю АЦП (устанавливаю необходимый режим) и считываю с него данные (т.е. результат измерения напряжения на входе). Результат меня более или менее устраивает, но хочется получить более точное значения измеренного напряжения, с учетом, что есть дрейф нуля, ИОН не ровно 2,56 В ..... АЦП имеет возможность калибровки: как в целом, так и по каждому каналу. Для калибровки мне необходимо запусть соответствующие режимы работы АЦП (с ними все понятно), а вот дальше не совсем. Что после этого мне необходимо делать???
Как я думаю (возможно и не правильно), после калибровки у меня изменяются значения соответствующих регистров, я их считываю, и считываю результат измерения и по формуле (которая приведена) вычисляю скорректированный результат - правильно?
Или, как я Вас понял, после калибровки АЦП, новые результаты автоматически корректируется и я уже считываю корректированный результат из АЦП - так?
Go to the top of the page
 
+Quote Post
DS
сообщение May 21 2009, 11:07
Сообщение #7


Гуру
******

Группа: СуперМодераторы
Сообщений: 3 096
Регистрация: 16-01-06
Из: Москва
Пользователь №: 13 250



Цитата(Leonmezon @ May 21 2009, 12:29) *
Или, как я Вас понял, после калибровки АЦП, новые результаты автоматически корректируется и я уже считываю корректированный результат из АЦП - так?


Да, именно так.


--------------------
Не бойтесь тюрьмы, не бойтесь сумы, не бойтесь мора и глада, а бойтесь единственно только того, кто скажет - "Я знаю как надо". А. Галич.
Go to the top of the page
 
+Quote Post
Leonmezon
сообщение May 29 2009, 20:03
Сообщение #8


Частый гость
**

Группа: Участник
Сообщений: 191
Регистрация: 11-02-09
Из: Краснодар
Пользователь №: 44 686



Просьба подсказать: необходима ли развязка между АЦП и микроконтроллером по SPI интерфейсу? (сейчас делаю через инверторы на рис.)
Кто нибудь пробывал запустить АЦП AD7732 на частоте меньше минимальной (мин. по даташиту 1 Мгц) скажем на 800 кГц?

Сообщение отредактировал Leonmezon - May 29 2009, 20:09
Прикрепленные файлы
Прикрепленный файл  ___________________.zip ( 251.6 килобайт ) Кол-во скачиваний: 25
 
Go to the top of the page
 
+Quote Post
DS
сообщение May 31 2009, 09:13
Сообщение #9


Гуру
******

Группа: СуперМодераторы
Сообщений: 3 096
Регистрация: 16-01-06
Из: Москва
Пользователь №: 13 250



Цитата(Leonmezon @ May 30 2009, 00:03) *
Просьба подсказать: необходима ли развязка между АЦП и микроконтроллером по SPI интерфейсу? (сейчас делаю через инверторы на рис.)
Кто нибудь пробывал запустить АЦП AD7732 на частоте меньше минимальной (мин. по даташиту 1 Мгц) скажем на 800 кГц?


Развязка не нужна. Но нужно отслеживать состояние DIN во время чтения, не давать ему болтаться произвольно.
Нам еньшей частоте будет работать, но точность "поплывет". А зачем такое извращение ?


--------------------
Не бойтесь тюрьмы, не бойтесь сумы, не бойтесь мора и глада, а бойтесь единственно только того, кто скажет - "Я знаю как надо". А. Галич.
Go to the top of the page
 
+Quote Post
Leonmezon
сообщение May 31 2009, 17:01
Сообщение #10


Частый гость
**

Группа: Участник
Сообщений: 191
Регистрация: 11-02-09
Из: Краснодар
Пользователь №: 44 686



Цитата(DS @ May 31 2009, 13:13) *
Развязка не нужна. Но нужно отслеживать состояние DIN во время чтения, не давать ему болтаться произвольно.
Нам меньшей частоте будет работать, но точность "поплывет". А зачем такое извращение ?


С DIN понятно (да и по программе видно - что не болтаться). То есть как я правильно понял - с точки зрения уменьшения погрешности АЦП - установка инверторов не чего не дает?
На меньшей частоте необходимо для получения частоты дискретизации 50 Гц (на 1 МГц - мин. по даташиту - минимальная частота преобразования примерно 60 Гц) Фактически использовать надо АЦП - 2 режима 50 ГЦ и 200 Гц (зависит от переключателя), поиск другого АЦП не чего не дал, (по диапазону не проходят! +-10В дифференциальном режиме+ 2 канала и циклический режим (если по схеме смотреть организую непрерывное преобразование без пропусков).
А другой вопрос: если я 4 преобразования на частоте 200 Гц - объединю в одно (U1+U2+U3+U4)/4 - это будет эквивалентно частоте 50 Гц? И помеха 50 Гц пролезет? (по теореме же на 50 Гц мы не видим частоты больше 25 Гц).
Go to the top of the page
 
+Quote Post
DS
сообщение Jun 1 2009, 14:58
Сообщение #11


Гуру
******

Группа: СуперМодераторы
Сообщений: 3 096
Регистрация: 16-01-06
Из: Москва
Пользователь №: 13 250



Усреднять результаты можно. Теорему Вы не правильно понимаете. Сигналы с частотами выше F/2 не отбрасываются, а их спектр переносится в рабочий диапазон. И они становяться помехами. Поэтому до АЦП должен находиться адекватный аналоговый фильтр. Сигнал с частотой 50 Гц может быть полностью подавлен за счет свойств цифрового фильтра конкретного этого АЦП путем правильного выбора частоты тактирования.


--------------------
Не бойтесь тюрьмы, не бойтесь сумы, не бойтесь мора и глада, а бойтесь единственно только того, кто скажет - "Я знаю как надо". А. Галич.
Go to the top of the page
 
+Quote Post
Leonmezon
сообщение Jun 1 2009, 15:30
Сообщение #12


Частый гость
**

Группа: Участник
Сообщений: 191
Регистрация: 11-02-09
Из: Краснодар
Пользователь №: 44 686



Цитата(DS @ Jun 1 2009, 18:58) *
Усреднять результаты можно. Теорему Вы не правильно понимаете. Сигналы с частотами выше F/2 не отбрасываются, а их спектр переносится в рабочий диапазон. И они становяться помехами. Поэтому до АЦП должен находиться адекватный аналоговый фильтр. Сигнал с частотой 50 Гц может быть полностью подавлен за счет свойств цифрового фильтра конкретного этого АЦП путем правильного выбора частоты тактирования.


До АЦП ставлю фильтр 6-порядка - все равно пролазеет (хотя снижаеться до уровня сотен микровольт), а хочеться больше smile.gif .
Не совсем понятно, как выбрать частоту дискретизации, чтобы подавть 50 Гц?

Сообщение отредактировал Leonmezon - Jun 1 2009, 15:31
Go to the top of the page
 
+Quote Post
DS
сообщение Jun 1 2009, 15:50
Сообщение #13


Гуру
******

Группа: СуперМодераторы
Сообщений: 3 096
Регистрация: 16-01-06
Из: Москва
Пользователь №: 13 250



Цитата(Leonmezon @ Jun 1 2009, 19:30) *
До АЦП ставлю фильтр 6-порядка - все равно пролазеет (хотя снижаеться до уровня сотен микровольт), а хочеться больше smile.gif .
Не совсем понятно, как выбрать частоту дискретизации, чтобы подавть 50 Гц?


Такой фильтр излишен для данного типа АЦП. Не исключено, что он и является источником помехи через цепи питания. В подавляющем большинстве случаев достаточно RC цепочки.
Про выбор частоты дискретизации прочитайте раздел datasheetа "Frequency Response", обратив внимание на Fig. 27. Также рекомендую разобраться с принципом работы дельта-сигма АЦП.


--------------------
Не бойтесь тюрьмы, не бойтесь сумы, не бойтесь мора и глада, а бойтесь единственно только того, кто скажет - "Я знаю как надо". А. Галич.
Go to the top of the page
 
+Quote Post
Leonmezon
сообщение Jun 2 2009, 19:41
Сообщение #14


Частый гость
**

Группа: Участник
Сообщений: 191
Регистрация: 11-02-09
Из: Краснодар
Пользователь №: 44 686



Цитата(DS @ Jun 1 2009, 19:50) *
Такой фильтр излишен для данного типа АЦП. Не исключено, что он и является источником помехи через цепи питания. В подавляющем большинстве случаев достаточно RC цепочки.
Про выбор частоты дискретизации прочитайте раздел datasheetа "Frequency Response", обратив внимание на Fig. 27. Также рекомендую разобраться с принципом работы дельта-сигма АЦП.


Для данного типа АЦП аналоговая фильтрация все таки нужна (иначе шум наложенный на сигнал до АЦП запросто пройдет дальше (и никакой цифровой фильтр ее уже не уберет + может появиться эффект насыщения сигма-делтта модулятора с вытикающими последствиями ... - цитирую по Analog Device note), в то же время согласен выбор частоты дискретизации помагает избавить от многих шумов, только применительно к этому АЦП AD7732 минимальная частота дискретизации равна примерно 60 ГЦ - что не есть хорошо - 50 Гц из нее не получиш, лучше на мой взгляд выбрать частоту тактирования 100 Гц (если судить по даташиту) - с одной строны можно легко получить 50 Гц дискретизацию (плюс будет естественно фильтрация за счет усреднения), с другой строны такая частота позволит избавиться от гармоник 50 Гц. Хотя могу и ошибаться?
Go to the top of the page
 
+Quote Post
DS
сообщение Jun 3 2009, 20:41
Сообщение #15


Гуру
******

Группа: СуперМодераторы
Сообщений: 3 096
Регистрация: 16-01-06
Из: Москва
Пользователь №: 13 250



Цитата(Leonmezon @ Jun 2 2009, 23:41) *
Для данного типа АЦП аналоговая фильтрация все таки нужна (иначе шум наложенный на сигнал до АЦП запросто пройдет дальше (и никакой цифровой фильтр ее уже не уберет + может появиться эффект насыщения сигма-делтта модулятора с вытикающими последствиями ... -


Я не писал, что она не нужна ВООБЩЕ. Не нужна фильтрация высоких порядков при правильном выборе соотношений частот. Достаточно фильтра первого порядка. И Вы путаете частоту дискретизации и частоту выдачи результата . В случае данного АЦП это совершенно не одно и то же.


--------------------
Не бойтесь тюрьмы, не бойтесь сумы, не бойтесь мора и глада, а бойтесь единственно только того, кто скажет - "Я знаю как надо". А. Галич.
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 18th July 2025 - 21:01
Рейтинг@Mail.ru


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