Часы из дисплея покупателя (VFD) v2
Хочу представить вам следующий этап развития идеи построения часов на базе вакуумно-люминесцентного дисплея (Дисплея покупателя).
Автором данного варианта устройства является devICEpro, вся информация в статье публикуется с его согласия и при непосредственном участии.
Итак, кратко предыстория. Все начиналось с этой статьи (Часы на ардуино из дисплея покупателя (VFD)). Часы получились довольно интересными, но не лишенными недостатков, главным из которых было то, что возможность создавать и использовать свои символы есть не во всех дисплеях и, соответственно, далеко не все из них подходили для этого проекта. В том варианте реализации управление колбой осуществлялось посредством родного процессора, установленного на плате, который использовал встроенный стандартный знакогенератор, а Arduino только передавала ему данные и команды по UART. Для решения проблемы логичным шагом будет переход к прямому управлению колбой самим микроконтроллером непосредственно.
Автор же данной реализации пошел по другому пути, и в этой статье речь пойдет уже о функциональном законченном устройстве, а именно о часах с различными дополнительными функциями, такими как таймер, отображение температуры (в помещении и наружной), влажности, атмосферного давления. А также с возможностью настраивать интерфейс устройства: устанавливать различные шрифты, настраивать анимацию для отображения информации, регулировать яркость экрана в зависимости от внешней освещенности.
Основой устройства будет служить микроконтроллер ATmega328, а именно Arduino Nano V.3 Устройство способно работать с самыми распространенными типами дисплеев для кассовых аппаратов, а именно DN2029D, 202MD20GINK (его аналоги CIG40-2003N, CIG40-2004N) и 202MD25GINK. Колба Futaba 202MD25GINK хоть и поддерживается программно, однако к использованию не рекомендуется, т.к. у нее очень большое расстояние между строчками и большие цифры (т.к. они состоят из нескольких знакомест) выглядят не очень хорошо на этом экране. Внешне отличить такую колбу можно по отсутствию сегментов, отображающих курсор и точки с запятыми.
Определение типа подключенного дисплея происходит автоматически и не требует каких-либо изменений в коде прошивки. В случае если тип дисплея определить не удалось, система оповестит об этом звуковым сигналом. Также в автоматическом режиме происходит определение подключенных датчиков.
Итак, рассмотрим подробно интерфейс устройства. В рабочем режиме на экране отображается текущее время и дополнительная информация: дата, температура давление и влажность. Конкретный набор параметров зависит от подключенных датчиков. Возможны шесть вариантов отображения с разными шрифтами и их комбинациями.
В вариантах с крупными цифрами попеременно отображается дата и температура/влажность слева и справа от цифр времени. Сделано это, во-первых, для того чтобы удобно разместить всю информацию на экране, а, во-вторых, для продления срока службы колбы, т.к. длительное свечение одних и тех же пикселей приводит к деградации люминофора и уменьшению яркости:
На плате предусмотрен датчик положения (ртутный замыкатель). При повороте часов вертикально меняется стиль отображения и выводимая информация, а именно появляется анимация песочных часов, активизируется режим таймера и градусника.
Для управления настройками устройства предусмотрено три кнопки «+», «меню» и «-«, также управление возможно с использованием энкодера, логика работы следующая: кнопка энкодера аналогична кнопке «меню», поворот лево/право — кнопки «+»/»-«, зажатый поворот энкодера — нажатие и удержание кнопок «+»/»-» соответственно. Также есть возможность использования аналоговой клавиатуры из трех кнопок, подключенной к А2 (см. схему). Для переключения режима отображения информации на главном экране необходимо зажать и удерживать кнопку «+» или «-«, нажатие и удержание кнопки «меню» открывает, собственно, меню настроек. Однократные нажатия клавиш «+»/»-» в основном режиме работы игнорируются, для того чтобы избежать случайного изменения настроек, однократное нажатие «меню» включает на 5 сек. отображение температуры с внешнего термодатчика (
Рассмотри меню настроек, чтобы в него попасть необходимо зажать кнопку «меню» либо кнопку энкодера.
Меню имеет следующую структуру:
- Настройки анимации
- Дата/время
- Настройки сигнала
- Настройки яркости
- Корректировка температуры
- Выход
Теперь по порядку пройдемся по пунктам.
Настройки анимации.
Собственно анимация представляет из себя прокрутку символов или строк при обновлении информации на дисплее, здесь два пункта, «символ» позволяет настроить скорость прокрутки при смене отдельных символов (секунд), «экран» — скорость сдвига при обновлении всего экрана. Так же на нижней строке в реальном времени можно увидеть, как выглядят эти эффекты. 0 — эффект отключен, 5 — скорость прокрутки максимальна.
Дата/время.
Тут, думаю, все понятно, собственно — настройка даты и времени.
Настройки сигнала.
Пункт отвечает за включение и время работы часового сигнала (один короткий «пик» каждый час). Устанавливается время начала подачи сигнала и время окончания.
Настройки яркости.
На часах установлен фотодатчик и, соответственно, есть возможность менять яркость дисплея в зависимости от внешней освещенности. На экране отображается текущий уровень яркости, настройка пороговых значений и уровень яркости, на который следует переключиться, когда внешняя освещенность упадет ниже установленной величины.
Корректировка температуры.
Здесь можно задать смещение в плюс или в минус температуры, поступающей с датчиков, если есть сомнения в достоверности данных. Особенно это может быть полезно если датчик BME280 установлен внутри корпуса устройства и нагревается от дисплея. Так же в меню видно, с какого именно датчика берется температура: c BME280 или с модуля часов DS3231 при отсутствии первого.
Выход.
Собственно, выход из меню настроек.
И про вертикальный режим. Кнопки «+» и «-» при удержании здесь меняют отображение секунд (большие или маленькие). При зажатии «меню» активируется таймер обратного отсчета, управление интуитивно понятно, «+», «-» — установка, «меню» — запуск/стоп, по окончании отсчёта 5 звуковых сигналов. А при подключенном датчике DS18B20, при нажатии на кнопку «меню» часы превращаются в градусник с аналоговой шкалой, отображающий температуру с этого датчика.
Теперь о прошивке. Как уже было описано в начале, прошивка разработана для Arduino Nano V.3. Так как для работы программы из-за достаточно объемных знакогенераторов (шрифтов) требуется много памяти (а точнее — фактически вся, что есть в МК). Автором была проведена работа по оптимизации, поэтому помимо всего прочего используются минимальные версии библиотек. Все необходимые библиотеки будут приложены в архиве со скетчем, рекомендуется использовать именно их, т.к. при использовании актуальных версий с учетом их обновлений, может просто не хватить памяти. Таким образом при использовании комплектных библиотек, прошивка компилируется и никаких изменений и корректировок не требуется.
В зависимости от подключенных датчиков возможны четыре варианта запуска программы:
- “Lite”. Только DS3231. Только с него и температура.
- “Lite Plus”. DS3232 + DS18B20. Температура в помещении и за бортом.
- “Full”. DS3231 + BME280. Температура, влажность и давление с BME280.
- “Full Plus ”. DS3231 + BME280 + DS18B20. Температура, влажность и давление с BME280 + температура с DS18B20.
Как видно, для успешного запуска минимально необходимый набор — это, собственно, сам дисплей и модуль часов DS3231. После запуска программа пытается определить тип подключенного дисплея до тех пор, пока это не закончится успехом, поэтому без дисплея, или если он неисправен/не поддерживается, будут слышны одиночные сигналы с периодом примерно около секунды. В ситуации, когда дисплей определился, а модуль часов отсутствует, сообщение об этой ошибке уже будет отображено на экране. В случае успешного запуска, устройство подает три коротких звуковых сигнала и на экране отображается текущее время и пр. данные.
Схема.
Теперь коснемся схемотехники. Питается устройство от напряжения от 9 до 30 вольт. На плате имеются два импульсных преобразователя понижающий
Печатная плата.
Печатная плата универсальна, позволяет устанавливать любые поддерживаемые дисплеи. Так как для питания используются решения на базе стандартных распространенных модулей 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) можно подключить последовательно двумя способами:
- D8 ->SI, SO->GSI, GSO->D12
- 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.
Запись загрузчика
После настройки предыдущих параметров мы приступим к записи загрузчика. Для этого нам просто нужно нажать кнопку записи загрузчика, которая находится ниже в том же меню.