Điều khiển 2 động cơ bằng phương pháp điều xung PWM

Một phần của tài liệu Dồ án tốt nghiệp đề tài xe tự hành tránh vật cản sử dụng cảm biến siêu âm SRF05 và có điều khiển từ xa (Trang 36)

Để điều khiển tốc độ của động cơ DC người ta thường dùng nhiều phương pháp khác nhau trong đó có 1 phương pháp hết sức quan trọng và thông dụng là phương pháp điều chế độ rộng xung kích PWM.

Phương pháp điều xung PWM là gì?

- Phương pháp điều xung PWM là phương pháp thay đổi duty cycle ( khoảng thời gian tín hiệu ở mức cao) trong 1 chu kỳ cố định, qua đó làm thay đổi điện áp trung bình cấp ra tải

- Trong động cơ 1 chiều PWM được sử dụng để điều khiển động cơ hoạt động nhanh, chậm và ổn định tốc độ cho nó.

a) Nguyên lý hoạt động của PWM

PWM là phương pháp được thực hiện theo nguyên tắc đóng ngắt nguồn của tải 1 cách có chu kỳ theo luật điều chỉnh thời gian đóng cắt, phần tử thực hiện nhiệm vụ đó trong mạch là các van bán dẫn.

Xét hoạt động đóng cắt của 1 van bán dẫn, dùng van đóng cắt bằng Mosfes.

Hình 3.8: Sơ đồ đóng ngắt nguồn với tải

Nguyên lý

Trong khoảng thời gian từ 0 - ta cho van G mở toàn bộ điện áp nguồn

được đưa ra tải, còn trong khoảng thời gian từ cho van G khóa, cắt

nguồn cung cấp cho tải. Vì vậy với thay đổi từ 0 đến T ta sẽ cung cấp toàn bộ, 1 phần hay khóa hoàn toàn điện áp cung cấp cho tải

Sơ đồ trên là dạng xung điều chế trong 1 chu kỳ thì thời gian xung lên ( sườn dương) nó thay đổi dãn hay co vào. Độ rộng của nó được tính theo công thức.

Độ rộng = (t1 / T) * 100%

với: t1: thời gian xung ở sườn dương T: thời gian của cả sườn âm và dương Ta có: giá trị trung bình của điện áp ra tải

hay * D

và : điện áp nguồn cung cấp cho tải.

Như vậy theo đồ thị ta có:

Vì vậy trong đề tài việc điều khiển tốc độ(nhanh, chậm) của động cơ DC em sử dụng phương pháp điều chế độ rộng xung PWM để thay đổi điện áp DC cấp cho động cơ từ đó thay đổi tốc độ của động cơ DC. Đối với PIC 16F877A để sử dụng phương pháp này ta có thể sử dụng bộ điều chế độ rộng xung PWM tích hợp sẵn bên trong PIC. Điều khiển tốc độ của 2 động cơ với 2 ngõ ra xung tại 2 chân CCP1(chân 17) và CCP2 (chân 16). Tại các chân này khi hoạt động sẽ xuất chuỗi xung vuông với độ rộng điều chỉnh được dễ dàng.

b) Cách thiết lập chế độ PWM cho PIC 16F877A

Khi hoạt động ở chế độ PWM tín hiệu sau khi điều chế sẽ được đưa ra các pin của khối CCP ( cần ấn định các pin này là output). Để sử dụng chức năng điều chế này trước tiên ta cần tiến hành các bước cài đặt sau:

B1: Thiết lập thời gian của 1 chu kỳ của xung điều chế cho PWM bằng cách đưa giá trị thích hợp vào thanh ghi PR2( thanh ghi 8 bit thuộc Timer 2 có khả năng đọc và viết).

B2: Thiết lập độ rộng xung cần điều chế ( duty cycle) bằng cách đưa giá trị vào thanh ghi CCPRxL và các bit CCP1CON.

B3: Điều khiển các pin của CCP là output bằng cách clear các bit tương ứng trong thanh ghi TRISC.

B4: Thiết lập giá trị bộ chia tần số prescaler của Timer 2 và cho phép Timer 2 hoạt động bằng cách đưa giá trị thích hợp vào thanh ghi T2CON.

B5: Cho phép CCP hoạt động ở chế độ PWM.

Điều chế độ rộng xung PWM

 Dùng PIC 16F877A điều khiển động cơ quay thuận- nghịch và thay đổi tốc độ ta sử dụng bộ điều chế độ rộng xung PWM tích hợp sẵn bên trong PIC với 2 ngõ ra xung tại 2 chân CCP1 và CCP2

 Tại các chân này khi hoạt động sẽ xuất chuỗi xung vuông, độ rộng điều chỉnh được dễ dàng xung ra này dùng để tạo tín hiệu đóng ngắt transistor trong mạch động lực với độ rộng xác định sẽ tạo ra 1 điện áp trung bình xác định. Thay đổi độ rộng xung sẽ thay đổi điện áp trung bình và do đó thay đổi tốc độ động cơ

- Để có thể sử dụng được bộ PWM trước hết nó phải được khởi tạo chế độ PWM bằng lệnh

Setup_CCP1(CCP_PWM) Setup_CCP2(CCP_PWM) (adsbygoogle = window.adsbygoogle || []).push({});

- Bộ PWM hoạt động phải được sự hỗ trợ của Timer 2, đâylà timer 8 bit có bộ chia trước. Ngõ vào xung clock( fosc/4) có thể chọn hệ số chia trước là 1:4; 1:8; 1:16 được lựa chịn bằng các bit điều khiển T2CKPS1:T2CKPS2 - Lệnh khởi tạo timer 2 và cũng là lệnh tạo xung cho PWM là

Setup_timer_2(mode,period,postscale) Với:

• Mode: có thể chọn 1 trong các hình thức T2_DIV_BY_4, T2_DIV_BY_8, T2_DIV_BY_16

• Period: là 1 số nguyên (0- 255) để xác định khi nào thì xung clock reset

• Postscale: là 1 số từ 1-16 để xác định có bao nhiêu lần reset trước 1 ngắt( 1 có nghĩa là 1 lần, 2 có nghĩa là 2 lần,…)

- Chức năng của lệnh này là tạo ra chu kỳ xung, được tính như sau

T= (1/fosc)*4*T2_DIV*(period+1)

Vd trong bài: muốn tạo chu kỳ xung 0,2ms ta khởi tạo timer 2 như sau Setup_timer_2(T2_DIV_BY_16,200,1)

T= (1/20e6)*4*16*(200+1) = 0,2ms Tạo xung bằng lệnh

Set_PWM1_duty(value) Set_PWM2_duty(value) Value là biến hoặc hằng giá trị 8 bit hoặc 16 bit

Lệnh này dùng để set duty trong chế độ PWM, nó ghi 10 giá trị vào thanh ghi CCPx. Nếu giá trị chỉ là 8 bit thì nó tự dịch lên với 2 bit zero ở vị trí LSB để đủ 10 bit nạp vào CCPx

Mỗi chu kỳ xung thời gian duty được xác định là

Value*(1/clock)*T2_DIV VD trong bài

Với thạch anh 20MHz set_pwm1_duty(201) Thời gian duty là 201*(1/20e6)*16 = 0,02ms

(thời gian duty là thời gian xung ở mức cao của chu kỳ xung)

Để động cơ quay với tốc độ cực đại thì: thời gian duty = chu kỳ xung, bởi khi ấy gần như ngõ ra bộ PWM chỉ là mức 1

Một phần của tài liệu Dồ án tốt nghiệp đề tài xe tự hành tránh vật cản sử dụng cảm biến siêu âm SRF05 và có điều khiển từ xa (Trang 36)