Ví dụ về điều chế xung
Điều chế độ rộng xung
Collapse
X
-
Dùng 1 timer giải quyết bài toán PWM.
Ngoài cách của ATYLA đưa ra, cũng có một vài cách khác. Tui đưa ra 1 cách mà tui cho là khá tối ưu. Chỉ cần một Timer là giải quyết được. bài toán trên, ko mất nhiều thời gian chờ cho vi điều khiển 89C51 của ATMEL thông dụng. Cách thức thực hiện như sau:
Gọi chu kỳ là T;
Khai báo biến: x,y,Index. Trong đó:
x là độ rộng xung cao;
ylà độ rộng xung thấp;//Nên x+y=T
Index là kiểu bit: 1 chỉ số ứng với xung cao, 0 ứng với chỉ số xung thấp;
Cài đặt ngắt Timer;
//Ngắt timer
if(Index)
{
Đặt chân PWM lên mức cao;
Nạp thời gian timer=x;//Phần cao
}else
{
Đặt chân PWM xuống mức thấp;
Nạp thời gian timer=y;//Phần thấp
}
Index=Not(Index);//đảo trạng thái biến chỉ số
//Kết thúc ngắt timer
Trong main(); khi thay đổi độ rộng, chỉ cần x=Value,y=T-x;
Tuy nhiên có thể dùng giải pháp 2 timer, một cái để định thời cho chu kỳ, cái còn lại để định thời cho độ rộng xung cao.
Do 89c51 của ATMEL ko tích hợp PWM, bởi vậy, nếu sử dụng trong những ứng dụng đòi hỏi cấp chính xác cao thì các giải pháp trên phải tính đến thời gian: thời gian đáp ứng và xử lý ngắt, thời gian mã lệnh để bù trừ.
Comment
-
cho mình hỏi điều khiển PWM là thay đổi thời gian tồn tại mức xung cao trong khi tần số không thay đổi vậy tần số để điều khiển cho động cơ DC là bao nhiêu vậy?
Trong một số dong VDk có tích hợp các kênh PWM vậy sử dụng nó để tạo xung điều khiển đông cơ có gì khác?
Tai hạ ngu muội xem nhiều rồi nhưng vẫn không hiểu dược vấn đề này nhờ các huynh chỉ giao giúp
Comment
-
Mình dùng cách này để tạo độ rộng xung cũng chỉ dùng 1 timer, không biết có hiệu quả không!
//Giả sử xung ra ở chân P10, có độ rộng 30%, chu kì xung 1ms
unsigned char đếm=0;
void main(void)
{
P10=0;
Khtao_T0(1ms);
while(1);
}
void Ngat_T0(void) interrupt 1
{
đếm++;
if(đếm==30) P10=0;
if(đếm==100) {P10=1;đếm=0;}
}!e
Comment
-
Trong asm không có hàm con có đối số, nhưng bạn có thể dùng nhãn và lệnh call hay acall với thông số đc đặt sẵn trươc khi gọi nó thì nó sẽ thực thi như một chương trình con. Cuối chương trình con này bạn để lệnh ret. Dùng asm sẽ dễ tính ra thời gian hơn và ta có thể chính xac hóa thời gian nữa dựa trên số câu lệnh và thời gian thực hiện mỗi lệnh. ^^
Comment
-
Pwm
Bác Binhanh có thể cho hỏi?Nguyên văn bởi BinhAnh Xem bài viếtNgoài cách của ATYLA đưa ra, cũng có một vài cách khác. Tui đưa ra 1 cách mà tui cho là khá tối ưu. Chỉ cần một Timer là giải quyết được. bài toán trên, ko mất nhiều thời gian chờ cho vi điều khiển 89C51 của ATMEL thông dụng. Cách thức thực hiện như sau:
Gọi chu kỳ là T;
Khai báo biến: x,y,Index. Trong đó:
x là độ rộng xung cao;
ylà độ rộng xung thấp;//Nên x+y=T
Index là kiểu bit: 1 chỉ số ứng với xung cao, 0 ứng với chỉ số xung thấp;
Cài đặt ngắt Timer;
//Ngắt timer
if(Index)
{
Đặt chân PWM lên mức cao;
Nạp thời gian timer=x;//Phần cao
}else
{
Đặt chân PWM xuống mức thấp;
Nạp thời gian timer=y;//Phần thấp
}
Index=Not(Index);//đảo trạng thái biến chỉ số
//Kết thúc ngắt timer
Trong main(); khi thay đổi độ rộng, chỉ cần x=Value,y=T-x;
Tuy nhiên có thể dùng giải pháp 2 timer, một cái để định thời cho chu kỳ, cái còn lại để định thời cho độ rộng xung cao.
Do 89c51 của ATMEL ko tích hợp PWM, bởi vậy, nếu sử dụng trong những ứng dụng đòi hỏi cấp chính xác cao thì các giải pháp trên phải tính đến thời gian: thời gian đáp ứng và xử lý ngắt, thời gian mã lệnh để bù trừ.
-Giả sử tui muốn dùng vi điều khiển để điều chế độ rộng xung của một tín hiệu xoay chiều hình sin tần số 50Hz, biên độ khoảng 0-5V thì làm thế nào?. Vì theo tui biết thường vi điều khiển không làm việc với tín hiệu xoay chiều. Bác giải thích giúp nhé.
Comment
-
Tần số để điều khiển cho động cơ DC là bao nhiêu phụ thuộc vào đặc tính động học của động cơ.Nguyên văn bởi ksngoc Xem bài viếtcho mình hỏi điều khiển PWM là thay đổi thời gian tồn tại mức xung cao trong khi tần số không thay đổi vậy tần số để điều khiển cho động cơ DC là bao nhiêu vậy?
Trong một số dong VDk có tích hợp các kênh PWM vậy sử dụng nó để tạo xung điều khiển đông cơ có gì khác?
Tai hạ ngu muội xem nhiều rồi nhưng vẫn không hiểu dược vấn đề này nhờ các huynh chỉ giao giúp
Đối với VĐK có tích hợp các kênh PWM sẽ làm việc chính xác, đơn giản trong việc lập trình.Mỗi chế độ PWM phù hợp với những ứng dụng khác nhau, không chỉ trong điều khiển động cơ.dientuvietnam.net
Comment
-
Đặc tính động học bao gồm những đặc tính gì vậy (đừng nói là tần số quay của động cơ nhé) ?Nguyên văn bởi saoxathu Xem bài viếtTần số để điều khiển cho động cơ DC là bao nhiêu phụ thuộc vào đặc tính động học của động cơ.be kind, be sweet, be human
Comment
-
Pac ITALY
Trong cái code bằng c pác viết tính độ rộng xung thế nào đây pác nhỉ ? xin chỉ giáo !Nguyên văn bởi ATYLA Xem bài viếtChương trình chính
Comment
-
mọi người cho em hỏi:em muốn tăng giảm tốc độ động cơ bằng điều chế xung PWM dùng 8051.mạch yêu cầu có nút điều chỉnh tăng giảm tốc độ.xung đưa vào mạch cầu H thì làm thế nào ạ????mọng mọi người giúp đỡ!(khi lập trình thay đổi biến delay)ĐẠI HỌC SƯ PHẠM KỸ THUẬT I
Nợ cha một sự nghiệp - Nợ mẹ một nàng dâu
Comment
Bài viết mới nhất
Collapse
-
Trả lời cho Tìm bạn thân quen cũ.bởi nhathung1101Còn sống không lão??? Mất một thời gian chữa bệnh nên quên hỏi thăm.......
-
Channel: Tâm tình dân kỹ thuật
hôm nay, 03:09 -
-
Trả lời cho Công suất truyền qua lõi máy biến ápbởi nhathung1101Thời buổi năng lượng xanh, nhất là xanh cả mặt... Thì Điện mặt giời, điện gió, sẽ lên ngôi.
Nếu không nắm bắt được cái cơ bản đó thì đi làm coder à? Mà coder giờ thất nghiệp cả lũ vì AI rồi!!!









...
-
Channel: Điện tử công suất
hôm nay, 03:03 -
-
Trả lời cho Công suất truyền qua lõi máy biến ápbởi quangdonguehChà, lâu lắm rồi nhưng diễn đàn vẫn còn những chủ đề cốt lõi của điện tử công suất...-
Channel: Điện tử công suất
Hôm qua, 07:53 -
-
bởi bqvietNếu muốn tăng công suất cần tăng con chip và tăng biến áp lên lớn hơn. Thiết kế ban đầu dùng TNY25x và biến áp EE16 hoặc EE13. Tăng con chip lên TNY268 vẫn mạch nguyên lý đó và biến áp lên EE19 sẽ nâng công suất ra thêm nhiều. Tăng tối đa...-
Channel: Điện tử công suất
Hôm qua, 02:14 -
-
bởi Nexus 6PMạch này chỉ chạy cho LED 10W trở xuống, còn muốn chạy Led công suất cao thì sao bác thớt ơi?-
Channel: Điện tử công suất
22-10-2026, 14:33 -
-
bởi Nexus 6PMạch này chỉ chạy cho LED 10W trở xuống, còn muốn chạy Led công suất cao thì sao bác thớt ơi?-
Channel: Điện tử công suất
22-10-2026, 10:49 -
-
Trả lời cho Tìm VR 5 chânbởi dinhthuong80Cảm ơn bác bqviet . Nhưng hình như các VR 5 chân của linhkienchatluong là loại có 2 chân là công tắc đóng mở. Thấy trên Shopee có chỗ bán linh kiện đàn Organ, mà không biết đúng loại không, với lại sao ... mắc dữ dội luôn ấy!!!
...-
Channel: Hướng dẫn tìm thông tin linh kiện
19-10-2026, 11:30 -
-
Trả lời cho Tìm VR 5 chânbởi bqvietTrang sản phẩm này có loại 5 chân và 8 chân
https://linhkienchatluong.vn/chiet-a...doi_s1595.aspx
Ngoài ra một trang cùng cấp với nó có loại 6 chân nữa, chắc đủ cho người muốn tìm....-
Channel: Hướng dẫn tìm thông tin linh kiện
17-10-2026, 17:19 -
-
bởi dinhthuong80Chào cả nhà, chúc cuối tuần vui vẻ!
Hôm nay mình lên đây nhờ ai biết chỉ dùm biến trở 5 chân này tên gọi là gì, có thể mua ở đâu vậy? Xin cám ơn nhiều! ...-
Channel: Hướng dẫn tìm thông tin linh kiện
-

Comment