Mua linh kiện điện tử tại Điện tử Nhật Tùng
Khóa học Vi điều khiển có phí Hình thức học: Video hoặc Kèm trực tiếp ===>>>> Kích vào hình để được biết thêm chi tiếtTable of Contents
Tải File bài giải
Pass giải nén: Huynhnhattung.com
===>>> Nếu bạn chưa có phần mềm giải nén:
Video Điều chỉnh tốc độ, Biến trở + Nhiệt độ LM35 + LCD1602
Blog Điều chỉnh tốc độ, Biến trở + Nhiệt độ LM35 + LCD1602
Đề bài điều chỉnh tốc độ động cơ:
Bài giải điều chỉnh tốc độ động cơ:
Phần cứng chương trình điều chỉnh tốc độ động cơ:
- Đầu tiên yêu cầu đưa ra có Biến trở phần áp đều chỉnh giá trị cài đặt ngưỡng cho nhiệt độ và nhiệt độ LM35 vì vậy bắt buộc phải gắn vào chân ANxx tức chân đọc tín hiệu Analog chuyển sang Digital.
- Hệ thống điều khiển tốc độ động cơ sử dụng CCP PWM của nhà sản xuất vì vậy việc gắn mạch bắt buộc gắn vào chân RC1/CCP2 và RC2/CCP1 và điều khiển động cơ qua mạch lái cầu H L298. Động cơ sử dụng 24V vì vậy Chân Vs của L298 phải sử dụng 24V.
- Hiển thị LCD1602 dùng giao tiếp 4bit sẽ giúp tối ưu tốc phần cứng hơn, và việc sử dụng thư viện do phần mềm hổ trợ cũng là một cách tối ưu chương trình khá tốt.
- Nút nhấn ADJ dùng để điều chỉnh tốc độ động cơ từ 10% – 100% được gắn vào chân RB0 theo yêu cầu của đề bài. Tuy nhiên sẽ không sử dụng ngắt ngoài trong trường hợp này.
- Các linh kiện chính cần sử dụng tham khảo tại.
Thông số kỹ thuật | Mua Linh kiện |
Pic16F887 | Pic16F887 |
LCD1602 | LCD1602 |
Biến trở | Biến trở |
Điện trở | Điện trở |
Nút nhấn | Nút nhấn |
Thạch anh | Thạch anh |
Hồng ngoại | Hồng ngoại |
Led đơn | Led đơn |
Module L298 | Module L298 |
Phần mềm điều khiển tốc độ động cơ:
Khai báo thư viện tiền sử lý của điều khiển tốc độ động cơ:
- Vi điều khiển hiện tại mình đan dùng là Pic16F887
- Theo yêu cầu hệ thống có đọc giá trị ADC vì vậy phải khai báo ADC bằng lệnh #device adc=10 tức sử dụng bộ ADC 10bit. Ngoài ra có thể chọn ADC 8bit và 16bit.
- Hiện dùng thạch anh ngoài và thạch anh ngoài khai báo 8M bằng lệnh #Fuses HS và #delay(clock=8M).
- Thư viện LCD1602 sử dụng 4bit, thư viện sử dụng do phần mềm hổ trợ. Giúp đơn giản trong quá trình lập trình hơn.
- Định nghĩa chân: tùy theo chức năng của chân mà tên định nghĩa được bám sát vào nội dung đan thực hiện.
- Tên khai báo biến phụ thuộc vào chức năng để khai báo cho phù hợp.
- Khi các biến không biết được giá trị cuối thì nên khai báo signed int32 tức khai báo biến có dấu 32bit, lúc này giá trị rất rộng không sợ bị thiếu.
Chương trình con điều chỉnh tốc độ động cơ:
Chương trình kiểm tra nút nhấn ADJ
- Nút nhấn có nhiều chức năng, sau mỗi lần nhấn giá trị trả về thay đổi từ 10% – 100% vì vậy phải chống dội cho nút nhấn. Việc chống dội ở đây không hướng dẫn chi tiết các bạn có thể tham khảo sách giáo trình thầy Nguyễn Đình Phú.
- Khi nhấn nút tt_adj tăng lên 10 đơn vị theo yêu cầu của đề bài đưa ra, nếu vượt ngưỡng 100 thì quay về 10. Được biết giá trị duty max là 600 giá trị này xem cách tính dưới phần chương trình chính. Vì vậy chia giá trị ra từ 10% – 100% chỉ cần mỗi lần giá trị tt_adj tăng 10 đơn vị thì duty tăng lên 60.
Chương trình đọc ADC
- Từ yêu cầu không nhắc đến việc đọc trung bình của cảm biến và biến trở vì vậy chỉ cần đọc trực tiếp một lần là đủ. Nếu làm mạch thực tế nên đọc trung bình để tạo kết quả tốt và ổn định hơn.
- Cảm biến nhiệt độ được gắn vào chân RE0/AN5 nên trước khi đọc phải khởi tạo kênh để đọc. Nếu chỉ đọc một giá trị ADC thì việc khởi tạo kênh có thể được sử dụng dưới chương trình chính. Sau đó đọc kết quả về rồi chia kết quả đọc được cho 2.046 đây là độ lệch độ phân giải vi điều khiển với độ phân giải của LM35 là 10mV.
- Tương tự khi đọc giá trị từ biến trở sử dụng kênh 6. Khi chia 2.046 thì giá trị biến trở sẽ chạy từ 0 – 500 vì độ phân giải lựa chọn là 10mV. Giá trị nhiệt độ được điều chỉnh từ 0 – 100 độ C nên từ kết quả ADC kênh 6 trả về là 0 – 500 chuyển đổi sang 0 – 100 chỉ việc đem giá trị adc/5, việc này chỉ đúng khi giá trị ADC đọc về là tuyến tính.
Chương trình con hiển thị
- Theo yêu cầu đề bài việc định vị trí hiển thị theo hình của yêu cầu. Khi khởi tạo là lcd_gotoxy(1,1); hoặc lcd_gotoxy(9,1); là cần xuất dữ liệu ra LCD1602 vị trí hàng 1 cột 9. Tương tự cho các vị trí khác chỉ cần xem định vị theo yêu cầu.
- Khi các phép chia t/100, t/10%10, t%10 đây là phương pháp tách số, lý do mỗi ô của LCD1602 chỉ hiển thị một ký tự duy nhất tại một thời điểm nhất định. Ví dụ 123 là một số nhưng có 3 giá trị. Sau khi tách số xong đem +0x30 chuyển giá trị thập phân sang bảng mã ASCII. Mã lệnh 0xdf là dấu độ trong bảng mã ASCII, mọi thông tin các bạn tra bảng sẽ hiểu rõ hơn.
Chương trình con kiểm tra để kích động cơ quay theo yêu cẩu của đề bài
- Khi nhiệt độ bằng giá trị cài đặt thì tắt động cơ. Động cơ quay thì kích một chân và tắt một chân cho module L298, khi hai chân đều khởi tạo chế độ CCP_OFF động cơ sẽ tắt.
- Khi nhiệt độ lớn hơn giới hạn cài động cơ quay thuận, khi đó khởi tạo CCP1 và tắt CCP2
- Khi nhiệt độ nhỏ hơn giới hạn cài động cơ quay nghịch, khi đó khởi tạo CCP2 và tắt CCP1
- Các trường hợp đều hiển thị thông tin theo yêu cầu đã được lập trình.
Chương trình chính thực hiện toàn bộ hoạt động của vi điều khiển dùng điều khiển tốc độ động cơ
- Bắt đầu chương trình chính phải khởi tạo ngõ vào ra cho vi điều khiển. Một chân của vi điều khiển thì làm nhiệm vụ I/O vì thế phải khỏi tạo. Port B dùng cho nút nhấn để đưa vào Vi điều khiển vì thế khởi tạo giá trị là 0xff, Port D, Port C Chân RC1/CCP2, RC2/CCP1 xuất cho động cơ đơn tức đưa tín hiệu từ Vi điều khiển ra ngoài nên khởi tạo là 0x00. Port E hoàn toàn nhận tín hiệu từ ngoài vào vi điều khiển vì vậy khởi tạo là 0xff.
- Sử dụng ADC khởi tạo bộ chia 32 để số lần đọc ADC trên 1s được xem nhỏ nhất. Yêu cầu sử dụng hai tín hiệu sử dụng chân AN5, AN6.
- Khi sử dụng điều chế độ rộng xung do vi điều khiển hổ trợ thì sử dụng Timer2. Cách tính: Tần số yêu cầu T=1.2ms. PR2 = 1.2ms/((1/8M)*4*16)-1 = 149. Sử dụng bộ chia 16. Không thể sử dụng bộ chia 1 hay 4 vì giá trị tính ra sẽ lớn hơn 255 vượt ngưỡng tràn của timer2. Duty = 1.2ms/((1/8M)*16) = 600. Tức giá trị cực đại của duty=600. Theo đề yêu cầu giá trị phần trăm duty chạy từ 10% – 100%.
Ban đầu tắt tạo xung và quy định quay thuận khi bắt đầu hoạt động.
- Tiến hành đọc chương trình ADC, đọc nhiệt độ LM35 và kiểm tra nút nhấn, hiển thị thông tin và kiểm tra để kích các động cơ quay thuận, quay nghịch, dừng động cơ theo điều kiện đã đưa ra. Việc sử dụng các chương trình con để xử lý chương trình chính được tối ưu hơn, giúp kiểm soát chương trình được tốt, dễ fix các lỗi nếu có sảy ra.
Chúc các bạn có một kỳ thi thành công…!!!