Генератор с регулируемоей частотой на ардуино.

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

Cобрал генератор v2.3. Понадобился для одного проекта. Пока без выходного усилителя, не решил что лучше поставить, MCP6001 или что то другое. Самое сложное было энкодер придумать как сделать чтобы не торчал из корпуса. Это обычный энкодер, просто укороченный и уложенный на бок, а также укоротил ручку. Подумал сначала не буду 32 битный собирать, камня нет, сишка уже занята. Но может все таки соберу позже, интересные решения. 

Спасибо Dimax

P.S. HEX проверял тут, самый удобный на мой взгляд. В IDE 1.8.8 сместить массив на нужный адрес не получилось, по рекомендации Dimax поставил 1.6.8 и сразу все стало как надо.

MAG-N
MAG-N аватар
Offline
Зарегистрирован: 05.06.2017

Ну, на вкус и цвет... А себе вот так сделал

man_200
Offline
Зарегистрирован: 29.04.2016

Dimax, можно ли изменить скетч для v.3.5 и v.3.6 чтобы выход СИшки на коммутатор работал синхронно с CLK2? Это нужно для выхода "чистого" сигнала СИшки на отдельный разъем.

venus
venus аватар
Offline
Зарегистрирован: 08.10.2019

наверное достаточно просто в скетче продублировать строки, в 3.5

si5351.set_freq( ... , SI5351_CLK0)

и в 3.6

si5351.set_freq( ... , SI5351_CLK1)

под CLK2

MAG-N
MAG-N аватар
Offline
Зарегистрирован: 05.06.2017

Если мне не изменяет мой склероз, у СИ-шки третий выход (CLK2) с какими-то ограничениями работает. Частота ограничена, или еще что, точно не помню.

man_200
Offline
Зарегистрирован: 29.04.2016

Пришлось в двух местах дублировать строки с изменением CLK1 на CLK2 (v.3.6).

si5351.set_freq(   (bkp_read(4)|(bkp_read(5)<< 16)) * 10ULL, SI5351_CLK1); //  восттановленная частота с выхода1
si5351.set_freq(   (bkp_read(4)|(bkp_read(5)<< 16)) * 10ULL, SI5351_CLK2); //  восстановленная частота с выхода2
 
si5351.set_freq(freq * 10ULL, SI5351_CLK1); //домножить на 10, т.к. нужна частота в сотых герца, а freq в десятых долях.
si5351.set_freq(freq * 10ULL, SI5351_CLK2); //домножить на 10, т.к. нужна частота в сотых герца, а freq в десятых долях.
 
Все четко с CLK2 отрабатывает до 225МГц, смотрел анализатором. Правда гармоник хренова туча!
venus, спасибо за подсказку!
 

P.S. MAG-N, действительно, заметил на CLK2 такую штучку: до 95МГц все нормально, после 95МГц частоты меняются, но и частота 95Мгц тоже остается. Это экспресс испытания, позже еще погоняю и отпишусь.

P.P.S. Рекомендую аппарат упаковать в металлический корпус - уровень гармоник резко падает.

man_200
Offline
Зарегистрирован: 29.04.2016

В версии 3.5 добавил только одну строчку - si5351.set_freq((freq/10)* SI5351_FREQ_MULT, SI5351_CLK1);

Интересно, что также проявляется эффект на этот раз частоты 90МГц, а еще интереснее, что к ней добавляется еще и 100МГц (!), если частоту двигать дальше. При уменьшении частот - они уходят.

Пробовал на CLK2 - 90 МГц также присутствует.

Интересно блин!

Хотелось бы узнать, что на ваших аппаратах.

venus
venus аватар
Offline
Зарегистрирован: 08.10.2019

слабо представляю, как выглядит меандр 225MHz, причем с кучей гармоник, к которому до кучи добавились частоты 90Mhz и 100MHz. что за каша, можно ее заскринить? посмотреть сигнал в сотню-другую мегагерц мне просто нечем.

dimax
dimax аватар
Offline
Зарегистрирован: 25.12.2013

man_200, из описания библиотеки:

Due to the nature of the Si5351 architecture, there may only be one CLK output among those sharing a PLL which may be set greater than 100 MHz (actually specified at 112.5 MHz by SiLabs, but stability issues have been found at the upper end). Therefore, once one CLK output has been set above 100 MHz, no more CLKs on the same PLL will be allowed to be set greater than 100 MHz (unless the one which is already set is changed to a frequency below this threshold).

 

MAG-N
MAG-N аватар
Offline
Зарегистрирован: 05.06.2017

Немного кривой перевод - где взял, не помню, но вот это сохранилось.

"Одновременно на выходе можно генерировать только две уникальные частоты выше 112.5 МГц. Например, нельзя одновременно получить 125 МГц (CLK0), 130 МГц (CLK1) и 150 МГц (CLK2)."

man_200
Offline
Зарегистрирован: 29.04.2016

venus, так выглядит сигнал на анализаторе

man_200
Offline
Зарегистрирован: 29.04.2016

man_200
Offline
Зарегистрирован: 29.04.2016

man_200
Offline
Зарегистрирован: 29.04.2016

man_200
Offline
Зарегистрирован: 29.04.2016

Блин, как вставлять текст забыл уже

Короче,  на первом фото полоса сигнала 225МГц на анализаторе. venus, это для тебя фото

на втором фото генератор v.3.5 частота 80МГц и гармоника 160МГц

На третьем 140МГц и обещанные 90 и 100МГц

На четвертом v.3.6 и частота 150МГц. Так что в обеих версиях эти частоты присутствуют.

Я распинаюсь здесь не для того чтобы критиковать или что либо подобное. Это вариации на тему генератора, чтобы учитывать артефакты в своих конструкциях и при измерениях. Предположу, что возможно в Ваших аппаратах такого нет

MAG-N
MAG-N аватар
Offline
Зарегистрирован: 05.06.2017

Там, где 80 и 160, нормально, вторая гармоника. А вот дальше - кошмар. Может это результат "урезанной" версии данного кристалла - они, если верить даташиту, и  на 8 "сосков" бывают.

man_200
Offline
Зарегистрирован: 29.04.2016

Да, гармоник хватает. Правда измерения проводились через антенны и на свежем воздухе, так, что и с эфира сигналы лезли

MAG-N
MAG-N аватар
Offline
Зарегистрирован: 05.06.2017

145 МГц с генератора уверенно принимаются трансивером на частоте 435 МГц, выше попробовать нечем.

man_200
Offline
Зарегистрирован: 29.04.2016

Если не ошибаюсь, то говорил уже, что ребята на антенном анализаторе VNA v.2.0 с СИшки на гармониках до 3-х ГГц вытаскивают (VRTP.RU). Так что не удивляюсь

dimax
dimax аватар
Offline
Зарегистрирован: 25.12.2013

man_200, ну там же не фильтрованный синус на выходе. DDS на частотах, близких к собственной тактовой тактовой только на кратных частотах будет что-то симпатичное показывать. Все остальные частоты будут по форме кривые и косые. На осцилле это проявляется как изломы формы сигнала. На спектрометре -как высыпания левых частот. Так что думаю, что всё ОК, и мы наблюдаем то, что и должны наблюдать. 

termak
Offline
Зарегистрирован: 11.09.2020

Доброго времени суток.

Залил .bin из сообщ.130

Генератор работает если на PD0 подать сигнал с CLK2.

Синус, пила и пр. работает.

А вот перестраевемого меандра на МГц нет.

Вопрос: И что я неправильно сделал.

man_200
Offline
Зарегистрирован: 29.04.2016

Частота сигнала на CLK2 постоянна и не изменяется (прошита на заводе). По схеме на ардуинку подключается CLK0, частота которого изменяется в процессе работы генератора, а управляет ею сама ардуинка. Вот такая взаимосвязь

Насколько я понял алгоритм работы

dimax
dimax аватар
Offline
Зарегистрирован: 25.12.2013

Я как всегда нифига не понял. termak, сигнал CLK2 у меня по схеме висит в воздухе. И в программе тоже не включен.  Тактирование МК идёт с CLK0 И пишите яснее, в каком режиме на каких выводах МК нет сигнала.

termak
Offline
Зарегистрирован: 11.09.2020

Полностью согласен с Вашим утверждением.

Однако если PD0 подключить к любому из трех выводов CLK0, CLK1 или CLK2

информация на экране появится только при подключении к CLK2.

Далее с выхода DDS OUT есть перестраиваемые меандр, синусоида и пр. сигналы.

О ! появился с CLK1 есть Clock Gen.

Т.е. все как бы хорошо...

Вопрос только "почему CLK2", ну и сигналы могут появляться на выходах не сразу.

Спасибо за ответ.

P.S. Кстати на CLK2 нет никаких сигналов на CLK0 есть меандр (частоту не мерял).

Кварц снял.

 

dimax
dimax аватар
Offline
Зарегистрирован: 25.12.2013

termak, у вас скорее всего не заводится МК от si5351. Возможно из-за соплей. Сделайте соединение si -> мк максимально качественным. Я правда у себя помимо кварца  и конденсатор  от PD0 отпаивал, может он ещё слегка фронты загибать..

termak
Offline
Зарегистрирован: 11.09.2020

Да, Вы правы, провода достаточно длинные - 4 см.

Качество соединений, как мне кажется, нормальное.

Сейчас попробовал и без кварца и без CLK и без вообще каких либо подключений к плате в местах запайки кварца. 

Работает как ни в чем не бывало. Как-то странно - может есть привязка к внутреннему тактированию ?

dimax
dimax аватар
Offline
Зарегистрирован: 25.12.2013

termak, там есть система обнаружения проблем в тактировании. Чуть что -переключается на внутренний rc-генератор. Поэтому когда вы подключаете тактовый пин "в никуда", то мк автоматом переключается на 8МГц. И всё продолжает работать, но с дичайшими тормозами.

termak
Offline
Зарегистрирован: 11.09.2020

Спасибо, dimax.

Убрал конденсатор - запустился от внешнего тактирования.

termak
Offline
Зарегистрирован: 11.09.2020

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

А сейчас сделал правильно и опять - белый экран, потом свисток и черный экран...
Как-то можно это решить или что ставить новую плату ?
Модификация скеча никак не поможет ?

dimax
dimax аватар
Offline
Зарегистрирован: 25.12.2013

termak, попробуйте вернуть обратно кварц с конденсатором и залить версию 3.5, это даст понимание во внешнем ли тактировании дело, или косяк в чём-то ещё. 

termak
Offline
Зарегистрирован: 11.09.2020

Так сразу ничего не получится.
Нет у меня кабеля USB тип С, что бы что-то залить - это теперь не раньше понедельника.

Есть STLINK, но нет .bin файла... Как-то всё не срастается.

 

dimax
dimax аватар
Offline
Зарегистрирован: 25.12.2013

termak, ну там же выложен архив aduino ide для V3.5 со всеми библиотеками. Скомпилить, и будет bin.

termak
Offline
Зарегистрирован: 11.09.2020

Скомпилировал. Зашил.
Вообще полный "ноль", только экран светится.

dimax
dimax аватар
Offline
Зарегистрирован: 25.12.2013

termak, ну значит что-то аппаратное.  Ошибка подключения или неисправность . По идее сам генератор, если даже дисплей отвалился должен работать. Т.е. пиликать спикером, и на выходах что-то давать. 

termak
Offline
Зарегистрирован: 11.09.2020

Вопрос:

в том виде в котором он сейчас есть - его показания на экране и на выходе генератора насколько сильно отличаются ?

venus
venus аватар
Offline
Зарегистрирован: 08.10.2019

может, скомпилилось криво. точно рабочие бинарники 3.5 под разные экраны были выложены у меня на http://venus.rontel.ru/gen/3.5/

man_200
Offline
Зарегистрирован: 29.04.2016

Termak видимо столкнулся с проблемой, которую я здесь выкладывал, но модератор всю переписку на эту тему стер.

Попробую ее кратко описать.

C CLK0 у меня МК тоже не запускался пока не заменил Ардуинку на точно такую-же плату, но или другой серии или другого производителя (надписи у них отличались качеством и толщиной шрифта). После этого все пошло.

Интересный факт с первой платой: после отключения цепи CLK0 от платы и восстановления на ней кварца, эта плата (с подключенными цепями генератора) так и не запустилась. После того, как ее выдрал из схемы - пошла как ни в чем не бывало!

Чтобы не менять плату - замени МК на ней (как вариант)

Предполагаю, что МК некоторых производителей не воспринимают сигналы низких уровней, в данном случае в системе запуска. Возможно такие (гнилые) платы не запускаются с нагруженными портами. Т.е. - вытащил из шилда, прошил, вставил обратно в шилд. Как бы одноразовой прошивки.

Как-то так.

P.S. Прошу модератора сообщение не убирать, может пригодиться будущим поколениям строителей генератора!

rinderbolt
Offline
Зарегистрирован: 22.09.2014

Всем  доброго времени суток!
А какая модель энкодера использовалась первоначально? По ссылке (самое первое сообщение от топикстартера) выдаёт какую-то миниатюру и всё. Я так полагаю, это KY-040, или другие?

venus
venus аватар
Offline
Зарегистрирован: 08.10.2019

ec11 видимо

termak
Offline
Зарегистрирован: 11.09.2020

Всем большое спасибо за помощь.
Вернусь из командировки буду разбираться.

Theodoro
Offline
Зарегистрирован: 30.05.2017

Повторил проект без Si5351 и мультиплексора. ПО 3.5. Пришлось закомментировать 50...52 строки в начале скетча - иначе всё зависало после заливки дисплея черным.

Почему то частота всех сигналов на выходе DDS меньше выставленной (примерно 0.74). Например на дисплее 50 Гц, реально 37 Гц. 100 - 74. 200 -147. 1 кГц - 737 Гц. 50 кГц - 37 кГц и т. д.

Вот  синус 100 кГц.

И еще нестабильно работает джойстик. Вместо уменьшения может увеличить. Антидребезговая RC цепочка со схемы 3.6

dimax
dimax аватар
Offline
Зарегистрирован: 25.12.2013

Theodoro, если частота в PWM режиме соответствует, а в DDS нет -значит скомпилировалось не правильно.  Можно либо разбираться почему, либо смириться подкорректировав константу dds_mpl_

Что за джойстик? Если имеется ввиду энкодер, то глючить (т.е. давать ложное срабатывание) он в теории может только при нажатии кнопки. При вращении алгоритм обработчика полностью исключает такое поведение. Если у вас при вращении глюки -значит есть аппаратные проблемы в подключении.

Theodoro
Offline
Зарегистрирован: 30.05.2017

Частота PWM соответствует. Пересчитал константу (на всякий пожарный обе -))) - теперь в норме.

Да, конечно, энкодер. Но какие  могут быть аппаратные проблемы при подключении в трех соснах?

Спасибо!

dimax
dimax аватар
Offline
Зарегистрирован: 25.12.2013

Theodoro, да что угодно может быть. Сопли, коротыши, грязное питание, длинные провода к энкодеру, не оптимальная разводка земли, итп. 

Theodoro
Offline
Зарегистрирован: 30.05.2017

На счет дурацкой разводки земли сильное подозрение. К сожалению не силен. Плату нарисовал по-быстрому, с ошибками и побежал травить. Ну добавил еще тантал 100 мкФ и керамику по питанию. Наверное надо переделать.

Theodoro
Offline
Зарегистрирован: 30.05.2017

Вот так, к примеру, не лучше будет?

venus
venus аватар
Offline
Зарегистрирован: 08.10.2019

Theodoro, делитель по входу B1 выглядит странно, как на выход, хотя это влиять и не должно на генерацию. Vbat не зацеплен на 3.3. ноги земляные я бы все зацепил на всякий случай.

apeks1
apeks1 аватар
Offline
Зарегистрирован: 19.05.2016

я бы дорожку убрал

apeks1
apeks1 аватар
Offline
Зарегистрирован: 19.05.2016

я бутербродом делал

MAG-N
MAG-N аватар
Offline
Зарегистрирован: 05.06.2017

apeks1 пишет:

я бутербродом делал

Как-то странно кнопка энкодера подключена - R и С на землю.