20.1 C
Hanoi
Thứ Hai, Tháng Mười 18, 2021

PWM TRONG STM32F103

Sơ lược về lý thuyết

PWM (pulse- with modulation) hay còn gọi nôm na là “băm xung” hay “điều khiển độ rộng xung” là ứng dụng phổ biến và thường dùng trong lĩnh vực điều khiển động cơ. Một ví dụ đơn giản để hiểu về độ rộng xung là mức độ sáng tắt của LED, ở tần số mà mắt người có thể nhìn thấy thì nó là độ chênh lệch giữa mức sáng và tắt của 1 đèn khoảng thời gian lặp đi lặp lại(vd đèn sáng 5s, tắt 3s lặp đi lặp lại thì chu kì sẽ là 8 giây); với tần số cao mắt người không thể nhìn thấy thì ta sẽ thấy LED sáng mờ hay sáng rõ đó là do tổng thời gian sáng/ tổng thời gian tắt trong khoảng thời gian lớn hay nhỏ mà mắt người nhìn thấy(tính bằng đơn vị nhỏ như ms).
Khi tìm hiểu về PWM chúng ta cần tìm hiểu kĩ một số khái niệm cơ bản như:
+ Duty cycle : tỷ lệ phần trăm xung ở mức cao.
+ Period : là chu kì xung(bao gồm tổng thời gian mức cao + mức thấp).
+ Pulse width là giá trị của mức cao so với period. PTO là xung vuông có 50% thời gian cao, 50% thời gian thấp.
+ Biên độ xung: là giá trị điện áp của xung khi ở mức cao.
+ Các khái niệm về tần số, chu kì.

Giới thiệu về PWM của STM32f103: ở VĐK này có 4 kênh timer là TIM1,TIM2,TIM3,TIM4 để phát PWM, mỗi kênh đó có 4 channel nhỏ nữa, riêng TIM1 có thêm 4 channel đảo nữa. Tùy từng ứng dụng mà có thể sử dụng phối hợp nhiều kênh cũng như nhiều channel nhỏ khác nhau. TIM1 là timer đặc biệt tạo ra riêng để ưu tiên cho việc phát xung với nhiều mode bảo vệ cũng như điều khiển riêng. Nó có các kênh PWM đảo vd( CH1 – CH1N) giúp tránh tình trạng trùng dẫn với nửa cầu H trên và nửa cầu H dưới của mạch driver điều khiển động cơ. Nó có chế độ one-pulse để xuất ra 1 xung hay nhiều xung với số xung đếm được, ngắt input để bảo vệ động cơ, có mode hỗ trợ encoder và cảm biến Hall.
Sử dụng PWM chủ yếu là để điều khiển động cơ, khi điều khiển cần chú ý là mỗi loại động cơ đều có cơ cấu điều khiển khác nhau, tần số điều khiển cũng khác nhau. Cần chú ý về mục đích điều khiển là tốc độ, vị trí, moment… để xuất xung với tần số và chu kì thích hợp.
Trên STM32f103 thì cần chú ý là sử dụng PWM của timer nào thì cần tra datasheet để biết ngõ ra của timer đó là chân nào, có Remap hay trùng với các chân đặc biệt không.

Cấu hình với thư viện chuẩn của ST

Cấp lock và khai báo các định nghĩa quan trọng.

Cấu hình chân output của timer – Khởi tạo timer base.

Cấu hình chức năng output compare sử dụng cho PWM, Enable timer, pwm.

Sử dụng hàm điều chỉnh duty cycle.
Hàm TIM_SetComparex(TIMy,z); được dùng để điều chỉnh độ rộng xung của kênh PWM đang cấu hình SetComparex tương ứng với channel x của TIMy với giá trị z. Độ rộng xung được tính dựa trên:
z/TIM_Period100% với TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;
(1 – z/TIM_Period )100% với TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_Low;

Chúng ta có thể điều khiển độ rộng xung với tần số cao hơn, tuy nhiêu ở tần số cao thì phải có Oscilloscope để quan sát dạng sóng ra. Nếu phát xung với tần số thấp thì có thể quan sát bằng mắt thường với độ chính xác tương đối. Chúng ta có thể thay đổi các tham số truyền vào để quan sát và hiểu các dạng PWM xuất ra.

Một số thanh ghi quan trọng.

Ở đây Vd là sử dụng TIM4 nên mình sẽ sử dụng thanh ghi của TIM4. TIM2,3,4 giống nhau và khác đôi chút với TIM1.

TIMx_CCER – TIMx capture/compare enable register.

4 cặp bit tương ứng với 4 channel của 1 Timer. CCxE : cho phép output xung ra bên ngoài hay không. CCxP cho phép xuất mức PWM ở mức cao hay thấp vd CC4P = 0 thì khi Duty cycle =100% thì điện áp output = 3V3, CC4P = 1 thì khi Duty cycle =100% thì điện áp output = 0V.

TIMx_CCMRx- TIMx capture/compare mode register x.

OcxM: lựa chọn mode Output cho chân PWM. Giá trị tương ứng từ 000 ->111 với các mode như PWM1, PWM2, Frozen, Toggle…
OCxPE: bit này cho phép bộ đếm tự động lặp lại sau khi thực hiện xong đếm lần 1.
OcxFE: bit này sử dụng cho mode Input capture: đo tín hiệu xung đầu vào với các xung có tần số cao.
CCxS: bit này cho phép lựa chọn là ngõ vào hay ngõ(Capture/Compare) ra tương ứng với các mode.

TIMx_CCRx – TIMx Capture/Compare register.

Nếu là mode output thì nó sẽ so sánh với thanh ghi CNT và xuất ra giá trị PWM, giá trị được làm mới khi có update xảy ra. Nếu là mode input: nó sẽ chứa giá trị đọc về của giá trị đọc cuối cùng.

Link tải chương trình cấu hình PWM TIM4_CH4

Nguồn: http://laptrinharmst.blogspot.com/

10 COMMENTS

  1. My friend received her last skincell pro recently as well as let me
    inform you, she is delighted! She has been seeking an all-natural means to get rid
    of her moles for fairly a long time. She tried cream removers and
    also medical professional visits, yet nothing worked.

    Now, she is ready to go under the blade. Let me show you
    what she has actually been via looking for an all-natural remedy. http://lnkiy.in/bc7ha

  2. Do you presently have moles or undesirable skin tags? Have you longed to
    get rid of those annoying blemishes on your skin? The Skincell Pro skin tag remover is a
    reliable lotion from 100% natural ingredients
    created to securely and also promptly get rid of skin tags,
    moles, and also blemished skin. It’s developed to remove skin moles and tags in just 8
    hrs level. This powerful, quick-acting formula
    job conveniently as well as quickly, to help you do
    away with those unwanted moles without the help of physicians or surgery. https://nimmansocial.com/story9268423/skincell-pro-ingredients

  3. I’m not certain where you are getting your information, however
    great topic. I needs to spend a while finding out much more
    or working out more. Thank you for wonderful information I
    used to be searching for this
    information for my mission.

LEAVE A REPLY

Please enter your comment!
Please enter your name here

- Advertisment -

Most Popular

Tổng hợp trang web liên quan thiết kế phần cứng điện tử

4 trang web tải thư viện SCH/PCB và 3D https://www.ultralibrarian.com/ https://componentsearchengine.com/ https://octopart.com/ https://www.snapeda.com/ https://componentsearchengine.com/ 2 trang tìm 3D cho thư viện của các bạn bao gồm: https://www.3dcontentcentral.com/ https://grabcad.com/library 4 trang cung cấp các...

Mạch đóng ngắt Relay sử dụng Transistor

Giới thiệu về Relay Rơ le (Relay) là một công tắc chuyển đổi hoạt động bằng điện. Dòng điện chạy qua cuộn dây của rơ...

Nạp Bootloader cho Arduino Pro Micro

Bootloader là một chương trình nhỏ được nạp sẵn vào chip vi điều khiển trên Arduino, nhờ đó bạn lập trình cho Arduino một...

Một vài lưu ý khi thiết kế sản phẩm đáp ứng EMC

Mỗi bảng mạch in (PCB) phải có thể hoạt động mà không bị gián đoạn do nhiễu từ các thiết bị khác và không...

Recent Comments