Giỏ hàng
Danh mục sản phẩm

Lập trình PWM Arduino STM32

Đăng bởi Buiprohd@gmail.com ngày bình luận

Trong bài viết hôm nay mình giới thiệu Điều chế độ rộng xung PWM điều khiển tốc độ .

Bằng cách thay đổi độ rộng của chu kỳ BẬT và TẮT của sóng vuông, chúng ta có thể mô phỏng điện áp giữa TẮT hoàn toàn (0 V) và BẬT hoàn toàn (5 V hoặc 3,3 V). Khoảng thời gian BẬT của xung được gọi là Chiều rộng của xung hoặc đơn giản là Chiều rộng xung. Vì chúng ta đang thay đổi hoặc "Điều chế" độ rộng này, nên kỹ thuật này được gọi là Điều chế độ rộng xung.

Tỷ lệ giữa thời gian BẬT với tổng khoảng thời gian của một xung đơn được gọi là Chu kỳ hoạt động của tín hiệu PWM.

Chu kỳ nhiệm vụ = Thời gian BẬT / (Thời gian BẬT + Thời gian TẮT)

Đối với tín hiệu chu kỳ làm việc 50%, cả thời gian BẬT và thời gian TẮT đều bằng nhau. Do đó, đầu ra là một sóng vuông hoàn hảo với mức điện áp trung bình là 2,5 V (nếu VDD là 5V). Nếu chúng ta tăng chu kỳ nhiệm vụ lên 100%, thì thời gian BẬT là tối đa (tức là xung BẬT chiếm toàn bộ chiều dài của xung). Kết quả là, đầy đủ 5V được tạo ra bởi tín hiệu.

Bằng cách kiểm soát chu kỳ làm việc, chúng tôi có thể tạo ra mức điện áp chính xác ở đầu ra của tín hiệu PWM, sau đó có thể được sử dụng để điều khiển tốc độ của Động cơ hoặc điều chỉnh độ sáng của đèn LED để cố định vị trí của Động cơ Servo, và nhiều thứ khác.

Đối với STM32 Các bộ định thời gồm Timer để quản lý PWM ,

Sơ đồ biểu diễn các chân STM32 

Code arduino :

const int potPIN = PA0;
const int ledPIN = PA9;
const int motorPIN = PA8;

void setup ()
{
pinMode (potPIN, INPUT);
pinMode (ledPIN, OUTPUT);
pinMode (motorPIN, OUTPUT);
}

void loop ()
{
int adcValue = analogRead (potPIN);
int dutyCycle = map (adcValue, 0, 4095, 0, 65535);
analogWrite (ledPIN, dutyCycle);
analogWrite (motorPIN, dutyCycle);
}

 

 

 


Cũ hơn Mới hơn