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产品页面
示意图
构造打印


面对Facebook的不断打压,Snapchat可谓在夹缝中生存
一加8T手机的外观设计细节详解
中芯国际推出1.2伏(V)低功耗嵌入式EEPROM的平台
广告主喜欢的ar广告案例
全双工传输,全双工传输原理是什么?
DS1307实时时钟分线板套件的使用
洲明科技:预计从第三季度开始Mini LED的价格优势会逐步显现出来
英伟达:GPU虚拟化“风口”来临 VDI+vGPU会是桌面云应用的主流
无线充电相关原理的深层次解析
怎样通过改变寄存器中的内容实现对CPU的控制呢?
三星 Galaxy S8 3月量产,4月备货达1千万支
F2640A/08数据采集记录仪的性能特性及特点分析
基于80C188微处理器和耦合模式实现ISA卡的ISDN接口的软硬件设计
科创板分立器件第一股,银河微电正式在上交所科创板挂牌上市
常用音乐集成电路
英特尔、鸿海双强联手拼5G
又一SiC车型上市,首发订单破10000辆
英特尔MID的理想与现实
工控机为提升其散热性能都有哪些方法
4月11日新款MateBook X Pro“冲刺来见”,你准备好了吗?