Съдържание:
Видео: GPSDO YT, Дисциплиниран осцилатор 10Mhz Референтна честота. Ниска цена. Точно .: 3 стъпки
2024 Автор: John Day | [email protected]. Последно модифициран: 2024-01-30 07:50
*******************************************************************************
СТОП СТОП СТОП СТОП СТОП СТОП СТОП СТОП СТОП СТОП
Това е остарял проект.
Вместо това проверете моята нова версия на 2x16 lcd дисплей, налична тук:
www.instructables.com/id/GPSDO-YT-10-Mhz-L…
Оставих старата версия тук за документация.
*******************************************************************************
Здравейте, момчета!
Какво е GPSDO? GPSDO означава: GPS дисциплиниран осцилатор. GPS за глобална система за позициониране. Всички GPS сателити са оборудвани със синхронизиран атомен часовник. GPS модулът приема тези сигнали от няколко спътника. И чрез триангулация, той знае местоположението си. Но тук това, което ни интересува, е импулсът в секунда, който се намира на модула. С този точен импулс (от атомния часовник) можем да направим много много точен осцилатор. За какво ? За справка, за калибриране на честотния брояч или просто за забавление да имате такъв в лабораторията си.
Те са много схематични в интернет. Опитах някои. Някои са добри, един с малък2313 беше 5 херца твърде бавен. Но моят е най -простият, полезен и удобен. И аз ви давам.hex код. Те не са VCO и няма разделител. Схемата с VCO се справят добре. Но той трябва да има непрекъснат импулсен сигнал от 10 kHz или повече. Ако антената е твърде слаба, липсва импулс или изобщо няма импулс, осцилаторът (ocxo) работи сам по себе си и VFC (контрол на честотата на напрежението) вече не е точен. VCO обратната връзка се нуждае от референтна честота, за да се придържа. Ако не, то варира от 1 до 2 херца! Освен това по -евтиният GPS модул не работи в тази конфигурация. Трябва да имаме поне 10khz, за да направим VCO. Пробвах с 1000 херца. Разликата е твърде голяма. Честотата варира. Така че с ublox neo-6m не можете да направите страхотен vco gpsdo, защото максималната изходна честота е 1000Hz. Трябва да закупите нео-7м или горна част.
Ето как работи моят GPSDO YT. Контролерът намери добра настройка за всеки OCXO с vfc 0 до 5v. Ако загубим сигнал от общопрактикуващите лекари, честотата изобщо не се движи. Когато сигналът се появи отново, контролерът взема последната си известна добра стойност и продължава както преди. На обхвата, с референтен осцилатор. Не можем да кажем кога сигналът се губи или кога се е върнал. Сигналът е същият.
След калибриране можете да използвате gpsdo без антена, ако искате. Няколко монтирания по -късно ще имате много малко отклонение. Но…. колко по -голям? Време е за малко обяснение.
Ето малко математика … Лесна математика, следвайте ме с това е лесно. Досега алгоритъмът има 6 фази. Всяка фаза взема проба от 1 до 1000 секунди, установява добра корекция на pwm и отива към повечето по -дълги проби за по -голяма точност.
Точност = (((Номер на секундата x 10E6) + 1)/брой на секундата) - 10E6
Фаза 1, 1 втора проба за 10 000 000 000 броя за точност +- 1 Hz
фаза 2, 10 секунди проба за 100 000 000 000 точки за точност +-0,1Hz
Фаза 3, 60 секундна проба за 600 000 000 000 броя за точност +-0,01666 Hz
Фаза 4, 200 секунди Проба за 2 000 000 000 000 брои за точност +-0,005 Hz
Фаза 5, 900 секунди проба за 9 000 000 000 000 брои за точност +-0,001111 Hz
Фаза 6, 1000 секундна проба за 10 милиарда се брои за точност +-0.001 Hz
Най-лошия случай. Когато получим фаза 6. Това число може да се променя малко на всеки 1000 секунди или не. известно време ще бъде 10, 000, 000, 001 или 9, 999, 999, 999 И така, +или - 0, 000, 000.001 вариация за 1000s. Сега трябва да знаем стойността за 1 секунда.
10 Mhz = 1 секунда
За 1 секунда = 10, 000, 000, 001 брой/1000s = 10, 000, 000.001 Hz (най -лошия случай за 1 секунда)
10, 000, 000.001 - 10, 000, 000 = 0.001 Hz/s по -бързо или по -бавно
0,001Hz X 60 X 60 X24 X365 = 31536 Hz/години
Така че не забравяйте, че 10Mhz е 1 секунда, 31536Hz X 1 / 10E6 = 0, 0031536 секунда / година
Друг по -бърз метод за изчисление. един пропуск за 10E9Mhz е 1/10E9 = 1E-10
1E-10 x 60x60x24x365 = 0, 0031536 секунда/година.
Това достатъчно точно ли е за вас?
трябва обаче да имате добър OXCO. Предпочитам изход за двойна фурна 12v. По -стабилен, тих и точен. Но имам същия резултат с прости 5V. Например, stp 2187 има кратко време за стабилност (аланово отклонение) от 2x10-12 = 0,000, 000, 000, 002 Hz стабилност. В същото време, когато е наличен GPS импулс, Avr винаги ще коригира pwm (честота). UC винаги брои … винаги. Това означава, че на дисплея няма да виждате дата и час. Когато uC взема проби от 900s, този е зает за 900 секунди. Той трябва да брои целия часовник. Проблемът е, че UC работи на 10Mhz. Всеки часовник трябва да се брои. Тя се брои сама. Ако липсва само един часовник, пробата няма да е добра и настройката на pwm няма да бъде правилна. Не мога да опресня дисплея всяка секунда.
Когато извадката започне. Uc започва да брои таймер0. Всеки 256 часовник генерира прекъсване. Регистърът X се увеличава. когато е пълен Y регистърът се увеличава и X се нулира на 0 и така нататък. Накрая, при последния импулс на GPS, броенето се спира. И сега и само сега мога да актуализирам дисплея и да направя някои математически изчисления за pwm.
знаейки това, имам само 25, 6 us (256 часовник преди прекъсване) за четене и показване на време или друго. Това е невъзможно. Едно прекъсване може да бъде бафирано, а не 2. Мога да опресня времето след 1000 секунди … но няма да е практично да виждам времето с интервал от 15, 16 минути. Имам часовник, часовник, мобилен телефон, за да знам времето:) Правя справка с 10Mhz. Не часовник.
Друг проблем, който имах, някои avr инструкции имат 2 цикъла. Включително инструкцията rjmp. Това означава, че ако първият или последният GPS импулс се появи по едно и също време на инструкция от 2 цикъла, uC ще пропусне часовник. Тъй като uC ще завърши инструкцията, преди да започне прекъсването. Така че броячът ще започне или спре един цикъл по -късно. Така че не мога да направя времево изчакване … Но всъщност нямам друг избор. Имах нужда от цикъл някъде !! I Така че използвам инструкции rjmp и nop (това не прави нищо). Nop е инструкция за един цикъл. Сложих 400 nop инструкции за един rjmp на atmega48. 2000 на версия atmega88 и atmega328p. Така че шансовете първият или последният импулс да дойдат при инструкция rjmp. Но да, това е възможно и ако това се случи, тази грешка ще бъде коригирана при следващото вземане на проби.
Дисплеят е по избор. Можете да правите верига само с, uC, OCXO и нискочестотен филтър (резисторен кондензатор), включете и изчакайте. След 1 час ще имате приемлива честота. Но за да се достигне фаза 6. Това отнема няколко часа.
Pwm е 16 бита. 65535 стъпка. 5v/65535 = 76, 295 uV
OCXO вариацията е 2Hz на 1V. 1v/76, 295uV = 13107 стъпка за 2 hz. 2/13107 = 152,59uHz стъпка от pwm
Фаза 5, се променя pwm с 3, фаза 6 е 2. стъпка … Защо 3? защото 3 променя честотата с 0,000, 000, 000, 4 в мащаб от 15 минути. и 4 е моето магическо число в моя алгоритъм. Например, ако във фаза първа, първата намерена честота е 10.000, 003Mhz. Спускам надолу с 0, 000, 000.4 стъпка.
Твърде голямата стъпка може да премине от 10.000003 до 10.000001 и след 9, 999998Hz. Липсва ми целта.
С 0, 0000004. Това е по -бързо от 0, 1 и съм по -сигурен, че няма да заобиколя число. И така нататък. Аз правя същото с 10 секунди, 60 секунди и 200s фаза и 900s. 1000s е в режим на работа и използвайте pwm стъпка от 2
Моля, обърнете внимание, че фаза 5 е по -дълга за постигане. Разликата между 4 и 5 е по -голяма. Но това помага да се премине от 5 до 6 по -бързо.
Когато фаза 6 преброи точно 10 милиарда, стойностите на pwm се записват в eeprom. Сега е време за режим на работа. Този отброява 1000 секунди проба, но само с 2 стъпки pwm. В режим на работа реалната честота се показва и актуализира на интервал от 1000 секунди. Ако сигналът се загуби в режим на работа, той преминава в режим на самостоятелно стартиране. В този режим няма промяна на pwm. Когато сигналът се върне, той се връща към фаза 5 за повторно синхронизиране.
Ако веригата е изключена след запазване на eeprom. Това ще започне на фаза 5 при включване при eeprom pwm стойност.
За да изтриете стойността на eeprom, просто натиснете бутона при стартиране. Pwm 50% ще се зареди и калибрирането ще започне от фаза 1.
Прекарвам много часове, за да опитам различно нещо, конфигурация на веригата. Направих много тестове, с OP усилвател, буфер и друг чип. И в крайна сметка … най -добрият резултат, който имам, не се нуждае от него. Просто добро стабилно захранване и някакъв филтриращ кондензатор. Така че аз държа това просто.
Стъпка 1: Купете части
Първото нещо, което трябва да направите, е да закупите частите. Защото често доставката е много, много дълга.
GPS модул: Използвам ublox neo-6m. Купих този в ebay. Направете търсене, струва около 7 до 10 американски долара.
По подразбиране на този приемник е разрешен 1 импулс за секунда. Не е нужно да правим нищо.
Можете да използвате всеки GPS модул с 1 Hertz импулсен изход. Имаш един. Използвайте това!
OCXO: Опитах 2 осцилатора. Двойна фурна stp2187 12v синусоидална мощност. И ISOTEMP 131-100 5V, квадратна вълнова мощност. И двете идват от radioparts16 в ebay. Имах много добро обслужване от тях и цената беше по -ниска.
AVR: Кодът се побира на малко atmega48. Но предлагам да си купя atmega88 или atmega328p. Това е почти същата цена. Купете това на digikey или ebay. Използвам дип версията. Можете да закупите версия за повърхностен монтаж, но обърнете внимание, щифтовете не са еднакви за схемата.
LCD дисплей: Всеки 4x20 HD44780 съвместим дисплей ще работи. Познайте къде си купих моя:) Да в ebay преди няколко години. Сега е по -скъпо от преди. Но се предлага под $ 20 САЩ.
Може би в близко бъдеще ще направя код за дисплей 2x16. Тези дисплеи са само 4 $. А между вас и мен, двуредов дисплей би бил достатъчен.
Трябва да имате AVR ISP програмист. Програмирането на AVR не е като Arduino. Arduino вече е програмиран да комуникира на сериен порт. Чисто нов avr трябва да бъде програмиран с ISP или паралелен програмист за високо напрежение. Тук използваме isp.
74hc04 или 74ac0, волтов регулатор 7812 и 7805, резистори, кондензатор … digikey, ebay
Стъпка 2: Ето схема и Gpsdo_YT_v1_0.hex
Мисля, че схемата е всичко, от което се нуждаете, за да реализирате този проект. Можете да използвате медна дъска с метод на ецване или просто перфорирана дъска, ако желаете.
Можете да използвате всяка кутия, която искате, но аз предлагам метална кутия. Или просто на дъска за забавление като моята:)
Чакам разширение на антената и bnc конектор, за да сложа проекта си в кутия.
Трябва да изберете правилния бит на предпазителя. Уверете се, че е избран външен осцилатор. Ако имате проблеми с външния осцилатор, опитайте с външен кристал. И часовникът low.ckdiv8 е отметен. Вижте снимката. Обърнете внимание, когато външният часовник се предпази, трябва да осигурите външен часовник, за да програмирате или стартирате кода. С други думи, свържете осцилатора в щифт xtal1.
Между другото … можете да използвате същия код, за да направите честотен брояч с 1 секунда порта. Просто въведете часовник за измерване в xtal1 пин и ще имате +-1 Hz честотен брояч.
Ще актуализирам проекта веднага щом имам нови неща.
Междувременно, ако проектът ви интересува, имате достатъчно материал, за да започнете и дори да го завършите преди мен
Качих 2 видеоклипа, можете да видите първата фаза и последната.
На разположение съм за всякакви въпроси или коментари. Благодаря ти.
26 февруари 2017 г. … Налична версия 1.1.
-atmega48 вече не се поддържа. Недостатъчно място.
-Добавен брой сателитни заключени.
-Поддържа 2x16 lcd. Ако имате 4x20, също ще работи. Но последният ред 2 няма да показва нищо.
Стъпка 3: Влизане в Eeprom
Ето изхвърлянето на eeprom след няколко часа работа. Ще обясня как се чете това. Отново е лесно:)
На адрес 00, 01 се съхранява pwm стойност. Веднага щом фаза 5 наброи 9 милиарда, стойността на pwm се актуализира всеки път, когато броячът достигне точно 10 милиарда.
Веднага щом сме на фаза 5. Всички преброявания се съхраняват в eeprom след стойност pwm. Започнете от адрес 02, след 03 и така нататък.
Този пример дойде от моя 5 волта ocxo. Можем да прочетем pwm стойност 0x9A73 = 39539 десетична на 65536. = 60, 33% или 3.0165 волта.
Така че адрес 00:01 е 0x9A73
След това можете да прочетете 03. За 9 000 000 000 003 Pwm се намалява с 3, защото все още сме във фаза 5
00 за 10 000 000 000 000 pwm престой е недокоснат и преминаваме в режим на работа (фаза 6)
02 за 10 000 000 000,002 В този случай стойността на pwm се намалява от 2
01 за 10 000 000 0001 pwm стойността е намалена от 2
01 за 10 000 000 0001 pwm стойността отново се понижава от 2
00 за 10 000 000 000 000 pwm престой е недокоснат
00 за 10 000 000 000 000 pwm престой е недокоснат
00 за 10 000 000 000 000 pwm престой е недокоснат
Сега знаете как да четете eeprom. На всеки 1000 секунди нова стойност се записва в eeprom. Когато eeprom е пълен, той се рестартира от адрес 2.
FF стойност средно 9, 999, 999.999
Можете с този дамп да проследите точността, без никакъв LCD дисплей.
Можете да изхвърлите eeprom файла с isp програмист.
Надявам се, че съм ви дал достатъчно информация. Ако не, уведомете ме. Съвети, грешки, всичко.
Яник
Препоръчано:
Как да изградите ЕКГ устройство с ниска цена: 26 стъпки
Как да изградим ЕКГ устройство на ниска цена: Здравейте всички! Казвам се Мариано и съм биомедицински инженер. Прекарах няколко уикенда, за да проектирам и реализирам прототип на ЕКГ устройство на ниска цена на базата на Arduino платка, свързана чрез Bluetooth към устройство с Android (смартфон или таблет). Бих
Безжична комуникация LoRa от 3 до 8 км с ниска цена E32 (sx1278/sx1276) Устройство за Arduino, Esp8266 или Esp32: 15 стъпки
Безжична комуникация LoRa от 3 до 8 км с ниска цена E32 (sx1278/sx1276) Устройство за Arduino, Esp8266 или Esp32: Създавам библиотека за управление на EBYTE E32 въз основа на серия Semtech на устройство LoRa, много мощно, просто и евтино устройство. Можете да намерите 3Km версия тук, 8Km версия тук Те могат да работят на разстояние от 3000m до 8000m и имат много функции и
Демо на ниска цена MR игра: 9 стъпки
Демо на ниска цена MR игра: http://www.bilibili.com/video/av7937721/ (видео url в китайския континент) Over View: Задайте картина с маркировка върху държач на две оси , Потребителят го погледнете от картон , можете да видите чудовище покрито на маркирайте, те се стрелят помежду си в света на игрите. Използвайте AR, за да разберете ъгъла на залог
3D печат - Светещ меч с ниска цена!: 12 стъпки
3D печат - Евтин светлинен меч!: Евтин, 3D печат и сгъваем светлинен меч. RGB LED позволява избор между червени, зелени и сини валове, които могат да бъдат избрани с помощта на въртящия се превключвател, разположен в дръжката на светлинния меч. Сгъваемият характер на вала го прави е
Измерването на сърдечната честота е на върха на пръста ви: Фотоплетизмографски подход за определяне на сърдечната честота: 7 стъпки
Измерването на сърдечната честота е на върха на пръста ви: Фотоплетизмографски подход за определяне на сърдечната честота: Фотоплетизмографът (PPG) е проста и евтина оптична техника, която често се използва за откриване на промени в обема на кръвта в микроваскуларно легло от тъкан. Използва се предимно неинвазивно за извършване на измервания на повърхността на кожата, обикновено