پروژه کنترل شدت نور LED با PWM در میکروکنترلر STM32
مقدمه
در دنیای الکترونیک مدرن، کنترل دقیق سرعت موتور، شدت نور LED یا تولید سیگنالهای آنالوگ، همگی به کمک PWM انجام میشود. خانواده STM32 بهدلیل داشتن تایمرهای پیشرفته، یکی از بهترین انتخابها برای پروژههای PWM است.
در این مقاله، یک پروژه ساده اما کاربردی طراحی میکنیم که در آن شدت نور LED با استفاده از PWM و یک پتانسیومتر کنترل میشود.
تجهیزات مورد نیاز
شرح عملکرد پروژه
در این پروژه خروجی PWM از پایه PA8 (TIM1_CH1) گرفته میشود.
ولتاژ خروجی پتانسیومتر با ADC خوانده شده و مقدار PWM مطابق آن تغییر میکند.
در نتیجه با چرخاندن پتانسیومتر، شدت نور LED کم و زیاد میشود.
مدار پروژه
اتصالات:
پایه میانی پتانسیومتر → PA0 (ADC IN0)
یکی از پایههای پتانسیومتر → 3.3V
پایه دیگر → GND
پایه مثبت LED → PA8 (PWM Output)
پایه منفی LED → مقاومت 330 اهم → GND
راهاندازی PWM در CubeMX
فعالسازی Timer1
تنظیم فرکانس PWM
فعالسازی ADC
فعالسازی GPIO
کد کامل پروژه (HAL)
uint16_t adc_value = 0;
uint16_t pwm_value = 0;
HAL_ADC_Start(&hadc1);
while (1)
{
// Read ADC value
HAL_ADC_PollForConversion(&hadc1, 10);
adc_value = HAL_ADC_GetValue(&hadc1);
// Map ADC (0-4095) to PWM (0-1000)
pwm_value = (adc_value * 1000) / 4095;
// Set PWM duty
__HAL_TIM_SET_COMPARE(&htim1,
TIM_CHANNEL_1, pwm_value);
HAL_ delay (1);
}
تحلیل عملکرد
این پروژه پایهای برای کاربردهای زیر است:
نکات مهم در پیادهسازی
حتماً ورودی ADC را با ولتاژ 3.3V تغذیه کنید (نه 5V).
اگر از موتور استفاده میکنید باید درایور مثل L298N اضافه شود.
برای LEDهای توان بالا از MOSFET استفاده کنید.
جمعبندی
در این پروژه یاد گرفتیم چگونه با STM32 شدت نور LED را با استفاده از PWM کنترل کنیم. این پروژه یکی از پایهایترین و مهمترین پروژهها برای ورود به دنیای ARM و STM32 است و میتواند اساس پروژههای پیچیدهتر باشد.

پروژه کنترل شدت نور LED با PWM در میکروکنترلر STM32 مقدمه