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

 
 
> Калибровка 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
 
Start new topic
Ответов
DS
сообщение Jul 6 2009, 09:37
Сообщение #2


Гуру
******

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



14 Мгц кварц - не ошибка ? Максимально, что допустимо 6.144 Мгц.

Если калибровка запускалась с использованием сигнала SYNC, достаточно проверять готовность любого АЦП.

Калибровки существуют 2 - калибровка АЦП - ее надо делать обязательно после включения питания и калибровка канала. Она выполняется для каждого канала раздельно, и убирает смещение коммутатора и внешних входных цепей. Т.е. то, что в момент выполнения этой калибровки будет на входе, то и будет восприниматься в качестве "0".


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


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

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



Цитата(DS @ Jul 6 2009, 13:37) *
14 Мгц кварц - не ошибка ? Максимально, что допустимо 6.144 Мгц.

Если калибровка запускалась с использованием сигнала SYNC, достаточно проверять готовность любого АЦП.

Калибровки существуют 2 - калибровка АЦП - ее надо делать обязательно после включения питания и калибровка канала. Она выполняется для каждого канала раздельно, и убирает смещение коммутатора и внешних входных цепей. Т.е. то, что в момент выполнения этой калибровки будет на входе, то и будет восприниматься в качестве "0".

По кварцу - это кварц atmega640 (относиться к функции delay()) - указал чтоб было понятна примерно время задержки.

По калибровки понятно (сегодня попробывал)И так как не имею возможноти коммутировать вход (он жестко распаян) - оставил только автокалибровку, т.е. калибровку внутренних параметров (фактически калибровка от ИОН) - но выявилась ошибка - при каждом новом включении прибора очень большой разброс параметров (вижу по выходным данным при нулевом сигнале (на ноль (смещение) калибруем программано уже ЭВМ по 3 тыс. значениям ) и честно не знаю в чем дело: значали грешил на входные операционные усилители (их питани...) - полностью отключил питание, отсоеденил входы АЦП и соеденил все на землю) - результат тот же, честно не знаю что может быть? Пр нулевом сигнале: цифровой код с АЦП соотвествует +-4 мВ (причем абсолюно периодично (напряжения примерны но порядок тот же): плюс 4мВ, минус 4мВ, плюс 4мВ минус 4 мВ.... ).
Go to the top of the page
 
+Quote Post
Tanya
сообщение Jul 6 2009, 15:23
Сообщение #4


Гуру
******

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



Цитата(Leonmezon @ Jul 6 2009, 18:33) *
Пр нулевом сигнале: цифровой код с АЦП соотвествует +-4 мВ (причем абсолюно периодично (напряжения примерны но порядок тот же): плюс 4мВ, минус 4мВ, плюс 4мВ минус 4 мВ.... ).


Так не должно быть никогда. Где-то у Вас ОШИБКА Ваша. Проанализируйте последовательность выходную.
Go to the top of the page
 
+Quote Post
Leonmezon
сообщение Jul 6 2009, 15:33
Сообщение #5


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

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



Цитата(Tanya @ Jul 6 2009, 19:23) *
Так не должно быть никогда. Где-то у Вас ОШИБКА Ваша. Проанализируйте последовательность выходную.

Выходная последовательность имеет частоту повторения 100 Гц равную половине частоты дискретизации 200 Гц, причем если сигнал не нулевой - скажем подаю синусоиду 0,1 Гц до 100 Гц и амплитудой до 10 В - на выходеименно ее и получаю (графически востанавливаем сигнал на ЭВМ). Что интресно: менял частоту дискретизации - резльатт тот же - только частота повторения соотвественно другая (деленная на два). Где искать не знаю.
Go to the top of the page
 
+Quote Post
DS
сообщение Jul 6 2009, 19:33
Сообщение #6


Гуру
******

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



Цитата(Leonmezon @ Jul 6 2009, 19:33) *
Выходная последовательность имеет частоту повторения 100 Гц равную половине частоты дискретизации 200 Гц, причем если сигнал не нулевой - скажем подаю синусоиду 0,1 Гц до 100 Гц и амплитудой до 10 В - на выходеименно ее и получаю (графически востанавливаем сигнал на ЭВМ). Что интресно: менял частоту дискретизации - резльатт тот же - только частота повторения соотвественно другая (деленная на два). Где искать не знаю.


Программную калибровку Вы записываете в регистры АЦП ? Или вычитаете в процессоре ? Не может ли быть, что у Вас перенос разряда при вычитании 24 битного слова хромает ?


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


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

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



Цитата(DS @ Jul 6 2009, 23:33) *
Программную калибровку Вы записываете в регистры АЦП ? Или вычитаете в процессоре ? Не может ли быть, что у Вас перенос разряда при вычитании 24 битного слова хромает ?

Калибровку вообще отключил (при таких значениях калибровка не поможет): закоротил все входы АЦП и смотрю что на цифровом выходе.
Обработка данных в mege (повторю часть своего первого сообщения): (да и проверял когда писал программу на регистрах - все сходиться до знака).

//Чтение данных из регистра АЦП
// Читаем и заносим в буфер
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);

Вопрос где искать? (землю вроде верно разведены - соеденены в одной точке, кварцы у 3 АЦП сразу отказали - наврядле, 3 АЦП испортились - то же, единственно у нас в качестве ИОН используеться REF43 - одна штука - но от нее проводом сечением 1,5 кв. мм. )невесным чтоб уменьшить сопротивление) подходит к АЦП сигнал). - Как можно поискать ошибку?
Go to the top of the page
 
+Quote Post
DS
сообщение Jul 6 2009, 20:35
Сообщение #8


Гуру
******

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



Цитата(Leonmezon @ Jul 6 2009, 23:48) *
Вопрос где искать? (землю вроде верно разведены - соеденены в одной точке, кварцы у 3 АЦП сразу отказали - наврядле, 3 АЦП испортились - то же, единственно у нас в качестве ИОН используеться REF43 - одна штука - но от нее проводом сечением 1,5 кв. мм. )невесным чтоб уменьшить сопротивление) подходит к АЦП сигнал). - Как можно поискать ошибку?


Вы серьезно поставили 3 кварца ? Вы себе представляете, какие биения могут возникнуть именно на частотах в полосе измерения ? Выкиньте 2 из трех кварцев, подсоедините входы MCLKIN к MCLKOUT АЦП с кварцем.
И распечатайте побайтно, без преобразования, результаты считываемые из регистров, наверняка ошибка программная.


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


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

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



Цитата(DS @ Jul 7 2009, 00:35) *
Вы серьезно поставили 3 кварца ? Вы себе представляете, какие биения могут возникнуть именно на частотах в полосе измерения ? Выкиньте 2 из трех кварцев, подсоедините входы MCLKIN к MCLKOUT АЦП с кварцем.
И распечатайте побайтно, без преобразования, результаты считываемые из регистров, наверняка ошибка программная.

Не совсем понятно как три кварца могут дать биения (они же подключены к каждому своему АЦП)? (Да и на плате кроме них - еще три кварца: 14Мгц, 7,8 МГц и 32 кГц (atmega640, atmega8515+ часы реального времени) кварц GPS приемника (DSP процессор) и кварц микроЭВМ (одноплатник на 500 МГц) - все работает).
Go to the top of the page
 
+Quote Post
DS
сообщение Jul 7 2009, 05:45
Сообщение #10


Гуру
******

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



Цитата(Leonmezon @ Jul 7 2009, 00:51) *
Не совсем понятно как три кварца могут дать биения (они же подключены к каждому своему АЦП)? (Да и на плате кроме них - еще три кварца: 14Мгц, 7,8 МГц и 32 кГц (atmega640, atmega8515+ часы реального времени) кварц GPS приемника (DSP процессор) и кварц микроЭВМ (одноплатник на 500 МГц) - все работает).


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


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

Сообщений в этой теме
- Leonmezon   Калибровка AD7732   Feb 11 2009, 08:34
- - Tanya   Цитата(Leonmezon @ Feb 11 2009, 11:34) ДО...   Feb 11 2009, 08:57
|- - DS   Цитата(Tanya @ Feb 11 2009, 11:57) Вам ни...   Feb 11 2009, 09:42
|- - Leonmezon   Цитата(Tanya @ Feb 11 2009, 11:57) Вам ни...   May 20 2009, 19:13
|- - Tanya   Цитата(Leonmezon @ May 20 2009, 23:13) Ес...   May 20 2009, 19:44
|- - Leonmezon   Цитата(Tanya @ May 20 2009, 22:44) Я Вас ...   May 21 2009, 08:29
|- - DS   Цитата(Leonmezon @ May 21 2009, 12:29) Ил...   May 21 2009, 11:07
|- - Leonmezon   Просьба подсказать: необходима ли развязка между А...   May 29 2009, 20:03
|- - DS   Цитата(Leonmezon @ May 30 2009, 00:03) Пр...   May 31 2009, 09:13
|- - Leonmezon   Цитата(DS @ May 31 2009, 13:13) Развязка ...   May 31 2009, 17:01
- - DS   Усреднять результаты можно. Теорему Вы не правильн...   Jun 1 2009, 14:58
|- - Leonmezon   Цитата(DS @ Jun 1 2009, 18:58) Усреднять ...   Jun 1 2009, 15:30
|- - DS   Цитата(Leonmezon @ Jun 1 2009, 19:30) До ...   Jun 1 2009, 15:50
|- - Leonmezon   Цитата(DS @ Jun 1 2009, 19:50) Такой филь...   Jun 2 2009, 19:41
|- - DS   Цитата(Leonmezon @ Jun 2 2009, 23:41) Для...   Jun 3 2009, 20:41
|- - Leonmezon   Цитата(DS @ Jun 4 2009, 00:41) Я не писал...   Jun 4 2009, 12:01
- - Leonmezon   Просьба подсказать как лучше будет (задании параме...   Jul 4 2009, 16:45
|- - Leonmezon   Цитата(DS @ Jul 7 2009, 09:45) У них част...   Jul 7 2009, 14:59
|- - Tanya   Цитата(Leonmezon @ Jul 7 2009, 18:59) Что...   Jul 7 2009, 16:01
|- - Leonmezon   Цитата(Tanya @ Jul 7 2009, 20:01) Могу то...   Jul 7 2009, 16:24
|- - Tanya   Цитата(Leonmezon @ Jul 7 2009, 20:24) Поп...   Jul 7 2009, 16:33
|- - Leonmezon   Цитата(Tanya @ Jul 7 2009, 20:33) Кто бы ...   Jul 7 2009, 16:40
|- - Tanya   Цитата(Leonmezon @ Jul 7 2009, 20:40) Да ...   Jul 7 2009, 16:55
|- - DS   Цитата(Leonmezon @ Jul 7 2009, 20:40) Да ...   Jul 7 2009, 18:02
|- - Leonmezon   Цитата(DS @ Jul 7 2009, 22:02) На всех АЦ...   Jul 7 2009, 18:23
|- - DS   Цитата(Leonmezon @ Jul 7 2009, 22:23) С н...   Jul 7 2009, 18:30
|- - Leonmezon   Цитата(DS @ Jul 7 2009, 22:30) У Вас полу...   Jul 8 2009, 14:13
|- - DS   Цитата(Leonmezon @ Jul 8 2009, 18:13) Из ...   Jul 9 2009, 09:41
- - Rockstein   Спасибо за подробное объяснение калибровки, я тоже...   Sep 9 2009, 22:00
|- - DS   А питание как ? Земля ? 1/1000 от значения уже вес...   Sep 10 2009, 15:06
|- - Rockstein   Цитата(DS @ Sep 10 2009, 19:06) А питание...   Sep 10 2009, 19:07
|- - dos622   Цитата(Rockstein @ Sep 10 2009, 23:07) ди...   Sep 11 2009, 11:36
|- - Rockstein   Цитата(dos622 @ Sep 11 2009, 15:36) Как п...   Sep 11 2009, 11:44
|- - dos622   Цитата(Rockstein @ Sep 11 2009, 15:44) По...   Sep 11 2009, 12:09
- - DS   Может быть корявый фронт, который с небольшой веро...   Sep 11 2009, 07:06
|- - Rockstein   Цитата(DS @ Sep 11 2009, 10:06) Может быт...   Sep 11 2009, 10:38
|- - DS   Цитата(Rockstein @ Sep 11 2009, 14:38) Ещ...   Sep 11 2009, 12:10
||- - Rockstein   Цитата(DS @ Sep 11 2009, 16:10) Вообще-то...   Sep 11 2009, 12:23
|- - Tanya   Цитата(Rockstein @ Sep 11 2009, 14:38) Ещ...   Sep 11 2009, 13:18
|- - Rockstein   Цитата(Tanya @ Sep 11 2009, 16:18) Через ...   Sep 11 2009, 14:26
- - Rockstein   УРА!!!! Поздравте меня. Все-таки э...   Sep 11 2009, 20:56
|- - DS   Цитата(Rockstein @ Sep 12 2009, 00:56) УР...   Sep 12 2009, 15:18
|- - Tanya   Цитата(DS @ Sep 12 2009, 19:18) Для этого...   Sep 12 2009, 15:30
|- - Rockstein   Цитата(DS @ Sep 12 2009, 18:18) ACT для т...   Sep 13 2009, 21:43
- - DS   Ну я даже и не знаю как такое откомментировать. Ст...   Sep 14 2009, 12:50
|- - Rockstein   Цитата(DS @ Sep 14 2009, 15:50) Ну я даже...   Sep 14 2009, 19:56
|- - Rockstein   Цитата(DS @ Sep 14 2009, 15:50) Ну я даже...   Sep 14 2009, 21:52
|- - dos622   Цитата(Rockstein @ Sep 15 2009, 01:52) Да...   Sep 15 2009, 09:41
|- - DS   Цитата(Rockstein @ Sep 15 2009, 01:52) Да...   Sep 15 2009, 10:58
|- - Rockstein   Цитата(DS @ Sep 15 2009, 14:58) Нет, глуп...   Sep 15 2009, 11:47
|- - DS   Цитата(Rockstein @ Sep 15 2009, 15:47) А ...   Sep 15 2009, 11:51
|- - Rockstein   Цитата(DS @ Sep 15 2009, 14:51) Не обязат...   Sep 15 2009, 20:55
|- - DS   Цитата(Rockstein @ Sep 16 2009, 00:55) Сп...   Sep 15 2009, 21:13
|- - Rockstein   Цитата(DS @ Sep 16 2009, 01:13) Я надеюсь...   Sep 16 2009, 22:15
- - Herz   Цитата(Rockstein @ Sep 14 2009, 21:56) Се...   Sep 15 2009, 10:26
- - dos622   Цитата(Herz @ Sep 15 2009, 14:26) А зачем...   Sep 15 2009, 10:42


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

 


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


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