在这个项目中,我将讨论DS3231 RTC模块,该模块的重要组件和功能,最后向您展示如何接口DS3231实时时钟(RTC)模块与Arduino。
简介
实时时钟(Real Time Clock, RTC)是集成电路(IC)形式的计时设备,是许多时间关键应用程序和设备(如服务器、GPS、数据记录器等)的重要组成部分。
(adsense1)
我已经实现了两个项目使用实时时钟或RTC模块较早与两者8051单片机和Arduino。
有了8051,我在一个叫DS1307的项目中使用了RTC模块基于Rfid的停车系统.来到Arduino,我已经使用了相同的DS1307 RTCARDUINO闹钟而且Arduino实时时钟教程使用ds1307.如果你想要一个快速的参考,你可以通过提供的链接。
此外,在使用DS1307项目的Arduino实时时钟教程中,我已经讨论了对RTC的需求。所以,我不会再讲这方面了。我将直接跳到感兴趣的IC: DS3231 RTC IC。
DS3231 RTC IC的简要说明
DS3231是Maxim集成公司开发的RTC集成电路。它是一种低成本,非常精确的RTC IC,通过I2C接口进行通信。DS3231 RTC IC的一个有趣的特点是它集成了晶体振荡器和温度传感器,因此不需要连接外部晶体。
(adsense2)
它是SO-16包装。虽然它只需要可用的16引脚中的8引脚就可以发挥作用,但晶体的集成使IC体积更大,因此它被包装为16引脚IC而不是8引脚IC。
下图是DS3231 RTC IC的引脚图。
DS3231 IC引脚描述
接下来是DS3231 IC的引脚描述,下表给出了引脚的简单功能概述。
密码 |
销的名字 | 描述 |
1 |
32 khz | 32 khz输出 |
2 | VCC | 直流电源销 |
3. |
INT / SQW | 主动低中断或方波输出 |
4 | RST | 活性低的重置 |
5 - 12 |
数控 | 没有关系 |
13 |
接地 | 地面 |
14 | V蝙蝠 | 电池的备用电源输入 |
15 |
SDA | 串行数据I / O |
16 |
sci | 串行时钟输入 |
注意:引脚5 ~ 12为NC引脚。它们可以与GND绑定。
DS3231 RTC模块
使用DS3231 IC作为主要组件,一些制造商开发了DS3231 RTC模块与所有必要的组件。如今几乎所有可用的模块都由一个额外的IC 24C32N(或类似的东西)组成。这个辅助IC是一个32Kb大小的EEPROM IC。
由于RTC和EEPROM ic都是通过接口连接的I2C协议,你不需要任何额外的引脚,因为这两个I2C设备可以充当从机,而微控制器充当主机。
本项目使用的DS3231 RTC模块如下图所示。
由于RTC是关于保持时间不考虑电源供应,你可以连接一个3V CR2032锂电池到RTC IC保持时钟滴答。在DS3231模块中,有一个规定,你可以使用背面提供的电池座连接电池。
DS3231 RTC模块的组成和引脚
如前所述,DS3231 IC和24C32 EEPROM IC是典型DS3231 RTC模块板上的主要组件。除此之外,还有其他一些组件,如Power ON LED,一些电阻,电容,一个电池座和连接微控制器的引脚。
下图显示了DS3231 RTC模块上的组件和引脚。
DS3231 RTC模块与Arduino接口
如果您还记得一个使用MicroSD卡适配器的早期项目,我已经设置了一个简单的数据日志记录应用程序,其中传感器的数据被捕获并以文本文件的形式存储在MicroSD卡中。
通过将像DS3231这样的Real Time Clock集成到上述项目中,您可以使用准确的时间细节跟踪数据日志。
因此,将DS3231 RTC模块与Arduino对接具有众多的应用和优势。
线路图
组件的要求
- Arduino UNO
- DS3231 RTC模块
- 16×2液晶显示器
- 微型电路试验板
- 10 kΩ锅
- 连接电线
电路设计
首先,让我开始Arduino和DS3231之间的连接。由于它们之间的接口是I2C,请识别Arduino板上的I2C引脚(如果您使用的不是UNO板)。
在Arduino UNO中,A4和A5是SDA和SCL引脚。将这些引脚与DS3231模块对应的SDA和SCL引脚连接。同时,将RTC模块的VCC和GND连接到Arduino的+5V和GND。
为了查看输出,我使用了LCD模块。将LCD的RS和E引脚连接到引脚7和6上。将LCD的D4-D7与Arduino的5-2连接。
代码
我使用了一个来自Adafruit的名为“RTClib”的特殊库(它是JeeLab的RTC库的一个分叉版本)。从这链接并将解压的文件夹放在Arduino的libraries目录中。
由于通信方式是I2C,所以我也使用了“Wire”库。您不需要下载这个库,因为它与Arduino IDE集成。
工作
Arduino DS3231 RTC模块接口的工作非常简单。Arduino首先用它的从地址(DS3231 IC的0x68)初始化RTC模块。
然后,Arduino更新RTC IC的内部寄存器,显示代码编译和上传到Arduino的日期和时间。上传的日期和时间可以在液晶显示屏上查看。
如果你想让DS3231模块在断开Arduino电源后仍然保持时间,可以连接一个3V锂电池。
应用程序
- 服务器
- 数据记录器
- GPS模块
- 电表
3反应
我在职业高中教过书。用arduino-uno,试着工作。我在skech窗口中编写代码有问题。
非常感谢。
我试图运行这段代码,但它有错误。最后我意识到有wire.begin();在void设置中丢失。我添加了wire.begin();在void设置,最后我可以导出编译二进制为proteus模拟。它显示了精确的输出
wire.begin ();在void设置中丢失。试着把给定的代码加起来。我刚刚发现丢失了什么,因为它显示了一些错误。