1. Trang chủ
  2. » Kỹ Thuật - Công Nghệ

Instruction guide 03 PWM pulse witdh modulation and applications

17 77 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 17
Dung lượng 121,24 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Trước đây, khi chỉ cần một phần công suất trong động cơ máy khâu thì chỉ cần một chiết áp (nằm trên bàn đạp của máy khâu) mắc nối tiếp với động cơ điều chỉnh dòng điện đi qua động cơ là có thể thực hiện được điều này. Tuy nhiên việc đó sẽ gây ra tổn hao công suất dưới dạng nhiệt trong phần tử điện trở và đó là một phương pháp không hiệu quả. Phương pháp sử dụng điều chế độ rộng xung PWM (Pulse Width Modulation) được sử dụng như một giải pháp cho vấn đề phức tạp này. Một trong những ứng dụng có thể kể đến đầu tiên của PWM là trong Sinclair X10, một bộ khuếch đại âm thanh 10W ở dưới dạng kit vào thập niên1960. Cùng khoảng thời gian đó, PWM bắt đầu được sử dụng rộng rãi trong các ứng dụng điều khiển động cơ DC, sau đó là động cơ AC mà đặc biệt hiện nay được sử dụng rộng rãi trong các ứng dụng điều khiển động cơ không đồng bộ 3 pha sử dụng các bộ Inverter. Trong nội dung của bài học này sẽ lần lượt giới thiệu đến học viênsinh viên các nội dung sau: + Khái niệm và nguyên lý của điều chế độ rộng xung; + Các ứng dụng tiêu biểu với PWM; + Giới thiệu cách sử dụng PWM với vi điều khiển thông qua ứng dụng điều khiển độ sáng của đèn LED;  I. ĐIỀU CHẾ ĐỘ RỘNG XUNG

Trang 1

TRƯỜNG SĨ QUAN KỸ THUẬT QUÂN SỰ

KHOA KỸ THUẬT CƠ SỞ

Bản số:

BÀI GIẢNG Môn học: Kỹ thuật điện – điện tử

Bài 3: Điều chế độ rộng xung PWM và một số ứng dụng Đối tượng: Đại học quân sự, dân sự, quốc tế, trung cấp CNTT Năm học: ……… – ………

Thiếu tá, TS Lê Công Danh

THÀNH PHỐ HỒ CHÍ MINH, THÁNG … NĂM ……

Trang 2

TRƯỜNG SĨ QUAN KỸ THUẬT QUÂN SỰ

KHOA KỸ THUẬT CƠ SỞ

BÀI GIẢNG Môn học: Kỹ thuật điện – điện tử

Bài 3: Điều chế độ rộng xung PWM và các ứng dụng

Đối tượng: Đại học quân sự, dân sự, quốc tế, trung cấp CNTT Năm học:

Ngày … tháng… năm ……… TRƯỞNG BỘ MÔN

Trung tá, GV, TS Trần Văn Thân

THÀNH PHỐ HỒ CHÍ MINH, THÁNG … NĂM ………

PHÊ DUYỆT

Ngày … tháng … năm ………

CHỦ NHIỆM KHOA

Đại tá, GVC, ThS Nguyễn Thanh Toàn

Trang 3

MỞ ĐẦU

Trước đây, khi chỉ cần một phần công suất trong động cơ máy khâu thì chỉ cần một chiết áp (nằm trên bàn đạp của máy khâu) mắc nối tiếp với động cơ điều chỉnh dòng điện đi qua động cơ là có thể thực hiện được điều này Tuy nhiên việc đó sẽ gây ra tổn hao công suất dưới dạng nhiệt trong phần tử điện trở

và đó là một phương pháp không hiệu quả Phương pháp sử dụng điều chế độ rộng xung PWM (Pulse Width Modulation) được sử dụng như một giải pháp cho vấn đề phức tạp này Một trong những ứng dụng có thể kể đến đầu tiên của PWM là trong Sinclair X10, một bộ khuếch đại âm thanh 10W ở dưới dạng kit vào thập niên1960 Cùng khoảng thời gian đó, PWM bắt đầu được sử dụng rộng rãi trong các ứng dụng điều khiển động cơ DC, sau đó là động cơ AC mà đặc biệt hiện nay được sử dụng rộng rãi trong các ứng dụng điều khiển động cơ không đồng bộ 3 pha sử dụng các bộ Inverter

Trong nội dung của bài học này sẽ lần lượt giới thiệu đến học viên/sinh viên các nội dung sau:

+ Khái niệm và nguyên lý của điều chế độ rộng xung;

+ Các ứng dụng tiêu biểu với PWM;

+ Giới thiệu cách sử dụng PWM với vi điều khiển thông qua ứng dụng điều khiển độ sáng của đèn LED;

Trang 4

I ĐIỀU CHẾ ĐỘ RỘNG XUNG

A KHÁI NIỆM

PWM (Pulse Width Modulation) là phương pháp điều chỉnh điện áp ra tải

hay nói cách khác là phương pháp điều chế dựa trên sự thay đổi độ rộng của chuỗi xung vuông dẫn đến sự thay đổi điện áp ra Các tín hiệu PWM khi biến đổi thì có cùng 1 tần số và khác nhau về độ rộng của sườn dương hoặc sườn âm

B NGUYÊN LÝ

Nguyên lý chung của phương pháp PWM được thực hiện dựa trên việc đóng ngắt nguồn có tải một cách có chu kì Phần tử thực hiện nhiện vụ đóng cắt

có thể là các van bán dẫn như transistor, FET, MOSFET, Triac, IGBT… Hình 1

là một dạng tín hiệu xung PWM có đồ thị f t( ) với chu kỳ T và thời gian xung cao là D Các giá trị cực đại và cực tiểu của tín hiệu được ký hiệu là ymaxvà ymin Khi đó giá trị trung bình của dạng sóng đó được xác định bởi công thức

0

1 ( )

T tb

T

(1)

f t( ) là một sóng xung, giá trị của nó là cực đại trong khoảng thời gian

0  t D T. và cực tiểu trong khoảng thời gian D T t T   Khi đó biểu thức (1) được viết lại dưới dạng

0

tb

DT

(2)

Hình 1 Đồ thị tổng quát của một dạng sóng xung PWM

Khi ymin  0 thì biểu thức (2) sẽ có dạng y tbD y max Giá trị trung bình của tín hiệu trong trường hợp này hoàn toàn phụ thuộc vào chu kỳ làm việc D (thời gian sóng cao) Có nhiều phương pháp được sử dụng để tạo ra tín hiệu PWM

Trang 5

như: Delta, Delta – Sigma, Điều chế vecto không gian… Tuy nhiên cách đơn giản nhất để tạo ra một tín hiệu có dạng PWM là phương pháp giao thoa khi chỉ cần có một sóng răng cưa hoặc sóng tam giác (dễ dàng tạo ra bằng cách sử dụng một bộ tạo dao động đơn giản) và một mạch so sánh Khi giá trị của tín hiệu tham chiếu (tín hiệu đặt) (sóng sin màu đỏ trong hình 2) lớn hơn sóng điều biến (màu xanh lam), thì tín hiệu PWM (màu đỏ tía) sẽ ở trạng thái cao, nếu không thì ở trạng thái thấp (Hình 2)

Hình 2 Sử dụng phương pháp giao thoa để tạo ra sóng xung PWM.

C CÁC ỨNG DỤNG TIÊU BIỂU VỚI PWM

Có rất nhiều ứng dụng được sử dụng với PWM Một trong những ứng dụng

cơ bản có thể liệt kê là trong điều khiển động cơ DC, điều khiển Servo, mã hóa tín hiệu trong điện tử viễn thông, các bộ điều chỉnh dòng điện, điện áp ra tải trong các bộ biến đổi xung/áp Trong nội dung này sẽ tập trung vào 2 ứng dụng cụ thể của PWM là điều chỉnh điện áp và hiệu ứng khuếch đại âm thanh

1 Điều chỉnh điện áp

PWM được sử dụng trong các bộ điều chỉnh điện áp bằng cách đóng cắt nguồn cấp cho tải với chu kỳ thích hợp, đầu ra sẽ tương ứng với một điện áp tại mức mong muốn Nhiễu chuyển mạch thường được lọc với một cuộn cảm và một tụ điện Phương pháp này sẽ đo điện áp đầu ra, khi điện áp này thấp hơn điện áp mong muốn, nó sẽ bật công tắc Khi điện áp ra cao hơn điện áp mong muốn, nó sẽ tắt công tắc Phương pháp điều chỉnh điện áp này được sử dụng khi

Trang 6

muốn thay đổi vận tốc quay của động cơ DC hoặc tín hiệu cấp cho các động cơ RC-Servo khi muốn điều chỉnh vị trí của chúng

2 Hiệu ứng âm thanh và khuếch đại âm thanh

PWM được sử dụng trong tổng hợp âm thanh đặc biệt là tổng hợp trừ vì giúp mang lại một hiệu ứng âm thanh tương tự như hợp ca hoặc các máy tạo dao động Về mặt lịch sử, một dạng PWM thô đã được sử dụng để phát lại âm thanh

số PCM trên loa máy tính, được điều khiển bởi chỉ hai mức điện áp, điển hình là 0V và 5V Bằng cách điều chỉnh thời gian cho xung và dựa vào các tính chất lọc vật lý của loa có thể thu được gần đúng mẫu phát lại của mono PCM, mặc dù với chất lượng rất thấp, Và với kết quả rất khác nhau giữa các lần thực hiện Một bộ khuếch đại âm thanh dựa trên nguyên lý PWM đang trở nên phổ biến được gọi là bộ khuếch đại lớp-D Các bộ khuếch đại này tạo ra một tín hiệu đầu vào analog tương đương PWM được đưa vào loa thông qua một mạng lưới

bộ lọc thích hợp để chặn sóng mang và phục hồi âm thanh nguyên gốc Các bộ khuếch đại này được đặc trưng bởi các đặc điểm hiệu suất rất tốt (≥ 90%) và kích thước nhỏ gọn/trọng lượng nhẹ cho các đầu ra công suất lớn Trong vài thập kỷ, các bộ khuếch đại PWM công nghiệp và quân sự đã được sử dụng phổ biến, thường là để điều khiển động cơ servo Các cuộn cảm từ trường (field-gradient) trong các máy MRI được điều khiển bởi các bộ khuếch đại PWM công suất tương đối cao

Trong thời gian gần đây, phương pháp mã hóa âm thanh Direct Stream Digital đã được đưa ra, sử dụng một dạng điều chế độ rộng xung được gọi là điều chế mật độ xung, ở tốc độ lấy mẫu đủ cao (thường theo MHz) để bao phủ được toàn bộ dãi tần số âm thanh với đầy đủ độ trung thực Phương pháp này được sử dụng ở định dạng SACD, và sự tái tạo của tín hiệu âm thanh được mã hóa cơ bản tương tự như phương pháp được sử dụng trong bộ khuếch đại lớp-D

Trang 7

II TẠO PWM SỬ DỤNG VI ĐIỀU KHIỂN

Vi điều khiển cho phép người lập trình bằng việc sử dụng phần mềm dựa trên cấu hình các thanh ghi đã có để tạo ra các tín hiệu PWM nhằm mục đích sử dụng cho các mục đích khác nhau Tùy thuộc vào đặc tính của từng vi điều khiển mà tính chất của các xung được tạo ra sẽ khác nhau Sự khác biệt cơ bản của các xung là ở số bít dùng để tạo ra loại xung đó Có các xung 8 bit, 16 bit và

32 bit Số bit càng cao sẽ quyết định đến tần số xuất xung hay độ mịn của xung

đó Với mục đích giới thiệu PWM cho các đối tượng không chuyên về phần cứng, trong chương này sẽ tập trung vào việc giới thiệu cách sử dụng các chân

có thể tạo ra tín hiệu PWM trên vi điều khiển Atmega 328p dựa trên IDE Arduino Đồng thời sẽ giới thiệu ứng dụng cơ bản nhất của PWM thông qua việc thay đổi độ sáng của đèn LED trên mạch điều khiển trugn tâm của Module 1

A GIỚI THIỆU CÁC CHÂN PWM TRÊN VI ĐIỀU KHIỂN ARDUINO

Vi điều khiển Atmega 328p mà cụ thể là board Arduino Nano có 6 chân cho phép tạo ra xung PWM Các chân này bao gồm D3, D5, D6, D9, D10, D11 Bảng 1 liệt kê các Timer đi kèm với các chân và tần số tương ứng với tín hiệu xung khi sử dụng hàm cơ bản ban đầu AnalogWrite của Arduino IDE Việc thay đổi tần số xung để phục vụ cho các ứng dụng cần tần số cao hơn sẽ được giới thiệu cụ thể ở bài 5 của phần thực hành này Do chân D3 ngoài mục đích là tạo xung còn có mục đích làm chân phát hiện sự thay đổi tín hiệu (Pinchange Interrupt) nên chân D3 được sử dụng chính làm chân đọc tín hiệu của Encoder Các chân còn lại tương ứng với các chân ra O1, O2, O3, O4 và O5 trên mạch điều khiển trung tâm

Bảng 1 Tham số của các chân PWM trên Arduino Nano

Chân Timer Tần số, Hz Chân tương ứng trên

board trung tâm

Trang 8

Lưu ý: Khi sử dụng Arduino IDE, hạn chế sử dụng chân D5 và D6 trong

việc tạo xung vì hai chân này sử dụng Timer 0 Nếu trong chương trình không

sử dụng hàm Delay() hay Tone() thì việc sử dụng hai chân này mới hiệu quả

B SỬ DỤNG HÀM ANALOGWRITE ĐỂ ĐIỀU CHẾ ĐỘ RỘNG XUNG Hàm analogWrite() trong Arduino giúp tạo ra một xung PWM Hàm này truyền vào tham số cho phép thay đổi độ rộng của xung Tần số xung được Arduino thiết lập mặc định theo bảng 1

Cú pháp analogWrite (tên chân, value);

+ tên chân là 1 trong 6 chân có thể sử dụng để tạo ra tín hiệu xung như đã trình bày ở phần trên Trước khi muốn sử dụng các chân này làm chân xuất tín hiệu xung PWM thì ngoài ra còn cần phải kết hợp hàm pinMode() để cấu hình chân này là chân OUTPUT Hàm pinMode đã được trình bày ở bài thực hành 02

+ Đối với tham số value thì giá trị của tham số này sẽ nằm trong khoảng từ

0 đến 254 vì đối với vi điều khiển Atmega 328p thì xung PWM được điều khiển bằng các thanh ghi 8 bit Giá trị value bằng 0 tương đương thời gian xung nhận mức tín hiệu cao bằng 0 giây và giá trị value bằng 254 tương đương thời gian xung nhận mức tín hiệu cao bằng 1/2T (T=1/f) giây và bằng 100%

Ví dụ 1 Giả sử ta muốn sử dụng chân D10 làm chân xuất tín hiệu xung và

độ rộng xung này tương ứng 50% thì chương trình sẽ bao gồm

+ chọn chân D10 làm chân Output;

+ xuất tín hiệu xung tương ứng chân D10 tương ứng với giá trị value bằng 50%x254 = 127;

#define PWM_pin 10

void Setup(){

pinMode(PWM_pin, OUTPUT);

analogWrite(PWM_pin, 127);

}

void loop(){

}

Chương trình tham khảo: IG03.1_PWM_And_Applications

Trang 9

Ví dụ 2 Giả sử ta muốn sử dụng chân D11 làm chân xuất tín hiệu xung và

độ rộng xung này lần lượt thay đổi từ 0%, 25%, 50%, 75%, 100% và về 0%

sau mỗi khoảng thời gian 2 giây Sau đó chương trình lặp lại theo trình tự kể trên thì chương trình sẽ bao gồm

+ chọn chân D11 làm chân Output;

+ xuất tín hiệu xung tương ứng chân D11 tương ứng với các giá trị 0%, 25%, 50%, 75%, 100% Bảng tính được trình bày trong bảng 2

Bảng 2 Độ rộng xung tương ứng với giá trị % Giá trị value tỉ lệ chu kì xung, %

analogWrite(pin, 64) 64/255 25%

analogWrite(pin, 127) 127/255 50%

analogWrite(pin, 191) 191/255 75%

analogWrite(pin, 255) 255/255 100%

#define PWM_pin 11

void Setup(){

pinMode(PWM_pin, OUTPUT);

}

void loop(){

analogWrite(PWM_pin, 0);

delay(2000);

analogWrite(PWM_pin, 64);

delay(2000);

analogWrite(PWM_pin, 127);

delay(2000);

analogWrite(PWM_pin, 191);

delay(2000);

analogWrite(PWM_pin, 255);

Trang 10

}

Chương trình tham khảo: IG03.2_PWM_And_Applications

Nếu sử dụng Oscicolpe để xác định tín hiệu ra của chân 11 ta sẽ thu được tín hiệu với sự thay đổi độ rộng như trên hình 3

Hình 3 Sự thay đổi độ rộng xung tương ứng với các giá trị của biến value.

C THAY ĐỔI ĐỘ SÁNG ĐÈN LED BẰNG PWM VÀ HÀM FOR

Việc điều khiển bóng LED sáng dần, tắt dần được sử dụng nhiều trong lĩnh vực quảng cáo Sử dụng kỹ thuật PWM cho phép chúng ta có thể làm được điều đó dễ dàng với vi điều khiển Arduino Nano PWM có thể làm cho đèn LED sáng hoặc tắt với nhiều cấp độ khác nhau, khoảng 500 chu kỳ mỗi giây Độ sáng chúng ta nhìn thấy được xác định dựa vào số lần chân tín hiệu ngõ ra kỹ thuật số

mở lên so với số lần nó tắt đi - có nghĩa là, mỗi khi đèn LED được thắp sáng hoặc không có ánh sáng Bởi vì mắt của chúng ta không thể nhìn thấy sự nhấp nháy nhanh hơn 50 chu kỳ mỗi giây nên đèn LED sẽ có một độ sáng không đổi Trong bài học trước chúng ta đã được làm quen với khái niệm đèn LED và đã được thực hành làm sáng và tắt đèn LED tương ứng trên mạch điều khiển trung

Trang 11

tâm thông qua câu lệnh digitalWrite() Trong nội dung này chúng ta sẽ tiếp tục cách để thay đổi độ sáng của đèn thông qua câu lệnh analogWrite() và vòng lặp for();

Ví dụ 3 Điều khiển sáng dần, tối dần chân D9 trên mạch điều khiển trung

tâm Để làm được điều này ngoài việc sử dụng các câu lệnh như đã giới thiệu ở hai ví dụ trước thì ngoài ra cần kết hợp thêm vòng lặp for để thay đổi giá trị value trong câu lệnh analogWrite Cú pháp của vòng lặp for() được trình bày sau

ví dụ này

int d = 5;

void setup(){

pinMode(9, OUTPUT);

}

void loop(){

for (int a = 0; a < 256; a++){

analogWrite(9, a);

delay(d);

}

for (int a = 255; a >= 0; a ){

analogWrite(9, a);

delay(d);

}

delay(200);

}

Chương trình tham khảo: IG03.3_PWM_And_Applications

Hàm for

Hàm for có chức năng làm một vòng lặp Vậy vòng lặp là gì? Hãy hiểu một cách đơn giản, nó làm đi làm lại một công việc có một tính chất chung nào

đó Chẳng hạn, bạn bật tắt một con LED thì dùng digitalWrite xuất HIGH delay rồi lại LOW rồi lại delay Nhưng nếu muốn làm nhiều hơn 1 con LED thì mọi đoạn code dài ra (không đẹp và khi chỉnh sửa thì chẳng lẻ ngồi sửa lại từng dòng?

Trang 12

Với 1 con led, việc lập trình sẽ như thế này

digitalWrite(led1,HIGH);

delay(1000);

digitalWrite(led1,LOW);

delay(1000);

Với 10 con led, nếu bạn không dùng for, đoạn code nó sẽ dài như thế này digitalWrite(led1,HIGH);

delay(1000);

digitalWrite(led1,LOW);

delay(1000);

digitalWrite(led2,HIGH);

delay(1000);

digitalWrite(led2,LOW);

delay(1000);

digitalWrite(led10,HIGH);

delay(1000);

digitalWrite(led10,LOW);

delay(1000);

Nếu như vậy thì bạn có còn muốn lập trình và suy nghĩ về một led ma trận

có còn nữa không ? Chắc chắn là không rồi, vì vậy hàm for ra đời để giúp bạn nhìn cuộc sống một cách tươi đẹp hơn Về cơ bản thì vòng lặp for() được hiểu gồm 4 phần:

+ Hàm for là một vòng lặp có giới hạn - nghĩa là chắc chắn nó sẽ kết thúc (không sớm thi muộn)

+ Nó sẽ bắt đầu từ một vị trí xác định và đi đến một vị trí kết thúc

+ Cứ mỗi bước xong, nó lại thực hiện một đoạn lệnh

Sau đó, nó lại bước đi tiếp, nó có thể bước 1 bước hoặc nhiều bước, nhưng không được thay đổi theo thời gian Có 2 loại là for tiến và for lùi

Cú pháp for (<biến chạy> = <start>;<điều kiện>;<bước>)

+ For tiến (xuất phát từ một vị trí nhỏ chạy đến vị trí lớn hơn) <vị trí kết thúc> bé hơn <vị trí kết thúc>

Trang 13

for (int a = 0; a < 254; a++){

analogWrite(9, a);

delay(d);

+ For lùi (xuất phát từ một vị trí lớn chạy về vị trí nhỏ hơn) <vị trí xuất phát> lớn hơn <vị trí kết thúc>

for (int a = 255; a >= 0; a ){

analogWrite(9, a);

delay(d);

D BÀI TẬP ĐỊNH HƯỚNG NGHIÊN CỨU

+ Tìm hiểu ứng dụng của PWM trong điều khiển vận tốc động cơ thông qua các từ khóa: PWM, speed DC motor, H-bridge, L298N;

+ Tìm hiểu về các loại nút nhấn: nút nhấn nhả, nhấn giữ, swich, công tắc gạt

+ Tìm hiểu về hàm digitalRead() và cú pháp lệnh if();

+ Tìm hiểu về cách đặt một tên biến trong arduino IDE;

+ Tìm hiểu về định nghĩa Switch deboucing;

KẾT LUẬN Bài học cung cấp cho học viên/ sinh viên những kiến thức cơ bản nhất về PWM và những ứng dụng của nó trong thực tiễn đời sống Ngoài ra đã giúp người học tiếp cận thêm với vòng lặp for(), một lệnh được sử dụng khá phổ biến trong ngôn ngữ lập trình

Ngày tháng năm 20

NGƯỜI BIÊN SOẠN

Ngày đăng: 16/09/2019, 20:52

TỪ KHÓA LIÊN QUAN

w