Arduino часы: Arduino и часы RTC DS3231

Часы из дисплея покупателя (VFD) v2

Хочу представить вам следующий этап развития идеи построения часов на базе вакуумно-люминесцентного дисплея (Дисплея покупателя).

Автором данного варианта устройства является devICEpro, вся информация в статье публикуется с его согласия и при непосредственном участии. 

Итак, кратко предыстория. Все начиналось с этой статьи (Часы на ардуино из дисплея покупателя (VFD)). Часы получились довольно интересными, но не лишенными недостатков, главным из которых было то, что возможность создавать и использовать свои символы есть не во всех дисплеях и, соответственно, далеко не все из них подходили для этого проекта. В том варианте реализации управление колбой осуществлялось посредством родного процессора, установленного на плате, который использовал встроенный стандартный знакогенератор, а Arduino только передавала ему данные и команды по UART. Для решения проблемы логичным шагом будет переход к прямому управлению колбой самим микроконтроллером непосредственно.

На тот момент в сети уже были некоторые наработки по поводу прямого управления колбой вакуумно-люминесцентного индикатора на сайте http://www.mantrid.ru/, однако описанное там устройство было сугубо узкоспециализированным и малоприменимым в контексте работы с платформой ардуино, в связи с чем решено было заняться разработкой собственной прошивки. Свой вариант реализации я изложил предыдущей статье (Теория и практика управления вакуумно-люминесцентными дисплеями), где описано, как для этих целей можно использовать МК ESP32. Выложенная там прошивка представляет собой инструмент для дальнейших разработок, позволяющий выводить любую информацию на эти дисплеи.

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

Основой устройства будет служить микроконтроллер ATmega328, а именно Arduino Nano V.3 Устройство способно работать с самыми распространенными типами дисплеев для кассовых аппаратов, а именно DN2029D202MD20GINK (его аналоги CIG40-2003N, CIG40-2004N) и 202MD25GINK. Колба Futaba 202MD25GINK хоть и поддерживается программно, однако к использованию не рекомендуется, т.к. у нее очень большое расстояние между строчками и большие цифры (т.к. они состоят из нескольких знакомест) выглядят не очень хорошо на этом экране. Внешне отличить такую колбу можно по отсутствию сегментов, отображающих курсор и точки с запятыми.

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

Итак, рассмотрим подробно интерфейс устройства. В рабочем режиме на экране отображается текущее время и дополнительная информация: дата, температура давление и влажность. Конкретный набор параметров зависит от подключенных датчиков. Возможны шесть вариантов отображения с разными шрифтами и их комбинациями.

В вариантах с крупными цифрами попеременно отображается дата и температура/влажность слева и справа от цифр времени. Сделано это, во-первых, для того чтобы удобно разместить всю информацию на экране, а, во-вторых, для продления срока службы колбы, т.к. длительное свечение одних и тех же пикселей приводит к деградации люминофора и уменьшению яркости:

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

Для управления настройками устройства предусмотрено три кнопки «+», «меню» и «-«, также управление возможно с использованием энкодера, логика работы следующая: кнопка энкодера аналогична кнопке «меню», поворот лево/право — кнопки «+»/»-«, зажатый поворот энкодера — нажатие и удержание кнопок «+»/»-» соответственно. Также есть возможность использования аналоговой клавиатуры из трех кнопок, подключенной к А2 (см. схему). Для переключения режима отображения информации на главном экране необходимо зажать и удерживать кнопку «+» или «-«, нажатие и удержание кнопки «меню» открывает, собственно, меню настроек. Однократные нажатия клавиш «+»/»-» в основном режиме работы игнорируются, для того чтобы избежать случайного изменения настроек, однократное нажатие «меню» включает на 5 сек. отображение температуры с внешнего термодатчика (

DS18B20):

Рассмотри меню настроек, чтобы в него попасть необходимо зажать кнопку «меню» либо кнопку энкодера. 

Меню имеет следующую структуру:

  • Настройки анимации
  • Дата/время
  • Настройки сигнала
  • Настройки яркости
  • Корректировка температуры
  • Выход

Теперь по порядку пройдемся по пунктам.

 

Настройки анимации.

Собственно анимация представляет из себя прокрутку символов или строк при обновлении информации на дисплее, здесь два пункта, «символ» позволяет настроить скорость прокрутки при смене отдельных символов (секунд), «экран» — скорость сдвига при обновлении всего экрана. Так же на нижней строке в реальном времени можно увидеть, как выглядят эти эффекты. 0 — эффект отключен, 5 — скорость прокрутки максимальна.

Дата/время.

Тут, думаю, все понятно, собственно — настройка даты и времени.

Настройки сигнала.

Пункт отвечает за включение и время работы часового сигнала (один короткий «пик» каждый час). Устанавливается время начала подачи сигнала и время окончания.

Настройки яркости.

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

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

Корректировка температуры.

Здесь можно задать смещение в плюс или в минус температуры, поступающей с датчиков, если есть сомнения в достоверности данных. Особенно это может быть полезно если датчик BME280 установлен внутри корпуса устройства и нагревается от дисплея. Так же в меню видно, с какого именно датчика берется температура: c BME280 или с модуля часов DS3231 при отсутствии первого.

Выход.

Собственно, выход из меню настроек.

И про вертикальный режим. Кнопки «+» и «-» при удержании здесь меняют отображение секунд (большие или маленькие). При зажатии «меню» активируется таймер обратного отсчета, управление интуитивно понятно, «+», «-» — установка, «меню» — запуск/стоп, по окончании отсчёта 5 звуковых сигналов. А при подключенном датчике DS18B20, при нажатии на кнопку «меню» часы превращаются в градусник с аналоговой шкалой, отображающий температуру с этого датчика.

Теперь о прошивке. Как уже было описано в начале, прошивка разработана для Arduino Nano V.3. Так как для работы программы из-за достаточно объемных знакогенераторов (шрифтов) требуется много памяти (а точнее — фактически вся, что есть в МК). Автором была проведена работа по оптимизации, поэтому помимо всего прочего используются минимальные версии библиотек. Все необходимые библиотеки будут приложены в архиве со скетчем, рекомендуется использовать именно их, т.к. при использовании актуальных версий с учетом их обновлений, может просто не хватить памяти. Таким образом при использовании комплектных библиотек, прошивка компилируется и никаких изменений и корректировок не требуется. 

В зависимости от подключенных датчиков возможны четыре варианта запуска программы:

  1. Lite”. Только DS3231. Только с него и температура.
  2. “Lite Plus”. DS3232 + DS18B20. Температура в помещении и за бортом.
  3. Full”. DS3231 + BME280. Температура, влажность и давление с BME280.
  4. Full Plus
    ”. DS3231 + BME280 + DS18B20. Температура, влажность и давление с BME280 + температура с DS18B20.

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

Схема.

Теперь коснемся схемотехники. Питается устройство от напряжения от 9 до 30 вольт. На плате имеются два импульсных преобразователя понижающий

LM2596S и повышающий XL6009. Первый понижает входное напряжение до 6,8 вольт, от которых питается накал и плата ардуино, потом это напряжение понижается линейным стабилизатором до 5 вольт, которые используются для питания периферии, датчиков и логики дисплея. Второй преобразователь повышает входное напряжение до 38 вольт, это анодное напряжение для дисплея. Подачей питания высокого напряжения на дисплей управляют два транзистора, таким образом, чтобы оно подавалось только после того, как будет запитана логика (+5в), это очень важное общее требование, согласно документации, для таких дисплеев. Питание нитей накала, как уже было указано, осуществляется от 6.8 вольт сразу после понижающего преобразователя, однако питать накал постоянным током нежелательно. Для создания на накальной обмотке переменного напряжения используется мостовой драйвер MAX17602 и таймер NE555 для подачи управляющих импульсов. В итоге на накале меандр 2 кГц:

Печатная плата.

Печатная плата универсальна, позволяет устанавливать любые поддерживаемые дисплеи. Так как для питания используются решения на базе стандартных распространенных модулей DC-DC преобразователей, разводка сделана так, что можно установить модули преобразователей в сборе, либо запаять в виде набора отдельных компонентов. То же самое касается и часов на DS3231. При установке готовых модулей преобразователей рекомендуется заменить подстроечные резисторы на пары постоянных. Для LM2596 номиналы резисторов делителя 4,3кОм и 1кОм, для XL6009 30кОм и 1кОм соответственно. Ещё на модуле XL6009 желательно заменить диод на более высоковольтный. Там установлен SS34, на 3 ампера 40 вольт максимум, это близко к пределу напряжения, а запас по току для наших целей избыточен, поэтому рекомендуется заменить его на какой-нибудь более высоковольтный, вольт на 60, например, SK26 или что-то сходное по характеристикам. На плате разведены посадочные места под различные варианты кнопок, также есть выводы для подключения энкодера. Для подключения датчиков разведены штырьковые разъемы, для DS18B20 также есть возможность использования гнезда под jack 3.5 мм. На плате имеются места для компонентов, не используемых в текущей реализации (EEPROM, IR-приемник), но возможно они будут использоваться в будущем, потому что проект развивается и постоянно дорабатывается.

Сборку лучше начинать с монтажа компонентов или модулей DC-DC преобразователей, после их запуска и проверки всех напряжений уже можно запаивать дисплей, и плату Arduino (лучше установить в панельку). Датчик света необходимо располагать таким образом, чтобы на него не попадал свет экрана. Во время работы колба экрана нагревается, поэтому датчик BME280 лучше всего располагать на шлейфе либо снаружи корпуса устройства, либо где-нибудь внизу подальше от платы, напротив вентиляционного отверстия, чтобы минимизировать влияние нагрева экрана на показания температуры. Если же этого не удалось избежать на 100 процентов, то можно вручную скорректировать показания температуры в меню настроек.

Пару слов о прошивке и о логике работы программы. В архиве будет как сама прошивка, так и необходимые библиотеки. Если какие-то из используемых библиотек уже установлены, рекомендуется удалить их и установить версии из архива. Прошивка разбита на пять файлов: три файла — это знакогенераторы для различных шрифтов (CharGen.h, CharGen_bold.h, CharGen_v.h, VFD.h), один с функциями управления колбами (VFD.h), и, собственно, главная логика программы (VFD_Clock_6Font.ino).  

После запуска первым делом программа пытается определить тип подключенного дисплея (путем определения количества разрядов регистра дисплея) функция Disp_detect(). В случае если дисплей не определен, программа мигает встроенным светодиодом и пищит однократно зуммером, и так до тех пор, пока дисплей не будет идентифицирован. После того, как дисплей обнаружен, происходит настройка прерывания (для работы функции output_DDRAM(), которая выводит данные из массива экранной памяти DDRAM на дисплей). Это позволяет поддерживать фиксированную частоту обновления экрана (100Гц). После определяется наличие модуля часов DS3231, как необходимого элемента для запуска с минимумом функций. Если он не обнаружен, на дисплей выводится сообщение «ОШИБКА СВЯЗИ С МОДУЛЕМ RTC DS3231». Далее, если это первый запуск, в EEPROM записываются дефолтные значения параметров (шрифты, яркость и т.д.), если не первый — они оттуда просто считываются. После чего происходит преднастройка АЦП, определение наличия датчиков BME280 и DS18B20, и, в случае их обнаружения, получение с них данных. В конце первоначальной настройки программа выдает три сигнала зуммера и переходит к выполнению основного кода.

Еще один нюанс, для тех, кто захочет поэкспериментировать самостоятельно с подключением. Колба DN2029D имеет большее количество выводов, так как регистр анодов и сеток там разведены отдельно. Т.е. помимо стандартного набора управляющих пинов CLK, LAT, BLK, SI, SO есть еще выводы регистра сеток, которые маркируются также только с добавлением G (Grid) GCLK, GLAT, GBLK, GSI, GSO.  Выводы CLK, LAT, BLK всегда соединяются попарно с соответствующими выводами регистра сеток, т.е.: CLK- GCLK, LAT — GLAT, BLK — GBLK. А входы и выходы регистров (SI, SO, GSI, GSO) можно подключить последовательно двумя способами:

  1. D8 ->SI, SO->GSI, GSO->D12
  2. D8 ->GSI, GSO->SI, SO->D12

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

#define DN2029D_wiring 1 // 0 - данные на GSI, GSO соединён с SI, SO выход. 1 - данные на SI, SO соединён с GSI, GSO выход.

Заменить «1» на «0», как написано в комментарии.

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

Для получения печатных плат обращаться к devICEpro.

Еще немного фото вариантов оформления собранного готового устройства:

Программа для генерации кодов символов (Coder_ZG): kackaqep

Вариант в дереве и металле: Владислав Касперович.

Шрифт Полужирный а-ля «Aliexpress»: Владимир Коваленко.

Схемотехника, прошивка, печатная плата:  devICEpro.

Теги:
  • VFD
  • ВЛИ
  • Arduino
  • Часы
  • Микроконтроллер
  • LCD
  • Sprint-Layout

Модуль часов реального времени arduino в категории «Техника и электроника»

Модуль часов реального времени DS1302 для Ардуино

На складе

Доставка по Украине

24 грн

Купить

Модуль часов реального времени DS1302 RTC для ARDUINO (без батареи)

Доставка из г. Днепр

36.70 грн

Купить

Модуль часов реального времени DS1302 ARDUINO, АКСЕССУАРЫ ДЛЯ ARDUINO

Доставка по Украине

36.30 грн

Купить

Модуль часы реального времени DS1307 для Arduino

Доставка по Украине

128 грн

154 грн

Купить

RTC модуль реального часу на базі DS3231 для Raspberry Pi та Arduino

Доставка из г. Ровно

120 грн

Купить

Годинник реального часу RTC I2C модуль I2C

Доставка из г. Ровно

33 грн

Купить

Модуль часов реального времени DS1307 RobotDyn

На складе в г. Одесса

Доставка по Украине

75 грн

Купить

Одесса

Модуль часов реального времени DS3231 с отсеком для батарейки Diymore

На складе

Доставка по Украине

246 грн

Купить

Модуль часов реального времени DS1302

Доставка по Украине

24 грн

Купить

DS1307 часы реального времени Arduino

Доставка из г. Полтава

27.99 грн

Купить

Полтава

Часы реального времени DS3231 RTC Arduino

На складе в г. Умань

Доставка по Украине

140 грн

Купить

Плата регистратор c ридером Micro SD и часами реального времени RobotDyn

На складе в г. Одесса

Доставка по Украине

185 грн

Купить

Одесса

Часы реального времени DS1307

На складе в г. Одесса

Доставка по Украине

82 грн

Купить

Одесса

Плата регистратор c ридером Micro SD и часами реального времени RobotDyn

На складе в г. Одесса

Доставка по Украине

189 грн

Купить

Одесса

Часы реального времени DS1307

На складе в г. Одесса

Доставка по Украине

84 грн

Купить

Одесса

Смотрите также

Модуль Таймер с часами реального времени, 5 суточных уставок. 1шт

Доставка из г. Запорожье

399 грн

Купить

Запорожье

Часы реального времени DS1307 Arduino AVR Pic

На складе в г. Умань

Доставка по Украине

33 грн

Купить

Модуль часов реального времени RTC Arduino DS1302 (10001)

На складе

Доставка по Украине

37.40 грн

Купить

DS3231 AT24C32 IIC модуль часов реального времени для Arduino Precision RTC Real Time Clock Memory Module

На складе

Доставка по Украине

149 грн

Купить

Модуль Arduino часов реального времени DS1307 RTC

На складе в г. Чернигов

Доставка по Украине

42.24 грн

48 грн

Купить

Чернигов

Часы реального времени DS1307 для Arduino (без батарейки) [#3-1]

На складе в г. Запорожье

Доставка по Украине

25 грн

Купить

Запорожье

Модуль часов реального времени для Arduino DS1302 RTC

Недоступен

41 грн

Смотреть

Часы реального времени DS3231, RTC, Arduino (без батарейки) [#8-9]

На складе в г. Запорожье

Доставка по Украине

97 грн

Купить

Запорожье

Регистратор данных, модуль регистрации V1.0 для Arduino UNO, с разъёмом для SD карты и часы реального времени

На складе

Доставка по Украине

95 грн

Купить

Модуль часов реального времени DS1307 ARDUINO, АКСЕССУАРЫ ДЛЯ ARDUINO

Недоступен

44 грн

Смотреть

Модуль часов реального времени DS3231 ARDUINO, АКСЕССУАРЫ ДЛЯ ARDUINO

Недоступен

165 грн

Смотреть

Часы+календарь+доп.память Arduino DS1307 I2C AT24C32 Real Time Clock Module Dallas Модуль часов реального врем

На складе

Доставка по Украине

99 грн

Купить

Модуль часы реального времени на микросхеме DS1302 (без батареи)

Заканчивается

Доставка по Украине

35 грн

Купить

Модуль часы реального времени DS1307 для Arduino

Услуга

75 грн

80 грн

Частота

— точная синхронизация с использованием Arduino и внешних часов

спросил

Изменено 6 лет, 11 месяцев назад

Просмотрено 3к раз

\$\начало группы\$

Я работаю над очень ограниченным по времени проектом (8 недель). В основном мне нужно выполнить измерения и сохранить в памяти. 2 одинаковых коробки, 4 часа и ни беспроводной, ни проводной связи. Каждая коробка измеряется акселерометрами.

В связи с ограничением по времени нужна платформа с минимальной пайкой, оформлением БП и т.д.

Arduino — очевидный выбор, но кристалл слишком нестабилен. Мне нужна точность +/- 30 ppb тактовой частоты.

Я нашел OCXO, который соответствует спецификации, но не на частоте 16 МГц (или 8). Изменение тактовой частоты на 12 МГц мне бы очень помогло, но тогда проблемы с библиотеками.

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

Идеи?

  • arduino
  • частота
  • часы
  • загрузчик

\$\конечная группа\$

15

\$\начало группы\$

Вы можете использовать Arduino, но откалибровать его по внешним часам (или заменить часы на внешние).

Например, Teensy 3.0 может использовать эту библиотеку FreqCount https://www.pjrc.com/teensy/td_libs_FreqCount.html и в основном сравнивать свои внутренние часы с внешними — для 30 ppb вам нужно усреднить более 1 минуту или около того, но затем вы можете откалибровать свой внутренний осциллятор для базовой синхронизации.

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

В качестве альтернативы используйте Arduino и замените его кристалл внешним сигналом OCXO.

\$\конечная группа\$

2

Зарегистрируйтесь или войдите в систему

Зарегистрируйтесь с помощью Google

Зарегистрироваться через Facebook

Зарегистрируйтесь, используя электронную почту и пароль

Опубликовать как гость

Электронная почта

Требуется, но никогда не отображается

Опубликовать как гость

Электронная почта

Требуется, но не отображается

Нажимая «Опубликовать свой ответ», вы соглашаетесь с нашими условиями обслуживания, политикой конфиденциальности и политикой использования файлов cookie

.

Изменение тактовой частоты Arduino

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

Изначально Arduino работает на частоте 16 МГц, но ее можно изменить так, чтобы она работала на частотах от 1 МГц до 20 МГц.

Требования

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

Protoboard
Jumpers or connecting cables
One ATMega328p Chip
A 16Mhz quartz crystal and another one of the frequency we want (if applicable)
Two 22pf ceramic capacitors for 16MHz
Кнопка A
Резистор 1k

Базовая схема

сделайте это прямо на плате, и нам нужно будет смонтировать внешнюю базовую схему.

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

Базовая схема для записи желаемого загрузчика

Как это работает

Arduino, имеет внутренний генератор 8 МГц, поэтому мы можем использовать его с более низкими частотами без внешнего генератора. С другой стороны, он способен работать с частотами до 20 МГц с внешним генератором, что даст нам широкий диапазон частот. Это будет сделано путем изменения «предохранителей» загрузчика и установки этого загрузчика, но, поскольку это уже сделано, нам останется только записать загрузчик.

Частоты

Оставляю вам таблицу частот, на которых может работать наш ATMega328p на момент внесения этой записи, так как эта таблица может меняться (делал в прошлом месяце добавляя еще несколько частот). В этой таблице я также указываю, можно ли это сделать с помощью внутреннего генератора или наоборот нужен внешний. Очевидно, что внутренний генератор работает только до 8 МГц, поэтому частоты выше этого будут недоступны.

Частота Internal Clock External Oscillator
1 X X
1.8432 X
2 X X
3.6864 X
4 X X
7.3728 X
8 X X
11. 0592 X
12 X
14.7456 X
16 X
18.432 X
20 X

Для рассмотрения

В дополнение к вышеизложенному, необходимо помнить о двух очень важных вещах.
ATMega328 должен работать, чтобы иметь возможность записать загрузчик, иначе он не будет реагировать на команды записи. Не стоит монтировать схему для работы на частоте 4 МГц и пытаться записать загрузчик на микросхему, запрограммированную на 16 МГц. Поскольку микроконтроллер не запустится, мы не сможем записать новый загрузчик.
Также вам нужно будет иметь компоненты под рукой, а это очень важно. Если вы, например, запишете загрузчик ATMega328p на частоте 20 МГц, не имея генератора на 20 МГц, вы не сможете использовать его или записать другой загрузчик, пока не получите этот кристалл.

Расчет конденсаторов

Другим важным моментом является расчет конденсаторов. Мы не можем использовать конденсатор 22 пФ для всех частот, так как он не будет работать должным образом. Вот почему мы должны достичь баланса между емкостью конденсаторов, включенных «параллельно» (добавленных к емкости цепи), с емкостью кварцевого кристалла.

Для этого первое, что нам нужно знать, это CL (емкость нагрузки) кварцевого кристалла. Чтобы найти эти данные, нам нужно будет найти их в таблице данных нашего кварцевого кристалла или посмотреть, может ли магазин предоставить их нам.

В дополнение к этим данным нам нужно будет знать емкость нашей схемы, но поскольку это сложно, мы обычно будем использовать значение от 2 пФ до 5 пФ (назовем эту емкость Cstray).

Зная эти данные, нам придется использовать следующую формулу для расчета конденсаторов:

CL = ((c1 * c2)/(c1 + c2))+Cstray

Поскольку мы знаем CL и Cstray, мы начнем решать уравнение, перемещая Cstray влево от равного, делая его отрицательным, из курс.

CL – Cstray = (c1 * c2)/(c1 + c2)

Подставив вышеприведенное их действительные числа, мы получим:

20 – 2 = (c1 * c2)/(c1 + c2)

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

С помощью этой простой таблицы мы можем легко найти подходящие конденсаторы. Чем ближе поле формулы к нулю, тем стабильнее оно будет.

Установка необходимого ПО

Предполагаю, что ПО Arduino IDE у вас уже есть, поэтому перейду непосредственно к установке пакета управления микроконтроллером. Для этого мы выполним следующие шаги.

Первым делом нужно добавить URL загрузки карт в Arduino IDE. Для этого мы идем к Файл > Настройки

В открывшемся новом окне мы дадим кнопку для менеджера дополнительных URL-адресов карточек

И в открывшемся новом окне мы добавим следующий URL-адрес:

 https:/ /mcudude.github.io/MiniCore/package_MCUdude_MiniCore_index.json 

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

Там мы найдем пакет MiniCore и установим последнюю версию

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

Изменение тактовой частоты

Теперь, когда все установлено и готово, нам нужно записать загрузчик, чтобы иметь возможность изменять тактовую частоту ATMega328. Для этого нам нужно будет собрать базовую схему, которую я поместил в начале поста, и загрузить скетч ISP в Arduino, который мы будем использовать для его записи. Для получения дополнительной информации я рекомендую вам зайти на пост, который я указал в начале, о том, как записать загрузчик и запрограммировать базовый Arduino.

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

После выбора в меню инструментов появится еще несколько параметров для выбора тактовой частоты, BOD, LTO компилятора…, которые я объясню ниже.

Доступные варианты

  • Часы: Это просто, это тактовая частота, которую мы хотим, чтобы наш чип имел после записи загрузчика. Мы рассмотрим выбор внутреннего или внешнего в зависимости от того, будем ли мы использовать внутренний генератор или, наоборот, внешний кварц.
  • БПК: O Обнаружение отключения питания — это защита Arduino от отключения питания. Эта защита отключает чип, когда он достигает определенного порога, чтобы не повредить его. Если вы разгоняете свой Arduino, вы можете снизить это напряжение, например, чтобы он работал дольше.
  • Компилятор LTO: Этот параметр активирует некоторые оптимизации компилятора. Эти оптимизации могут помочь уменьшить размер программы и даже повысить скорость.
  • Вариант: Используемый нами вариант чипа. Как правило, если у вас нет специального варианта, нет необходимости изменять эту опцию.
  • Загрузчик: Наконец, мы увидим возможность добавлять или не добавлять загрузчик. Эта опция больше нацелена на то, когда мы программируем наш чип, и позволит нам освободить место, которое занимает загрузчик в обмен на удаление возможности программирования чипа по UART.

Запись загрузчика

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

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *