Điều khiển động cơ PWM+Nút nhấn+LM35+UART Máy tính, Lập trình Pic

dieu-khien-dong-co-pwm-nhiet-do-lm35-hien-thi-may-tinh-uart-nut-nhan-lap-trinh-pic-phan-cung
Điều khiển động cơ PWM giúp tạo tần số cao, có tính an toàn và ổn định. Điều khiển tốc độ động cơ bằng PWM là phương pháp thay đổi điện áp đặt vào động cơ. Dùng mạch điện tử để thay đổi độ rộng của xung ngỏ ra mà không làm thay đổi tần số. Sự thay đổi độ rộng xung dẫn đến sự thay đổi của điện áp cấp vào. Điều khiển động cơ có tính ứng dụng cao trong cuộc sống hàng ngày và trong công nghiệp.

Mua linh kiện điện tử tại Điện tử Nhật Tùng

Liên hệ làm mạch  Phone: 0967.551.477 Zalo: 0967.551.477 Email: dientunhattung@gmail.com Địa Chỉ: 171/25 Lê Văn Thọ, P8, Gò Vấp, Tp HCM Chi tiết: Nhận làm mạch và đồ án Điện tử  
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ết khóa học lập trình vi điều khiển online

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:

Hướng dẫn Tải và Cài đặt phần mềm giải nén Winrar

Video Điều khiển động cơ PWM Nút nhấn + LM35 + UART Máy tính

 

Blog Điều khiển động cơ PWM Nút nhấn + LM35 + UART Máy tính

Đề bài điều khiển động cơ PWM:

dieu-khien-dong-co-pwm-nhiet-do-lm35-hien-thi-may-tinh-uart-nut-nhan-lap-trinh-pic-de-bai

Bài giải điều khiển động cơ PWM:

Phần cứng chương trình điều khiển động cơ PWM:

  • Đề yêu cầu sử dụng đọc ADC thông qua chân RE0/AN5 và đọc nhiệt độ LM35 chân RE1/AN6. Nếu không yêu cầu các bạn có thể gắn vào chân có ký hiểu ANxx đây là chân có cổng đọc ADC. Vi điều khiển hổ trợ đọc tín hiệu tương tự sang số giúp phần cứng được tối ưu và dễ dàng giao tiếp thông qua các hàm hoặc thanh nghi đã được định nghĩa sẵn. Sử dụng biến trở để phân áp thì giá trị ADC đọc về từ điểm đầu đến điểm cuối của biến trở. Nguyên lý đưa ra giá trị ADC đọc về từ 0 đến 5V
  • Giao tiếp điều khiển tốc độ động cơ theo băm xung CCP PWM và bắt buộc sử dụng bộ thanh ghi PWM của nhà sản xuất thì phải sử dụng hai chân CCP1 hoặc CCP2. 
  • Động cơ yêu cầu là 12V1A trong khi vi điều khiển chỉ có thể sử dụng nguồn 5V vì vậy phải điều khiển qua trung gian bằng L298 đây là một IC được tích hợp hai mạch cầu H sẵn bên trong giúp hệ thống thiết kế được ổn định và tối ưu được phần cứng tốt hơn.
  • Giao tiếp với máy tính thông qua giao tiếp UART và sử dụng chuẩn RS232 được xem là phương pháp giao tiếp đơn giản và có độ ổn định rất cao. Việc sử dụng UART bắt buộc phải sử dụng hai chân TX, RX của Vi điều khiển tức là chân RC6, RC7
  • Sử dụng dao động ngoài thạch anh 8M gắn vào chân OSC1 OSC2 hoặc sử dụng thạch anh nội được tích hợp bên trong Vi điều khiển.

  • Đây được xem là một câu hỏi đặt biệt vì sử dụng chân MCLR làm chân điều khiển nút nhấn. Nếu không tìm hiểu kỹ sẽ rất khó sử lý chân này và dễ dẫn đến nhầm lẫn với chân Reset ngoài của Vi điều khiển.
  • 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
Pic16F887Pic16F887
Module L298Module M298
Biến trở VolumBiến trở Volum
Điện trởĐiện trở
Nút nhấnNút nhấn
Thạch anhThạch anh
LM35LM35
Cổng ComCổng Com
Động cơ 12V DCĐộng cơ 12V DC
         

dieu-khien-dong-co-pwm-nhiet-do-lm35-hien-thi-may-tinh-uart-nut-nhan-lap-trinh-pic-phan-cung

Phần mềm điều khiển động cơ PWM:

Khai báo thư viện tiền sử lý của động cơ PWM:

  • Vi điều khiển hiện tại mình đan dùng là Pic16F887
  • Hiện dùng thạch anh nội và thạch anh nội khai báo 8M bằng lệnh #Fuses    intrc_io     và    #delay(clock=8M).  
  • Lệnh đặt biệt #fuses  NOMCLR lệnh này  dùng khai báo chân MCLR thành tín hiệu chân INPUT điều khiển hệ thống, và chân MCLR không  có chức năng OUTPUT.
  • Đị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.
  • Khai báo giao tiếp UART chuẩn rs232#use rs232(baud=4800,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8)” gồm tốc độ truyền bằng 4800, không kiểm tra tính chắn lẻ, đồng thời dữ liệu truyền đi 8bit trong đó có 1bit STOP. Khi sử dụng UART bắt buộc phải dùng chân RC6/TX, RC7/RX 
  • Tên khai báo biến phụ thuộc vào chức năng để khai báo cho phù hợp. 
  • Trong yêu cầu có chức năng của chạy dừng cho động cơ, chạy thuận nghịch cho động cơ bằng PWM vì vậy nên sử dụng biết int1 tức 1bit. Đây được xem là phương pháp điều khiển đơn giản nhất và có tính ứng dụng khá cao trong các trường hợp có đối lập chung.
dieu-khien-dong-co-pwm-nhiet-do-lm35-hien-thi-may-tinh-uart-nut-nhan-lap-trinh-pic-khai-bao

Chương trình con động cơ PWM:

Chương trình Đọc ADC

  • Chân kết nối vào biến trở phân áp sử dụng chân RE0/AN5. Đọc tín hiệu Analog điện áp từ 0 – 5000mV sau đó quy đổi ra giá trị.
  • Đọc giá trị từ chân AN5 sau đó nhân cho 5000 tức Vref+ = 5V = 5000mV, chia 1023 tức ADC sử dụng 10bit. Từ đó kết quả ADC trả về từ 0 đến 5000.
  • Chuyển giá trị từ 0 – 5000 sang phần trăm duty từ 10% – 100%. Lúc này bắt buộc phải đi tính giá trị duty, sau khi tính kết quả duty chạy từ 0 – 500 tức giá trị cần quy đổi từ 50 – 500 xem phần tính chương trình chính. Cách chuyển từ 0 – 5000 sang 50 – 500 ta có phương trình duty = 50 + adc/11.11; đây là phương trình quen thuộc nên không nói nhiều để đỡ gây khó xử.
  • Cấp độ hiển thị từ 10% – 100%. Từ đó lấy giá trị duty tính được chia 50 sẽ chuyển sang được tỉ lệ phần trăm theo mong muốn.
  • Kiểm tra khi cấp độ bị thay đổi thì tiến hành gửi giá trị lên màn hình máy tính thông qua giao tiếp UART chuẩn RS232. %ld dùng truyền tham số cd vào chuỗi để gửi đi, phương pháp này khá quen thuộc khi đã học C. Tương tự khi ADC thay đổi sẽ bật động cơ vì theo yêu cầu động cơ chỉ tắt khi nhấn nút Stop và không bật động cơ bằng nút nhấn vì vậy phải có tác động từ biến trở khi có thay đổi giá trị thì bật động cơ theo yêu cầu.

dieu-khien-dong-co-pwm-nhiet-do-lm35-hien-thi-may-tinh-uart-nut-nhan-lap-trinh-pic-chuong-trinh-con-doc-adc

Chương trình con đọc nhiệt độ LM35

  • Nhiệt độ LM35 được sử dụng chân RE1/AN6 nên khởi tạo kênh 6 để đọc giá trị. 
  • Sau khi đọc xong chuyển đổi giá trị nhiệt độ sang giá trị thực bằng cách chia 2.046 tức chia cho độ lệch độ phần giải của Vi điều khiển với độ phân giải của nhiệt độ LM35.
  • Kiểm tra nếu nhiệt độ thay đổi thì tiến hành gửi giá trị lên máy tính thông qua giao tiếp UART chuẩn RS232.

dieu-khien-dong-co-pwm-nhiet-do-lm35-hien-thi-may-tinh-uart-nut-nhan-lap-trinh-pic-chuong-trinh-con-doc-lm35

Chương trình con kiểm tra nút nhấn

  • Theo yêu cầu được sử dụng 3 nút nhấn lần lượt gắn vào các chân RB3, RB4, RE3/MCLR. Khi nhấn RB3 cho động cơ quay thuận, nhấn RB4 cho động cơ quay nghịch vì vậy dùng biến trung gian tt_inv để chuyển trạng thái của động cơ, nút nhấn RE3 khi nhấn sẽ STOP động cơ đối lập với chạy nên dùng biến tt_ss để quy định trạng thái.

dieu-khien-dong-co-pwm-nhiet-do-lm35-hien-thi-may-tinh-uart-nut-nhan-lap-trinh-pic-chuong-trinh-con-ktr_nn

 

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 động cơ PWM

  • 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 có chân RC7/RX nhận tín hiệu từ máy tính gửi xuống nên đóng vai trò nhận tín hiệu vì vậy phải khởi tạo mức 1. 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à 0x80. 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=1ms. PR2 = 1ms/((1/8M)*4*16)-1 = 124. 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 = 1ms/((1/8M)*16) = 500. Tức giá trị cực đại của duty=500. 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 độ LM35kiểm tra nút nhấn. Khi giá trị nhiệt độ lớn hơn 50 hoặc tt_ss=0 thì cho dừng động cơ, ngược lại cho phép động cơ quay. Muốn quay thuận giá trị tt_inv=0, tức mở chân CCP1 tạo xung và tắt chân CCP2, ngược lại quay nghịch tt_inv=1 tức mở chân CCP2tắt chân CCP1. set_pwm_duty(duty); sẽ khởi tạo tốc độ cần quay theo yêu cầu đã đặt ra.
  • Nếu chi tiết hơn thì chương trình kiểm tra nút nhấn phải được sử dụng trong điều kiện tt_ss=1 tức động cơ đan hoạt động thì mới tiến hành kiểm tra chạy thuận-nghịch hoặc cho dừng động cơ, nhưng yêu cầu đưa ra không nhắc tới nên việc này không được ràng buộc quá lớn.

dieu-khien-dong-co-pwm-nhiet-do-lm35-hien-thi-may-tinh-uart-nut-nhan-lap-trinh-pic-chuong-trinh-chinh

Chúc các bạn có một kỳ thi thành công…!!!

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *