MẠCH ĐỒNG HỒ THỜI GIAN THỰC DS1307

Trong nội dung bài viết này, họ sẽ tò mò về đồng hồ thời trang thời gian thực (RTC – Real Time Clock) và cách giao tiếp Arduino với module thời gian thực DS1307.

Bạn đang xem: Mạch đồng hồ thời gian thực ds1307

Đồng hồ thời gian thực xuất xắc RTC (Real Time Clock) là một thiết bị định thời gian, hay đượ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 có mặt trong sản phẩm 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 thực hiện ở bất kể đâu, đa số nơi phải 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 gian thực DS1307Giao tiếp Arduino với DS1307

Tại sao họ cần đồng hồ đeo tay thời gian thực (RTC)?

Mặc cho dù Arduino và đa số tất cả những bộ vi điều khiển đều phải sở hữu bộ định thời (timer) và cỗ định thời gian (hàm millis () trong trường hòa hợp Arduino) nhưng lại chúng phụ thuộc vào mối cung cấp điện, tức là chúng chỉ chuyển động khi có nguồn cung cấp. Sau khoản thời gian tắt mối cung cấp (theo cách bằng tay thủ công hoặc vày mất điện), toàn bộ bộ định tiếng được reset về 0.

Mặc dù việc định thời hạn bằng cỗ định thời tích hòa hợp sẵn được đồng ý cho những ứng dụng 1-1 giản, nhưng một trong những trường hòa hợp khác họ cần một phương án thay thế trong những ứng dụng như bộ ghi dữ liệu, đồng hồ, báo thức, v.v.. Trong số ấy bộ đếm thời gian chạy chủ quyền bất nói nguồn điện bên ngoài hoặc nếu cỗ vi tinh chỉnh (hoặc Arduino) được lập trình lại.

Khi nói đến việc áp dụng IC thời hạn thực. Hầu như tất cả các IC RTC đều là các thiết bị chiếc điện phải chăng chạy trong vô số nhiều năm trên một pin sạc lithium độc nhất vô nhị (thường là CR2032). Trong số những IC RTC phổ cập và được sử dụng phổ biến 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 thông tin thời gian lúc này (thời gian thực): giờ, phút, giây, thứ, ngày tháng, năm một cách chính xác ngay cả khi thiết bị đã biết thành tắt (ngắt điện ngoài). Tiếp xúc với vi điều khiển thông qua chuẩn I2C, với đóng mục đích là slave khi liên kết đến bus I2C này. Hoàn toàn có thể đếm thời gian theo định dạng 24 giờ đồng hồ hoặc 12 tiếng với thông tư AM/PM. Hình như bên trong chíp bao gồm bộ dò phát hiện nay 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 trong những tính năng khá nổi bật của IC RTC DS1307 được kể 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 tùy chỉnh cấu hình ngày mang lại năm 2100.Tiêu thụ điện năng thấp: loại tiêu thụ dưới 500nA khi hoạt động bằng pin.Tự động gửi sang nguồn pin trong trường vừa lòng mất điện.Đồng hồ nước 24 giờ hoặc 12 tiếng 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 gồm sẵn bên dưới dạng module, bao gồm tất cả các thành phần quan trọng như pin, đầu nối, điện trở kéo lên với tinh thể thạch anh. Một module bởi thế được sử dụng trong bài xích hướng dẫn này và được hiển thị bên dưới.

*

ChânTênChức năng
1X1Đâ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ộ dao động nội.

Xem thêm: Đổi Từ L/S Sang M3/H Sang L/S Mới Nhất 2022, Quy Đổi Từ L/S Sang M3/H

2X2
3VBATChân này được kết với rất dương sạc Lithium 3V để cấp nguồn nuôi dự phòng
4GNDChân nối đất
5SDAChân dữ liệu tiếp liền (Serial Data). Đây là chân tài liệu vào/ra của giao thức I2C. Chân này đề xuất đưa lên nguồn 5V trải qua điện trở 10kΩ
6SCLChân nguồn vào xung đồng hồ 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 đề nghị được kéo mang lại 5V thông sang 1 điện trở 10kΩ.
7SQW/OUTNgõ xuất ra xung vuông, tần số hoàn toàn có thể lập trình để đổi khác từ 1Hz, 4Khz, 8Khz, 32Khz. Nếu không được sử dụng, chân này rất có thể được thả nổi.
8VCCChân cấp nguồn chính, khoảng tầm 5VDC. Nếu VCC không có mà VBAT tất 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 với DS1307

Linh kiện phải thiết
STTTên linh kiệnSố lượng
1Arduino Uno1
2Module RTC DS13071
3LCD 16×21
4Breadboard1
5Dây cắm breadboard
6Nguồn cấp điện

Chúng ta đã tìm hiểu một chút về IC thời hạn thực DS1307. Bây giờ, họ sẽ triển khai với giao tiếp Arduino với IC thời gian thực. Như đang đề cập trước đó, module DS1307 RTC sử dụng giao tiếp I2C.

Trong mạch tiếp xúc này, vi điều khiển và tinh chỉnh Arduino luôn hoạt động như Master với DS1307 hoạt động như Slave. Master trong giao tiếp I2C, tức là Arduino trong trường phù hợp này, phụ trách về bộc lộ đồng hồ, truy cập bus, các tín hiệu start và stop.

Sơ trang bị nguyên lý

Hình hình ảnh sau đây cho thấy thêm sơ đồ gia dụng mạch giao tiếp giữa IC thời hạn thực DS1307 với Arduino. Mạch này cho biết các kết nối cơ bản liên quan đến 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 đụng của mạch

Một ứng dụng đơn giản dễ dàng trong đó Arduino UNO được tiếp xúc với module thời hạn thực DS1307 nhằm hiển thị ngày giờ lên màn hình hiển thị LCD. Trong áp dụng này, chúng ta sẽ lập trình mang đến DS1307 RTC với ngày giờ lúc này và coi liệu nó bao gồm thực sự giữ dữ liệu đó hay là không ngay cả lúc nguồn cung ứng cho Arduino bị nockout bỏ.

Một thư viện quan trọng được điện thoại tư vấn là “RTClib” được sử dụng trong chương trình. Các bạn có thể tải xuống từ liên kết này. Đảm bảo rằng thư viện được tải xuống trước cùng được cấp dưỡng cơ sở tài liệu thư viện Arduino.

Để nạp dữ liệu và thời hạn vào IC DS1307 RTC, chúng ta sẽ sử dụng một hào kiệt có sẵn trong tủ sách RTClib, vị trí Arduino sẽ thiết lập ngày cùng giờ từ máy vi tính lên ngay khi chương trình được hấp thụ vào.

Chương trình

// công tác 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<7><12> = “Sun”, “Mon”, “Tue”, “Wed”, “Thu”, “Fri”, “Sat”;

void setup ()

Serial.begin(9600);

lcd.begin(16, 2);

if (! rtc.begin())

lcd.print(“Khong the tim nắm 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ự hỗ trợ của giao tiếp đồng hồ thời trang thời gian thực cùng Arduino, chúng ta cũng có thể thực hiện một số ứ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 hợp mất điện.

Sieukeo - Kèo nhà cái trực tuyến hôm nay