Đồ án tốt nghiệp: Thiết kế và xây dựng hệ thống điều khiển động cơ theo nhiệt độ

Đồ án hệ thống điều khiển động cơ theo nhiệt độ. Tổng hợp sơ đồ mạch, code và báo cáo chi tiết, tài liệu tham khảo cho sinh viên kỹ thuật.

Người đăng

Ẩn danh

Thể loại

Đồ án tốt nghiệp

2017

67
6
0

Phí lưu trữ

30 Point

Tóm tắt

I. Hướng Dẫn Tổng Quan Đồ Án Điều Khiển Động Cơ Theo Nhiệt Độ

Đồ án hệ thống điều khiển động cơ theo nhiệt độ là một ứng dụng tiêu biểu trong lĩnh vực tự động hóa, kết hợp kiến thức về vi điều khiển, cảm biến và điện tử công suất. Trọng tâm của hệ thống này là sử dụng vi điều khiển PIC16F877A để xử lý tín hiệu từ cảm biến nhiệt và điều khiển tốc độ động cơ DC một cách chính xác. Dự án này không chỉ là một bài tập học thuật mà còn có ý nghĩa thực tiễn to lớn, mô phỏng các hệ thống làm mát tự động trong công nghiệp, thiết bị điện tử, hoặc hệ thống điều hòa không khí. Mục tiêu chính là xây dựng một mạch hoàn chỉnh có khả năng đọc nhiệt độ môi trường, so sánh với một ngưỡng cài đặt, và sau đó điều chỉnh tốc độ động cơ thông qua phương pháp điều chế độ rộng xung (PWM). Hệ thống yêu cầu sự tích hợp nhuần nhuyễn giữa phần cứng, bao gồm các khối cảm biến, khối xử lý trung tâm, khối công suất và khối hiển thị, với phần mềm được lập trình để thực thi logic điều khiển một cách hiệu quả và đáng tin cậy.

1.1. Tầm quan trọng của việc kiểm soát nhiệt độ tự động

Việc kiểm soát nhiệt độ tự động đóng vai trò cốt lõi trong nhiều ngành công nghiệp và đời sống. Hệ thống này đảm bảo các thiết bị hoạt động trong dải nhiệt độ tối ưu, giúp tăng tuổi thọ và hiệu suất. Ví dụ, trong các trung tâm dữ liệu, việc duy trì nhiệt độ ổn định là yếu tố sống còn để bảo vệ máy chủ. Trong sản xuất công nghiệp, nhiều quy trình hóa học hoặc vật lý đòi hỏi nhiệt độ phải được kiểm soát nghiêm ngặt để đảm bảo chất lượng sản phẩm. Một hệ thống điều khiển động cơ theo nhiệt độ hiệu quả giúp tự động hóa quá trình này. Nó giảm sự can thiệp của con người, tiết kiệm năng lượng bằng cách chỉ vận hành động cơ (quạt, máy bơm) khi cần thiết và với tốc độ phù hợp. Sự ra đời của các vi điều khiển PIC16F877A mạnh mẽ và giá cả phải chăng đã làm cho việc triển khai các giải pháp này trở nên dễ dàng và kinh tế hơn bao giờ hết, mở ra nhiều ứng dụng thực tiễn.

1.2. Giới thiệu vai trò của vi điều khiển PIC16F877A

Vi điều khiển PIC16F877A là trái tim của toàn bộ hệ thống. Đây là một vi điều khiển 8-bit thuộc họ PIC của Microchip, nổi bật với sự cân bằng giữa hiệu năng, tính năng và chi phí. Theo tài liệu, PIC16F877A được trang bị bộ nhớ chương trình Flash 8K, 368 byte RAM và 256 byte EEPROM, đủ sức chứa các chương trình điều khiển phức tạp. Một trong những ưu điểm lớn nhất của nó là việc tích hợp sẵn bộ chuyển đổi tương tự-số (ADC) 10-bit với 8 kênh. Tính năng này cho phép vi điều khiển đọc trực tiếp tín hiệu analog từ cảm biến nhiệt độ LM335 mà không cần ADC ngoại vi. Hơn nữa, nó còn tích hợp các module CCP (Capture/Compare/PWM), lý tưởng cho việc tạo ra tín hiệu điều chế xung PWM để điều khiển tốc độ động cơ một cách mượt mà và chính xác. Với 5 cổng I/O, nó dễ dàng giao tiếp với các thiết bị ngoại vi khác như màn hình LCD và các nút nhấn.

II. Phân Tích Thách Thức Khi Thiết Kế Hệ Thống Điều Khiển Tự Động

Việc thiết kế một hệ thống điều khiển động cơ theo nhiệt độ đặt ra nhiều thách thức kỹ thuật cần giải quyết. Các thách thức này không chỉ nằm ở việc lựa chọn linh kiện phù hợp mà còn ở việc tích hợp chúng thành một hệ thống hoạt động ổn định và chính xác. Một trong những vấn đề cơ bản là xử lý tín hiệu từ cảm biến. Tín hiệu analog từ cảm biến LM335 thường nhỏ và cần được khuếch đại, hiệu chỉnh trước khi đưa vào bộ chuyển đổi ADC của PIC16F877A. Sai số trong giai đoạn này có thể ảnh hưởng đến độ chính xác của toàn hệ thống. Thách thức thứ hai là điều khiển công suất cho động cơ DC. Vi điều khiển không thể cấp dòng trực tiếp cho động cơ, do đó cần một mạch công suất trung gian, điển hình là mạch cầu H, để cung cấp đủ dòng và điện áp. Việc thiết kế và điều khiển mạch công suất này đòi hỏi kiến thức về điện tử công suất để đảm bảo hiệu quả và an toàn. Cuối cùng, việc lập trình phần mềm để thực thi logic điều khiển, đọc dữ liệu, tính toán và xuất tín hiệu PWM một cách đồng bộ cũng là một bài toán phức tạp.

2.1. Vấn đề xử lý tín hiệu từ cảm biến nhiệt độ LM335

Cảm biến nhiệt độ LM335 là một cảm biến analog, cung cấp điện áp đầu ra tuyến tính với nhiệt độ theo thang Kelvin (10mV/°K). Theo tài liệu, với dải nhiệt độ hoạt động từ 0-100°C, điện áp ra của LM335 sẽ nằm trong khoảng 2.73V đến 3.73V. Dải điện áp này không tối ưu cho đầu vào của bộ chuyển đổi ADC trong PIC16F877A, vốn hoạt động hiệu quả nhất với dải 0-5V. Do đó, một khối khuếch đại hiệu chỉnh là bắt buộc. Thách thức ở đây là thiết kế một mạch khuếch đại có khả năng dịch và thay đổi tỷ lệ điện áp một cách chính xác. Mạch này phải chuyển đổi dải 2.73-3.73V thành 0-5V. Bất kỳ sự thiếu chính xác nào trong các giá trị điện trở hoặc sự bất ổn của op-amp đều có thể gây ra sai số đo lường nhiệt độ, dẫn đến việc điều khiển động cơ không chính xác.

2.2. Thách thức trong việc điều khiển tốc độ động cơ DC

Động cơ DC là một tải cảm có dòng khởi động lớn và tạo ra nhiễu điện từ. Các chân I/O của vi điều khiển PIC16F877A chỉ có thể cung cấp dòng điện rất nhỏ (vài chục mA) và không thể chịu được sức điện động phản kháng sinh ra khi động cơ hoạt động. Vì vậy, việc kết nối trực tiếp động cơ với vi điều khiển là không thể. Giải pháp là sử dụng một mạch công suất, và IC Driver L293D là lựa chọn phổ biến. L293D tích hợp sẵn hai mạch cầu H, cho phép điều khiển cả chiều quay và tốc độ của hai động cơ. Thách thức là phải cung cấp tín hiệu điều chế xung PWM từ PIC đến chân Enable của L293D một cách chính xác. Tần số và chu kỳ làm việc (duty cycle) của xung PWM phải được tính toán cẩn thận để đạt được dải điều khiển tốc độ mong muốn, đồng thời đảm bảo mạch hoạt động ổn định, tránh gây quá nhiệt cho IC và động cơ.

III. Phương Pháp Thiết Kế Phần Cứng Cho Hệ Thống Điều Khiển Động Cơ

Phần cứng là nền tảng vật lý của đồ án hệ thống điều khiển động cơ theo nhiệt độ. Một thiết kế phần cứng tốt phải đảm bảo tính ổn định, chính xác và dễ dàng tích hợp. Sơ đồ khối của hệ thống là bước khởi đầu quan trọng, xác định các thành phần chính và mối liên kết giữa chúng. Hệ thống bao gồm: Khối cảm biến (sử dụng cảm biến LM335), Khối xử lý trung tâm (sử dụng vi điều khiển PIC16F877A), Khối khuếch đại hiệu chỉnh, Khối công suất (sử dụng IC Driver L293D), Khối hiển thị (sử dụng màn hình LCD 16x2) và Khối nguồn. Mỗi khối đều có chức năng riêng và phải được thiết kế cẩn thận. Việc lựa chọn linh kiện không chỉ dựa trên thông số kỹ thuật mà còn phải xem xét đến tính sẵn có và chi phí. Sơ đồ mạch nguyên lý chi tiết là kết quả của quá trình thiết kế, thể hiện rõ cách các linh kiện được kết nối với nhau, là cơ sở để thi công mạch thực tế.

3.1. Thiết kế chi tiết khối cảm biến và khuếch đại tín hiệu

Khối cảm biến và khuếch đại có nhiệm vụ chuyển đổi đại lượng vật lý (nhiệt độ) thành tín hiệu điện áp phù hợp cho bộ chuyển đổi ADC. Mạch đo nhiệt độ sử dụng cảm biến LM335. Như đã phân tích, điện áp ra của nó cần được xử lý. Tài liệu gốc đề xuất một mạch khuếch đại hiệu chỉnh sử dụng op-amp. Mạch này kết hợp hai chức năng: mạch trừ và mạch khuếch đại. Đầu tiên, một mạch trừ sẽ lấy điện áp ra của LM335 trừ đi một giá trị điện áp tham chiếu (2.73V) để đưa dải điện áp về 0-1V. Sau đó, tín hiệu này được đưa qua một mạch khuếch đại đảo với hệ số khuếch đại là -5. Kết quả cuối cùng là một dải điện áp từ 0-5V, tỷ lệ tuyến tính với dải nhiệt độ 0-100°C. Việc tính toán chính xác giá trị các điện trở trong mạch op-amp là yếu tố quyết định độ chính xác của toàn bộ quá trình đo lường.

3.2. Xây dựng khối công suất với IC Driver L293D và mạch cầu H

Khối công suất có nhiệm vụ cấp nguồn cho động cơ DC dựa trên tín hiệu điều khiển từ PIC16F877A. IC Driver L293D được chọn vì sự tiện lợi và tích hợp cao. Nó chứa hai mạch cầu H hoàn chỉnh, có khả năng chịu được dòng lên đến 1A và điện áp 36V, phù hợp cho các động cơ DC công suất nhỏ và vừa. Trong đồ án này, một mạch cầu H của L293D sẽ được sử dụng. Các chân Input (ví dụ IN1, IN2) của L293D được nối với các chân I/O của PIC để điều khiển chiều quay của động cơ. Chân Enable (ENA) được nối với chân đầu ra PWM của PIC (ví dụ CCP1). Bằng cách thay đổi chu kỳ làm việc của xung PWM cấp vào chân ENA, ta có thể điều chỉnh điện áp trung bình cấp cho động cơ, từ đó kiểm soát tốc độ quay. Cần có các diode dập xung ngược để bảo vệ IC khỏi sức điện động phản kháng do động cơ sinh ra, mặc dù L293D đã có sẵn diode nội.

3.3. Sơ đồ kết nối vi điều khiển PIC16F877A và màn hình LCD

Khối hiển thị giúp người dùng theo dõi trạng thái hoạt động của hệ thống, bao gồm nhiệt độ hiện tại và tốc độ động cơ. Màn hình LCD 16x2 (dựa trên chip HD44780) là một lựa chọn phổ biến. Việc kết nối PIC16F877A với LCD có thể thực hiện ở chế độ 8-bit hoặc 4-bit. Để tiết kiệm chân cho vi điều khiển, chế độ 4-bit thường được ưu tiên. Trong chế độ này, chỉ cần 4 chân dữ liệu (D4-D7) cùng với 3 chân điều khiển (RS, RW, E) của LCD được nối với một cổng của PIC (ví dụ PORTD). Chân RW thường được nối đất để LCD luôn ở chế độ ghi, tiết kiệm thêm một chân I/O. Lập trình giao tiếp với LCD bao gồm việc gửi các lệnh khởi tạo, sau đó gửi dữ liệu ký tự cần hiển thị. Việc này giúp tạo ra một giao diện người dùng trực quan cho hệ thống điều khiển động cơ theo nhiệt độ.

IV. Bí Quyết Lập Trình Điều Khiển Động Cơ Bằng Phương Pháp PWM

Phần mềm là linh hồn của đồ án hệ thống điều khiển động cơ theo nhiệt độ, quyết định cách hệ thống phản ứng với sự thay đổi của môi trường. Trọng tâm của chương trình điều khiển là thuật toán đọc giá trị nhiệt độ, xử lý dữ liệu và tạo ra tín hiệu điều chế xung PWM tương ứng. Ngôn ngữ lập trình thường được sử dụng là C (với trình biên dịch như CCS C hoặc MPLAB XC8), giúp việc phát triển chương trình trở nên nhanh chóng và dễ quản lý hơn so với Assembly. Cấu trúc chương trình cần được tổ chức một cách logic, bao gồm các hàm khởi tạo (cấu hình các cổng I/O, ADC, Timer, PWM, LCD), một vòng lặp chính (main loop) để liên tục thực hiện các tác vụ, và các hàm con xử lý từng nhiệm vụ cụ thể. Việc tối ưu hóa mã lệnh để đảm bảo hệ thống phản ứng nhanh và chính xác là một yếu tố quan trọng, đặc biệt là trong các ứng dụng đòi hỏi thời gian thực.

4.1. Cấu hình và sử dụng bộ chuyển đổi ADC trên PIC16F877A

Để đọc nhiệt độ, chương trình phải cấu hình và sử dụng bộ chuyển đổi ADC tích hợp trong PIC16F877A. Quá trình này bao gồm nhiều bước. Đầu tiên là cấu hình các thanh ghi ADCON0 và ADCON1. Thanh ghi ADCON1 được dùng để chọn các chân analog, định dạng kết quả (canh trái hoặc canh phải) và chọn điện áp tham chiếu (Vref). Thanh ghi ADCON0 dùng để chọn kênh analog cần chuyển đổi (ví dụ AN0), bật module ADC và bắt đầu quá trình chuyển đổi. Trong vòng lặp chính, chương trình sẽ bắt đầu một phiên chuyển đổi bằng cách set bit GO/DONE. Sau đó, nó sẽ đợi cho đến khi quá trình chuyển đổi hoàn tất (bit GO/DONE tự động được xóa về 0). Kết quả số 10-bit sau đó được đọc từ hai thanh ghi ADRESH và ADRESL. Giá trị số này sau đó cần được chuyển đổi thành giá trị nhiệt độ thực tế thông qua các phép tính toán học dựa trên đặc tính của cảm biến và mạch khuếch đại.

4.2. Kỹ thuật tạo xung PWM để điều khiển tốc độ động cơ DC

Phương pháp điều chế xung PWM là kỹ thuật cốt lõi để điều khiển tốc độ động cơ. Vi điều khiển PIC16F877A có module CCP (Capture/Compare/PWM) chuyên dụng cho việc này. Để sử dụng chế độ PWM, module CCP1 (trên chân RC2) hoặc CCP2 được cấu hình. Thanh ghi T2CON được dùng để cấu hình Timer2, vốn là bộ đếm thời gian cơ sở cho module PWM. Thanh ghi PR2 xác định chu kỳ (tần số) của xung PWM. Tốc độ động cơ được điều khiển bằng cách thay đổi chu kỳ làm việc (duty cycle) của xung. Chu kỳ làm việc là một giá trị 10-bit được ghi vào các thanh ghi CCPR1L và các bit CCP1CON<5:4>. Bằng cách thay đổi giá trị này từ 0 đến giá trị tối đa (bằng 4*(PR2+1)), chương trình có thể điều khiển điện áp trung bình cấp cho động cơ từ 0% đến 100%, qua đó điều chỉnh tốc độ một cách mượt mà và chính xác.

4.3. Lưu đồ thuật toán và logic của chương trình điều khiển

Lưu đồ thuật toán cung cấp một cái nhìn tổng quan về luồng hoạt động của chương trình. Chương trình bắt đầu bằng khối khởi tạo: cấu hình các chân I/O, thiết lập module ADC, khởi tạo module PWM với duty cycle ban đầu bằng 0, và khởi tạo màn hình LCD. Sau đó, chương trình đi vào một vòng lặp vô tận. Trong mỗi vòng lặp, nó thực hiện các bước sau: 1) Đọc giá trị từ bộ chuyển đổi ADC. 2) Chuyển đổi giá trị số thô thành nhiệt độ (độ C). 3) Hiển thị giá trị nhiệt độ lên LCD. 4) So sánh nhiệt độ hiện tại với các ngưỡng nhiệt độ đã định trước. 5) Dựa trên kết quả so sánh, tính toán giá trị duty cycle mới cho tín hiệu PWM (ví dụ: nhiệt độ càng cao, duty cycle càng lớn). 6) Cập nhật giá trị duty cycle cho module PWM để thay đổi tốc độ động cơ. Một khoảng trễ nhỏ được thêm vào cuối vòng lặp để hệ thống hoạt động ổn định.

V. Ứng Dụng Thực Tiễn và Hướng Phát Triển Của Đồ Án Trong Tương Lai

Mặc dù là một đồ án học thuật, hệ thống điều khiển động cơ theo nhiệt độ sử dụng PIC16F877A có tiềm năng ứng dụng thực tiễn rất lớn. Mô hình này là nền tảng cho nhiều hệ thống tự động hóa trong công nghiệp và dân dụng. Việc hoàn thành đồ án không chỉ chứng tỏ sự nắm vững kiến thức về vi điều khiển và điện tử mà còn mở ra nhiều hướng phát triển, cải tiến trong tương lai. Kết quả của đồ án là một sản phẩm hoạt động, có khả năng đo lường nhiệt độ chính xác và điều khiển tốc độ động cơ một cách hiệu quả, phản ứng nhanh với sự thay đổi của môi trường. Hệ thống này có thể được tối ưu hóa về mặt chi phí, hiệu suất năng lượng và mở rộng thêm nhiều tính năng để đáp ứng các yêu cầu phức tạp hơn. Sự thành công của dự án tạo tiền đề cho các nghiên cứu và phát triển sản phẩm thương mại dựa trên nguyên lý tương tự.

5.1. Các ứng dụng thực tế của hệ thống điều khiển nhiệt độ

Hệ thống này có thể được ứng dụng trực tiếp vào việc chế tạo các thiết bị làm mát thông minh. Ví dụ điển hình là hệ thống quạt tản nhiệt cho máy tính hoặc thiết bị điện tử công suất lớn, tự động tăng tốc độ quạt khi nhiệt độ linh kiện tăng cao và giảm tốc độ hoặc tắt khi nhiệt độ giảm, giúp tiết kiệm năng lượng và giảm tiếng ồn. Một ứng dụng khác là trong các lò sấy nông sản, hệ thống có thể điều khiển quạt thông gió để duy trì nhiệt độ và độ ẩm ở mức lý tưởng. Trong lĩnh vực dân dụng, nó có thể là lõi của một hệ thống điều hòa không khí đơn giản, điều khiển quạt gió dựa trên nhiệt độ phòng. Ngoài ra, nguyên lý điều khiển này còn có thể áp dụng cho các hệ thống sưởi, chỉ cần đảo ngược logic điều khiển: động cơ (bơm nước nóng, quạt sưởi) sẽ hoạt động khi nhiệt độ xuống dưới một ngưỡng nhất định.

5.2. Hướng phát triển và nâng cấp cho đồ án trong tương lai

Để nâng cao tính ứng dụng, đồ án hệ thống điều khiển động cơ theo nhiệt độ có thể được phát triển theo nhiều hướng. Một cải tiến quan trọng là thêm khả năng cho người dùng cài đặt ngưỡng nhiệt độ mong muốn thông qua các nút nhấn và hiển thị trên màn hình LCD. Điều này tăng tính linh hoạt cho hệ thống. Hướng phát triển thứ hai là áp dụng các thuật toán điều khiển thông minh hơn, chẳng hạn như điều khiển PID (Proportional-Integral-Derivative), để hệ thống đạt được nhiệt độ mục tiêu một cách nhanh chóng và ổn định hơn, giảm thiểu dao động. Ngoài ra, có thể tích hợp thêm các module giao tiếp không dây như Bluetooth hoặc Wi-Fi để giám sát và điều khiển hệ thống từ xa thông qua điện thoại thông minh. Việc thay thế PIC16F877A bằng các dòng vi điều khiển mạnh hơn như PIC18F hoặc ARM Cortex-M cũng là một lựa chọn để xử lý các tác vụ phức tạp hơn trong tương lai.

03/10/2025

Trích đoạn nội dung tài liệu

LỜI MỞ ĐẦU Ngày nay với những ứng dụng của khoa học kĩ thuật tiên tiến, thế giới của chúng ta đã và đang ngày một thay đổi, văn minh và hiện đại hơn. Trong đó sự phát triển của kĩ thuật tự động hóa đã đóng góp vai trò quan trọng, tạo ra hàng loạt những thiết bị với các đặc điểm nổi bật nhƣ: sự chính xác, an toàn, tốc độ nhanh, gọn nhẹ. Ý tƣởng đề tài xuất phát từ bài toán thực tế là thiết kế hệ thống đo nhiệt độ phòng, từ đó dựa vào nhiệt độ đặt để điều khiển động cơ phù hợp với sự thay đổi nhiệt độ. Đề tài “Thiết kế và xây dựng hệ thống điều khiển động cơ theo nhiệt độ”, do Thạc sĩ Nguyễn Đoàn Phong hƣớng dẫn.

Là sự kết hợp của nhiều mạch điện tử cơ bản cũng nhƣ sử dụng phần tử vi điều khiển trong chƣơng trình giảng dạy, là sự tổng hợp kiến thức các môn cơ sở ngành và kĩ năng thực hành trong môn Vi điều khiển. Đề tài của em gồm 3 chƣơng: Chƣơng 1. Tổng quan về các phần tử Chƣơng 2. Thiết kế hệ thống điều khiển động cơ DC theo nhiệt độ Chƣơng 3.

Chƣơng trình điều khiển 1 CHƢƠNG 1. TỔNG QUAN VỀ CÁC PHẦN TỬ 1. TỔNG QUAN VỀ PIC16F877A 1. Chức năng và sơ đồ chân vi điều khiển PIC16F877A PIC16F877A là dòng PIC phổ biến nhất hiện nay, đủ mạnh về tính năng, bộ nhớ đủ cho hầu hết các ứng dụng thông thƣờng.1: Vi điều khiển PIC 16F877A/PIC16F874A và các dạng sơ đồ chân.

2 Chức năng của PIC16F877A: - Có khả năng xử lí ngắt từ nhiều nguồn ngắt khác nhau nhƣ ngắt ngoài, ngắt tràn Timer, ngắt ngoại vi nhƣ ngắt ADC. - Chức năng CCP gồm Comporator (bộ so sánh), capture và PWM (điều chế độ rộng xung). - Chức năng giao tiếp đồng bộ nối tiếp SSP gồm 2 giao tiếp SPI và I2C. - Chức năng bộ truyền phát không đồng bộ đa năng nối tiếp USART ở dạng module phần cứng phục vụ cho giao tiếp theo chuẩn RS-232.

- Bộ ADC 10 bit chuyển đổi tín hiệu tƣợng tự sang tín hiệu số. - Chức năng giao tiếp song song PSP. Một vài thông số về vi điều khiển PIC16877A Đây là vi điều khiển thuộc họ PIC16Fxxx với tập lệnh gồm 37 lệnh có độ dài 14 bit. Mỗi lệnh đều đƣợc thực thi trong một chu kì xung clock.

Tốc độ hoạt động tối đa cho phép là 20MHz với một chu kì lệnh là 200ms. Bộ nhớ chƣơng trình 8Kx14 bit, bộ nhớ dữ liệu 368x8 byte RAM và bộ nhớ dữ liệu EEPROM với dung lƣợng 256x8 byte. Số PORT I/O là 5 với 33 pin I/O. Các đặc tính ngoại vi bao gồm các khối chức năng sau: -Timer0: bộ đếm 8 bit với bộ chia tần số 8 bit.

-Timer1: bộ đếm 16 bit với bộ chia tần số, có thể thực hiện chức năng đếm dựa vào xung clock ngoại vi ngay khi vi điều khiển hoạt động ở chế độ sleep. -Timer2: bộ đếm 8 bit với bộ chia tần số, bộ postcaler. - Hai bộ Capture/so sánh/điều chế độ rộng xung. - Các chuẩn giao tiếp nối tiếp SSP(Synchronous Serial Port) với các chân điều khiển RD, WR, CS ở bên ngoài.

Các đặc tính Analog: - 8 kênh chuyển đổi ADC 10 bit. - Hai bộ so sánh. 3 Bên cạnh đó là một vài đặc tính khác của vi điều khiển nhƣ: - Bộ nhớ flash với khả năng ghi xóa đƣợc 100. - Bộ nhớ EEPROM với khả năng ghi xóa đƣợc 1.

- Dữ liệu bộ nhớ EEPROM có thể lƣu trữ trên 40 năm. - Khả năng tự nạp chƣơng trình với sự điều khiển của phần mềm. - Nạp đƣợc chƣơng trình ngay trên mạch điện ICSP (In Circuit Serial Programming) thông qua 2 chân. - Watchdog Timer với bộ dao động trong.

- Chức năng bảo mật mã chƣơng trình. - Có thể hoạt động với nhiều dạng Oscillator. Sơ đồ khối vi điều khiển PIC16F877A Sơ đồ khối của PIC16F877A: Hình 1.2: Sơ đồ khối vi điều khiển PIC16F877A. Tổ chức bộ nhớ Cấu trúc bộ nhớ vi điều khiển PIC16F877A bao gồm bộ nhớ chƣơng trình (Program memory) và bộ nhớ dữ liệu (Data Memmory).

Bộ nhớ chƣơng trình Bộ nhớ chƣơng trình của vi điều khiển PIC16F877A là bộ nhớ flash, dung lƣợng bộ nhớ 8K word (1 word = 14 bit) và đƣợc phân thanh nhiều trang (từ page 0 đến page 3). Nhƣ vậy bộ nhớ chƣơng trình có khả năng chứa đƣợc 8x1024 = 8192 lệnh (vì một lệnh sau khi mã hóa sẽ có dung lƣợng 1 word = 14 bit). Để mã hóa đƣợc địa chỉ của 8K word bộ nhớ chƣơng trình có dung lƣợng 3 bit (PC<12:0>). Khi vi điều khiển đƣợc reset, bộ đếm chƣơng trình sẽ chỉ đến địa chỉ 0000h (Reset vector).

Khi có ngắt xảy ra, bộ đếm chƣơng trình sẽ chỉ đến địa chỉ 0004h (Interrupt vector). Bộ nhớ chƣơng trình không bao gồm bộ nhớ stack và không đƣợc địa chỉ hóa bởi bộ đếm chƣơng trình.3: Bộ nhớ chƣơng trình PIC16F877A. Bộ nhớ dữ liệu Bộ nhớ dữ liệu của PIC là bộ nhớ EEPROM đƣợc chia ra làm nhiều bank. Đối với PIC16F877A bộ nhớ dữ liệu đƣợc chia ra làm 4 bank.

Mỗi bank có dung lƣợng 28 byte, bao gồm các thanh ghi có chức năng đặc biệt SFR (Special Function Register) nằm ở các vùng địa chỉ thấp và các thanh ghi mục đích chung GPR (General Purpose Register) nằm ở vùng địa chỉ còn lại trong bank. Các thanh ghi SFR thƣờng xuyên đƣợc sử dụng (ví dụ nhƣ thanh ghi STATUS) sẽ đƣợc đặt ở tất cả các bank của bộ nhớ dữ liệu giúp thuận tiện trong quá trình truy xuất và làm giảm bớt lệnh của chƣơng trình. Sơ đồ cụ thể của bộ nhớ dữ liệu PIC16F877A nhƣ sau: Hình 1.4: Sơ đồ bộ nhớ dữ liệu PIC16F877A. Thanh ghi chức năng đặc biệt SFR Đây là các thanh ghi đƣợc sử dụng bởi CPU hoặc đƣợc dùng để thiết lập và điều khiển các khối chức năng đƣợc tích hợp bên trong vi điều khiển.

Có thể phân thanh ghi SFR thành 2 loại: thanh ghi SFR liên quan đến các chức năng bên trong (CPU) và thanh ghi SFR dùng để thiết lập và điều khiển các khối chức năng bên ngoài (ADC, PWM,. - Thanh ghi STATUS (03h, 83h, 103h, 183h): thanh ghi chứa kết quả thực hiện phép toán của khối ALU, trạng thái reset và các bit chọn bank cần truy xuất trong bộ nhớ dữ liệu. - Thanh ghi OPTION_REG (81h, 181h): thanh ghi này cho phép đọc và ghi, cho phép điều khiển chức năng pull-up của các chân trong PORTB, xác lập các tham số về xung tác động, cạnh tác động của ngắt ngoại vi và bộ đếm Timer0. - Thanh ghi INTCON (0Bh, 8Bh, 10Bh,18Bh): thanh ghi cho phép đọc và ghi, chứa các bit điều khiển và các bit cờ hiệu khi Timer0 bị tràn, ngắt ngoại vi RB0/INT và ngắt interrupt-on-change tại các chân của PORTB.

- Thanh ghi PIE1 (8Ch): chứa các bit điều khiển chi tiết các ngắt của các khối chức năng ngoại vi. - Thanh ghi PIR1 (0Ch): chứa cờ ngắt của các khối chức năng ngoại vi, các ngắt này đƣợc cho phép bởi các bit điều khiển chứa trong thanh ghi PIE1. 7 - Thanh ghi PIE2 (8Dh): chứa các bit điều khiển ngắt của các khối chức năng CCP2, SSP bus, ngắt của bộ so sánh và ngắt ghi vào bộ nhớ EEPROM. - Thanh ghi PIR2 (0Dh): chứa các cờ ngắt của các khối chức năng ngoại vi, các ngắt này đƣợc cho phép bởi các bit điều khiển chứa trong thanh ghi PIE2.

- Thanh ghi PCON (8Eh): chứa các cờ hiệu cho biết trạng thái các chế độ reset của vi điều khiển.Thanh ghi mục đích chung GPR Các thanh ghi này có thể đƣợc truy xuất trực tiếp hoặc gián tiếp thông qua thanh ghi FSR (File Select Register). Đây là các thanh ghi dữ liệu thông thƣờng, ngƣời sử dụng có thể tùy theo mục đích chƣơng trình mà có thể dùng các thanh ghi này để chứa các biến số, hằng số, kết quả hoặc các tham số phục vụ cho chƣơng trình. Stack Stack không nằm trong bộ nhớ chƣơng trình hay bộ dữ liệu mà là một vùng nhớ đặc biệt không cho phép đọc hay ghi. Khi lệnh CALL đƣợc thực hiện hay khi một ngắt xảy ra làm chƣơng trình bị rẽ nhánh, giá trị của bộ đếm chƣơng trình PC tự động đƣợc vi điều khiển cất vào trong stack.

Khi một trong các lệnh RETURN, RETLW hay RETFIE đƣợc thực thi, giá trị PC sẽ tự 8 động đƣợc lấy ra từ trong stack, vi điều khiển sẽ thực hiện tiếp chƣơng trình theo đúng quy trình định trƣớc. Bộ nhớ stack trong vi điều khiển PIC họ 16Fxxxx có khả năng chứa đƣợc 8 địa chỉ và hoạt động theo cơ chế xoay vòng. Nghĩa là giá trị cất vào bộ nhớ stack lần thứ 9 sẽ ghi đè lên giá trị cất vào stack lần đầu tiên và giá trị cất vào stack lần thứ 10 sẽ ghi đè lên giá trị cất vào stack lần thứ 2. Cần chú ý là không có cờ hiệu nào cho biết trạng thái stack, do đó ta không biết đƣợc khi nào stack tràn.

Bên cạnh đó tập lệnh của vi điều khiển dòng PIC cũng không có lệnh POP hay PUSH, các thao tác với bộ nhớ stack sẽ hoàn toàn đƣợc điều khiển bởi CPU. Các cổng xuất nhập của PIC16F877A Cổng xuất nhập (I/O port) chính là phƣơng tiện mà vi điều khiển dùng để tƣơng tác với thế giới bên ngoài. Sự tƣơng tác này rất đa dạng và thông qua quá trình tƣơng tác đó, chức năng của vi điều khiển đƣợc thể hiện một cách rõ ràng. Vi điều khiển PIC16F877A có 5 cổng xuất nhập, bao gồm PORTA, PORTB, PORTC, PORTD, PORTE.

Cổng PORTA PORTA (RPA) gồm 6 I/O pin. Đây là các chân “hai chiều” (bidirectional pin), nghĩa là có thể xuất và nhập đƣợc. Chức năng I/O này đƣợc điều khiển bởi thanh ghi TRISA (địa chỉ 85h). Muốn xác lập chức năng của một chân trong PORTA là input, ta “set” bit điều khiển tƣơng ứng với chân đó trong thanh ghi TRISA và ngƣợc lại, muốn xác lập chức năng của một chân trong PORTA là output, ta “clear” bit điều khiển tƣơng ứng với chân đó trong thanh ghi TRISA.

Thao tác này hoàn toàn tƣơng đối với các PORT và các thanh ghi điều khiển tƣơng ứng TRIS ( đối với PORTA là TRISA, PORTB là TRISB, PORTC là TRISC,. Bên cạnh đó PORTA còn là ngõ ra của bộ ADC, bộ so 9 sánh, ngõ vào analog ngõ vào xung clock của Timer0 và ngõ vào của bộ giao tiếp MSSP (Master Synchronous Serial Port). Các thanh ghi SFR liên quan đến PORTA gồm: - PORTA (địa chỉ 05h): chứa giá trị các pin trong PORTA. - TRISA (địa chỉ 85h): điều khiển xuất nhập.

- CMCON (địa chỉ 9Ch): thanh ghi điều khiển bộ so sánh. - CVRCON (địa chỉ 9Dh): thanh ghi điều khiển bộ so sánh điện áp. - ADCON1 (địa chỉ 9Fh): thanh ghi điều khiển bộ ADC.

Nội dung được bảo vệ bản quyền — Tải xuống đầy đủ