Калибровка СС2500

В разделе рассматриваются вопросы информационного обмена в робототехнике.
Аппаратный уровень, протоколы.

Калибровка СС2500

Сообщение blindman » 14 окт 2008, 04:46

В микросхеме СС2500, как и во всех подобных, используется синтезатор частоты с ФАПЧ. Опорная частота стабилизируется кварцевым резонатором. Проблема состоит в том, что резонаторы имеют разброс значения частоты. Даже при использовании резонатора с точностью +-20ppm, разброс частоты резонаторов может быть до +-540Гц. Это приводит к тому, что даже при использовании резонаторов с одинаковой номинальной частотой, частоты на выходе синтезатора могут различаться на +-48кГц. В результате повышается процент ошибок, особенно на высоких скоростях передачи.

СС2500 имеет 3 конфигурационных регистра : FREQ0, FREQ1, FREQ2, предназначенных для установки базовой частоты. Для калибровки нужно измерить реальную частоту резонатора.

eskiz.png
Схема устройства калибровки

calibrate.zip
Исходный код и прошивка
(9.99 КиБ) Скачиваний: 64


Чтобы обеспечить достаточно большой период измерения без использования прерываний (для повышения точности) использован "часовой" кварц (32768Гц). Тактирование МК осуществляется от внутреннего RC-генератора. Результат измерения выдается через UART. Так как частота RC-генератора не устанавливается точно, для подстройки скорости передачи через UART используется подстроечный резистор. Частота кварцевого резонатора подключенного к CC2500 делится на 4 и с вывода GDO2 подается на вход таймера-счетчика 1. Подключение входа таймера-счетчика 1 показано на схеме для текущей схемы "мегаплаты" EdGull'а.

Процедура калибровки:

UART через адаптер подключить к компьютеру. Запустить терминал, установить скорость 19200 бит/с. После включения питания программа выдает в UART строки, содержащие информацию о текущей скорости передачи. Вращением подстроечного резистора добиться уверенного приема данных через UART. После этого в терминале нажать Enter. Начнется измерение, после чего будет выведено измеренное значение частоты резонатора и вычисленые значения регистров FREQ0, FREQ1, FREQ2. Один цикл измерения занимает 8 секунд. Значения регистров рассчитываются для базовой частоты (т.е частоты канало 0) 2403 МГц.

Внимание:
  1. программа написана для ATMega8, не ATMega88
  2. все устройства, предназначенные для совместной работы, должны калиброваться с использованием одного и того же часового кварца
Проект [[Open Robotics]] - универсальные модули для построения роботов
Модули Open Robotics можно приобрести в магазине shop.roboforum.ru

Day OFF? You must be pulling my leg! Stop making humor before someone sees you, fool!

Аватара пользователя
blindman
 
Сообщения: 4130
Зарегистрирован: 29 апр 2008, 21:15
Откуда: Хабаровск
прог. языки: C,C++,Assembler,PHP,Javascript,Ruby, SPIN,Java(?)
ФИО: Андрей Юрьевич

Re: Калибровка СС2500

Сообщение blindman » 02 мар 2009, 13:02

Обнаружен баг в программе. Частота кварца CC2500 для измерения делилась на 4 и подавалась на вход таймера-счетчика МК. Для кварца 27МГц эта частота получалась 6.75 МГц - что выше допустимой для МК (должно быть не более половины тактовой частоты, то есть 4 МГц). Мне просто попались МК, которые смогли "проглотить" высокую частоту.

Прикладываю исправленную прошивку - частота кварца теперь делится на 8.
Вложения
calibrate.zip
(10.05 КиБ) Скачиваний: 33
Проект [[Open Robotics]] - универсальные модули для построения роботов
Модули Open Robotics можно приобрести в магазине shop.roboforum.ru

Day OFF? You must be pulling my leg! Stop making humor before someone sees you, fool!

Аватара пользователя
blindman
 
Сообщения: 4130
Зарегистрирован: 29 апр 2008, 21:15
Откуда: Хабаровск
прог. языки: C,C++,Assembler,PHP,Javascript,Ruby, SPIN,Java(?)
ФИО: Андрей Юрьевич

Re: Калибровка СС2500

Сообщение avr123.nm.ru » 02 мар 2009, 13:33

Интересное устройство.
Аватара пользователя
avr123.nm.ru
отсылающий читать курс
 
Сообщения: 14195
Зарегистрирован: 06 ноя 2005, 04:18
Откуда: Москва

Re: Калибровка СС2500

Сообщение bolt » 03 мар 2009, 10:58

измерять лучше не саму частоту, а их разность для двух девайсов, imho
bolt
 
Сообщения: 281
Зарегистрирован: 01 дек 2008, 19:21

Re: Калибровка СС2500

Сообщение blindman » 03 мар 2009, 11:06

Мне это не кажется очевидным. Обоснуй.
Проект [[Open Robotics]] - универсальные модули для построения роботов
Модули Open Robotics можно приобрести в магазине shop.roboforum.ru

Day OFF? You must be pulling my leg! Stop making humor before someone sees you, fool!

Аватара пользователя
blindman
 
Сообщения: 4130
Зарегистрирован: 29 апр 2008, 21:15
Откуда: Хабаровск
прог. языки: C,C++,Assembler,PHP,Javascript,Ruby, SPIN,Java(?)
ФИО: Андрей Юрьевич

Re: Калибровка СС2500

Сообщение bolt » 03 мар 2009, 18:52

дабы пара модулей устойчиво работала между собой, должны совпадать частоты обоих PLL генераторов. И не столь важно чему эти частоты равны.
В старых 900МГц беспроводниках не было цифровой калибровки, а просто стоял подстроечный конденсатор в опорном генераторе. Аналогично я расстраивал свою пару кварцев в SSB сигнализации на 1кГц, при несущей 14*2=28Мгц, поскольку нулевые биения просто не слышно.
bolt
 
Сообщения: 281
Зарегистрирован: 01 дек 2008, 19:21

Re: Калибровка СС2500

Сообщение blindman » 03 мар 2009, 19:53

bolt писал(а):дабы пара модулей устойчиво работала между собой, должны совпадать частоты обоих PLL генераторов. И не столь важно чему эти частоты равны.

Так я и не гарантирую абсолютно точного измерения. Просто берем достаточно стабильный кварц и объявляем его эталоном, от него и пляшем. Это у себя в приемнике ты на слух биения воспринимал, а здесь такое очевидно не возможно
Проект [[Open Robotics]] - универсальные модули для построения роботов
Модули Open Robotics можно приобрести в магазине shop.roboforum.ru

Day OFF? You must be pulling my leg! Stop making humor before someone sees you, fool!

Аватара пользователя
blindman
 
Сообщения: 4130
Зарегистрирован: 29 апр 2008, 21:15
Откуда: Хабаровск
прог. языки: C,C++,Assembler,PHP,Javascript,Ruby, SPIN,Java(?)
ФИО: Андрей Юрьевич

Re: Калибровка СС2500

Сообщение Виталий » 03 мар 2009, 19:59

Я полный профан в этом деле, но почему за эталон не взять один из пары настраиваемых приборов?
Все новости о моих проектах http://savethebest.ru
Аватара пользователя
Виталий
 
Сообщения: 2114
Зарегистрирован: 08 окт 2004, 16:43
Откуда: St. Petersburg
Skype: quark-bot
ФИО: Клебан Виталий

Re: Калибровка СС2500

Сообщение blindman » 03 мар 2009, 20:09

В принципе нет никакой разницы, что объявлять эталоном. Просто надо этот эталон выбрать и всегда его использовать. Если делаешь всего 2 устройства - можно взять за эталон одно из них. Если делаешь партию - наверно имеет смысл сделать отдельный калибратор и установить в него стабильный кварц.
Проект [[Open Robotics]] - универсальные модули для построения роботов
Модули Open Robotics можно приобрести в магазине shop.roboforum.ru

Day OFF? You must be pulling my leg! Stop making humor before someone sees you, fool!

Аватара пользователя
blindman
 
Сообщения: 4130
Зарегистрирован: 29 апр 2008, 21:15
Откуда: Хабаровск
прог. языки: C,C++,Assembler,PHP,Javascript,Ruby, SPIN,Java(?)
ФИО: Андрей Юрьевич

Re: Калибровка СС2500

Сообщение boez » 03 мар 2009, 20:20

А зачем такая хитрая система с уартом и подстроечником? С основным кварцем никак не получалось? Там же вроде преддделители имеются в меге, да и прерывания в такой системе не нужны - пусть будут 2 таймера, один считает кварц атмеги, второй - сигнал СС2500, крутим примерно 8 секунд цикл ожидания с отловом переполнений и затем шустренько хватаем оба счетчика подряд (разница во времени - доли мкс) и делим один на другой. Точность - доли или малые единицы ppm. Подсчет переполнений - некритичная по времени задача.

Это раз. А два - у СС2500 есть еще одна интересная фича. Откалибровав одну плату по хорошему кварцу, или просто взяв ее за эталон, остальные можно калибровать чисто программно, без подключений. Для этого используем регистр FREQEST приемника при приеме сигнала от эталонного передатчика. Разрешение - чуть меньше 1 ppm, а вот про точность сходу не скажешь, пробовать надо.

Да, а еще любой генератор можно откалибровать по часам точного времени - запустить его на сутки и посчитать тики.

Сорри, щас не могу подкрепить идеи прогами - некогда :(
boez
 
Сообщения: 1981
Зарегистрирован: 27 авг 2008, 10:45
Откуда: Харьков
прог. языки: С/С++

Re: Калибровка СС2500

Сообщение bolt » 03 мар 2009, 20:38

Так я и не гарантирую абсолютно точного измерения.

Абсолютное измерение нам и не нужно. Модули работают в паре. Достаточно если частоты опорных генераторов просто совпадают.
bolt
 
Сообщения: 281
Зарегистрирован: 01 дек 2008, 19:21

Re: Калибровка СС2500

Сообщение blindman » 03 мар 2009, 20:44

Использовать FREQEST имеет смысл на небольшой дальности - при слабом сигнале это ненадежно. Конечно можно калибровать в лабораторных условиях, но тогда это мало отличается от прямого измерения.

Да, и рассуждать о том как можно было бы сделать - можно очень много. Я выбрал для себя способ, который мне показался наиболее простым в реализации, и этот девайс реально использовался мною и еще одним человеком (он и обнаружил баг в программе). Тем кому подстроечник кажется неудобным - предлагаю самостоятельно модифицировать программу, и выложить сюда ;)
Проект [[Open Robotics]] - универсальные модули для построения роботов
Модули Open Robotics можно приобрести в магазине shop.roboforum.ru

Day OFF? You must be pulling my leg! Stop making humor before someone sees you, fool!

Аватара пользователя
blindman
 
Сообщения: 4130
Зарегистрирован: 29 апр 2008, 21:15
Откуда: Хабаровск
прог. языки: C,C++,Assembler,PHP,Javascript,Ruby, SPIN,Java(?)
ФИО: Андрей Юрьевич

Re: Калибровка СС2500

Сообщение EdGull » 03 мар 2009, 20:47

да-да... просим-просим другие варианты калибровки!!! :Bravo:
Аватара пользователя
EdGull
 
Сообщения: 10211
Зарегистрирован: 28 дек 2004, 20:33
Откуда: Тольятти
Skype: Ed_Gull
прог. языки: Bascom AVR Basic
ФИО: Гуль Эдуард Викторович

Re: Калибровка СС2500

Сообщение blindman » 03 мар 2009, 20:47

bolt писал(а):Абсолютное измерение нам и не нужно. Модули работают в паре. Достаточно если частоты опорных генераторов просто совпадают.

Я не пойму, что ты хочешь сказать. Ты пишешь очевидные вещи, которые никак не противоречат ни идее девайса, ни его реализации.
Проект [[Open Robotics]] - универсальные модули для построения роботов
Модули Open Robotics можно приобрести в магазине shop.roboforum.ru

Day OFF? You must be pulling my leg! Stop making humor before someone sees you, fool!

Аватара пользователя
blindman
 
Сообщения: 4130
Зарегистрирован: 29 апр 2008, 21:15
Откуда: Хабаровск
прог. языки: C,C++,Assembler,PHP,Javascript,Ruby, SPIN,Java(?)
ФИО: Андрей Юрьевич

Re: Калибровка СС2500

Сообщение bolt » 04 мар 2009, 00:46

Если нужна серия с одинаковыми частотами, то за базу лучше взять один из модулей, как уже предложили, а не просто частотомер. А если нужно просто настроить пару, то базой может служить один из двух модулей.
Идея в том, что высокоточный измеритель на МК со своим кварцем не нужен. Достаточно просто сравнить кол-во импульсов по двум входам.
bolt
 
Сообщения: 281
Зарегистрирован: 01 дек 2008, 19:21

След.

Вернуться в Коммуникации

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0

cron