Băm Xung PWM | #4.1_STM32 Cơ Bản - Kỹ Sư Nghèo
Băm xung PWM rất quan trọng trong thực hành điện tử. Nó có mặt rất nhiều trong đời sống, điều khiển độ nhanh chậm của động cơ, điều xung, điều áp cho đến ổn định tốc độ động cơ… Bài viết STM32 cơ bản này sẽ giới thiệu về PWM dùng thư viện HAL.
———————————
Cùng xem bài viết bên dưới.
- Nội dung thực hành | Băm xung PWM
- Thực hành HAL_TIM_PWM_Start
- Cấu hình chân
- Khởi tạo code và thư viện stm32f4xx_HAL_TIM.c
- Phần cứng và code trong bài viết
Nội dung thực hành | Băm xung PWM
- Trong ví dụ này, tiếp tục sử dụng TIM4 channel 1 để tạo xung PWM do nó tương ứng với chân PD12 (gắn với 1 LED trong kit STM32F411).
CCR và ARR là 2 thanh ghi quyết định độ rộng xung của PWM trong STM32. Trong ví dụ ta chọn xung có TPWM = 100µs -> FPWM = 10kHz (FPWM là FREQUENCY).
Các ký hiệu:- APB TIM CLOCK: Sử dụng APB1 Timer clock với tần số 100MHz
- PRESCALER: Hệ số chia được chọn là 100 – 1 cùng với ARR để tạo xung PWM có TPWM = 100µs
- FREQUENCY: Tần số PWM, để có TPWM = 100µs ~ FPWM = 10KHz
- DUTY: Độ rộng xung, kết quả cuối cùng ta hướng đến, với ARR = 100, muốn tạo xung có độ rộng 40% -> CCR = 40;
- Ví dụ này tìm hiểu về datasheet về PWM của STM32. Khi đã nắm rõ về các thanh ghi và công thức sử dụng thì trong tất cả các ví dụ sau này, bạn đều có thể áp dụng 1 cách thành thạo.
Thực hành HAL_TIM_PWM_Start
Cấu hình chân
Dao động ngoài và mạch nạp như thường lệ. Tiếp theo chọn tần số của vi điều khiển là 100MHz. Ta băm xung với chu kỳ TPWM = 100µs, theo công thức ở phần A, ta tính được các hệ số PRE_S và PRE_A là 100 – 1 và 100 – 1. TIM4 channel tương ứng với chân LED PD12 trong STM32F411 Discovery.
Chú ý “-1” trong PRE_S và PRE_A để có xung PWM chính xác nhấtKhởi tạo code và thư viện stm32f4xx_HAL_TIM.c
Sau khi cấu hình chân xong ta tiến hành khởi tạo code. Sau đó vào stm32f4xx_HAL_TIM.c để tìm các hàm sẽ sử dụng.
Các hàm HAL_TIM sử dụng trong ví dụ.
Hàm Reload():
Chức năng hàm Reload đơn giản là để xung PWM lặp đi lặp lại từ 0% -> 100% tương ứng với độ sáng của LED tại chân PD12.
- Hàm while (1):
Lúc này LED sẽ sáng dần sáng dần, và cứ thế lặp đi lặp lại.
Phần cứng và code trong bài viết
Phần cứng tiếp tục sử dụng STM32F411, phần mềm sử dụng là stm32cubeIDE. File code ví dụ các bạn tải về bên dưới. Phần mềm để theo dõi xung đầu ra PWM là Logic 2.3.4.3 sử dụng kèm với phần cứng Logic 24M 8CH.
- Module STM32F4 trên Shoppe
- Thiết bị phân tích Logic 24M 8CH chuyên dụng
Trong bài sau ta sẽ sử dụng HAL_TIM_IC_Start để đọc xung PWM đầu vào rồi tính tần số và độ rộng xung PWM. Các bài viết khác cùng chuyên mục trong “STM32 cơ bản“.
Các chuyên mục khác:
- HỌC thực hành | HỌC KỸ THUẬT
Bạn có thắc mắc gì trong bài viết không?
Đánh giá và để lại bình luận bên dưới nhá.
4.5/5 - (4 bình chọn)Từ khóa » Code Băm Xung Pwm
-
Xung PWM | Cộng đồng Arduino Việt Nam
-
Băm Xung - Điều Khiển Tốc độ động Cơ Bằng L298 Với Cách Tiếp Cận ...
-
Tạo Xung PWM Dùng Arduino - Điện Tử Việt
-
Xung PWM Và PPM Trong Arduino - Điện Tử Hello
-
Lập Trình Băm Xung PWM Với Arduino - YouTube
-
Lập Trình Vi điều Khiển-Phần 7-Lập Trình Băm Xung (PWM) Với Arduino
-
Bài 3: Lập Trình ESP32 PWM Băm Xung điều Khiển LED
-
STM32F4: Điều Chế Xung PWM Trên 1 Kênh Và Nhiều Kênh - DevIOT
-
Băm Xung Là Gì
-
Điều Chế Độ Rộng Xung - Pulse-Width Modulation - STDIO
-
[Arduino Cơ Bản] Điều Chế độ Rộng Xung PWM | MCA
-
Băm Xung (Pwm) Là Gì
-
PWM On Arduino | Danh Sách Nội Dung Về Băm Xung Là Gì Chi Tiết