Как подключить модуль часов реального времени DS3231 к Arduino. Почему DS3231 лучше DS1307. Как настроить и использовать RTC для создания точных цифровых часов на Arduino.
Что такое часы реального времени (RTC) и зачем они нужны Arduino?
Часы реального времени (RTC) — это электронное устройство в виде интегральной микросхемы, которое точно отсчитывает время даже при отключении основного питания. RTC необходимы для проектов Arduino, требующих точного отслеживания времени:
- Цифровые часы и будильники
- Системы автоматизации с расписанием
- Регистраторы данных с временными метками
- IoT устройства, синхронизирующие данные
Встроенный таймер Arduino недостаточно точен для долгосрочного отсчета времени. RTC решает эту проблему, обеспечивая стабильный и точный источник времени.
Сравнение популярных модулей RTC: DS3231 vs DS1307
DS3231 и DS1307 — наиболее распространенные модули RTC для Arduino. Давайте сравним их ключевые характеристики:
Характеристика | DS3231 | DS1307 |
---|---|---|
Точность | ±2 ppm (±0.17 секунд в день) | ±20 ppm (±1.7 секунд в день) |
Температурная компенсация | Есть | Нет |
Встроенный датчик температуры | Есть | Нет |
Напряжение питания | 2.3-5.5В | 4.5-5.5В |
Энергопотребление | Ниже | Выше |
Цена | Выше | Ниже |
DS3231 превосходит DS1307 по всем ключевым параметрам, кроме цены. Для большинства проектов дополнительная стоимость DS3231 оправдана значительно более высокой точностью.
Как подключить модуль DS3231 к Arduino?
Подключение DS3231 к Arduino выполняется по I2C интерфейсу. Для этого потребуется всего 4 провода:
- VCC — к 5V или 3.3V на Arduino
- GND — к GND на Arduino
- SDA — к пину A4 на Arduino Uno/Nano или 20 на Arduino Mega
- SCL — к пину A5 на Arduino Uno/Nano или 21 на Arduino Mega
Дополнительно можно подключить пин SQW модуля DS3231 к любому цифровому пину Arduino для генерации прерываний.
Схема подключения DS3231 к Arduino Uno
[Здесь можно добавить схему подключения]
Программирование Arduino для работы с DS3231
Для работы с DS3231 удобно использовать библиотеку RTClib. Ее можно установить через менеджер библиотек Arduino IDE. Вот базовый скетч для инициализации и чтения времени с DS3231:
«`cpp #includeСоздание цифровых часов на Arduino и DS3231
Теперь, когда у нас есть базовый код для работы с DS3231, давайте создадим простые цифровые часы с дисплеем. Для этого примера мы будем использовать LCD дисплей 16×2 символов.
«`cpp #includeРасширенные возможности DS3231
DS3231 предлагает ряд дополнительных функций, которые могут быть полезны в более сложных проектах:
Температурный сенсор
DS3231 имеет встроенный датчик температуры. Вот как получить его показания:
«`cpp float temperature = rtc.getTemperature(); Serial.print(«Temperature: «); Serial.print(temperature); Serial.println(» C»); «`Установка и использование будильников
DS3231 поддерживает два независимых будильника. Вот пример установки и проверки будильника:
«`cpp // Установка будильника на каждый день в 8:30 rtc.setAlarm1(DateTime(0, 0, 0, 8, 30, 0), DS3231_A1_Hour); // Проверка срабатывания будильника if (rtc.alarmFired(1)) { Serial.println(«Будильник сработал!»); rtc.clearAlarm(1); } «`Генерация прямоугольных волн
DS3231 может генерировать прямоугольные волны разной частоты на выводе SQW: «`cpp rtc.writeSqwPinMode(DS3231_SquareWave1Hz); // 1 Hz square wave «`Типичные проблемы при работе с DS3231 и их решения
При работе с DS3231 могут возникнуть некоторые проблемы. Вот наиболее распространенные из них и способы их решения:
RTC не обнаруживается
Если Arduino не может обнаружить RTC, проверьте следующее:
- Правильность подключения проводов (особенно SDA и SCL)
- Напряжение питания (должно быть в диапазоне 2.3-5.5В)
- Адрес I2C устройства (стандартный адрес DS3231 — 0x68)
Неточное время
Если время на DS3231 идет неточно, возможные причины:
- Разряженная батарея резервного питания
- Сильные электромагнитные помехи
- Экстремальные температуры (выше 85°C или ниже -40°C)
Потеря времени при отключении питания
Если RTC теряет настройки времени при отключении основного питания:
- Проверьте наличие и заряд батареи резервного питания (обычно CR2032)
- Убедитесь, что батарея правильно подключена
- Замените батарею, если она разряжена
Заключение: почему DS3231 — отличный выбор для проектов Arduino
DS3231 предлагает отличное сочетание точности, функциональности и простоты использования, что делает его идеальным выбором для большинства проектов Arduino, требующих точного отсчета времени. Его преимущества:
- Высокая точность даже при колебаниях температуры
- Низкое энергопотребление
- Простой интерфейс I2C
- Дополнительные функции (температурный сенсор, будильники)
- Широкая поддержка в библиотеках и сообществе Arduino
Используя DS3231 в своих проектах Arduino, вы можете быть уверены в надежном и точном отсчете времени, что открывает широкие возможности для создания умных устройств, систем автоматизации и многого другого.
Arduino часы реального времени ds3231 в категории «Техника и электроника»
Часы реального времени DS3231, RTC, Arduino (без батарейки) [#8-9]
На складе в г. Запорожье
Доставка по Украине
115 грн
Купить
Ardu.prom.ua (наложка НП от 150 грн!)
Часы реального времени DS3231 RTC Arduino
На складе в г. Умань
Доставка по Украине
140 грн
Купить
Интернет-магазин «FreeBuy.in.ua»
Модуль часы реального времени DS1307 для Arduino rt
Доставка по Украине
184.23 грн
92.11 грн
Купить
Модуль часы реального времени DS1307 для Arduino ep
Доставка по Украине
202.88 грн
101.44 грн
Купить
Ephir.com.ua
Модуль часы реального времени DS1307 для Arduino ps
Доставка по Украине
174.90 грн
87.45 грн
Купить
Интернет магазин Pricess
Модуль часы реального времени DS1307 для Arduino
На складе в г. Ровно
Доставка по Украине
по 40 грн
от 15 продавцов
40 грн
Купить
Магазин «Панас»
DS1307 часы реального времени Arduino
На складе в г. Полтава
Доставка по Украине
29.99 грн
Купить
Интернет магазин «E-To4Ka»
Часы реального времени DS1307 Arduino AVR Pic
На складе в г. Умань
Доставка по Украине
33 грн
Купить
Интернет-магазин «FreeBuy.in.ua»
DS1307 часы реального времени Arduino
На складе в г. Полтава
Доставка по Украине
29.99 грн
Купить
IT Electronics
Часы реального времени с батарейкой DS3231SN
Доставка по Украине
87 грн
Купить
Інтернет — магазин Аруіно в Києві «RoboStore»
Часы реального времени DS3231 модуль RTC
Доставка из г. Кривой Рог
126 грн
Купить
Онлайн-магазин «КласМагаз»
RTC модуль реального часу на базі DS3231 для Raspberry Pi та Arduino
Доставка из г. Ровно
120 грн
Купить
Інтернет-магазин «Перша гуртівня електрики»
Модуль часы реального времени DS1307 для Arduino, 102973
На складе в г. Ровно
Доставка по Украине
50 грн
Купить
Интернет магазин » Горячий Стиль «
Модуль часы реального времени DS1307 для Arduino
Доставка по Украине
80 грн
75 грн
ІНТЕРНЕТ-МАГАЗИН «Доставлено «
Модуль часов реального времени DS3231 с отсеком для батарейки Diymore
На складе
Доставка по Украине
241 грн
Купить
DIYelectronics / Бесплатная доставка до 🍉🍉🍉на все заказы
Смотрите также
Часы реального времени DS1307 для Arduino (без батарейки) [#3-1]
На складе в г. Запорожье
Доставка по Украине
22.80 грн
Купить
Ardu.prom.ua (наложка НП от 150 грн!)
Модуль часы реального времени DS1307 для Arduino
На складе
Доставка по Украине
47 — 89 грн
от 5 продавцов
68 грн
51 грн
Купить
T2TV. com.ua | Онлайн Гипермаркет
Годинник реального часу DS1307Z
На складе
Доставка по Украине
10 грн
Купить
Інтернет-магазин «Мікроампер»
Часы реального времени DS3231
Доставка из г. Одесса
330 грн
Купить
Интернет магазин «controller.in.ua»
Часы реального времени DS3231
Доставка по Украине
187.50 грн
Купить
Интернет магазин «controller.in.ua»
DS1307 часы реального времени Arduino
Доставка из г. Полтава
по 29.99 грн
от 2 продавцов
29.99 грн
Купить
USCompany
Модуль часов реального времени DS3231
На складе
Доставка по Украине
116.40 грн
Купить
Магазин «Солдер»
Модуль часы реального времени DS1307 для Arduino
Доставка по Украине
164 грн
136 грн
Купить
Promsnab
Модуль часы реального времени DS1307 для Arduino
На складе в г. Ровно
Доставка по Украине
40 грн
Купить
Магазин «Freedelivery»
Модуль часов реального времени DS1307 RobotDyn
На складе в г. Одесса
Доставка по Украине
73 грн
Купить
DIYelectronics / Бесплатная доставка до 🍉🍉🍉на все заказы
Модуль часы реального времени DS1307 для Arduino
На складе в г. Ровно
Доставка по Украине
по 40 грн
от 4 продавцов
40 грн
Купить
KRONS интернет- магазин
DS1302 IIC часы реального времени
На складе в г. Николаев
Доставка по Украине
29 грн
Купить
Інтернет-магазин техніки та електроніки
Модуль часов реального времени DS1302 RTC для ARDUINO (без батареи)
Доставка из г. Днепр
39.70 грн
Купить
Інтернет-магазин «Електроніка»
Модуль RTC годинника реального часу DS3231
Доставка по Украине
192. 50 грн
Купить
«DiyLab» — інтернет-магазин електронних модулів та компонентів
Часы на Ардуино
Изготовление больших часов
на ардуино
Сегодня, мой милый друг, мы с тобой смастерим замечательные часы. Процесс довольно не простой, но и мы не лыком шиты, приступим!
Магиструм
самый умный
Необходимые комплектующие:
Адресные модульные светодиоды ws2812b 114 шт. или лента ws2812b 30 светодиодов на метр
Часы реального времени DS3231
Arduino Nano
Кнопки 3 шт.
Блок питания 5V , 1-2 A
Провода, макетная плата, резистор 200 Ом, припой и т.д.
Для начала, печатаем большие сегменты 28 шт на 3D принтере любым (желательно черным, как смоль) пластиком (я печатал PETG)
Поскольку стенки 1,6 мм, слайсер лучше настроить так:
Ссылка на модель сегмент STL
Печатаем малые сегменты 2 шт
org/ImageObject»> |
Ссылка на модель STL
Модель для Ленты ws2812b:
Ссылка на модель для ленты STL
Далее можно отшпаклевать и покрасить или оставить в исходном виде (при качественной 3D печати и прямых руках) .
Экран можно напечатать белым пластиком на 3D принтере или вырезать из молочного оргстекла 1.5-2 мм.
Ссылка на экран STL
Вырезаем корпус часов.
Можно лобзиком, на лазере и тд. из фанеры 3 мм.
Стенки клеим в 3 слоя фанерой 3 мм или делаем по своему усмотрению.
Ссылка на чертеж Корел
Шкурим корпус, шпаклюем неровности.
Опять шкурим, грунтуем, красим
Стенки клеим в 3 слоя фанерой 3 мм или делаем по своему усмотрению.
Собираем сегменты.
Предварительно красим сегменты внутри белой водоэмульсионной краской.
Паяем согласно схеме
Плюс и Минус (GND) можно соединять между диодами последовательно, или параллельно, или последователно-параллельно ( как удобно).
Провод данных должен приходить c пина Ардуинки на Din первого диода, далее перемычка с Dout к следующему диоду Din по схеме :
Подключаем блок питания, вешаем на стену. Готово!
У тебя получились отличные часики, которыми можно хвастать перед друзьями, делать на их фоне селфи и отслеживать, как быстро утекает время. Ты молодец!
Магиструм
самый умный
Научим вашего ребенка реализовывать свои проекты!
Пробное бесплатное занятие длится 60-90 минут. За это время ребенок соберет своего первого робота
Точность тактовой частоты Arduino
Каждый Arduino имеет встроенный источник тактового сигнала, обычно работающий на частоте 8 или 16 МГц. В большинстве Arduino для генерации тактового сигнала используется кварцевый кристалл, но в некоторых моделях вместо него используется керамический резонатор.
Кажется, существует общее мнение, что керамические резонаторы не так хороши, как кристаллы [1][2][3]. Некоторые люди даже предупреждают, что керамические резонаторы вызывают проблемы с высокоскоростной последовательной связью, но другие оспаривают это. Возможно, какое-то измерение прольет свет на ситуацию.
Я измерил частоту Arduino Duemilanove с кварцевым резонатором и частоту Arduino Pro Mini
Тестовая установка
Ингредиенты:
- Arduino Duemilanove с ATmega328 и кварцевым резонатором 16 МГц
- Arduino Pro Mini 5V с ATmega328 и керамическим резонатором 16 МГц
- GPS-защита Adafruit [4]
- GPS-приемник EM-406A
Экран GPS установлен на Duemilanove, а выход PPS (импульсов в секунду) GPS-приемника подключен к входным контактам на обоих Arduino. Функция захвата входных данных ATmega328 используется для считывания значения счетчиков 16 МГц на обоих Arduino ровно один раз в секунду. Кроме того, датчик внутренней температуры ATmega считывается раз в секунду.
Скетч Arduino доступен здесь: arduinofreq.pde
К сожалению, прием GPS через мое окно не очень хороший. Бывают периоды, когда видно менее 4 спутников. Приемнику GPS требуется как минимум 4 спутника для точного расчета времени, в противном случае его сигнал PPS медленно отклоняется от точного времени. Это было решено путем удаления измерений менее чем с 4 спутниками из набора данных перед анализом.
Обратите внимание, что я измерил только один кристалл и только один керамический резонатор . Это серьезное ограничение, из-за которого трудно делать общие выводы. Возможно, например, что мой кристалл гораздо точнее большинства кристаллов. Правильным экспериментом было бы измерение нескольких плат из разных партий, но у меня нет времени на такие игры. Будем надеяться, что мои Arduino находятся где-то в типичном диапазоне.
Несоответствие частоты
Ни один из осцилляторов не подходит для создания будильника. Часы, предназначенные для работы на частоте ровно 16 МГц, будут отставать на 9 секунд в день с кварцевым генератором или терять 67 секунд в день с керамическим генератором. Точность можно повысить, измерив фактическую частоту генератора и откалибровав программу Arduino для этой частоты вместо 16 МГц. Это эффективно устраняет статическое рассогласование частот.
Оба генератора достаточно хороши для последовательной связи. Последовательный канал в стиле RS-232 обычно допускает несоответствие скорости передачи не менее 1%. По этому стандарту керамический резонатор все еще в 10 раз лучше, чем нужно.
Модель Ардуино | Дуэмиланове ATmega328 | Про Мини 5В ATmega328 |
---|---|---|
Источник синхронизации | Кристалл 16 МГц | Керамический резонатор 16 МГц |
Длительность измерения | 18 часов | |
Диапазон частот | 16001672 … 16001677 Гц | 15987746 … 15987918 Гц |
Средняя частота | 16001674,7 Гц | 15987821,8 Гц |
Несоответствие от 16 МГц | +105 частей на миллион | −761 частей на миллион |
Стандартное отклонение | 0,7 Гц, среднеквадратичное значение | 43,9 Гц, среднеквадратичное значение |
Температура АРН | 70 . .. 73 °С | 65 … 67 °С |
Стабильность частоты
Частота генератора не является точно постоянной; он все время меняется. Колебания частоты частично вызваны внешними факторами, такими как температура, и частично собственным шумом внутри генератора.
Стандартное отклонение частоты является первым признаком стабильности. Кристалл достаточно стабилен со стандартным отклонением всего 0,7 Гц, в то время как керамический резонатор гораздо более изменчив.
Стабильность часов зависит от промежутка времени, в течение которого они измеряются. Например, атомные часы чрезвычайно стабильны в течение дней и недель, но кристаллы более стабильны, чем атомные часы, в течение очень коротких периодов времени. Отклонение Аллана — это распространенный способ выразить стабильность часов при различной продолжительности измерения. [5] [6]
График отклонения Аллана выше показывает, что кристалл намного более стабилен, чем резонатор. Я должен отметить, что этот сюжет Аллана не совсем соответствует стандартам. Первоначальный нисходящий уклон Думиланове вызван исключительно ограниченным разрешением моих измерений. Наклон обеих линий вверх, вероятно, вызван изменением температуры во время измерения. В идеальных условиях типичные кварцевые генераторы намного точнее, чем то, что я здесь показываю.
Температурная чувствительность
Частота генератора изменяется в зависимости от температуры. Я измерял частоту генератора и внутреннюю температуру ресивера в течение нескольких дней. Поскольку резонатор находится близко к AVR на платах Arduino, я предполагаю, что они испытывают примерно одинаковые колебания температуры.
Результат показывает сильную связь между температурой и частотой. Кристалл на моем Duemilanove смещается почти на 1 Гц на градус Цельсия, в то время как керамический резонатор на Pro Mini примерно в 100 раз более чувствителен к температуре.
Модель Ардуино | Дуэмиланове ATmega328 | Про Мини 5В ATmega328 |
---|---|---|
Источник синхронизации | Кристалл 16 МГц | Керамический резонатор 16 МГц |
Длительность измерения | 158 часов | |
Диапазон частот | 16001671 . .. 16001730 Гц | 15983561 … 15988135 Гц |
Средняя частота | 16001679 Гц | 15987508 Гц |
Стандартное отклонение | 7,4 Гц, среднеквадратичное значение | 720 Гц, среднеквадратичное значение |
Температура АРН | 68 … 110 °С | 64 … 96 °С |
Температурный коэффициент | +0,97 Гц/°С | −139 Гц/°С |
Остаток температурной посадки | 2,4 Гц, среднеквадратичное значение | 91,4 Гц, среднеквадратичное значение |
Чувствительность к напряжению питания
Большинство генераторов чувствительны к изменениям напряжения питания. Напряжение питания цифровых плат, таких как Arduino, не всегда очень стабильно, особенно при использовании переменного тока.
Чтобы проверить чувствительность к напряжению, я запрограммировал обе платы Arduino на переключение цифрового вывода один раз в секунду в случайном порядке. При включении выходной контакт посылает ток ~ 30 мА на резистор 120 Ом. Дополнительный ток приводит к падению напряжения питания 5 В на Arduino примерно на 50 мВ. Если генератор чувствителен к изменению напряжения, его частота будет изменяться в зависимости от состояния включения/выключения цифрового выхода.
Коэффициент напряжения питания определяется путем сопоставления состояния включения/выключения выходного контакта с измерениями частоты. Частота кристалла Duemilanove падает в среднем на 1,6 Гц, когда выходной контакт включен. Опять же, керамический резонатор Pro Mini намного чувствительнее.
Модель Ардуино | Дуэмиланове ATmega328 | Про Мини 5В ATmega328 |
---|---|---|
Источник синхронизации | Кристалл 16 МГц | Керамический резонатор 16 МГц |
Длительность измерения | 33 часа | |
Диапазон частот | 16001672 . .. 16001709 Гц | 15984765 … 15988044 Гц |
Средняя частота | 16001680 Гц | 15987434 Гц |
Переменный выходной ток | 33 мА п.п. | 34 мА стр. |
Изменение напряжения питания 5 В | 50 мВ стр. | 30 мВ стр. |
Изменение частоты коррелирует с выходным током | −1,6 Гц | −76,2 Гц |
Коэффициент напряжения питания | +0,03 Гц/мВ | +2,5 Гц/мВ |
Выводы
(Обратите внимание, что эти выводы основаны на очень ограниченном тесте только с одним кристаллом и одним керамическим резонатором.)
- Кварцевый генератор на Duemilanove намного точнее, чем керамический резонатор на Pro Mini.
- Оба генератора достаточно точны для большинства приложений, включая высокоскоростную последовательную связь.
- Ни один из генераторов не подходит для использования в будильнике без калибровки. Кварцевый генератор может быть достаточно хорош, если программа Arduino откалибрована для компенсации несоответствия частоты конкретного кристалла, на котором он работает. Керамический осциллятор все равно будет недостаточно хорош даже после калибровки.
- Arduino нагревается под прямыми солнечными лучами.
Каталожные номера
- [1] Ladyada, Часто задаваемые вопросы по Arduino UNO
- [2] Использование кристаллов (по сравнению с керамическими резонаторами)
- [3] Рекомендации для следующей версии Arduino
- [4] Ladyada, щит GPS
- [5] У. Дж. Райли, Справочник по анализу стабильности частоты, NIST, 2008.
- [6] Джон Акерманн, Стабильность частоты и точность в реальном мире
- [7] Том Дуниган, Измерения смещения частоты различных источников синхронизации
Контактный телефон
Комментарии, предложения, исправления приветствуются на joris (a) vjorisvr. nl
Проект ClockClock — SparkFun Learn
- Домашняя страница
- Учебники
- Проект «Часовые часы»
≡ Страниц
Авторы: Алчитри, Элл C
Избранное Любимый 12
Который час?! Пришло время для крутого проекта Alchitry, вот что! В этом уроке я расскажу вам, как я построил ClockClock, используя Alchitry Au для управления всеми моторами.
Что такое ClockClock? Это просто часы из часов! Идея состоит в том, чтобы использовать множество аналоговых часов вместе, чтобы сформировать цифры времени. Итак, мета.
Во-первых, позвольте мне начать с того, что это не было моей первоначальной идеей. Я столкнулся с этой концепцией несколько лет назад и всегда думал, что это будет отличный демонстрационный проект FPGA, поскольку он требует очень много управляющих сигналов. Оригинальные часы можно найти здесь.
Есть несколько причин, по которым этот проект является таким замечательным демонстрационным проектом FPGA. Во-первых, для часов требуется 48 шаговых двигателей. Есть 24 «часа», и у каждого из них две независимые стрелки. Использование стандартного шагового драйвера шага/направления означает, что вам нужно два управляющих сигнала на двигатель или 96 выходов. Я хотел иметь возможность отключать драйверы, когда часы стояли, для экономии энергии. Это добавило еще четыре выхода (по одному на каждую «цифру» часов). Я также хотел использовать Arduino для создания анимации, так как было бы намного проще сделать это в коде, чем на оборудовании. Чтобы поговорить с Arduino, я решил использовать I 2 C через разъем Qwiic от Alchitry Au. Для этого потребовалось еще два вывода ввода-вывода, всего их стало 102. Удобно, что у Alchitry Au ровно 102 вывода ввода-вывода.
Помимо демонстрации огромного количества операций ввода-вывода, на которые способны FPGA, в этом проекте используется разъем Qwiic на FPGA полунетрадиционным способом. FPGA в этом проекте действует как периферийное устройство, а не как контроллер. Arduino является контроллером и выдает все команды на FPGA. Я действительно думаю, что это будет полезная парадигма для многих проектов.
Некоторые задачи очень просты программно, но невероятно сложны аппаратно. Обратное тоже верно. Объединив микроконтроллер и ПЛИС вместе, вы получите лучшее из обоих миров. Разъем Qwiic на обеих платах упрощает эту задачу.
Необходимые материалы
Чтобы следовать этому руководству, вам понадобятся следующие материалы. Вам может не понадобиться все, хотя в зависимости от того, что у вас есть. Добавьте его в корзину, прочитайте руководство и при необходимости настройте корзину.
Инструменты
Хотя существует несколько способов обработки деталей для этого проекта, вот инструменты, которые мы использовали:
- 3D-принтер
- Шейпоко XXL
Вам также понадобится
- 48-кратный шаговый двигатель с редуктором клапана
- Модуль для погружения с шаговым двигателем StepStick 48x с радиатором
- 1x UBEC Регулируемый BEC UBEC 2-6S для квадрокоптера RC Drone
- 1x Закрытый импульсный источник питания переменного/постоянного тока
Рекомендуемая литература
Если вы не знакомы с системой Qwiic, рекомендуем ознакомиться с обзором здесь.