5. Ổn định điện áp
3.3. Khối xử lý trung tâm (Vi điều khiển)
Để đảm bảo các yêu cầu như đã phân tích về vi điều khiển, tôi lựa chọn vi điều khiển PIC 16F877A để làm vi điều khiển trung tâm cho toàn bộ mạch. PIC viết tắt của “Programmable Intelligent Computer”, là một họ vi điều khiển RISC được sản xuất bởi công ty Microchip Technology. Một số đặc tính của vi điều khiển PIC có thể kể đến như sau [4]:
Là CPU 8/16 bit, xây dựng theo kiến trúc Harvard có sửa đổi
62
Có các cổng xuất – nhập (I/O ports)
Có timer 8/16 bit.
Có các chuẩn giao tiếp nối tiếp đồng bộ/ không đồng bộ USART
Có các bộ chuyển đổi ADC 10/12 bit
Có các bộ so sánh điện áp (Voltage Comparators)
Có các khối Capture/ Compare/ PWM
Hỗ trợ giao tiếp LCD
Hỗ trợ giao tiếp I2C, SPI và I2S
Có bộ nhớ nội EEPROM
Hỗ trợ giao tiếp USB, Ethernet
Vài nét về vi điều khiển PIC 16F877A
PIC 16F877A nằm trong dòng sản phẩm PIC 16F87XA của hãng Microchip, ngoài ra còn có các vi điều khiển 16F873A, 16F874A, 16F876A [10]. Sự khác biệt giữa các dòng sản phẩm này có thể thấy qua bảng sau:
Bảng 3.1: So sánh tính năng các dòng sản phẩm PIC 16 F87XA
Đặc điểm PIC 16F873A PIC 16F874A PIC 16F876A PIC 16F877A Tần số hoạt động 20 MHz 20 MHz 20 MHz 20 MHz Bộ nhớ Flash (chuỗi 14 bit) 4K 4K 8K 8K Bộ nhớ trong (byte) 192 192 368 368 Bộ nhớ EEPROM (btye) 128 128 256 256 Ngắt 14 15 14 15 Cổng I/O Cổng A,B,C Cổng A,B,C,D,E Cổng A,B,C Cổng A,B,C,D,E Bộ định thời/đếm 3 3 3 3
63 Module
PWM/Capture/So sánh
2 2 2 2
Giao tiếp Serial MSSP, USART MSSP, USART MSSP, USART MSSP, USART
Giao tiếp Parallel - PSP - PSP
Module chuyển đổi A/D 10 bit
5 kênh 8 kênh 5 kênh 8 kênh
Bộ so sánh tương tự 2 2 2 2
PIC 16F 877A được thiết kế dưới dạng chân cắm (DIP) 40 chân hoặc chân dán (SMD) 44 chân. Trong phạm vi luận văn, tôi sử dụng dạng chân cắm 40 chân. Sơ đồ chân như sau:
64
65
Hình 3.6: Sơ đồ khối PIC 16F887A
Vi điều khiển PIC 16F877A làm vi điều khiển trung tâm cho toàn bộ mạch làm việc hệ thống của tủ.
66
Khối ADC trong PIC 16F877A
Như đã trình bày ở chương 2, điện áp sau khi được xử lý sẽ được đưa vào bộ ADC để chuyển sang giá trị số giúp vi điều khiển có thể đọc được. Do trong PIC 16F877A tích hợp sẵn khối ADC nên khối xử lý tín hiệu đầu vào không cần một bộ ADC ngoài mà có thể đưa tín hiệu trực tiếp vào trực tiếp vi điều khiển.
Module chuyển đổi A/D của PIC 16F887A gồm 8 kênh, mỗi kênh 10 bit. Có thể thiết lập điện áp tham chiếu mức cao và mức thấp cho mỗi bộ A/D thông qua việc kết hợp chân RA2 và RA3. Các bộ chuyển đổi A/D có thể hoạt động khi Vi điều khiển trong trạng thái nghỉ (Sleep), để làm được điều này, đồng hồ A/D cần được thiết lập từ bộ dao động nội RC của bộ A/D.
Module chuyển đổi A/d gồm 4 thanh ghi: - Thanh ghi kết quả mức cao (ADRESH) - Thanh ghi kết quả mức thấp (ADRESL) - Thanh ghi điều khiển 0 (ADCON0) - Thanh ghi điều khiển 1 (ADCON1)
Thanh ghi ADCON0 làm nhiệm vụ điều khiển hoạt động bộ A/D, trong khi đó thanh ghi ADCON1 làm nhiệm vụ thiết lập các chân vi điều khiển tham gia vào quá trình chuyển đổi. Những chân này có thể thiết lập là cổng vào tín hiệu tương tự hoặc cổng vào/ra tín hiệu số.
Thanh ghi ADCON0 :
R/W – 0 R/W – 0 R/W – 0 R/W – 0 R/W – 0 R/W – 0 U–0 R/W–0
ADCS1 ADCS0 CHS2 CHS1 CHS0 GO/ - ADON
Bảng Thanh ghi ADCON0 (địa chỉ 0x1F) o ADCS1,ADCS0: Các bit thiết lập đồng hồ chuyển đổi A/D
Bảng 3.3: Tần số chuyển đổi ứng với giá trị các bit
ADCON1 <ADCS2> ADCON0 <ADCS1:ADCS0> Tần số chuyển đổi 0 00 Fosc/2
67 0 01 Fosc/8 0 10 Fosc/32 0 11 FRC (đồng hồ dao động nội bộ A/D) 1 00 Fosc/4 1 01 Fosc/16 1 10 Fosc/64 1 11 FRC (đồng hồ dao động nội bộ A/D)
o CHS2 – CHS0: Các bit lựa chọn kênh chuyển đổi A/D
o GO/ : Bit thể hiện quá trình chuyển đổi A/D, mức 1 ứng với bộ
chuyển đổi A/D đang trong quá trình hoạt động, mức 0 ứng với bộ chuyển đổi đã thực hiện xong.
o ADON: Bit thể hiện bộ chuyển đổi A/D có hoạt động hay không
Thanh ghi ADCON1 (Địa chỉ 0x9F):
Bảng 3.4: Thanh ghi ADCON1
R/W – 0 R/W – 0 U – 0 U – 0 R/W – 0 R/W – 0 R/W – 0 R/W – 0
ADFM ADCS2 - - PCFG3 PCFG2 PCFG1 PCFG0
o PCFG3 – PCFG0: Các bit thiết lập chế độ hoạt động các chân chuyển đổi
A/D:
Các bước chuyển đổi A/D như sau: Thiết lập bộ chuyển đổi A/D:
o Thiết lập chân và mức điện áp tham chiếu o Thiết lập kênh chuyển đổi A/D
o Thiết lập đồng hồ chuyển đổi A/D o Bật bộ chuyển đổi ADC.
Thiết lập ngắt A/D (nếu cần) o Xóa bit ADIF
68 o Thiết lập bit ADIF
o Thiết lập bit PEIE o Thiết lập bit GIE
Đợi thời gian thu nhận tối thiểu Bắt đầu quá trình chuyển đổi:
o Thiết lập bit GO/
Đợi cho quá trình chuyển đổi ADC kết thúc bằng 1 trong 2 cách sau: o Đợi bit GO/ chuyển về mức 0 (không thiết lập ngắt) o Đợi ngắt A/D.
Đọc kết quả chuyển đổi A/D trên 2 thanh ghi ADRESH, ADRESL. Xóa bit ADIF nếu cần.
Hình 3.8: Sơ đồ chuyển đổi A/D
Thời gian chuyển đổi 1 bit A/D được gọi là TAD. Bộ chuyển đổi A/D yêu cầu ít nhất 12 lần giá trị TAD để chuyển đổi toàn bộ 10 bit giá trị. Các lựa chọn cho TAD bao gồm:
69 2 TOSC 4 TOSC 8 TOSC 16 TOSC 32 TOSC 64 TOSC
Sử dụng dao động nội của bộ chuyển đổi A/D (từ 2 đến 6 µs)
Để chuyển đổi chính xác A/D, thời gian TAD cần phải lớn hơn 1.6 µs. Dựa vào đây chúng ta có thể lựa chọn tần số dao động của vi điều khiển phù hợp
Hình 3.97: Tần số dao động tối đa của vi điều khiển tương ứng với thời gian chuyển đổi A/D
. Một số thiết lập để cấu hình bộ chuyển đổi A/D
Setup_ADC (mode): dùng để xác định cách thức hoạt động bộ biến đổi
ADC như bật/ tắt ADC, thiết lập thời gian lấy mẫu, …
Setup_ADC_ports (value): xác định chân lấy tín hiệu analog và
điện thế chuẩn Vref sử dụng.
Set_ADC_channel (channel): xác dịnh chân để đọc tín hiệu vào,
giá trị kênh tùy số chấn bộ chuyển đổi A/Dmỗi Vi điều khiển.
Read_ADC (mode): dùng để đọc giá trị ADC từ thanh ghi/ cặp thanh
70
Adc_done(): trả về giá trị 1 nếu quá trình chuyển đổi kết thúc.
#DEVICE ADC=xx: Khai báo tiền xử lý, dùng để xác định kích thước bộ
ADC cần sử dụng, 8 hoặc 10 bit. Trong phạm vi đề tài, chúng tôi sử dụng bộ chuyển đổi 10 bit.
Sau khi chuyển đổi, giá trị A/D thu được sẽ được đổi sang giá trị nhiệt độ tương ứng thông qua hàm chuyển đổi và bảng so sánh giá trị thông qua hàm
convert_to_temp();.
Toàn bộ dữ liệu biến đổi A/D và chuyển đổi nhiệt độ tương ứng có thể tham khảo thêm ở phần phụ lục.
3.4. Khối điều khiển
Như đã trình bày ở chương 2, tôi lựa chọn phương án sử dụng rơ le để điều khiển Compressor của tủ. Cách thức điều khiển và tính toán đối với rơ le như sau:
Tính toán khuếch đại dòng
Để điều khiển rơ le, như đã trình bày ở phần trước, chúng ta cần quan tâm 2 thông số: điện áp hoạt động và dòng điều khiển qua cuộn dây của rơ le. Đối với rơ le sử dụng trong thiết kế, chúng ta cần phải cung cấp điện áp 12V và dòng tối thiểu qua cuộn dây 30mA. Do tín hiệu xuất ra từ vi điều khiển có giá trị cường độ thấp, chỉ từ 5mA, vì vậy chúng ta cần phải có mạch khuếch đại để khuếch đại dòng nhỏ ở ngõ ra vi điều khiển thành dòng lớn phục vụ cho rơ le.
Diode bảo vệ
Như chúng ta đã biết, rơ le hoạt động dựa trên dòng điện chạy qua cuộn cảm để tạo lực hút điều khiển đóng, mở các tiếp điểm. Khi có sự ngắt đột ngột của dòng điện này, dòng cảm ứng ngược sinh ra từ cuộn cảm có thế làm hỏng BJT hoặc vi điều khiển. Vì vậy chúng ta cần phải mắc kèm 1 diode để đảm bảo an toàn.
Để đảm bảo các yêu cầu trên, tôi lựa chọn IC ULN 2803 dùng để điều khiển rơ le: ULN 2803 là một vi mạch đệm,bản chất cấu tạo là các mảng darlington chịu được dòng điện lớn và điện áp cao, trong đó có chứa 7 cặp darlington cực góp hở với cực phát chung. Mỗi kênh trong số 7 kênh đều có thể chịu được tải quy nạp. Ứng dụng của
71
ULN2803 bao gồm các thiết bị rơ le, búa, đèn và màn hình hiển thị (LED). Một số thông số của ULN 2803 bao gồm:
Dòng điện ra: 500 mA (max)
Điện áp đầu ra: 50 V (min)
Sơ đồ chân:
- Chân 1 đến chân 8 (in1 – in8): đầu vào (input) - Chân 11 đến chân 18 (out8 – out1): đầu ra (output) - Chân 9 (GND): Chân nối đất
- Chân 10 (COM): Chân nối nguồn
Hình 3.10: ULN 2803 trong thực tế
72
Mạch sử dụng rơ le 12VDC nên ta đặt điện áp 12V – DC vào chân 10 của ULN2803.
Chân điều khiển tín hiệu rơ le của vi điều khiển đặt vào các chân 1, 2, 3 (in1, in2, in3) của ULN [12].
Chân điều khiển của Rơ le 1 đầu nối với đầu ra của ULN 2803, đầu còn lại nối với nguồn 12V. Đầu ra của Rơ le mắc như sơ đồ.
Hình 3.82: Sơ đồ thiết kế khối điều khiển
Rơ le được điều khiển dựa theo nhiệt độ như sau:
- Dưới 3 độ C sẽ ngắt điện áp cung cấp vào rơ le, tiếp điểm hở, block nén ngừng hoạt động.
- Trên 5 độ C sẽ cung cấp điện áp vào rơ le, tiếp điểm đóng, block nén hoạt động
3.5. Khối giao tiếp với người sử dụng
Khối giao tiếp với người sử dụng bao gồm 3 khối: Khối hiển thị LED, khối cảnh báo và khối nút bấm. Mỗi khối có chức năng và thiết kế khác nhau, đều giao tiếp với vi điều khiển trung tâm.
Khối hiển thị LED 7 thanh:
73
Hình 3.13: Khối hiển thị LED 7 thanh
LED 7 thanh
Mạch sử dụng 3 LED 7 thanh loại cathode chung HSDP – 3903 để hiện thị chữ số hàng chục, hàng đơn vị và hàng thập phân của nhiệt độ.
LED 7 đoạn hay LED 7 thanh (Seven Segment display) là 1 linh kiện rất thông dụng, là linh kiện phát quang được sử dụng nhiều nhất trong các thiết bị chiếu sáng hiện nay. Trong LED 7 thanh bao gồm ít nhất là 7 LED mắc lại với nhau, ngoài ra cũng có thể bao gồm LED dùng cho dấu chấm (dot) để hiển thị phần thập phân của số hoặc các ứng dụng khác. Người lập trình có thể điều khiển bật tắt các LED này để hiển thị các số hoặc ký tự theo yêu cầu, với 7 LED đơn này, có thể hiển thị được các số từ 0 – 9 ,và 1 vài chữ cái thông dụng. Các led đơn lần lượt được gọi tên theo chữ cái từ A đến G, và dấu chấm dot.
Có 2 loại LED 7 thanh thông dụng hiện nay: LED 7 thanh Anode chung (Common Anode – CA) và LED 7 thanh Cathode chung (Common Cathode – CC). LED 7 thanh Anode chung có nghĩa là các LED được mắc chung chân Anode, còn chân Cathode được tách riêng và đưa ra ngoài. LED 7 thanh Cathode chung thì ngược lại.
74
Hình 3.9: LED 7 thanh HSPD – 3903
Với HSDP – 3903, LED sẽ sáng khi chân 3, 8 nối đất và các chân LED ở tích cực mức cao.
Hình 3.10: Sơ đồ chân HSDP – 3903 Bảng 3.5: Bảng mã LED 7 thanh Cathode chung
Số a b c d e f g dp 0 1 1 1 1 1 1 0 x 1 0 1 1 0 0 0 0 x 2 1 1 0 1 1 0 1 x 3 1 1 1 1 0 0 1 x 4 0 1 1 0 0 1 1 x 5 1 0 1 1 0 1 1 x 6 1 0 1 1 1 1 1 x 7 1 1 1 0 0 0 0 x 8 1 1 1 1 1 1 1 x 9 1 1 1 1 0 1 1 x . x x x x x x x 1 IC ghi dịch 74HC595 [14]:
75
Để tiết kiệm chân cho vi điều khiển, tôi sử dụng IC ghi dịch 74HC595. Đây là IC ghi dịch 8bit kết hợp chốt dữ liệu, đầu vào nối tiếp đầu ra song song, dạng 16 chân. IC này thường dùng trong các mạch quét LED 7 thanh, LED matrix …để tiết kiệm số chân vi điều khiển tối đa (3 chân). Có thể tiết kiệm chân vi điều khiển trong việc điều khiển nhiều LED bằng việc mắc nối tiếp đầu vào dữ liệu các IC với nhau.
Hình 3.16 IC ghi dịch 74HC595 trong thực tế
Có thể giải thích chức năng của từng chân 74HC595 như sau:
- Chân 14 : đầu vào dữ liệu nối tiếp. Tại 1 thời điểm xung clock chỉ đưa vào được 1 bit
- Chân QA, QB, … QH (trên các chân 15, 1, 2, … 7): Xuất dữ liệu khi chân chân 13 tích cực ở mức thấp và có một xung tích cực ở sườn âm tại chân chốt 12.
- Chân 13 : Chân cho phép tích cực ở mức thấp (0). Khi ở mức cao, tất cả các đầu ra của 74595 trở về trạng thái cao trở, không có đầu ra nào được cho phép.
- Chân 9: Chân dữ liệu nối tiếp. Nếu dùng nhiều 74595 mắc nối tiếp nhau thì chân này đưa vào đầu vào của con tiếp theo khi đã dịch đủ 8bit.
- Chân 11: Chân vào xung clock. Khi có 1 xung clock tích cực ở sườn dương (từ 0 lên 1) thì 1 bit được dịch vào IC.
- Chân 12 : xung clock chốt dữ liệu. Khi có 1 xung clock tích cực ở sườn dương thì cho phép xuất dữ liệu trên các chân output.
76
Hình 3.17: Sơ đồ mức logic của IC 74HC595
77
Hình 3.19: Biểu đồ thời gian mô tả hoạt động của IC 74HC595
Phương án quét LED:
Cơ cấu hiển thị bao gồm 3 LED 7 thanh để hiển thị các chữ số hàng chục, hàng đơn vị, và phần thập phân. Ta sử dụng IC 74HC595 để quét chung cả 3 LED. Mỗi LED có một chân để điều khiển thứ tự hiển thị.
Tín hiệu được đưa lần lượt vào IC 74HC595 qua chân RLCK và chuyển đến đầu ra theo thứ tự từ Q0 – Q7. Khi đủ 8 tín hiệu, tại chân SRCLK sẽ xuất ra một xung tích cực sườn dương, xuất đầu ra của từng LED 7 thanh. Tại một thời điểm, chỉ có 1 LED 7 thanh mà dữ liệu của nó được xuất ra mới được cấp nguồn và sáng. LED nào sáng sẽ do các chân LED1, LED2, LED3 của vi điều khiển quyết định.
Đến đây, chúng ta có thể thấy nếu như tại 1 thời điểm chỉ hiển thị 1 LED thì sẽ không thể hiển thị đầy đủ 3 LED theo ý muốn. Tuy nhiên, chúng ta sẽ dựa trên hiện tượng lưu ảnh của mắt để giải quyết vấn đề này. Sự lưu ảnh là một “khuyết điểm” quan trọng nhất của mắt được sử dụng trong công nghiệp điện ảnh và truyền hình. Mắt người không phản ứng tức thời với sự thay đổi của ánh sáng. Có một độ trễ khoảng hơn vài miligiây trong quá trình bộ não nhận thông tin về vật thể đang quan sát. Độ trễ này tăng lên theo độ rọi của vật thể. Không phải tất cả các phần của võng mạc đều có sự lưu ảnh giống nhau. Vùng trung tâm quanh hố thị giác có độ lưu ảnh dài nhất. Sự lưu ảnh của mắt còn phụ thuộc vào đặc tính quang phổ của nguồn sáng, tức là phụ thuộc vào màu sắc và độ sáng của nó.