0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

DS1307实时时钟分线板套件的使用

454398 来源:网络整理 作者:网络整理 2019-11-27 16:26 次阅读

概述

DS1307实时时钟分线板套件的使用

这是一个出色的电池支持实时时钟(RTC),即使重新编程或断电,您的微控制器项目也可以跟踪时间。 DS1307是最流行的RTC,最适合与基于5V的芯片(如Arduino)配合使用。

所有零件,包括PCB,接头连接器包括电池和电池

可快速组装和使用

将插头插入任何面包板,也可以使用电线

我们提供了带有Arduino的示例代码和库我们的文档页面上的演练

两个安装孔

将保持5年或更长时间

此分线板是一个套件,需要一些只需15分钟即可完成。

什么是RTC?

实时时钟基本上就像手表一样-它依靠电池供电,即使断电也能为您节省时间!使用RTC,即使您对微控制器进行重新编程或将其与USB电源插头断开连接,您也可以跟踪较长的时间线。

大多数微控制器(包括Arduino)都具有称为“ millis(),并且芯片中还内置了计时器,可以跟踪更长的时间段,例如分钟或几天。那么,为什么要有单独的RTC芯片呢?好吧,最大的原因是 millis()仅跟踪时间,因为Arduino上次供电是- 。这意味着打开电源后,毫秒计时器将设置为0。Arduino不知道它是“星期二”还是“ 3月8日”,它只能告诉我“自从我上次离开以来已经过了14,000毫秒”

确定,如果要在Arduino上设置时间怎么办?您必须编程日期和时间,从那时起您就可以算上它了。但是,如果失去电源,则必须重新设置时间。就像非常便宜的闹钟一样:每当他们掉电时,它们都会闪烁 12:00

尽管这种基本的计时功能在某些项目中是可行的,但在某些项目中,例如数据记录器,时钟等必须保持一致的计时,当Arduino电池耗尽或重新编程时,计时不会重置。因此,我们包括一个单独的RTC! RTC芯片是一种专门的芯片,可以跟踪时间。它可以计算leap年,并且知道一个月中有多少天,但是它不考虑夏时制(因为它在不同的地方有所不同)

https://en.wikipedia.org/wiki/Real-time_clock#/media/File :上图显示的是带有实时时钟DS1387的计算机主板。其中有一个锂电池,这就是为什么它这么大。

我们将使用的RTC是DS1307。它价格低廉,易于焊接,并且可以在非常小的硬币电池上运行数年。

备份

只要它有一个可运行的纽扣电池,即使Arduino断电或被重新编程,RTC也会在很长的时间内运行。

使用任何CR1220 3V锂金属纽扣电池:

CR1220 12mm直径-3V锂币电池电池

产品编号:380

这些是最高质量的电池。容量的电池,与iCufflinks,iNecklace,Datalogging和GPS Shields,GPS HAT等产品随附的电池相同。每笔订购一个电池。..

$ 0.95

入库

添加到购物车

您必须安装纽扣电池才能使RTC正常工作,如果没有纽扣电池,则应将电池引脚拉低。

零件列表

如果您有组装版本,请跳过此步骤,即为您完成!

ImageName说明零件信息数量

IC2实时时钟芯片DS13071

Q132.768 KHz,12.5 pF手表晶体通用32.768KHz晶体1

R1,R21/4W 5%2.2K电阻

红色,红色,红色,金色通用2

C10.1uF陶瓷电容器(104)通用1

5针公头(1x5)通用1

BATT12mm 3V锂纽扣电池(截至2015年10月15日,产品不再配备纽扣电池-尽管我们建议您购买纽扣电池!)CR12201

BATT‘12mm硬币电池座Keystone 30011

PCB电路板Adafruit Industries1

组装

如果您有组装版本,请跳过此步骤,即完成为您服务!

将电阻,晶体和电容器的引线短路。

通过检查零件清单并确认您拥有一切,准备组装套件!

下一步,加热烙铁并清理办公桌。

将电路板放在虎钳中,以便您可以轻松地对其进行操作。

通过在电池负极上焊接一个小凸起开始:这样可以更好地接触!

放置两个2.2K电阻和一个陶瓷电容器。它们是对称的,因此无需担心方向。 如果您打算与Raspberry Pi(具有3.3V逻辑并内置上拉电阻)一起使用,请跳过2.2K电阻!

然后放置晶体(也是对称的),电池座(继续,以便电池可以在侧面滑动)和RTC芯片。必须放置RTC芯片,使末端的凹口/圆点与丝印相匹配。看左图,缺口指向下。在焊接芯片之前,请仔细检查,因为它很难撤消!

为防止电池座掉落,您可能需要从顶部“点焊”它。

然后在板上翻转并焊接所有引脚。

如果您愿意要使用插头将分线板插入某些东西,请将插头插入面包板,长边朝下放置,使短路针穿过焊盘。

将其焊接到位。

插入电池,使+面平UP。 电池可以使用5年或更长时间,因此无需拆卸或更换电池。

您必须安装纽扣电池才能使RTC正常工作,如果没有纽扣电池,它将被扼杀并可能挂起Arduino,因此请务必确保已安装电池,即使电池没电也是如此。

接线

只有5个引脚: 5V GND SCL SDA SQW 。

5V 用于为RTC芯片供电以查询时间。如果没有5V信号,则芯片会通过纽扣电池进入休眠状态。

将 GND 连接到公共电源/数据地

SCL 引脚连接到Arduino上的I2C时钟 SCL 引脚。在基于UNO和’328的Arduino上,这也称为 A5 ,在Mega上也称为 digital 21 ,在Leonardo/Micro上,也称为数字3

将 SDA 引脚连接到Arduino上的I2C数据 SDA 引脚。在基于UNO和‘328的Arduino上,这也称为 A4 ;在Mega上,其也称为 digital 20 ;在Leonardo/Micro上,这也称为数字2

SQW 是RTC可选的方波输出(如果已配置的话)。大多数人不需要或使用此图钉

用于Arduino UNO的有趣插件

如果将模拟引脚 A3 设置为OUTPUT和HIGH,将 A2 设置为OUTPUT和LOW,则可以直接从引脚为RTC供电!

将Arduino UNO A4连接到SDA。将Arduino模拟引脚A5连接到SCL。

这仅适用于UNO和其他基于ATmega328的Arduino!

Arduino库

与RTC对话

RTC是i2c设备,这意味着它使用2条线进行通信。这两条线用于设置时间并进行检索。在Arduino UNO上,这些引脚还连接到模拟4 和 5 引脚。这有点烦人,因为我们当然希望最多有6个模拟输入来读取数据,而现在我们已经丢失了2个。

对于RTC库,我们将使用JeeLab卓越的分叉器可以在GitHub上找到RTC库 。您可以通过访问github存储库并手动下载来实现此目的,或者只需单击此按钮即可下载zip

安装Adafruit_RTCLib库

对于RTC库,我们将要使用JeeLab出色的RTC库的分支。

要开始对RTC进行读写,您需要安装Adafruit_RTClib库(在github存储库中的代码)。可以从Arduino库管理器中获得它,因此我们建议使用它。

从IDE中打开库管理器。..

,然后输入 RTClib 来查找库。

查找 Adafruit RTClib (可能还有其他!)

单击安装

我们在Arduino上也有很棒的教程在以下位置安装库:

http://learn.adafruit.com/adafruit-all-about-arduino-libraries-install-use

完成后,重新启动IDE

了解代码

首次RTC测试我们将演示的第一件事是一个测试草图,它将每秒从RTC读取时间。我们还将显示如果您卸下电池并更换电池会发生什么,因为这会导致RTC停止。因此,要开始使用,请在未给Arduino供电或未将其插入USB的情况下从电池座中取出电池。等待3秒钟,然后更换电池。这将重置RTC芯片。现在加载下面的草图(也可以在示例→RTClib→ds1307 中找到),并在数据记录器防护罩打开的情况下将其上传到Arduino!(别忘了安装DS1307库)在运行下面的代码之前)

现在打开串行控制台,并确保将波特率正确设置为 57600波特,您应该看到以下内容:

只要RTC芯片失去所有电源(包括备用电池) ),它将以0:0:0的形式报告时间,并且不会计数秒(停止)。无论何时设置时间,它都会开始计时。因此,基本上,这样做的结果是,一旦设置了时间,就永远不要卸下电池。您不需要,电池座也非常贴合,因此除非面板被压碎,否则电池不会“掉落”

设置时间加载相同的草图后,取消注释以 RTC开始的行。调整 像这样:

下载:文件

复制代码

if (! rtc.initialized()) {

Serial.println(“RTC is NOT running!”);

// following line sets the RTC to the date & time this sketch was compiled

rtc.adjust(DateTime(F(__DATE__), F(__TIME__))); if (! rtc.initialized()) {

Serial.println(“RTC is NOT running!”);

// following line sets the RTC to the date & time this sketch was compiled

rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));

这行很可爱,它的作用是根据您使用的计算机获取日期和时间(当您编译代码)并将其用于对RTC进行编程。如果您的计算机时间设置不正确,则应首先解决该问题。然后,您必须按上传按钮进行编译,然后立即上传。如果您先编译然后再上传,则时钟将在该时间段内关闭。

然后打开“串行”监视器窗口以显示时间已设置。

从现在开始,您将不再再次设置时间:电池将使用5年或以上。

读取时间 现在RTC快活了,我们想查询一下时间。让我们再次查看草图以了解其操作方法。

下载:文件

复制代码

void loop () {

DateTime now = rtc.now();

Serial.print(now.year(), DEC);

Serial.print(’/‘);

Serial.print(now.month(), DEC);

Serial.print(’/‘);

Serial.print(now.day(), DEC);

Serial.print(“ (”);

Serial.print(daysOfTheWeek[now.dayOfTheWeek()]);

Serial.print(“) ”);

Serial.print(now.hour(), DEC);

Serial.print(’:‘);

Serial.print(now.minute(), DEC);

Serial.print(’:‘);

Serial.print(now.second(), DEC);

Serial.println(); void loop () {

DateTime now = rtc.now();

Serial.print(now.year(), DEC);

Serial.print(’/‘);

Serial.print(now.month(), DEC);

Serial.print(’/‘);

Serial.print(now.day(), DEC);

Serial.print(“ (”);

Serial.print(daysOfTheWeek[now.dayOfTheWeek()]);

Serial.print(“) ”);

Serial.print(now.hour(), DEC);

Serial.print(’:‘);

Serial.print(now.minute(), DEC);

Serial.print(’:‘);

Serial.print(now.second(), DEC);

Serial.println();

使用RTClib获得时间的方法几乎只有一种,即调用 now(),该函数将返回一个DateTime对象,该对象描述您在调用 now()时的年,月,日,时,分和秒。

有些RTC库可以让您调用诸如 RTC.year()和 RTC.hour()之类的东西来获取当前的年份和小时。但是,存在一个问题,如果您碰巧在下一分钟滚动之前在 3:14:59 询问分钟,然后在分钟滚动之后的第二分钟问(所以在 3:15:00 ),您会看到时间为 3:14:00 ,该时间需要一分钟。如果您以其他方式进行操作,则可能会得到 3:15:59 -在另一方向上间隔一分钟。

因为这种情况发生的可能性不大-特别是如果您经常查询时间-我们会一次从RTC中获取时间的“快照”,然后将其拆分为 day()或 second() 如上所示。花费更多的精力,但是我们认为避免错误是值得的!

我们还可以通过调用 unixtime 来从DateTime对象中获取“时间戳”,该计数会计数自1970年1月1日午夜以来的秒数(不计算leap秒)

下载:文件

复制代码

Serial.print(“ since 1970 = ”);

Serial.print(now.unixtime());

Serial.print(“s = ”);

Serial.print(now.unixtime() / 86400L);

Serial.println(“d”); Serial.print(“ since 1970 = ”);

Serial.print(now.unixtime());

Serial.print(“s = ”);

Serial.print(now.unixtime() / 86400L);

Serial.println(“d”);

由于一天中有60 * 60 * 24 = 86400秒,因此我们可以很容易地算出好。当您想要跟踪自上次查询以来已经过去了多少时间,使一些数学变得容易得多时(例如检查是否在5分钟后,只需查看 unixtime()),这可能会很有用。 增加了300,您不必担心小时变化。

下载

数据表和文件您可以在GitHub上找到strong》

EagleCAD PCB文件

Adafruit Fritzing库中可用的Fritzing对象

DS1307产品页面

示意图

构造打印

责任编辑:wv

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 时钟
    +关注

    关注

    10

    文章

    1712

    浏览量

    131254
  • DS1307
    +关注

    关注

    1

    文章

    34

    浏览量

    14098
收藏 人收藏

    评论

    相关推荐

    使用实时时钟

    电子发烧友网站提供《使用实时时钟库.pdf》资料免费下载
    发表于 10-22 10:09 0次下载
    使用<b class='flag-5'>实时时钟</b>库

    bq32000实时时钟(RTC)数据表

    电子发烧友网站提供《bq32000实时时钟(RTC)数据表.pdf》资料免费下载
    发表于 08-23 11:23 0次下载
    bq32000<b class='flag-5'>实时时钟</b>(RTC)数据表

    BQ32002实时时钟(RTC)数据表

    电子发烧友网站提供《BQ32002实时时钟(RTC)数据表.pdf》资料免费下载
    发表于 08-23 11:23 0次下载
    BQ32002<b class='flag-5'>实时时钟</b>(RTC)数据表

    bq3285实时时钟(RTC)数据表

    电子发烧友网站提供《bq3285实时时钟(RTC)数据表.pdf》资料免费下载
    发表于 08-23 11:21 0次下载
    bq3285<b class='flag-5'>实时时钟</b>(RTC)数据表

    RTC实时时钟的基本概念和工作原理

    在现代电子设备中,精确的时间管理和控制是至关重要的。为了实现这一功能,实时时钟(RTC, Real-Time Clock)模块被广泛应用于各种设备和系统中。RTC模块作为一个独立的定时器,能够提供
    的头像 发表于 05-27 15:43 3208次阅读

    RX-4571LC、NB、SA实时时钟模块

    RX-4571LC实时时钟模块是EPSON推出的一求款额定频率32.768KHz,接口为SPI(3-wire),月偏差为±60 s的实时时钟模块,12脚贴片,具有小尺寸,高稳定性。该款实时时钟模块
    发表于 01-31 11:46 0次下载

    Ds1307 RTC连接到CR2032电池,就会卡住的原因?

    每当我从电源向 ds1307 RTC 施加电压时,它都能正常工作,但一旦我将其连接到 CR2032 电池,它就会卡住,时间不起作用。我检查了电池的电压,它是3v,但在电阻后,ds1307 IC上提供的电压约为1.5v。因此,DS1307
    发表于 01-22 08:02

    基于51单片机的实时时钟设计

    电子发烧友网站提供《基于51单片机的实时时钟设计.rar》资料免费下载
    发表于 01-12 10:43 12次下载

    基于51单片机的实时时钟+温度应用设计

    电子发烧友网站提供《基于51单片机的实时时钟+温度应用设计.rar》资料免费下载
    发表于 01-12 10:20 0次下载

    基于51单片机的实时时钟设计

    电子发烧友网站提供《基于51单片机的实时时钟设计.rar》资料免费下载
    发表于 01-02 10:15 43次下载

    基于51单片机的实时时钟+温度应用设计

    基于51单片机的实时时钟+温度应用设计(仿真)
    发表于 01-02 09:55 6次下载

    带电池的实时时钟1338 数据表

    电子发烧友网站提供《带电池的实时时钟1338 数据表.pdf》资料免费下载
    发表于 12-21 10:47 0次下载
    带电池的<b class='flag-5'>实时时钟</b>1338 数据表

    如何在树莓派Pico上编程使用DS1302时钟模块?

    常用的计时时钟芯片有 DS1302、DS1307DS3231,各型号还有衍生型号。
    的头像 发表于 11-28 09:16 1591次阅读

    DS1302时钟模块及其驱动代码介绍

    现在流行的串行时钟电路很多,如DS1302、 DS1307、PCF8485等。这些电路的接口简单、价格低廉、使用方便,被广泛地采用。
    的头像 发表于 11-08 17:18 3776次阅读
    <b class='flag-5'>DS</b>1302<b class='flag-5'>时钟</b>模块及其驱动代码介绍

    DS1302芯片说明 DS1302实时时钟的使用

    DS1302是由美国DALLAS公司推出的具有涓细电流充电能力的低功耗实时时钟芯片。它可以对年、月、日、周、时、分、秒进行计时,且具有闰年补偿等多种功能。
    的头像 发表于 11-08 15:42 3604次阅读
    <b class='flag-5'>DS</b>1302芯片说明 <b class='flag-5'>DS</b>1302<b class='flag-5'>实时时钟</b>的使用