Trong nội dung bài viết này, chúng ta sẽ khám phá về đồng hồ thời gian thực (RTC – Real Time Clock) và cách tiếp xúc Arduino với module thời gian thực DS1307.
Bạn đang đọc: Ic thời gian thực ds1307
Đồng hồ thời hạn thực tuyệt RTC (Real Time Clock) là một thiết bị định thời gian, thường được chế tạo dưới dạng IC. IC RTC chạy bởi pin cùng theo dõi thời gian hiện tại trong cả khi không có điện.
IC đồng hồ đeo tay thời gian thực xuất hiện trong trang bị tính, máy chủ (server), các khối hệ thống nhúng với trên thực tế, chúng được áp dụng ở bất cứ đâu, phần nhiều nơi yêu cầu thông tin thời gian chính xác.
Nội dung bài xích viết
Giới thiệu IC thời hạn thực DS1307Giao tiếp Arduino với DS1307Tại sao họ cần đồng hồ thời gian thực (RTC)?
Mặc cho dù Arduino và phần đông tất cả các bộ vi điều khiển đều có bộ định thời (timer) và cỗ định thời hạn (hàm millis () vào trường hòa hợp Arduino) tuy thế chúng phụ thuộc vào nguồn điện, có nghĩa là chúng chỉ hoạt động khi có nguồn cung cấp. Sau khoản thời gian tắt nguồn (theo cách bằng tay hoặc vì mất điện), tất cả bộ định tiếng được reset về 0.
Mặc dù việc định thời hạn bằng bộ định thời tích phù hợp sẵn được gật đầu cho các ứng dụng đối chọi giản, nhưng một vài trường đúng theo khác bọn họ cần một chiến thuật thay thế trong các ứng dụng như bộ ghi dữ liệu, đồng hồ, báo thức, v.v.. Trong những số ấy bộ đếm thời hạn chạy độc lập bất đề cập nguồn điện phía bên ngoài hoặc nếu bộ vi điều khiển và tinh chỉnh (hoặc Arduino) được xây dựng lại.
Khi nói đến việc sử dụng IC thời hạn thực. Phần lớn tất cả các IC RTC phần lớn là các thiết bị loại điện tốt chạy trong nhiều năm trên một sạc lithium độc nhất vô nhị (thường là CR2032). Trong những IC RTC phổ biến và được sử dụng phổ cập nhất là DS1307.
Giới thiệu IC thời hạn thực DS1307
IC thời hạn thực (RTC) DS1307 gồm chức năng đưa tin thời gian hiện tại (thời gian thực): giờ, phút, giây, thứ, ngày tháng, năm một cách đúng chuẩn ngay cả khi thiết bị đã bị tắt (ngắt năng lượng điện ngoài). Tiếp xúc với vi điều khiển và tinh chỉnh thông qua chuẩn I2C, cùng đóng sứ mệnh là slave khi liên kết đến bus I2C này. Có thể đếm thời hạn theo format 24 giờ hoặc 12 tiếng với chỉ thị AM/PM. Bên cạnh đó bên trong chíp gồm bộ dò phát hiện tại mất mối cung cấp và auto chuyển sang thực hiện nguồn pin sạc dự phòng. Một số tính năng rất nổi bật của IC RTC DS1307 được đề cập dưới đây.
Lưu trữ và hỗ trợ các thông tin thời gian thực:ngày, tháng, năm, giờ, phút, giây,…Khả năng cấu hình thiết lập ngày mang đến năm 2100.Tiêu thụ năng lượng điện năng thấp: chiếc tiêu thụ dưới 500nA khi hoạt động bằng pin.Tự động gửi sang nguồn pin vào trường hợp mất điện.Đồng hồ nước 24 giờ hoặc 12 giờ đồng hồ với chỉ báo AM/PM.Sử dụng chuẩn chỉnh giao tiếp I2C.Download datasheet DS1307 tại đây.
RTC DS1307 có sẵn dưới dạng module, bao hàm tất cả những thành phần quan trọng như pin, đầu nối, năng lượng điện trở kéo lên và tinh thể thạch anh. Một module do vậy được thực hiện trong bài hướng dẫn này với được hiển thị bên dưới.
Chân | Tên | Chức năng |
1 | X1 |
Đây là những chân liên kết với thạch anh tần số 32.768 KHz nhằm kích hoạt bộ giao động nội.
Xem thêm: cách fix lỗi bug splat lol |
2 | X2 | |
3 | VBAT | Chân này được kết với cực dương pin sạc Lithium 3V để cung cấp nguồn nuôi dự phòng |
4 | GND | Chân nối đất |
5 | SDA | Chân dữ liệu thông liền (Serial Data). Đây là chân dữ liệu vào/ra của giao thức I2C. Chân này yêu cầu đưa lên nguồn 5V thông qua điện trở 10kΩ |
6 | SCL | Chân đầu vào xung đồng hồ thời trang nối tiếp (Serial Clock). Đây là chân ngõ vào xung nhịp của giao thức I2C. Chân này cũng phải được kéo mang lại 5V thông qua một điện trở 10kΩ. |
7 | SQW/OUT | Ngõ xuất ra xung vuông, tần số hoàn toàn có thể lập trình để biến đổi từ 1Hz, 4Khz, 8Khz, 32Khz. Còn nếu như không được sử dụng, chân này hoàn toàn có thể được thả nổi. |
8 | VCC | Chân cấp nguồn chính, khoảng 5VDC. Nếu như VCC không tồn tại mà VBAT có thì DS1307 vẫn hoạt động thông thường nhưng không ghi cùng đọc được dữ liệu. |
Giao tiếp Arduino cùng với DS1307
Linh kiện cần thiếtSTT | Tên linh kiện | Số lượng |
1 | Arduino Uno | 1 |
2 | Module RTC DS1307 | 1 |
3 | LCD 16×2 | 1 |
4 | Breadboard | 1 |
5 | Dây cắn breadboard | |
6 | Nguồn cung cấp điện |
Chúng ta đã tò mò một chút về IC thời hạn thực DS1307. Bây giờ, chúng ta sẽ thực hiện với tiếp xúc Arduino với IC thời hạn thực. Như đã đề cập trước đó, module DS1307 RTC sử dụng giao tiếp I2C.
Trong mạch giao tiếp này, vi điều khiển Arduino luôn vận động như Master và DS1307 vận động như Slave. Master trong giao tiếp I2C, tức là Arduino trong trường thích hợp này, phụ trách về dấu hiệu đồng hồ, truy vấn bus, các tín hiệu start và stop.
Sơ đồ dùng nguyên lýHình ảnh sau đây cho thấy thêm sơ thứ mạch tiếp xúc giữa IC thời hạn thực DS1307 cùng Arduino. Mạch này cho biết thêm các liên kết cơ bản liên quan cho module DS1307 (một board mạch chứa IC DS1307 cùng rất thạch anh, pin, năng lượng điện trở kéo lên, ..).
Hoạt rượu cồn của mạchMột ứng dụng đơn giản trong đó Arduino UNO được tiếp xúc với module thời gian thực DS1307 nhằm hiển thị ngày giờ lên màn hình LCD. Trong áp dụng này, họ sẽ lập trình cho DS1307 RTC cùng với ngày giờ hiện tại và coi liệu nó có thực sự giữ tài liệu đó hay không ngay cả khi nguồn hỗ trợ cho Arduino bị nockout bỏ.
Một thư viện đặc biệt được điện thoại tư vấn là “RTClib” được sử dụng trong chương trình. Các chúng ta cũng có thể tải xuống từ link này. Đảm nói rằng thư viện được mua xuống trước cùng được phân phối cơ sở dữ liệu thư viện Arduino.
Để nạp dữ liệu và thời hạn vào IC DS1307 RTC, bọn họ sẽ thực hiện một kỹ năng có sẵn trong tủ sách RTClib, vị trí Arduino sẽ sở hữu ngày và giờ từ laptop lên ngay khi chương trình được nạp vào.
Chương trình// lịch trình hiển thị thời hạn thực bên trên LCD cần sử dụng module RTC DS1307
#include
#include
#include “RTClib.h”
RTC_DS1307 rtc;
LiquidCrystal lcd(7, 6, 5, 4, 3, 2); // (rs, e, d4, d5, d6, d7)
char daysOfTheWeek = “Sun”, “Mon”, “Tue”, “Wed”, “Thu”, “Fri”, “Sat”;
void thiết đặt ()
Serial.begin(9600);
lcd.begin(16, 2);
if (! rtc.begin())
lcd.print(“Khong the tim nỗ lực RTC”);
while (1);
if (! rtc.isrunning())
lcd.print(“RTC khong hoat dong!”);
rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
//rtc.adjust(DateTime(2014, 1, 21, 3, 0, 0));
void loop ()
DateTime now = rtc.now();
lcd.setCursor(0, 1);
lcd.print(now.hour());
lcd.print(‘:’);
lcd.print(now.minute());
lcd.print(‘:’);
lcd.print(now.second());
lcd.print(” “);
lcd.setCursor(0, 0);
lcd.print(daysOfTheWeek);
lcd.print(” ,”);
lcd.print(now.day());
lcd.print(‘/’);
lcd.print(now.month());
lcd.print(‘/’);
lcd.print(now.year());
Ứng dụng
Với sự giúp sức của giao tiếp đồng hồ đeo tay thời gian thực và Arduino, bạn cũng có thể thực hiện một trong những ứng dụng tương quan đến ghi dữ liệu, báo thức, đồng hồ, v.v.Vì module RTC DS1307 được hỗ trợ cấp nguồn bằng pin cho nên nó sẽ tiếp tục bảo trì thời gian ngay cả trong trường đúng theo mất điện.