|
AVR + AD7705, Использование обоих каналов |
|
|
|
Feb 21 2007, 19:32
|

Местный
  
Группа: Свой
Сообщений: 211
Регистрация: 3-06-06
Пользователь №: 17 742

|
Написал программку для работы с этим АЦП, для первого канала все работает. Но возник вопрос - как правильно переключаться между каналами? Нужно ли перед каждым чтением проводить инициализацию АЦП для одного из каналов (в том числе самокалибровку), или можно один раз провести калибровку, а затем просто переключать канал? Вот как я работаю с АЦП: Инициализация: Код SPI_send(0x20); /* Active Channel is Ain1(+)/Ain1(-), next operation as write to the clock register */ SPI_send(0x01); /* ????? master clock enabled, 1 MHz Clock, set output rate to 25Hz*/ SPI_send(0x10); /* Active Channel is Ain1(+)/Ain1(-), next operation as write to the setup register */ SPI_send(0x44); /* gain = 1, unipolar mode, buffer off, clear FSYNC and perform a Self Calibration */ while(DRDY); /* wait for /DRDY to go low */ Далее в бесконечном цикле читаю данные: Код SPI_send(0x38); // next operation - read from the data register while(DRDY); /* wait for /DRDY to go low */ SPI_read(); Хотелось бы узнать правильный алгоритм работы с двумя каналами. Спасибо!
--------------------
Good News Everyone!
|
|
|
|
|
Feb 22 2007, 01:07
|
Частый гость
 
Группа: Свой
Сообщений: 109
Регистрация: 27-07-06
Из: С.-Петербург
Пользователь №: 19 148

|
Из datasheet'а следует, что калибровка должна проводиться после каждого переключения канала. Видимо, этот вариант и следует признать правильным  . У меня получалось, что из-за этой самой калибровки устройство работает "медленно и печально". Если требуется попеременно измерять 1-й и 2-й каналы, то общая частота взятия отсчётов составляет примерно 10 Гц (по 5 Гц на канал).
|
|
|
|
|
Feb 22 2007, 10:25
|
Участник

Группа: Участник
Сообщений: 51
Регистрация: 8-01-07
Из: Одесса
Пользователь №: 24 196

|
Цитата(Pavel V. @ Feb 21 2007, 18:32)  Написал программку для работы с этим АЦП, для первого канала все работает.
Но возник вопрос - как правильно переключаться между каналами? Нужно ли перед каждым чтением проводить инициализацию АЦП для одного из каналов (в том числе самокалибровку), или можно один раз провести калибровку, а затем просто переключать канал? Категорически не рекомендую пользоваться 2-мя каналами. Ничего хорошего из этого не выйдет. За этим АЦП замечена еще одна проблема. В условиях больших помех АЦП слетает и перезапустить его можно только снятием питания. Советую бросить его и перейти к примеру на С8051F350. 24 - разряда плюс процессор.
--------------------
Опыт - это та чудесная штука, которая позволяет вам узнать ошибку, когда вы ее повторите.
|
|
|
|
|
Feb 22 2007, 10:57
|
Участник

Группа: Участник
Сообщений: 51
Регистрация: 8-01-07
Из: Одесса
Пользователь №: 24 196

|
Цитата(Pavel V. @ Feb 22 2007, 09:38)  Да мне в общем-то не нужно большое быстродействие. Прибор будет использоваться для измерения напряжения и тока в домашнем лабораторном БП. Сначала проводил эксперименты со встроенным в Atmega АЦП, но не устроила точность.
Я правильно все понял? Если для БП - делай калибровку один раз и работай без проблем. Другое дело при работе с тензодатчиком или термопарой.
--------------------
Опыт - это та чудесная штука, которая позволяет вам узнать ошибку, когда вы ее повторите.
|
|
|
|
|
May 18 2007, 14:34
|
Участник

Группа: Новичок
Сообщений: 32
Регистрация: 28-04-05
Пользователь №: 4 592

|
с 14 страницы даташита - The AD7705/AD7706 contains independent sets of zero-scale registers, one for each of the input channels..... The AD7705/AD7706 contains independent sets of full-scale registers, one for each of the input channels.
тоесть калибровочные регистры предусмотрены свои для каждого канала, а значит каждый раз перекалибровывать при переключении с канала на канал не нужно. Сам так и делал - работало нормально. Запускал перекалибровку только при включении, и если на канале менялся коэфициент усиления.
По поводу глючности этого ацп ( в данном посте мелькало) могу сказать одно - ищите ошибки. Это нормальный девайс, работает олдово... фишка в том что при неправильной инициализации или общении с ним, он почемуто не просто отказывается работать а начинает глючить - при включении может запуститься а может и нет, или выдаёт одно и тоже значение ( у меня было 0x3eff), или работает с бешеными тормозами.... Также ещё стоит обратить внимание на то что в минус он работает только до 300мв ( при беглом изучении документации может показаться что пашет до -Vdd), ито ближе к этому значению начинается дикая нелинейность, ну а дальше оно просто вырубается или горит. - вообщем если переодически сигнал закидывает в минус, ну или помеха какая проскакивает - ждите глюков.
Сообщение отредактировал superbizzon - May 18 2007, 14:52
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|