Sơ Đồ Nguyên Lý Từng Khối Và Chức Năng

Một phần của tài liệu ĐỒNG HỒ LED QUAY RGB (Trang 46)

3.2.1 Khối nguồn.

Hình 3.3: Sơ đồ nguyên lý khối nguồn.

Chức năng:

Các khối xử lý trung tâm, khối thời gian thực, khối cảm biến và khối hiển thị đều dùng điện áp 5V nên khối nguồn chọn IC LM2596 để tạo ra điện áp 5V cấp cho toàn hệ thống. Ngoài ra do mạch sử dụng 32 led RGB, mỗi led tiêu tốn 30mA nếu ta cho sáng 3 màu, vậy 32 led ta cần gần 1A, ngoài ra còn dóng tiêu thụ cho điện trở, IC, VĐK đó là lí do nhóm chọn IC nguồn LM2596 mà không dùng IC nguồn 7805. IC NGUỒN 7805 dòng ra khá nhỏ, với linh kiện dán thì chỉ khoản 500mA không đủ đáp ứng cho toàn mạch. Trong khi LM2596 với dòng ngõ ra 3A đủ để cung cấp cho toàn hệ mạch.

Khi cấp nguồn lên cho mạch đang quay hệ thống truyền điện không dây, nhưng không thể tránh khỏi việc điện áp không được cấp lên mạch liên tục, vì vậy tụ điện C1 có nhiệm vụ bù đắp điện áp cho mạch. Tụ C2 ổn định điện áp. Diode bảo vệ mạch. Ngõ vào của mạch bridge diode được kết nối vời ngõ ra của mạch truyền điện không dây.

3.2.2 Khối thời gian thực

Chức năng

IC DS1307 là đồng hồ thời gian thực giao tiếp I2C với IC ATmega32A, được ghép nối thạch anh 32Mhz cho phép đồng hồ chạy chính xác. IC DS1307 được kết nối với một pin 3V để đảm bảo đồng hồ không chạy sai khi không được cấp nguồn trực tiếp. DS1307 cho phép nhập lại thời gian. Điện trở R6, R7 là hai điện trở kéo lên 4K7.

3.2.3 Khối Eeprom.

Hình 3.4: Sơ đồ nguyên lý khối thời gian thực ds1307

Chức năng:

Khối Eeprom giao tiếp theo chuẩn I2C (như hình 3.5), nó được dùng để lưu dữ liệu từ vi điều khiển và xuất ra khi cần. Eeprom lưu được dữ liệu khi bị mất điện nên dùng để lưu Text. Vậy nên khi mất điện dữ liệu text được nhập trước đó vẫn không bị mất. Bộ nhớ của Eeprom đến 16Kb, do vậy số ký tự lưu được cũng khá lớn.

Trong giao tiếp I2C cho phép kết nối nhiều thiết bị, trong mạch chúng ta thì có 2 thiết bị cùng được kết nối là DS1307 và EEPROM . Các thiết bị được kết nối đều có 1 địa chỉ cố dịnh cho riêng mình gọi là Device Address . Và các thiết bị được kết nối có thể đóng vai trò là 1 thiết bị chủ (master) hoặc thiết bị tớ (slave), nhưng khi thiết bị kết nối là EEPROM thì thiết bị này luôn là slave, vì chúng không có ý nghĩa khi là 1 master.

Ở đây EEPROM được dùng là loại 16Kb vậy nên địa chỉ giao tiếp được xác định như đã nói ở trên. Khi EEPROM nhận được yêu cầu giao tiếp từ VĐK, EEPROM sẽ xác định là đọc hay ghi. Nếu được yêu cầu ghi EEPROM sẽ xóa dữ liệu củ và ghi dữ liệu mới, khi được yêu cầu là đọc thì EEPROM sẽ gởi dữ liệu về VĐK để hiển thị.

3.2.4 Khối cảm biến.

Hình 3.6: Sơ đồ nguyên lý khối cảm biến

Trên thị trường hiện nay có sự đa dạng về các loại cảm biến dùng để đo nhiệt độ và độ ẩm cả về số và tương tự. DHT11 cũng là 1 trong những lại cảm biến như vậy nhưng nó tích hợp có thể đo được cả nhiệt độ cả độ ẩm, giá cả cũng khá rẻ vậy nên nhóm chọn loại cảm biến này.Về nguyên lý giao tiếp thì nhóm đã trình bày ở chương 2. Ở đây DHT11 nhận nhiệm vụ đọc dữ liệu nhiệt độ và độ ẩm từ môi trường theo giao tiếp one-wire ( kết nối như hình 3.6), sau đó khi có yêu cầu, thông tin sẽ được gửi về cho VĐK. Nhận được giá trị nhiệt độ và độ ẩm, khi ở chế độ được chọn để hiển thị thông tin về nhiệt độ, độ ẩm thì dữ liệu sẽ được đưa ra ngoài.

Để xác định đúng được vị trí khởi đầu để bắt đầu hiển thị lại thông tin cho 1 chu trình hiện nay người ta vẫn dùng phương pháp thu phát hồng ngoại, song nhóm chọn phương pháp dùng cảm biến Hall (kết nối như hình 3.6), vì về cơ bản nó nhỏ gọn hơn rất nhiều, chỉ cần 1 cảm biến và 1 nam châm gắn bên dưới. Cảm biến Hall có tác dụng sau mỗi vòng quay, đến một vị trí cố định sẽ tạo ra một ngắt báo cho vi điều khiển biết đó là toạ độ gốc, từ đó vi điều khiển ATmega32A sẽ xuất lại dữ liệu từ điểm gốc. Ngay khi khởi động hay trong quá trình quay không tránh khỏi những trường hợp tốc độ không đều làm cho việc hiển thị thông tin không được chính xác như các vị trí mong muốn. Khi đó cảm biến hall đóng 1 vai trò rất quan trọng, trong mạch trên số cột hiển thị là 240 cột, thì khi quay mạch sẽ đến xem số cột thực tế khi quay hết 1 vòng tính từ khi bắt đầu đến khi xảy cảm biến hall tạo ngắt, thì VĐK sẽ so sánh và tính toán để tăng hay giảm khoản thời gian chênh lệnh sau mỗi cột để mạch được ổn định và thông tin hiển thị đúng được như vị trí mong muốn nhất.

3.2.5. Khối xử lí trung tâm

Khối xử lý trung tâm (như hình 3.7) sẽ nhận tín hiệu hay đọc thông tin từ các cảm biến Hall, cảm biến DHT11, từ PIC12F629, EEPROM để xử lý, điều khiển hiển thị, hay đưa thông tin dữ liệu cần hiển thị ra khối hiển thị. Đây chính là bộ não của hệ thống, nó thực hiện toàn bộ các công việc để có thể đưa thông tin cần hiển thị ra khối hiển thị vậy nên có thể xem đây là khối quan trọng nhất. Tại đây thông tin xử lý do người lập trình viết để điều khiển như mong muốn.

Hình 3.7: Sơ đồ nguyên lý khối xử lý trung tâm 3.2.6 Khối phát-thu hồng ngoại

Chúng ta có thể sử dụng IC BL9148 phát hồng ngoại cho 4 nút và IC BL 9149 để thu và giải mã. Song vì kết nối rườm rà, tồn nhiều không gian mà led quay cần 1 mạch nhỏ. Vậy nên nhóm chọn phát tín hiệu sẽ là 1 remote có sẵn ngoài thị trường (như hình 3.8) với giá cả cũng rất rẻ và dễ dàng mua thay thế. Song lại mang tính thẩm mỹ cao.

Hình 3.9: Khối giải mã tín hiệu từ remote

Để giải mã tín hiệu từ remote nhóm em sử dụng mắt thu hồng ngoại 3 chân kết nối với Pic12f629 (như hình 3.9) để giải mã. Bốn chân ra của Pic12f629 được kết nối vào 4 chân của ATmega.

 Nguyên lý hoạt động:

Muốn giải mã được mỗi nút trên remote đầu tiên chúng ta phải hiểu được nguyên lý mã hóa dữ liệu của loại remote này, sau đó xác định khung truyền dữ liệu (Như hình 3.10) của từng nút nhấn, vì mỗi nút sẽ được mã hóa khác nhau. Khi mỗi nút được nhấn xung start bắt đầu với mức thấp là 9ms và mức cao là 4ms. Tiếp theo bit start sẽ là 8 bit mức thấp và 8 bit mức cao, ngay sau 16bit trên sẽ là 16 bit quy định cho mỗi nút nhấn, nút khác nhau sẽ có khung dữ liệu khác nhau. Vậy sẽ có 32 bit được xem xét cho 1 nút được nhấn. Xong ở đây bit 0 và 1 sẽ được mã hóa theo kiểu thời gian mức cao và mức thấp. Ứng với bit ‘0’ được định nghĩa thời gian mức thấp khoảng 700us và cao là 500us, bit ‘1’ là 700us cho mức thấp và 1600us cho mức cao. Đễ dễ dàng cho việc giải mã ta chỉ cần xem xét thời gian mức cao của mỗi loại bit.

Khối giải mã remote dùng led thu hồng ngoại 3 chân (như hình 3.9). Ngõ ra data của led thu sẽ được nối vào chân ngắt ngoài của Pic12f629. Vậy nên khi 1 nút được nhấn sẽ xảy ra sự kiện ngắt, khi có ngắt pic12f629 sẽ kiểm tra xem có đúng là start hay không, nếu đúng thì kiểm tra 16 bit đầu tiên đó dùng khung truyền cho loại remote này, nếu đúng sẽ kiểm tra xem nút nào được nhấn rồi xuất mức 1 ngõ ra tương ứng, sau đó ta delay 1 khoảng thời gian rồi đưa ngõ ra Pic12f629 về lại mức thấp và chờ lần nhấn tiếp theo. Vậy nên khi nhận được tín hiệu mức cao từ Pic12f629, ATmega sẽ kiểm tra xem nút nào đã được nhấn và thực hiện chức năng tương ứng với nút đó.

3.2.7. Khối hiển thị

 Nguyên lý hoạt động:

Led RGB là 1 con led nhưng thực chất bên trong là 3 led ứng với 3 màu red, green và blue. Nhóm chọn loại led anode chung, mỗi led có 4 chân, 1 chân chung được nối nguồn, 3 chân còn lại được dùng để điểu khiển, khi cấp mức 0 cho chân nào thì led sẽ sáng với màu tương ứng. Từ 3 màu cơ bản ta có thể phối thành rất nhiều màu khác nhau. Chân chung sẽ cấp nguồn, 3 chân màu sẽ được kết nối với trở, trở có giá trị theo datasheet để có thể phối màu.

Chương trình do chúng ta lập trình, để hiển thị được những thông tin như mong muốn, ta phải xác định được tại cột nào dữ liệu nào được xuất ra tức là led nào được sáng, led nào được tắt. Vậy nên khi led quay đến cột nào thì hệ thống 32 led RGB sẽ nhận dữ liệu từ VĐK xuất ra dữ liệu tương ứng và màu tương ứng do người dùng chọn. Vì hệ thống quay nhanh, do hiện tượng lưu ảnh trên mắt nên mắt ta thấy gần như liên tục.

3.2.8. Khối truyền dữ liệu

 Nguyên lý truyền dữ liệu (sơ đồ như hình 3.12)

IC 75HC595 là 1 loại IC dùng dịch dữ liệu nối tiếp sang song song, dữ liệu ngõ vào được dịch khi có xung chân SCK, nhưng dữ liệu sau khi dịch được lưu bên trong và dữ liệu chỉ được xuất ra các ngõ Q khi có xung ngõ vào chân RCK.

Mười hai IC7HC595 sẽ được chia làm 3 nhóm. Mỗi nhóm 4 IC được mắc nối tiếp với nhau để tạo ra 1 chuỗi dữ liệu cho 32 led RGB. Chân nhận dữ liệu và chân xung Ck của các nhóm được nối chung với nhau, để dảm bảo rằng khi dữ liệu được dịch vào cả 3 nhóm đều nhận được dữ liệu. Các chân RCK được nối riêng nhau của mỗi nhóm, đây cũng chính là các chân sẽ được dùng để điều khiển màu cho led quay. Khi mạch hoạt đồng VĐK sẽ xử lý màu đang được chọn để tạo 1 xung cho chân RCK xuất dữ liệu nhóm 4IC ra ngoài, tùy vào các màu khác nhau mà có thể phối hợp xuất các nhóm cùng với nhau hoặc đơn lẻ để tạo ra màu như đã chọn. Ở đây khi dữ liệu ngõ ra của 74HC595 mức ‘0’ sẽ làm led sáng và ngược lại

Hình 3.1 2: Sơ đồ ngu y ên lý kh ối tru y ền d ữ li ệu 74HC595

3.3. Sơ đồ mạch in.

 Như Hình 3.13 và Hình 3.14 là sơ đồ mạch in mặt top và bottom của sản phẩm. Linh kiện được sử dụng phần lớn là linh kiện dán vì để giúp giảm kích thước của mạch. Các lổ khoan lớn trên mạch ở 2 bên được dùng để cân cho mạch khi quay.

Hình 3.13: Sơ đồ mạch in mặt top.

CHƯƠNG 4: XÂY DỰNG LƯU ĐỒ ĐIỀU KHIỂN

4.1. Xây dựng ý tưởng cho sản phẩm.

Để có thể dễ hiểu cho cả lưu đồ chương trình chính và chương trình con, nhóm xin trình bày 1 cách tổng quan về cách xây dựng chương trình hoạt động cho sản phẩm.

Hình 4.1: Mô tả mối liên hệ các phân lớp.

Về sản phẩm nhóm xây dựng có 3 phân lớp hoạt động là: class1, class2, class3. Các phân lớp có mối liên hệ như Hình 4.1, tương ứng với 3 phân lớp sẽ có 3 giao diên chính tương ứng. Để điều khiển thay đổi, chỉnh sửa cho sản phẩm, nhóm sẽ sử dụng remote để thay đổi. Trên remote nhóm dùng 4 nút để điều khiển và đặt tên là menu_key, select_key, right_key, left_key. Để chuyển sự qua lại giữa các phân lớp ta có thể xem mô tả trên hình 4.1.

Class1: Đây là phân lớp đầu tiên và là giao diện hiển thị chính của sản phẩm. Như

hình 4.2 ở class 1 sẽ có 5 giao diện hiển thị, mỗi chế độ sẽ hiển thị 1 thông tin khác nhau. Để có sự chuyển đổi giữa các chế độ ta sử dụng 2 phím chính là right_key và left_key. Tại phân lớp class 1 chúng ta có thể thực hiện thay đổi màu bằng phím select_key, và sẽ có 7 màu cho chúng ta chọn.

Class 2: Tại Class 2 đây là 1 giao diện để chọn các thông tin mà ta cần chỉnh sửa. Để

chuyển đổi giữa các sữ lựa chọn chỉnh sửa ta sử dụng 2 nút left_key và right_key để chuyển.

Class 3: Đây là nơi để chỉnh sửa thời gian, nhập text... Sau khi lựa chọn thông tin cần

chỉnh sửa tại Class 2, ta nhấn phím menu_key để chuyển từ Class2 sang Class 3. Tại class 3 ta có thể thực hiện đặt lại thời gian cho Ds1307, đặt thời gian báo thức, chọn chế độ tự động, hay nhập kí tự

4.2. Lưu đồ chương trình chính.

Như Hình 4.2a và Hình 4.2b là toàn bộ lưu đồ cho chương trình chính cho 1 lần chạy. Để hiểu rõ xin giải thích ý nghĩa 1 số biến. Biến random_mode kiểm tra chúng ta đang chọn chương trình chuyển tự động hay chuyển thủ công bằng remote. Biến h_alr và m_alr lưu giá trị giờ và phút hẹn giờ. Menu_edit là biến kiểm tra mạch đang ở phân lớp nào, hay vị trí nào trong phân lớp 3. Biến selection_edit kiểm tra đang ở mục chỉnh sửa nào trong Class 2. Mode dùng để kiểm tra sẽ hiện thị thông tin gì ở Class1. Lưu đồ chương trình chính thực hiện đọc thời gian thực từ Ds1307, kiểm tra chế độ tự động hay thủ công, kiểm tra đúng giờ hẹn hay chưa, và kiểm tra mạch đang ở phân lớp nào. Nếu là Class 1 sẽ hiển thị thông tin và màu tương ứng được chọn, sau đó kiểm tra xem có nút nào được nhấn không, nếu có nút được nhấn sẽ thực hiện chức năng nút đó. Nếu khi mạch chuyển sang Class 2, Class 3 thì gọi chương trình con của Class 2, Class3 tương ứng ra thực hiện.

Chương trình con C1_change_color (lưu đồ Hình 4.3) là chương trình thực hiện đổi màu khi nhấn phím select_key, ở đây có 7 màu cho ta thay đổi. Chương trình con C1_increase_mode (lưu đồ như Hình 4.4a) làm tăng biến mode khi nhấn nút right_key, biến mode là biến xem thử ta đang chọn thông tin gì cần hiển thị ở Class1. Chương trình con C1_reduce_mode (lưu đồ như Hình 4.4b) làm giảm biến mode khi nhấn nút left_key. Bên dưới Hình 4.5 là hình thực hiện kiểm tra vị trí mà ta đang muốn chỉnh sửa, các vị trí tăng hay giảm phụ thuộc vào ta nhấn left_key hay right_key. Nếu đến vị trí nào muốn chỉnh sửa ta nhấn phím menu_key thì giao diện Class 3 mở ta cho ta chỉnh sửa thông tin ta cần thay đổi. Chương trình con C3_fix_time (lưu đồ như Hình 4.6) thực hiện thay đổi thời gian giờ phút giây, sự tăng giảm được thay đổi bằng nút left_key và right_key. Các chương trình con như thay đổi ngày tháng, hay nhập giờ hẹn được thực hiện tương tự nên nhóm không trình bày thêm.

(a) (b)

Hình 4.4a: Chương trình con

C1_increase_mode

Hình 4.4b: Chương trình con

BEGIN

Thiết lập chân DATA là ngõ ra, DATA=0 Delay 18ms, DATA = 1

Thiết lập chân DATA là ngõ vào Delay 26us

DATA = 0

Delay 80us

DATA = 1

Không giao tiếp được Lấy 5byte giá trị

Kiểm tra mã checksum

End

S

S

Đ Đ

Hình 4.8: Chương trình con đọc dữ liệu DHT11.

Chương trình ngắt (lưu đồ như Hình 4.7) thực hiện ngắt ngoài và có 2 timer. Ngắt ngoài xảy ra khi thanh led quay đến tọa độ điểm gốc tại nơi có gắn nam châm. Các chương trình ngắt ngoài và timer thực hiện đưa dữ liệu ra mỗi côt, đếm và tính toán để có giá trị trì hoãn sau mỗi cột là chính xác nhất. Chương trình đọc dữ liệu DHT11 như Hình 4.8, về chi tiết đã được nói đến ở Chương II.

CHƯƠNG 5: THI CÔNG

5.1. Hàn linh kiện lên PCB.

Hình 5.1: Mạch PCB sau khi gắn và hàn linh kiện

Một phần của tài liệu ĐỒNG HỒ LED QUAY RGB (Trang 46)