Однажды я решил порадовать себя и купил часы citizen. Кроме всего прочего, в этих часах заявлена возможность синхронизировать часы по радиоканалу. В момент заказа я не сильно представлял, что это такое, думал, что оно как-то само всё сделает как надо. Но оказалось, что синхронизация по радио в России практически не работает. Я решил исправить ситуацию. Первое, что я нашёл была статья посвященная усилению сигнала. Предлагалось намотать большую катушку с конденсатором, положить на окно, выходящее на запад и ждать. Также в этой статье упоминался протокол dcf77, по которому часы синхронизируют время, и я понял, что он не очень сложный. Хотя на этот момент в электронике я был полный ноль, но мне представлялось, что с цифровой частью я справлюсь, а с остальным я как-то разберусь. И я решил стартовать проект по разработке устройства синхронизации часов по протоколу dcf77.

Здесь я опишу то, как я работал над этим проектом, с какими проблемами столкнулся, будучи новичком в электронике, интересные решения, которые мне попались при работе над проектом, и попробую оправдать их. Этот текст, может быть интересен программистам, которые решили заняться электроникой. Поэтому со стороны программирования многие вещи будут опускаться.

image

Концепция устройства


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

1. Синхронизация должна выполняться в пределах комнаты
2. Сам синхронизатор может иметь погрешность 2с
3. Синхронизатор должен быть и часами.
4. Должен обладать системой самодиагностики.
5. Должен питаться от батареи. (Я не уверен, что смогу сделать устройство, которое может работать в сети безопасно для окружающих )
6. От батареи устройство должно работать примерно месяц.
7. Все должно быть красиво. Корпус. Экран. Кнопки. И т.д.

Первые шаги


Далее я стал собирать материал о протоколе и подобных устройствах. Где-то на немецких ресурсах были какие-то готовые устройства. Нашел описание протокола на википедии.
С этого все и началось.

Что такое dcf77? Это протокол, в котором дата и время передается нулями и единицами амплитудно-модулированным сигналом. В начале каждой секунды амплитуда сокращается до 15% на 0.1 или 0.2 с. Если длинна сокращенного сигнала 0.1 с то 0 если 0.2 с то 1. Что достаточно хорошо видно если моргать светодиодом. Подробнее здесь и здесь.

Первое что я сделал реализовал протокол dcf77 на большом компе на c++. Это я сделал быстро. Понятно, что я пробовал уже делать мигалки на ардуино, поэтому сделать мигалку протоколом dcf77 на светодиоде не составило труда. Фоток или схем самых первых версий у меня, к сожалению, не сохранилось. Но схема была примерно такая, как на рисунке. Только без генератора и на Arduino Uno.

image

По пути к такой схеме столкнулся с некоторыми трудностями.

Первое с чем я столкнулся это то, что в Arduino ide в ino файле нельзя реализовывать классы. Пришлось всё переписывать на C. Не догадался сразу что можно было просто подключить его из отдельного файла. Эта проблема разрешилась быстро.

Из-за того, что я начал с того, что визуализировал сигнал светодиодом, то резистор последовательно светодиоду поставил в районе 200 ом (на рисунке уже не так). Для того, чтобы он светил ярче. Это все привело к тому, что транзистор постоянно был приоткрыт и схема нормально не работала. Я методом тыка догадался поставить два диода последовательно.

Транзистор вроде стал закрываться. Но это как-то смотрелось диковато, даже для меня, и я понял, что нужно изучать теорию. Азы знать очень важно. По крайней мере, как транзистор работает в ключевом режиме. И здесь я столкнулся со следующей проблемой: мало деталей и мало инструментов. Например, чтобы сделать антенну, нужен провод и феррит. Из Китая их ждать долго. К счастью hex invertor был в Arduino starter. Зато кварца 77500 я в России вообще не нашел, и даже в Китае, на ali, он был всего в одно месте, партией 50 штук. К этому времени я уже понял, что даже если я соберу генератор я не смогу даже понять, работает он или нет. И я понял, что нужны инструменты: нужен частотомер и/или осциллограф. Это дало мне передышку в работе над устройством. И я начал изучать электронику. Прослушал ряд YouTube роликов по электронике, например, это. Статьи по теме. Статьи по антеннам. Очень волновало, что антенны для этой частоты должны быть около 700 метров длинной. Но все же решил попробовать сделать магнитную антенну как в приемниках.

Для антенны нужен контур из магнитной катушки и конденсатора в резонансе. Резонанс как-то надо искать. Это привело к проекту transistor tester. Хотел его между делом тоже реализовать. Тк там был измеритель индуктивности, а несколько Arduino mini (плз хейтерам Ардуино сразу не реагировать. Я потом немного исправился) у меня было. Но понял, что его я сделать пока сам не готов, заказал DYI, посмотрел на его схему и нашел, его источник.

Также узнал о некоторых полезных программах для телефона, это EveryCircuit и ElectroDroid. ElectroDroid я в этот момент использовал для расчета резонанса антенны. EveryCircuit позволяет моделировать небольшие схемки на телефоне. Решил документировать и схему. Где-то в интернете увидел красивую картинку на макетной плате. Понял, что такую делает Fritzing, кроме того, он может и принципиальную схему, и плату проектировать. Начал пользоваться fritzing.

Тут уже подошло время как стали приходить первые посылки из Китая. Кое-что пришлось уже срочно дозаказывать в «чипе и дипе». Здесь же появилась первая идея как синхронизировать время. Синхронизация было решено сделать на wifi модуле esp8266.

Случайно наткнулся на подобный проект. Решил взять из него основные идеи. Радио часть полностью позаимствовал из него. Без переделки использовать ее нельзя было, потому что:

1. Он рассчитан на 12 вольт.
2. Основан на микроконтроллере pic.

Первые успехи


По мере того как прибыли детали я стал улучшать устройство. После того как пришел кварц и транзистор тестер появилась возможность наконец-то собрать первую версию, способную передавать время. Намотал катушку на ферритовом стержне – это антенна. Посмотрел ее индуктивность. Подобрал конденсаторы по 100 pf. Всё вроде собрал. Должно работать. А не работает. И, понятное дело, диагностировать проблему не получается. Осциллограф еще не приехал. Даже мультимер самый простой. По нему мало чего можно понять. Хорошо, что у моего тестя были приборы и осциллограф и частотомер. Поехал к нему со своим девайсом. Посмотрели частотомером вроде частота есть. Посмотрели осциллографом тоже вроде ничего. Синус не чистый, но все же похож. Поехал домой разбираться дальше. Проблема в том, что как разбираться непонятно. По часам можно понять только то увидели они сигнал или нет. Понять же в чем ошибка невозможно. Но все же, понятно, что проблема не в радио части, а в модуляторе. Пробовал варьировать параметры. Не уходя далеко от описания с Википедии. В конце концов решил удлинить импульсы на в частотном модуляторе. И в этот момент часы наконец то зацепили сигнал. И, после нескольких попыток, ДНЕМ удалось выполнить первую синхронизацию. Тогда решено было заняться синхронизацией времени на самом устройстве.

В процессе поиска проблем также обнаружил, что digitalwrite работает неэффективно.

Переделал все так, чтобы его не использовать. Потом я встречал это и в других источниках. Но в первый раз увидел здесь. Это было первое отступление от Arduino.

Мне очень нравятся oled экраны, поэтому было решено было использовать экран ssd1306. Но библиотека от adafruit ужасна. Она очень медленная. Использует много оперативной памяти. Нашел альтернативу u8glib. Очень мне понравилась.

Первое решение, которое я пробовал было основано на модуле esp8266 и подразумевало синхронизацию времени через Интернет. Но мне не понравилось, что достаточно сложно выполнять соединение через этот модуль. Да и в тот момент он был не очень стабильным. Поэтому пришло в голову попробовать синхронизацию времени через GPS. Модуль для ardino такой был. Прошивка для синхронизации через GPS была проще, но были проблемы, с которыми я столкнулся в будущем.

Наконец удалось собрать полнофункциональное устройство на Макетной плате.

image

Отказ от Arduinio


Я нашел несколько ссылок на интересные dyi в корпусах. Для меня было важно, чтобы устройство имело опрятный вид. Я увидел несколько видео, где прошивают atmega328 в Arduino. Прошивка к этому времени была уже непростой. Переносить ее на что-то другое не хотелось. Arduino IDE мне при таких раскладах показалось хорошим инструментом. Прошивал Arduino используя usbasp, который тоже заказывал в Китае.

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

Улучшение Передачи


Успех в передаче позволил наконец начать проводить эксперименты с передатчиком и приемником. Я ставил передатчик и носил часы по всей комнате в поисках лучшего сигнала. Выяснил, что примем лучше всего, когда Антенна направлена своей осью на часы. И часы находятся на расстоянии не больше метра – полутора. Кроме того, наконец то приехал осциллограф. Он тоже позволил получить понимание о происходящих процессах. Проводил эксперименты с катушкой, которую присоединял к щупам. Можно было видеть, что амплитуда сигнала меняется, подтверждая наблюдения с часами. Максимальная амплитуда на катушке если она находится рядом и вдоль оси антенны. Полтора метра – мало. Были решено увеличить мощность передатчика. Вопрос как? В схеме, которую я взял за основу были установлены резисторы 1 кОм. Решил уменьшить это сопротивление. Кроме того, измерил сопротивление антенны. Было что-то около 300 ом. Забегая вперёд скажу, что здесь я не подумал о реактивном сопротивлении. Но обо всем по порядку. Уменьшил сопротивление передающей антенны за счет использования провода сечением 0.3.

image

Чтобы уже работало наверняка решил поставить установить step-up модуль для передающей части. И иметь возможность отключать его для экономии энергии. В такой конфигурации всё стало заметно лучше. В пределах 2-3 метров на оси передатчика было много успешных синхронизаций. Вне оси успешные синхронизации были на расстоянии метра.

image

Для повышения напряжения использовал lt1302. Кроме того, нашел интересную зарядку на ltc4054-4.2, которая хорошо вписывалась в концепцию устройства.

На этом этапе я понял зачем нужны даташиты. Они очень помогают при использовании микросхем, особенно когда дело касается специализированных устройств. Схемы подключения lt1302 и ltc4054-4.2 я уже брал из даташита. И завел привычку помещать в git кроме схем, исходников еще и даташиты всех использованных устройств.

Первая попытка собрать устройство


Итак, я подобрался к пайке проекта. На этот момент я имел схему устройства. И проект на fritzing, который повторял макетную плату.

image

Отдельный геморрой – создавать свои компоненты для fritzing. Как оказалось, это неприятная часть вообще в любой САПР.

image

Еще одна задача, которая длиться достаточно долго – разведение платы. Это может длиться несколько дней. Но в принципе вполне посильно. Основной момент: размещаем элементы, потом их соединяем. Если что-то неудобно соединяется пробуем немного переставить компоненты.
Заметил у Fritzing недостаток. Если что-то переставляешь на макетной плате или на схеме, то это влияет на макетную плату. И могу возникать лишние соединения. Поэтому при небольших изменениях в одном месте их нужно делать в другом. В общем попробуйте, но утомляет сильно. Хотя для простых схем fritzing неплох.

Вот что получилось.

image

Использовал макетную плату 15x9. Распилил ее пополам. Кстати еще один нужный прибор для радио поделок – дремель.

Паял пару дней. Вроде заработало. Но было много навесного монтажа. Выглядело некрасиво.
Пишут, что платы нужно отмывать после пайки. Решил, что попытаюсь отмыть. Использовал для этого flux-off. Но как-то не заладилось. Отмывал в субботу на работе, когда почти никого не было. Но от него стала кружиться голова, хотя использовал немного и осторожно. Короче отмыл и выкинул его. При этом отмылось все плохо. Пока решил забить.

Вот что получилось.

image

Здесь уже другой модуль GPS. Я хотел, чтобы устройство работало от батареи долго. GPS модуль потребляет достаточно много, я решил найти GPS устройство с линией enable, чтобы его можно было отключать. Enable не заработал у меня. Зато GPS на mtk3339 оказалось, что потребляет в 2 раза меньше чем neo-6m. 30ma против 60ma. И GPS модуль mtk3339 можно погружать в сон.

Переосмысление проекта



Собрал устройство, рассчитывая, что после пайки заработает все гораздо лучше. Но так не случилось. Всплыли старые проблемы – неустойчивая синхронизация. Была также проблема при включении устройства без батареи. Оно не работало. Удалось выяснить, что проблема возникала из-за того, что step-up при запуске заряжал большой конденсатор, и на старте устройство потребляло большой ток, больше чем ток, на который был рассчитан блок питания, который уходил в защиту. С батареей все было нормально, поэтому пока решил не обращать внимание на проблему. Просто подобрал конденсатор, чтобы не было помех и отключение случалось меньше. Резистор ставить не хотелось, чтобы не увеличивать и без того большое потребление устройства. Устройство работало от силы – день. Что не удовлетворяло требованиям. Проблему с неустойчивой синхронизации удалось сильно уменьшить после того, как я нашел ошибку в описании протокола на русской Wikipedia и здесь. В немецкой версии все было нормально. Ошибку на Wikipedia я исправил. Оказалось, что амплитуда должна опускаться не на 15%, а до 15%. Я это заметил, проводя эксперименты, но потом нашёл и подтверждения, например, на немецком wiki. Так, с синхронизацией все решилось, но радиус все равно был небольшим. На дисплее с краю была полоска с мусором, с которую я не мог побороть.

Мне не понравился переключатель, который выключает питание. Он оказался очень громоздким. Кроме того, в transistor tester я подсмотрел идею, что можно включать питания нажатие на кнопку, которая может использовать и для других целей. Transistor tester при этом в режиме простоя не потребляет энергии практически.

Форма сигнала оставляла желать лучшего. Анализатор спектра показывал много лишних гармоник.

Я стал думать, как улучшить устройство. Нагуглил еще один вариант синхронизатора.

Интересно в нем то, что за логическим элементом есть фильтр на дифференциальном усилителе lvm824, а за ним усилитель на транзисторе. Разобрал устройство. Благо оно состояло из двух частей. Использовал логическую часть для управления, а передающую часть стал собирать на макетной плате и экспериментировать.

Как есть я не хотел брать схему. Потому, что падение напряжение на биполярном транзисторе 0.6 вольт, а напряжение питания и так примерно 4v. Стал думать, что делать.

Рассматривал варианты со звуковыми усилителями. Но, во-первых, они рассчитаны на частоту до 40khz, а во-вторых у них падение напряжение 2 вольта. Не нашел ничего подходящего.
Я уже встречал характеристику rail-to-rail которая означает, что усилитель работает во всем диапазоне питания, поэтому стал искать подобные. Я понял, что нужно разобраться как делаются и рассчитываются фильтры. Нашёл ресурсы, где можно посчитать фильтры.

С фильтрами пришлось помучиться. С ними я стал экспериментировать, используя для усиления step-up. Step-up был регулируемый, что позволяло задавать баланс между мощностью и экономией батареи. Но никак не получалось подобрать параметры фильтра так, чтобы он действовал для широкого диапазона входных напряжений.

Транзистор Q1 в схеме использует как усилитель. Чтобы не терять 0.6 вольта, я по началу решил сделать то же самое на полевом транзисторе, но читая дальше об усилителях, я обнаружил интересную схему усилителя – мостовую, который лучше усиливает сигнал в противофазе. Попробовал такую схему на lvm822 с транзистором на выходе. Преимущество такой схемы в том, что при том же питании амплитуда сигнала удваивается. А это значит, что в идеале мощность учетверяется. Также я заметил, что есть микросхема ad8532, которая по выходной мощности достаточна для моих целей и таким образом не нужно делать ставить выходной транзистор. Такое подключение сильно уменьшила помехи и позволило отказаться от step up.

На второе улучшение передатчика я тоже наткнулся случайно. Я видел, что реактивное сопротивление моего колебательного контура 1.5 kOm. Это ограничивает мощность передатчика.

Когда я экспериментировал с уровнем передачи на катушку я подумал, что можно сделать повышающий трансформатор после усилителя. Тогда с выхода усилителя на вход антенны будет подаваться большее напряжение. Это удалось сделать, намотав несколько витков на передающую Антенну. На самой антенне примерно 200 витков, а на другой обмотке примерно 10 витков. Точно количество подбирал осциллографом и тестером. К этому времени у меня уже был тестер с частотомером.

Такие изменения дали большую прибавку к мощности передачи. Теоретически увеличение мощности по сравнению со старой схемой будет примерно 400 раз. Кроме того, сигнал стал почти чистой синусоидой. Но пришлось добавить на антенну блокирующие конденсаторы, из-за постоянной составляющей, которая пролезала в сигнал.

Радиус действия увеличился сильно. Можно было даже синхронизировать часы в другой комнате, не обращая внимания на расположение антенны.

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

Еще одна проблема — передатчик иногда не запускался из-за того, что не запускался генератор. Это удалось решить за счет того, что корпус кварца я заземлил и за счет более стабильного питания.

Еще одной проблемой стало то, что я переборщил в погоне за усилением в катушке связи. Понял в чем проблема, увеличил немного число витков, потеряв в усилении, зато работа передающей части стала стабильнее. Синхронизируется теперь 100% уже почти год, каждую ночь.

Финальный вариант


Кроме улучшений передающей части хотелось сделать ключ выключения как в транзистор тестере, но там он сделан на биполярном транзисторе. Я чтобы уменьшить потери решил его сделать на полевом с низким сопротивлением. Здесь я его смоделировал. Также опробовал на макетной плате. Все было отлично: падение напряжения было примерно 0.05в, что меня устраивало.

Хотелось следить за энерго-эффективностью. Поэтому решил встроить амперметр ina139. На макетной плате опробовал. Но пришлось искать сопротивление 0.05Om.

Передатчик сделал отключаемым все через тот же полевик AO3401 (Rds=60mOm). В сумме падение напряжение 0.1в на передатчике.

Стал переделывать схему в fritzing. И тут fritzing стал показывать с худшей стороны. Схема стала разваливаться. Уже проведенные соединение оставались, но контакты считались отсоединенными. Исправить проблему не удалось. Чем больше исправляешь, тем больше схема разваливалась. На работе к этому времени у нас организовался клуб единомышленников. Я стал интересоваться у знакомых, кто чем пользуется для проектирования схем. Мне посоветовали kiCad и ToporLite. Я переделал схему на kiCad. Сделал новые компоненты, которых не было. Это все заняло очень много времени. Воспользовался автотрассировкой от topor. В принципе понравилось. Немногим позже я столкнулся с deeptrace. Но переходить на него уже не решился. Хотя подозреваю, что deeptrace всё-таки лучше.

Сразу решил, что уже не буду затачиваться на dip. Все буду делать на smd, а, чтобы не заморачиваться с травлением, плату закажу на али или в Зеленограде.

Корпус у меня уже был давно подготовлен. Поэтому плату разводил под корпус.

Разводил плату несколько дней. И решил все-таки заказывать в Зеленограде. Сделали быстро. Получилось красиво. Стал распаивать и обнаружил несколько ошибок. Перепутал rx и tx gps. Перепутал + и 0 датчика тока. Ошибся с размерами на пару миллиметров с каждой стороны. Отверстия под крепление дисплея сделал меньше чем надо. Кое-где на компонентах не было маски. Неправильно развел линейный стабилизатор для питания от 9В – ну учел его охлаждение. Нужно было сделать большой полигон под него. И неправильно развел сам разъём 9в. Если разводку разъёма можно было исправить, то от перегрева было избавиться трудно. Поэтому 9в разъем я убрал.

И еще был ряд мелких проблем. Самые неприятные первых две. С ними очень долго промучился.

Еще одна проблема разводки в том, что я невнимательно читал даташит. Не обратил внимание на то как разводить модуль GPS. Там оказалось необходимым сделать отверстие. Все подобные исправление сделал уже после дремелем. Некоторые исправления пришлось делать поверхностным монтажом. Хуже всего было с датчиком тока.

Вообще паять было сложно. Сложнее всего было распаять GPS модуль. Даже без ошибок очень просто замыкаются соседние дорожки.

Промахнулся с шлейфом экрана. Не очень аккуратный разъём получился. И громоздкий.
Но устройство собрал. Опять попробовал отмыть флюс. На этот раз отмывал изопропиловым спиртом. Так отмывалось гораздо лучше и без последствий.
Вот что получилось.

image

image

Маркером на картинке сверху отмечены найденные ошибки

image

Последние штрихи. Доработка программного обеспечения


Последним штрихом было уменьшения потребления за счет управления питанием, контролем за потреблением и использованием солнечной батареи для подзарядки устройства.

Дорабатывал шрифты, чтобы прошивка влезла в память. Исправил проблему с полоской на экране. Оказалось, что китайцы продали мне экран на sh1106 вместо ssd1306 как было написано в заказе. Ну да бог с ними.

Для контроля за нагрузкой используется round robin database для значения тока. Кстати этот опыт был интересен даже с точки зрения программиста. Памяти мало, а хранить хотелось данные за год.

Еще один тонкий момент – определение, когда gps синхронизировал время, чтобы его отключить. Для этого пришлось дорабатывать библиотеку gpstiny.

Сейчас со всеми доработками устройство работает примерно месяц без зарядки.

image

на экране видно, что потребление 12 ма, но это из за максимальной яркости экрана.

Ретроспектива


Начал я проект в январе 2015 года. Первые результаты я получил в апреле. Спаял на макетной плате в июле. После этого был перерыв до марта 2016 года. Железную версию на заказанной плате собрал в июне 2016. В 31 июля 2016 был последний комит по улучшению софта. Таким образом я потратил на это устройство полтора года. Можно ли было к проекту подойти по-другому? Наверное, да. Но знаний очень не хватало на начало проекта. Теперь понятно, что для такой работы нужны инструменты и какие-то детали. И ясно какие. Нужны знания. Они появились.

Я, конечно, до сих пор путаю эмиттер и коллектор на схеме, и не смогу по памяти рассказать, как транзистор работает в каждом из режимов подключения. Но знаю где это быстро посмотреть. Было потрачено много денег на проект. Дешевле, наверное, было бы купить часы с синхронизацией по GPS. Можно было бы сократить затраты? Да можно, но не принципиально. Можно ли продавать устройство? Да можно. Но трудозатраты на его производство слишком большие. Выгоднее просто работать там, где я работаю сейчас. Я видел в продаже устройства попроще за 150 евро, а мне его нужно собирать дня 2-3. И, думаю, что продавать такое тяжело. Так что, коммерческого успеха у устройства не вижу. Более того, сейчас стали появляться часы с синхронизацией по gps. Они скоро станут дешевле. Получил ли я удовольствие от процесса? Да получил. Было очень интересно изучать новое. Мне как программисту это было полезно и для увеличения кругозора. Выложу ли я его исходники? Может быть. Если это нужно кому-то.

Возможные улучшения


Новую ревизую платы я развел, но не заказывал.

Нужно улучшить систему питания контроллера. Нужно отключать питание gps полностью, так как в режиме ожидания gps всё равно ест 1 mа.

Нужно сделать часы более точными. Есть идея как это сделать, но только на stm32. Там можно использовать функцию подстройки хода по сигналу с GPS. Также stm32 позволит отказаться от лишней микросхемы. Хотя ds3231 более точная, но для stm32 можно сделать подстройку.

Попробовать использовать e-ink экран для экономии энергии. Сейчас в основном экран съедает всю батарею. Он потребляет где-то 4 ma из 6 ma в режиме ожидания, когда показывается только текущее время. Передатчик потребляет 60 ma когда включен. Это 20 минут в день. GPS потребляет 30 ma, но он синхронизирует время за минуту.

Комментарии (30)


  1. Demon_i
    30.09.2017 21:53
    +1

    Вроде интернет, HTML. А ссылки сносками. Вы хоть внизу их подпишите какая куда ведёт. Пока статью дочитаешь — забудешь все. А лучше проставьте их прямо в тексте.


    1. assad77 Автор
      30.09.2017 21:54

      исправлю. готовил документ в ворде. как то не подумал об этом.


  1. avf1906
    30.09.2017 22:21
    +6

    С одной стороны с профессиональной точки зрения — лютый п..., масса детских ошибок, непонимания принципов работы, на плату смотреть и плакать и т.д. С другой, для человека который делает первые шаги — великолепный результат, и самое главное — работающий и приносящий пользу. И очень хороший подход к организации и процессу разработки. А пройденный путь так вообще впечатляет. И читается как детектив, но хотелось бы подробностей с осциллограммами и т.п.
    На дальнейшее развитие — stm32L — минимальное потребление, в принципе от едениц мкА можно начинать, но там есть нюансы. Экран — если нужна графика — Nokia 5110 — порядка 700мкА, если нет — сегментный ЖКИ, stm32L152 умеет с ними работать напрямую, тогда получите десятки мкА, без гемора с питанием как для e-ink. Посмотрите к нему есть дискавери как раз с сегментным жк экраном, искать на али по ключевому слову «STM32L152C-DISCO». Отключение питания устройств — p-канальный mosfet с логическим уровнем, типа IRLML (что бы правильно включить сток-исток, не забывать про встроенный диод), управлять им — n-канальный какой-нибудь дешевый типа BSS138 или напрямую от вывода микроконтроллера, если питание общее с мк.
    Удачи!!!


    1. assad77 Автор
      30.09.2017 22:27
      +1

      Спасибо!
      а вот по поводу ошибок поясните пожалуйста. я понимаю, что сделал их очень много, тк лютые ошибки находил уже в конце и сам. может кто-то другому пригодится.
      По поводу Nokia экрана, это было в первых версиях, но решил не перегружать уже фотками. У нокии мне экран не понравился внешне. лед намного красивее. сейчас больше склоняюсь к e-ink с частичным обновлением. stm32l умеет работать с e-ink, сейчас изучаю макетную плату с ним. у меня она уже есть. и есть stm32 с сегментным тоже. но не очень красиво получилось.
      по поводу осцилограмм старых уже не найти к сожалению. а новые подумаю. может и вставлю. может если накопиться что-то ещё статью напишу.


      1. avf1906
        01.10.2017 10:14
        +4

        1. по плате — дорожки должны идти под углом 45 и 90 градусов, отводы по возможности делать либо на падах либо на переходных. В общем посмотрите на трассировку материнских плат и т.п. Kicad позволяет это настроить.
        2. INA139 — 10мкф на выходе. большая емкость на выходе ОУ — моветон. Если надо отфильтровать, то RC цепочка.
        3. Между кнопкой и выводом мк последовательный резистор на 10к — существенно снижает шансы зимой убить статикой, особенно STM32, там техпроцесс тоньше. То же касается энкодера.
        4. 100к последовательный резистор в базе биполярника думаю как-то многовато, будет собирать на себя все подряд, если уж экономить на питании — тогда ставить BSS138.
        5. схема передатчика и его усилитель :( в общем 77.5кГц наверняка можно получить с какого-нибудь таймера, особенно STM32. Хотя вообще синусоидальный генератор делается на одном транзисторе + усилитель — взять какой-нибудь мостовой широкополосный аудио.
        6. Конденсатор 0,1мкФ возле каждого вывода питания каждой микросхемы или модуля на расстоянии не больше 5мм.
        7. Основы по правильной трассировке ищутся по ключевому слову: «Помехоустойчивые устройства Алексей Кузнецов». Там есть нюансы, но на данном этапе этого более чем достаточно.
        По индикатору, я e-ink не пользовался, помню что у них обновление страницы больше секунды было, точно устроит? Если нет, смотрите графические жки, их куча с разрешением 128(132,133)х32(64).


        1. assad77 Автор
          01.10.2017 10:44
          +1

          1. по поводу 45 и 90 градусов учту. и вопрос тут еще появляется: нужно ли стараться расширять (заливать) дорожки с питанием?
          2. вроде по datasheet сделал. там в п 8.2.2 как раз RC фильтр R25 C22
          3. 100k ради экономии. хотя действительно везде используют 10k в таких случаях.
          4. вроде не собирает. но идею понял.
          5. по поводу передатчика не очень понятно было в начале насколько стабильной должна быть частота. поэтому делал максимально стабильным. аудиоусилители смотрел, но в тот момент когда я выбирал способ усиления не нашел подходящего по даташиту да и кроме того они уж очень неэкономичные. хотя и работает недолго передатчик но все равно заметно. но тоже думаю об этом, в новой версии вновь рассмотрю. недавно находил какие-то усилители серии TDA.
          6. это я понял уже. на этой плате кое-где допаивал такие.
          7. почитаю.
          8. про скорость обновления знаю. конечно не очень хорошо. но у e-ink GDE**** обновление по даташиту 0.6 с. а частичное обновление вроде 0.25, но 0.25 — не точно. что то не могу найти. частичное обновление уже устраивает. я заказал с али пару таких экранов в частичным обновлением.


          1. avf1906
            01.10.2017 11:15
            +2

            1. Землю заливать. Дорожки питания — смотреть потребление, для мк я обычно делаю шире, если сигнальные 0,2мм, то питание 0,4-0,6мм. Если большие токи — тогда считать.
            2. судя по постоянной времени там должно быть 100.200пФ (пикофарад).
            5. Данные же передаются раз в час 7с, т.е. среднее потребление Iпер*7/3600=0,002*Iпер. Т.е. при 200мА при включенном передатчике среднее 1мА. На 75кГц можно и D-класс прикрутить, но тут уже не просто.
            8. Потребление посчитали? Самый мелкий e-inc в процессе обновления жрет 26mW при 3.3V, т.е. почти 8мА. Если будет обновляться 0,25с каждые 1с, то среднее потребление будет 2мА. В общем секунды отображать не вариант, а если минуты, тогда уже относительно приемлемо — 0,3мА.


            1. assad77 Автор
              01.10.2017 11:48

              по поводу 2. как насколько я помню я поставил большой конденсатор как буфер. иначе контроллер начинает влиять на показания при чтении данных. чтобы избежать этого рекомендуют использовать буферный усилитель, я решил эту проблему большой емкостью.
              по поводу 8. да, считал. если обновляться раз в секунду то выходит примерно то на то с oled.
              но это для 2.13 eink. рассчитываю на partitial refresh. он по идее должен улучшить потребление.
              Panel power consumption during update — 25? 10 — mAs
              те в секунду тратиться 10 мА при непрерывном обновлении. а тк обновление быстрее секунды, то и потребление в итоге будет меньше. а при частичном обновлении будет быстрее и соответственно экономичнее.


  1. imwode
    01.10.2017 06:42

    Не читал подробно статью (сорян), но вот что могу предложить — у меня синхронизируются часы по вайфаю — esp8266 идет в инет, синхронизирует время, потом формирует строку GPS и отдает ее часам. Если кто-то захочет сделать без GPS модуля на вайфае — свистите.


  1. Alyoshka1976
    01.10.2017 08:53

    Самым суровым вариантом была бы синхронизация посредством приема сверхдлинноволновых передатчиков. Наряду с сугубо военными СДВ-передатчиками существуют и, скажем так, двойного назначения, работающие в том числе и в системе точного времени. Встречал информацию, что даже QSL-карточки рассылают. Для приема нужна совсем немудреная снасть — рамочная антенна и усилитель, подключенный, например, к АЦП или звуковой карте. А дальше уже цифровая обработка.


    1. assad77 Автор
      01.10.2017 09:20

      DCF77 как раз и есть такой. он работает на частоте 77500. но он то как раз до Москвы и не добивает. В Москве я вижу тоже есть такие теперь или это . но в момент начала работы на устройством я такой информации не нашел. Видел только информацию о каком-то передатчике «мигающем» раз в секунду.
      вторая проблема в том, что боюсь были бы помехи между передатчиком и приемником. тк и тот и тот работают в ДВ
      третья — большие размеры. катушка гораздо больше чем GPS модуль хоть и дороже.
      в четвертых — не было цели заработать, в таком случае лучше выбирать решения позволяющие получить результат быстрее.
      с GPS это все быстрее чем с любым другим способом получения сигнала точного времени.
      теперь у меня есть несколько микросхем (CME6005, CME8000 ), которые умеют декодировать сигнал dcf77, а заодно и японский JJY (CME8000), поэтому цифровая обработка компьютере не требуется.


      1. Alyoshka1976
        01.10.2017 10:41

        Это, конечно, так, но я вот эту систему имел ввиду: Бета (служба времени)

        Вот такие сигналы я из Вилейки принимал:
        позывной
        image
        сигналы точного времени
        image

        • 1 — 1/10 сек
        • 2 — 1 сек
        • 3 — 10 сек
        • 4 — 60 сек


      1. d-stream
        01.10.2017 16:11

        Еще как вариант — сигналы времени в RDS
        Но это если захочется часов и радиоприемника в одном корпусе.

        В одном из авто у меня было такое — штатная магнитола не имела никаких способов установки времени — только по RDS. В принципе это работало достойно.


        1. dernuss
          01.10.2017 21:28

          Хм, а вот про RDS я не знал, когда свои часы делал((


          1. d-stream
            01.10.2017 21:49

            Народ из разных регионов эти магнитолы костерил — как оказалось не везде вещание сопровождается RDS информацией… притом в каких-то регионах даже ретрансляция какой-нить европыплюс идет без…

            А еще для североамериканского континента — есть Sirius — типа спутникового радио


  1. VT100
    01.10.2017 14:34
    +1

    +1 за рвение и достижение результата. Но, видать, много сил потрачено на работу и на оформление осталось мало. Так мало, что иногда казалось, что кровь из глаз пойдёт (от псевдосхем) или что «В огороде бузина, а в Киеве — дядька» (от перескоков от одного к другому и значительных пропусков в развитии мыслей). Но, как минимум, надо написать, что делается не приёмник или ретраслятор DCF, как я решил после пары первых абзацев, а эмулятор.
    По схеме — вроде всё опрятно. Разве что поставить конденсаторы на 0.01-0.1 мкФ в цепи контроля напряжения (для сглаживания возможных артефактов при подключении туда входного конденсатора АЦП и конденсатор на 0.1 мкФ в питание часов U7. Контроль Vcc, кстати, можно сделать вообще без внешних резисторов — оцифровкой значения опорного источника (на вход АЦП — Mux[3:0] = [1,1,1,0]) относительно Vcc (на опору АЦП — Refs[1:0] = [0,1]). А чтобы критиковать её функциональное построение (прежде всего в формировании псевдо-DCF, как представляющего основное know-how прибора) — надо хоть немного погрузиться в суть.

    avf1906

    1. по плате — дорожки должны идти под углом 45 и 90 градусов, .....

    Думаю, это Topor'ная разводка.
    2. INA139 — 10мкф на выходе. большая емкость на выходе ОУ — моветон. Если надо отфильтровать, то RC цепочка.

    Это не ОУ, см. внутреннюю схему. Он выдаёт на Out вытекающий ток, пропорциональный падению напряжения на R27. Так-что «толщина» C22 ограничивается сверху только здравым смыслом и желаемой частотой обновления результата.


    1. avf1906
      01.10.2017 22:29

      1. Не там же видно — кикад. И топор делает плавно, а тут просто под произвольным углом.
      2. Да, посмотрел даташит, он может работать с емкостью на выходе, так как втекающего тока нет, возбуждения не будет, просто фильтр, был не прав, думал просто инструментальник :(
      По генератору — там же очевидно, кварцевый генератор, инверторами формируется противофаза и фильтра на входах ОУ (этот момент с фильтрами не очевиден, вроде понятно, но что будет в реале без моделирования сказать не могу), включением транзисторов ограничивается амплитуда — они там кстати вообще лишние, при 1к можно сразу с ножки управлять в режиме ОpenDrain, если ATMEGA позволяет — они меня как-то обошли стороной. STM32 позволяет сразу формировать сигнал на выходе ШИМ в противофазе.
      По сравнению с первым вариантом прогресс конечно огромный


      1. assad77 Автор
        01.10.2017 22:40

        там что-то топор развел сам, что-то потом я доразводил руками.
        «фильтра на входах ОУ» это активные фильтры. схема стандартная, Sallen-Key Low-pass здесь можно посмотреть. кроме того здесь есть модель.
        «включением транзисторов ограничивается амплитуда — они там кстати вообще лишние, при 1к можно сразу с ножки управлять в режиме ОpenDrain». надо попробовать. во всех схемах что я брал за основу амплитуда ограничивалась после усиления. а я её стал ограничивать перед усилением. при таком раскладе и правда можно.


        1. avf1906
          02.10.2017 00:54

          нее, я про резисторы R7/R9 участвуют в формировании полосы пропускания и соответственно при модуляции меняется не только уровень, но и полоса. В общем как-то оно криво, такое ощущение что он не фнч, а режекторный, да еще с усилением. Но моделировать лень. Смоделируйте в чем-нибудь приличном, вроде у AD есть онлайн симулятор для фильтров


          1. avf1906
            02.10.2017 08:15

            Нельзя такие вещи в 2 часа ночи смотреть, не в том месте нарисован конденсатор и кажется что-то не то. Вопрос только к резисторам и изменению полосы.


            1. assad77 Автор
              02.10.2017 10:22

              насколько я помню осцилограмму, я думаю, вы правы. похоже что фильтр чуть вверх полосу смещает, тк сигнал форму немного меняет в тот момент когда амплитуда уменьшается. надо будет посмотреть на это. В своё время забил на это, тк форма вроде не сильно меняется. но чтото простых способов, без дополниьтельного каскада усиления не видно как решить проблему. если только R7 и R9 подбирать…


              1. avf1906
                02.10.2017 11:10

                по простому только делать низкоомный делитель, а резистор фильтра 1кОм выводить за делитель, но тогда увеличится потребление. Можно при этом увеличить резисторы фильтра уменьшив емкости для сохранения полосы — уменьшится влияние делителя. Еще бы добавить хотя бы один порядок фильтра, а то в данном случае вторая гармоника давится на 15-18дБ всего.


                1. assad77 Автор
                  02.10.2017 11:19

                  вопрос теперь в целесообразности. я не очень понимаю что даёт давление гармоник… когда сигнал был прямоуголный и я его сгладил, то я так понял, что в перую очередь уменьшил потребление энергии. на сколько при этом не замерял. так что целесообразность улучшения этой части для меня пока под вопросом. все же, что ни делай или сложнее будет или потребление увеличится.
                  В общем, не могу понять, за что тут надо биться. Ведь компромисы по любому искать в таком решении придётся.


      1. VT100
        02.10.2017 10:36

        По генератору — там же очевидно ...

        Да. Я о «можно-ли лучше/проще/просто по другому и как?»
        И да, сдвиг полосы пропускания фильтров при модуляции — просмотрел.


  1. assad77 Автор
    01.10.2017 22:39

    1


  1. Faramant
    02.10.2017 10:00

    Первая ссылка переехала на journal.gladkiy.me/time-sync-dcf77


  1. IBAH_II
    02.10.2017 20:43
    -2

    КоАП РФ, Статья 13.3. Самовольные проектирование, строительство, изготовление, приобретение, установка или эксплуатация радиоэлектронных средств и (или) высокочастотных устройств

    Проектирование, строительство, изготовление, приобретение, установка или эксплуатация радиоэлектронных средств и (или) высокочастотных устройств без специального разрешения (лицензии), если такое разрешение (такая лицензия) обязательно (обязательна), — влечет наложение административного штрафа на граждан в размере от пятисот до одной тысячи рублей с конфискацией радиоэлектронных средств и (или) высокочастотных устройств или без таковой;


    Это я к чему. Представьте, что вашем доме, районе, городе… стоит оборудование которое синхронизируется по сигналу той самой станции DCF77 из Франкфурта. Какой-нибудь астрономический реактор. И тут вы на той-же частоте подсовываете похожий сигнал!!! И админ установки пляшет с бубном пытаясь понять, что случилось.
    Если вы не могли принять сигналы DCF77, это не означает что их не принимает кто-нибудь другой.


    1. assad77 Автор
      02.10.2017 20:57

      я интересовался этим вопросом.
      1. в худшем случае 1000 это немного.
      2. передатчик маломощный и одна бабка сказала, что для устройств меньших по мощности 1/4 Вт никаких разрешений не требуется. у меня потребляемая мощность передатчика около
      120 мВт. излучаемая не знаю какая. к сожалению подтверждений этому я найти не смог. Одна бабка, понятное дело, не авторитет, но я готов взять на себя риски по выплате 1000 р.
      3. за других не боюсь, тк за пределы квартиры уже не уходит сигнал. мощность не та. сейчас радиус где-то около 10 м в пределах прямой видимости.
      4. даже если бы добивал дальше — бубнов никаких не будет, тк у меня время правильное.


      1. iliar
        04.10.2017 13:33

        Ну по поводу правильности времени я бы поспорил. Все зависит от того, какое время считать правильным. С бытовой точки зрения время то может быть и одинаковое, а вот с какой то более научной, может и на сколько то мс отличаться. Другое дело, что ловить сигнал DCF который еле еле пробивается в хорошую погоду ни кто для таких целей не будет. Есть же GPS и все могу нужно реально точное время синхронизируются через него. Да и мощность тут такая, что далеко он не уйдет.


    1. iliar
      04.10.2017 13:37

      Длинные волны и на такой мощности не думаю, что кому то смогут создать проблем. Не говоря уже о том, что как то очень притянуто за уши выглядит, что для каких то вещей которым нужна сепер точность будут использовать DCF77 а не GPS который и ловится лучше и дает в разы большую точность.