10M+ Mạch Điện Tử Có Trong Kho
Chứng nhận ISO
Bảo hành bao gồm
Giao hàng nhanh
Phần phụ kiện khó tìm?
Chúng Tôi Cung Cấp Chúng
Yêu cầu báo giá

Giải thích về Raspberry Pi PWM: Điều khiển GPIO, Ứng dụng và Khắc phục sự cố

Jun 04 2026
Nguồn: DiGi-Electronics
Duyệt: 551

Điều chế độ rộng xung (PWM) là một trong những kỹ thuật quan trọng nhất được sử dụng trong các dự án điện tử và tự động hóa Raspberry Pi. Nó cho phép các chân GPIO kỹ thuật số mô phỏng điều khiển giống như tương tự bằng cách điều chỉnh thời gian tín hiệu thay vì điện áp đầu ra.

Figure 1. Raspberry Pi PWM

Tổng quan về Raspberry Pi PWM

Điều chế độ rộng xung (PWM) là một phương pháp cho phép các chân Raspberry Pi GPIO điều khiển công suất đầu ra bằng cách BẬT và TẮT nhanh tín hiệu kỹ thuật số. Thay vì tạo ra điện áp tương tự thực sự, PWM thay đổi khoảng thời gian tín hiệu duy trì CAO trong mỗi chu kỳ. Tỷ lệ phần trăm ON-time này được gọi là chu kỳ nhiệm vụ.

Cách hoạt động của PWM trên Raspberry Pi

Figure 2. How PWM Works on Raspberry Pi

Tín hiệu PWM liên tục chuyển chân GPIO Raspberry Pi giữa trạng thái CAO và THẤP. Tín hiệu vẫn là kỹ thuật số, nhưng các thiết bị được kết nối phản ứng với hiệu ứng trung bình của quá trình chuyển mạch.

Hai thông số chính kiểm soát hoạt động PWM:

Thông số PWMÝ nghĩa
Tần suấtTín hiệu lặp lại bao nhiêu lần mỗi giây
Chu kỳ nhiệm vụTín hiệu BẬT trong bao lâu trong mỗi chu kỳ

Trên chân Raspberry Pi GPIO, CAO là khoảng 3.3V. Chu kỳ làm việc 50% có nghĩa là tín hiệu duy trì CAO một nửa thời gian và THẤP một nửa thời gian. Điều này có thể làm cho đèn LED có vẻ sáng một nửa hoặc giảm công suất trung bình cung cấp cho động cơ.

Chu kỳ nhiệm vụ được tính bằng cách sử dụng:

Chu kỳ nhiệm vụ = Thời gian BẬT / Tổng thời gian × 100%

Chu kỳ nhiệm vụHành vi tín hiệuHiệu quả thực tế
0%Luôn TẮTKhông có đầu ra
25%BẬT trong một phần tư chu kỳSản lượng thấp
50%BẬT trong một nửa chu kỳSản lượng trung bình
75%BẬT trong ba phần tư chu kỳSản lượng cao
100%Luôn BẬTSản lượng đầy đủ

Tăng chu kỳ nhiệm vụ làm tăng sản lượng trung bình, trong khi giảm chu kỳ nhiệm vụ sẽ làm giảm sản lượng.

Tần số PWM là số chu kỳ PWM mỗi giây. Nó được đo bằng hertz (Hz).

Tần suất được tính bằng cách sử dụng:

f = 1 / T

Thiết bịTần số PWM điển hình
Đèn LEDHàng trăm Hz trở lên
Động cơ DCHàng trăm Hz đến vài kHz
ServoKhoảng 50 Hz
Đầu ra âm thanhTần số cao hơn nhiều

Tần số sai có thể gây ra đèn LED nhấp nháy, động cơ nhiễu, servo không ổn định hoặc chất lượng âm thanh kém.

PWM phần cứng so với PWM phần mềm trên Raspberry Pi

Figure 3. Hardware PWM vs Software PWM on Raspberry Pi

Chủ đềPhần cứng PWMPhần mềm PWM
Định nghĩaSử dụng phần cứng PWM chuyên dụng bên trong bộ xử lý Raspberry PiSử dụng chuyển mạch GPIO được điều khiển bằng phần mềm để tạo xung PWM
Kiểm soát thời gianĐiều khiển bằng phần cứngĐược điều khiển bởi phần mềm và hệ điều hành Linux
Độ chính xác thời gianCaoTrung bình
Tín hiệu ổn địnhRất ổn định với ít chập chờn hơnCó thể chập chờn, đặc biệt là khi CPU tải nặng
Sử dụng CPUSử dụng CPU thấpMức sử dụng CPU cao hơn
Tính linh hoạt của GPIOGiới hạn ở các chân GPIO được chọnCó thể hoạt động trên nhiều chân GPIO
Kiểm soát tần sốChính xác và ổn định hơnPhụ thuộc vào tải hệ thống
Hiệu suất dưới tảiDuy trì đầu ra ổn định tốt hơn trong hoạt động nềnCó thể trở nên không ổn định khi các tác vụ nền Linux làm gián đoạn thời gian xung
Ứng dụng tốt nhấtServo, trình điều khiển động cơ, quạt, đầu ra âm thanh, hệ thống điều khiển chính xácLàm mờ đèn LED, dự án dành cho người mới bắt đầu, điều khiển tốc độ thấp, đèn báo trạng thái
Lợi thế chínhĐầu ra PWM mượt mà và chính xácThiết lập dễ dàng và nhiều tùy chọn GPIO hơn
Hạn chế chínhChỉ khả dụng trên một số ghimThời gian kém chính xác hơn
Khuyến nghị sử dụngSử dụng khi độ chính xác của thời gian quan trọngSử dụng cho các dự án đơn giản, nơi có thể chấp nhận lỗi thời gian nhỏ

Chân và cấu hình GPIO của Raspberry Pi PWM

Figure 4. Raspberry Pi PWM GPIO Pins

Đánh số GPIO và chân PWM phần cứng

Raspberry Pi sử dụng nhiều hệ thống đánh số GPIO. Hầu hết các thư viện Python hiện đại đều sử dụng đánh số BCM, trong khi đánh số vật lý đề cập đến các vị trí ghim thực tế trên tiêu đề.

Loại đánh sốÝ nghĩa
Đánh số BCMĐánh số GPIO của Broadcom được sử dụng nội bộ
Đánh số pin vật lýVị trí ghim tiêu đề thực tế
Đánh số WiringPiHệ thống đánh số cũ không dùng nữa

Luôn xác minh số GPIO trước khi đấu dây phần cứng.

Chân PWM phần cứng phổ biến

BCM GPIOGhim vật lýKênh PWMSử dụng phổ biến
GPIO12Chân 32PWM0Đèn LED, động cơ, servo
GPIO13Chân 33PWM1Đèn LED, động cơ, servo
GPIO18Chân 12PWM0Âm thanh, servo, điều khiển động cơ
GPIO19Chân 35PWM1Âm thanh, servo, điều khiển động cơ

GPIO18 thường được sử dụng vì nó hỗ trợ PWM phần cứng và được hỗ trợ rộng rãi trong các thư viện và hướng dẫn PWM.

Thư viện và cấu hình PWM

Thư viện Raspberry Pi PWM phổ biến

Thư việnMục đích chínhGhi chú
RPi.GPIOĐiều khiển GPIO và PWM cơ bảnThân thiện với người mới bắt đầu
gpiozeroĐơn giản hóa điều khiển thiết bịGiao diện cấp cao
pigpioThời gian chính xác và PWM tiên tiếnHỗ trợ thời gian DMA
LGPIOĐiều khiển GPIO hiện đạiTruy cập cấp thấp hơn

Các thông số cấu hình PWM điển hình

Tham sốMô tả
Tần suấtTốc độ chuyển mạch PWM
Chu kỳ nhiệm vụTỷ lệ phần trăm thời gian BẬT
Ghim GPIOChân đầu ra PWM đã chọn
Chế độ PWMPWM phần cứng hoặc phần mềm PWM

Hạn chế PWM và an toàn đi dây

Phần cứng Raspberry Pi PWM có một số hạn chế trở nên quan trọng trong robot, điều khiển động cơ, hệ thống âm thanh và các ứng dụng công nghiệp.

Giới hạnGiải thích
Kênh PWM hạn chếChỉ có một số lượng nhỏ đầu ra PWM phần cứng
Chức năng được chia sẻMột số chân GPIO chia sẻ thiết bị ngoại vi
Xung đột âm thanhPWM có thể xung đột với âm thanh tích hợp
Hạn chế ghimKhông phải tất cả các chân GPIO đều hỗ trợ phần cứng PWM
Chia sẻ tần sốMột số kênh PWM chia sẻ nguồn đồng hồ
Phụ thuộc DMACác phương pháp PWM nâng cao có thể sử dụng tài nguyên DMA

Nhiều sự cố PWM là do lỗi đi dây chứ không phải do sự cố phần mềm.

Lỗi hệ thống dây điệnTại sao điều này lại quan trọng
Kết hợp BCM và đánh số vật lýĐiều khiển sai chân GPIO
Kết nối động cơ trực tiếp với GPIOCó thể gây sát thương cho Raspberry Pi
Thiếu điểm chungGây ra tín hiệu không ổn định
Vượt quá giới hạn dòng điện GPIOCó thể làm hỏng vĩnh viễn các chân GPIO
Thiếu diode flybackChuyến baytage tăng đột biến có thể làm hỏng các bộ phận
Kết nối điện áp saiChân GPIO chỉ hỗ trợ logic 3.3V
Dây nhảy lỏng lẻoGây ra tín hiệu PWM không ổn định

Các thành phần bảo vệ được đề xuất

Thành phầnMục đích
MOSFETChuyển đổi tải dòng điện cao hơn một cách an toàn
Trình điều khiển H-BridgeĐiều khiển tốc độ và hướng động cơ
Điốt FlybackBảo vệ chống lại điện áp cảm ứngtage tăng đột biến
Nguồn điện bên ngoàiCung cấp năng lượng cho động cơ một cách an toàn
Bộ ghép quangCung cấp cách ly điện

Ứng dụng Raspberry Pi PWM

Hệ thống làm mờ đèn LED

Figure 5. LED Dimming Systems

PWM được sử dụng rộng rãi trong các dự án LED Raspberry Pi vì nó có thể kiểm soát độ sáng mà không yêu cầu chân đầu ra tương tự thực sự. Bằng cách thay đổi chu kỳ làm việc, đèn LED có thể mờ hơn hoặc sáng hơn. Điều này rất hữu ích để điều khiển độ sáng LED, trộn màu RGB, chiếu sáng trang trí, hệ thống độ sáng thích ứng và chỉ báo trạng thái. Nên sử dụng tần số PWM đủ cao để tránh nhấp nháy có thể nhìn thấy được.

Kiểm soát tốc độ động cơ

Figure 6. Motor Speed Control

PWM thường được sử dụng để điều khiển tốc độ động cơ DC trong bánh xe robot, máy bơm, quạt, hệ thống băng tải và thiết bị truyền động tự động hóa. Thay vì thay đổi điện áp cung cấp trực tiếp, PWM điều chỉnh công suất trung bình cung cấp cho động cơ. Chu kỳ làm việc cao hơn thường làm tăng tốc độ động cơ, trong khi chu kỳ làm việc thấp hơn làm giảm tốc độ động cơ. Cần có trình điều khiển động cơ bên ngoài vì chân GPIO của Raspberry Pi không thể điều khiển động cơ trực tiếp một cách an toàn.

Kiểm soát vị trí Servo

Figure 7. Servo Position Control

Động cơ servo sử dụng xung điều khiển lặp lại trong đó độ rộng xung xác định vị trí trong cánh tay robot, hệ thống camera xoay nghiêng, xe RC và hệ thống tự động hóa. Lỗi thời gian nhỏ có thể gây rung, ù hoặc chuyển động không ổn định, vì vậy thời gian PWM ổn định là rất quan trọng để điều khiển servo đáng tin cậy.

Tạo tín hiệu âm thanh

Figure 8. Audio Signal Generation

Raspberry Pi PWM có thể tạo ra âm thanh đơn giản, báo thức, còi và tín hiệu âm thanh cơ bản bằng cách chuyển đổi chân GPIO ở tần số âm thanh. PWM hữu ích cho đầu ra âm thanh nhúng đơn giản, nhưng nó không thể thay thế hoàn toàn DAC chuyên dụng cho các ứng dụng âm thanh chất lượng cao.

Ứng dụng công nghiệp và IoT

Figure 9. Industrial and IoT Applications

PWM hữu ích trong các hệ thống IoT và công nghiệp Raspberry Pi vì nó có thể điều khiển đầu ra phần cứng có thể điều chỉnh. Các ứng dụng phổ biến bao gồm nông nghiệp thông minh, giám sát môi trường, hệ thống HVAC, tự động hóa công nghiệp và hệ thống điều khiển IoT. PWM thường xuyên điều khiển quạt, máy bơm, van, hệ thống chiếu sáng và thiết bị truyền động.

Raspberry Pi vs Arduino cho PWM

Figure 10. Raspberry Pi vs Arduino for PWM

Thể loạiMâm xôi PiArduino
Hệ điều hànhChạy hệ điều hành LinuxChạy chương trình cơ sở đơn giản
Sức mạnh xử lýSức mạnh xử lý cao hơn cho các ứng dụng nâng caoSức mạnh xử lý thấp hơn nhưng được tối ưu hóa cho các tác vụ điều khiển
Thời gian PWMÍt dự đoán hơn do hệ điều hành đa nhiệmHành vi PWM theo thời gian thực dễ dự đoán hơn
Độ trễĐộ trễ vừa phảiĐộ trễ thấp hơn với phản hồi phần cứng nhanh hơn
Điều khiển phần cứngTruy cập phần cứng gián tiếp thông qua hệ điều hành và thư việnTruy cập phần cứng trực tiếp
Độ ổn định PWMTốt cho PWM đa năngTốt hơn cho các vòng điều khiển và điều khiển động cơ ổn định
Mạng lướiHỗ trợ mạng và IoT tuyệt vờiKết nối mạng hạn chế mà không có thêm mô-đun
Đa nhiệmCó thể chạy máy chủ, tập lệnh, cơ sở dữ liệu và nhiều ứng dụngKhả năng đa nhiệm hạn chế
Lập trìnhLập trình cấp cao dễ dàng với PythonLập trình cấp thấp đơn giản với Arduino IDE
Điện tử mới bắt đầuTốt cho người mới bắt đầu tập trung vào phần mềmTuyệt vời cho người mới bắt đầu sử dụng thiết bị điện tử
Tự động hóa thông minhTuyệt vời cho các hệ thống tự động hóa thông minh được kết nốiTốt cho tự động hóa độc lập
Điều khiển động cơ thời gian thựcHiệu suất vừa phảiHiệu suất tuyệt vời
Thời gian chính xácĐộ chính xác thời gian vừa phảiĐộ chính xác thời gian tuyệt vời
Các trường hợp sử dụng tốt nhấtHệ thống IoT, tự động hóa thông minh, giám sát từ xa, các dự án dựa trên LinuxĐộng cơ, servo, robot, điều khiển nhúng, PWM thời gian thực
Lợi thế chínhKết hợp PWM với phần mềm tiên tiến và mạngCung cấp điều khiển PWM thời gian thực chính xác và ổn định

Khắc phục sự cố Raspberry Pi PWM

Vấn đềNguyên nhân có thểĐề xuất sửa lỗi
Tín hiệu không hoạt độngĐánh số GPIO saiKiểm tra xem mã có sử dụng BCM, hệ thống đánh số vật lý hay hệ thống đánh số khác hay không.
Tín hiệu không hoạt độngHệ thống dây điện không chính xácKiểm tra lại kết nối GPIO, vị trí điện trở và mặt đất dùng chung.
Tín hiệu không hoạt độngGhim không được hỗ trợXác nhận xem chân đã chọn có hỗ trợ PWM phần cứng hay phần mềm hay không.
Tín hiệu không hoạt độngVấn đề về thư viện hoặc quyềnXác minh các lệnh cài đặt, quyền và thiết lập thư viện GPIO.
Servo jitterNguồn điện yếuSử dụng nguồn điện riêng cho servo.
Servo jitterThiếu điểm chungKết nối mặt đất Raspberry Pi với mặt đất cấp nguồn servo.
Servo jitterPhần mềm PWM không ổn địnhSử dụng PWM phần cứng hoặc thư viện ổn định hơn như pigpio.
Servo jitterTiếng ồn điệnRút ngắn dây và cải thiện bộ lọc nguồn hoặc bố trí hệ thống dây điện.
Đèn LED nhấp nháyTần suất quá thấpTăng tần số PWM cho đến khi không còn nhìn thấy hiện tượng nhấp nháy nữa.
Đèn LED nhấp nháyHệ thống dây điện kémKiểm tra giá trị điện trở, kết nối lỏng lẻo và chất lượng dây.
Tiếng ồn hoặc sự mất ổn định của động cơNguồn điện yếuSử dụng nguồn điện động cơ bên ngoài thay vì cấp nguồn cho động cơ từ GPIO.
Tiếng ồn hoặc sự mất ổn định của động cơThiếu các thành phần bảo vệSử dụng trình điều khiển động cơ thích hợp và thêm các bộ phận bảo vệ như diode flyback khi cần.
Tiếng ồn hoặc sự mất ổn định của động cơTần suất không chính xácĐiều chỉnh tần số PWM cho phù hợp với động cơ và mạch trình điều khiển.
Lỗi PippioDaemon không chạyKhởi động hoặc khởi động lại pigpio daemon.
Lỗi PippioXung đột GPIOKiểm tra xem một chương trình khác đã sử dụng cùng một chân GPIO chưa.

Câu hỏi thường gặp [FAQ]

Tại sao PWM lại quan trọng trên Raspberry Pi mặc dù chân GPIO chỉ là kỹ thuật số?

PWM cho phép các chân GPIO của Raspberry Pi mô phỏng điều khiển giống như tương tự bằng cách chuyển đổi nhanh tín hiệu giữa trạng thái CAO và THẤP. Thay vì thay đổi điện áp trực tiếp, PWM thay đổi chu kỳ làm việc để kiểm soát việc cung cấp điện trung bình. Điều này giúp bạn có thể làm mờ đèn LED, điều chỉnh tốc độ động cơ, điều khiển vị trí servo và quản lý quạt bằng các chân GPIO kỹ thuật số tiêu chuẩn.

Khi nào nên sử dụng PWM phần cứng thay vì PWM phần mềm trên Raspberry Pi?

PWM phần cứng tốt hơn cho các ứng dụng yêu cầu thời gian ổn định và tạo xung chính xác, chẳng hạn như servo, trình điều khiển động cơ, đầu ra âm thanh và robot. Vì phần cứng chuyên dụng kiểm soát tín hiệu nên nó tạo ra ít chập chờn hơn và sử dụng ít tài nguyên CPU hơn. Phần mềm PWM thường đủ cho các tác vụ đơn giản hơn như làm mờ đèn LED hoặc chỉ báo trạng thái, nơi các lỗi thời gian nhỏ ít được chú ý hơn.

Tại sao tần số PWM không chính xác có thể gây ra sự cố trong các dự án Raspberry Pi?

Các thiết bị khác nhau phản hồi tốt nhất với các tần số PWM khác nhau. Nếu tần số quá thấp, đèn LED có thể nhấp nháy rõ ràng, động cơ có thể tạo ra tiếng ồn hoặc chuyển động thô và servo có thể trở nên không ổn định. Tần số rất cao cũng có thể làm giảm độ phân giải PWM hoặc tăng nhu cầu xử lý. Chọn tần số chính xác giúp cải thiện hiệu suất, độ mượt mà và độ tin cậy.

Tại sao động cơ và servo không bao giờ được kết nối trực tiếp với chân GPIO của Raspberry Pi?

Chân GPIO Raspberry Pi chỉ hỗ trợ tín hiệu logic 3.3V dòng điện thấp và không thể cấp nguồn trực tiếp cho động cơ hoặc servo một cách an toàn. Các thiết bị dòng điện cao có thể làm hỏng chân GPIO, tạo ra voltage tăng đột biến hoặc gây ra hoạt động không ổn định. Trình điều khiển bên ngoài, MOSFET, mạch cầu H, điốt flyback và nguồn điện riêng biệt giúp bảo vệ Raspberry Pi và cải thiện độ tin cậy của PWM.

Tại sao Arduino thường tốt hơn để điều khiển PWM chính xác hơn Raspberry Pi?

Bo mạch Arduino được thiết kế để điều khiển phần cứng theo thời gian thực và chạy chương trình cơ sở đơn giản mà không cần hệ điều hành đa nhiệm. Điều này cho phép thời gian PWM dễ đoán hơn, độ trễ thấp hơn và ổn định tốt hơn cho động cơ, servo và vòng điều khiển. Raspberry Pi mạnh hơn trong mạng, ứng dụng Linux, hệ thống IoT và tự động hóa thông minh, nhưng hoạt động nền Linux có thể ảnh hưởng đến độ chính xác của thời gian PWM.