Прибавка в коллекции приборов: генератор на SI5351

Уже не помню каким образом, но попался на глаза синтезатор частот на базе SI5351 с управлением по I2C (наверное, так и попался – искал девайсы, которые можно подключать по этой шине). Чуть почитал, тема понравилась, заказал с Ali, дождался.

Ранее планировал сделать себе набор задающих кварцевых генераторов – например, при необходимости тактировать “снаружи” какие-либо контроллеры. Мысль возникла при ковырянии во внутренностях солнечного инвертора, да и позже в статьях по работе с attiny попадались примеры, где требовался внешний генератор (штатно некоторые attiny не умеют работать с кварцами). Даже обзавелся набором кварцевых резонаторов на том же Aliexpress – хотел наделать генераторов на старой советской логике. Но с синтезатором частот все получается куда проще и удобнее.

Поискал готовые проекты в сети, в итоге практически один в один повторил этот проект. Первое “боевое” применение Arduino, купленных в свое время на arduino.ua – до этого как-то больше использовал ESP. Конструкция выполнена полунавесным монтажом – много перемычек, но синтезатор и макетка с запаянной на нее Arduino связаны жестко. Уместить все получилось в самый маленький корпус с того же arduino.ua.

Блок питания – от какой-то старой зарядки Sony. Сетевые выключатели и разъемы решил не делать, но в итоге заказал себе комплекты C7/C8 (как для радиоприемников) для будущих слаботочных конструкций.

Со стороны софта изменений пока минимум. Прошивка (второй версии, 2019-го года) из той статьи весьма глючная, бывает, например, не работает переключение между выходами или дисплей начинает показывать какой-то мусор, если частота выходов отличается слишком сильно.

Пока по моим изменениям – самое первое, что пришлось сделать – задать корректное разрешение дисплея. На дефолте картинка была растянута и низ просто отсутствовал. Далее, подстроил границы генератора до уровня 4 КГц – 160 МГц. Ниже 4 КГц на моем генераторе ничего не меняется – и, как я заметил в отзывах, не я один такой – похоже, особенности ревизии. 160 МГц вроде умеют все, так что остановился пока на такой частоте. Все равно мне мерять ее нечем. Для корректного отображения частот ниже 10 КГц добавлен еще один блок кода. Далее, в коде вроде как есть задел для регулировки с шагом в 1 Гц, но в итоге из-за ошибки идет возврат сразу на 10 Гц – это поправил, теперь есть регулировка вплоть до 1 Гц. Поправил названия выходов (не везде, правда, но практически всегда хватает) для более удобного понимания где что регулируется – проект делался кем-то из связистов, а в моем случае “Выход Tx” ни о чем мне не говорит.

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

Код

Known bugs:

  • Может и не баг: запись последней частоты в память делается при смене шага изменения частоты.
  • А вот что определенно баг: запись последней частоты делается только на экране CLK0. Т.е., если надо сохранить между выключениями значение для CLK2 – надо ткнуть смену выхода, потом ткнуть энкодер.
  • Если частота одного из выходов выше 1 МГц – смена экранов не работает. Если это для CLK2 – то после перезагрузки мы можем перейти с CLK0 на CLK2, потом обратно на CLK0, а дальше кнопка перестает работать. В комплексе с первыми пунктами – чтобы переключение работало, надо поставить частоту ниже 1 МГц, ткнуть энкодер и выключить девайс. После включения переключение заработает. Если проблема со 2-м выходом, то надо перейти на него, поправить частоту, перейти на 0-й, ткнуть смену шага и выключить девайс.

2 мысли о “Прибавка в коллекции приборов: генератор на SI5351”

Добавить комментарий