ورکشاپ آموزشی - آیسی مدار
رفتن به محتوا

کنترل هوشمند سرعت فن رزبری‌پای بر اساس دمای پردازنده (با PWM)

آموزش و الکترونیک
۰ نظر
۸۵ نفر
کد ۴۳۵۷

رزبری‌پای یه مینی‌کامپیوتر فوق‌العاده‌ست که پردازنده‌اش موقع انجام کارهای سنگین حسابی داغ می‌کنه. اگر این حرارت رو کنترل نکنی، هم سرعت سیستم افت می‌کنه (Thermal Throttling) و هم عمر مفید قطعاتت کم می‌شه. خیلی‌ها یه فن ساده روی برد نصب می‌کنن که همیشه با آخرین سرعت می‌چرخه؛ اما این کار علاوه بر تولید صدای آزاردهنده، باعث استهلاک زودرس خود فن هم می‌شه و مصرف انرژی رو بالا می‌بره.

تو این آموزش از آیسی‌مدار می‌خوایم یه سیستم خنک‌کننده هوشمند و حرفه‌ای بسازیم. قراره با استفاده از قابلیت PWM و فقط چند تا قطعه الکترونیکی ساده، مداری طراحی کنیم که دمای پردازنده رزبری‌پای رو لحظه‌به‌لحظه چک کنه. هر وقت دما بالا رفت، فن با سرعت مناسب روشن می‌شه و وقتی سیستم خنک شد، سرعتش کم یا کاملا خاموش می‌شه.

این پروژه علاوه بر اینکه یه راه‌حل عالی برای مدیریت حرارت سیستمته، یه تمرین خیلی خوب برای یادگیری نحوه راه‌اندازی موتورهای DC با ترانزیستور و کدنویسی لینوکس محسوب می‌شه. پس هویه رو گرم کن و قطعات رو آماده کن تا بریم سراغ ساخت این فن هوشمند.

قطعات موردنیاز

  • برد رزبری‌پای (با سیستم‌عامل Raspbian یا سایر توزیع‌ها)
  • فن 5 ولت مخصوص رزبری‌پای (برای فن 12 ولت به آداپتور مجزا نیاز داری)
  • ترانزیستور NPN با تحمل جریان حداقل 300 میلی‌آمپر (مثل 2N2222A)
  • مقاومت 1 کیلواهم
  • دیود معمولی (مثل 1N4007)
  • تکه کوچکی از برد سوراخ‌دار برای لحیم‌کاری (اختیاری)
  • وارنیش حرارتی برای عایق کردن مدار (اختیاری)
مرحله ۱

قطعات الکترونیکی مورد نیاز

برای این پروژه فقط به چند تا قطعه الکترونیکی ساده نیاز داریم که تو بیشتر کیت‌های آموزشی و فروشگاه‌های الکترونیک به راحتی پیدا می‌شن.

  • برد رزبری‌پای (سیستم‌عامل Raspbian، اما روی بقیه توزیع‌ها هم کار می‌کنه).
  • فن 5 ولت (می‌تونی از فن 12 ولت هم استفاده کنی، به شرطی که تغذیه 12 ولت جداگانه و ترانزیستور مناسب داشته باشی).
  • ترانزیستور NPN با ظرفیت جریانی حداقل 300 میلی‌آمپر، مثل مدل 2N2222A.
  • مقاومت 1 کیلواهم.
  • یک عدد دیود معمولی.

برای اینکه کار تمیزتر دربیاد و بتونی مدار رو راحت داخل قاب رزبری‌پای جا بدی، این موارد اختیاری رو هم پیشنهاد می‌کنم:

  • یه تکه کوچیک از برد سوراخ‌دار (پروتوبورد) برای لحیم‌کاری قطعات.
  • وارنیش حرارتی سایز بزرگ برای پوشوندن و محافظت از مدار.

تمام این قطعات رو می‌تونی با یه هزینه خیلی کم تهیه کنی. اگر وسایلت تکمیله، بریم سراغ بستن اتصالات و تحلیل مدار.

مرحله ۲

سیم‌کشی قطعات و تحلیل عملکرد مدار

مقاومت قطبیت نداره و از هر سمتی وصلش کنی فرقی نمی‌کنه، اما برای دیود و ترانزیستور باید حسابی دقت کنی. کاتد دیود (که معمولا یه خط نقره‌ای روش داره) باید به سیم مثبت 5 ولت (قرمز) وصل بشه و آند اون به سیم زمین یا GND (مشکی). پایه‌های ترانزیستورت (بیس، امیتر و کلکتور) رو هم حتما از روی دیتاشیت چک کن تا جابه‌جا نزنی.

سیم زمین فن باید به پایه کلکتور ترانزیستور و پین زمین رزبری‌پای هم باید به پایه امیتر متصل بشه. برای کنترل فن، ما از ترانزیستور تو حالت کلکتور باز (Open Collector) استفاده می‌کنیم. با این روش، ترانزیستور دقیقا مثل یه کلید الکترونیکی عمل می‌کنه و اتصال زمین فن رو به زمین رزبری‌پای قطع و وصل می‌کنه.

ترانزیستورهای NPN بر اساس جریانی که به پایه بیس اون‌ها وارد می‌شه، جریان رو از خودشون عبور می‌دن. فرمولش خیلی ساده‌ست: جریان کلکتور برابر است با جریان بیس ضربدر ضریب تقویت ترانزیستور (بتا یا B). جریان کلکتور (Ic) همون جریانیه که از فن می‌گذره و ضریب بتا برای هر ترانزیستور متفاوته، اما ما اینجا حدود 100 در نظرش می‌گیریم.

فن ما حدود 200 میلی‌آمپر جریان می‌کشه، پس طبق فرمول، به حداقل 2 میلی‌آمپر جریان تو پایه بیس نیاز داریم. از طرفی افت ولتاژ بین بیس و امیتر (Vbe) همیشه حدود 0.7 ولت ثابته. وقتی پین GPIO رزبری‌پای روشن می‌شه، ولتاژش 3.3 ولته؛ پس ولتاژی که دو سر مقاومت می‌افته می‌شه تفاضل این دو تا، یعنی 2.6 ولت.

برای اینکه 2 میلی‌آمپر جریان تو بیس داشته باشیم، طبق قانون اهم به یه مقاومت 1300 اهمی نیاز داریم. اما ما برای ایجاد حاشیه اطمینان و سادگی کار، از مقاومت 1 کیلواهم (1000 اهم) استفاده می‌کنیم. اینطوری جریانی که از پین GPIO کشیده می‌شه به حدود 2.6 میلی‌آمپر می‌رسه که برای رزبری‌پای کاملا بی‌خطره و بهش فشاری نمیاره.

فن‌ها در واقع یه موتور الکتریکی هستن و بار سلفی (القاگر) محسوب می‌شن. وقتی ترانزیستور ناگهان جریان رو قطع می‌کنه، خاصیت سلفی موتور سعی می‌کنه جریان رو همچنان حفظ کنه. این اتفاق باعث ایجاد یه ولتاژ برگشتی خیلی شدید روی پین زمین فن می‌شه که می‌تونه ترانزیستور و حتی برد رزبری‌پای رو بسوزونه.

دقیقا به همین خاطره که ما یه دیود رو موازی با فن قرار می‌دیم. این دیود که بهش فلای‌ویل (Flywheel) یا فلای‌بک می‌گن، مسیری رو برای تخلیه این جریان سرگردان فراهم می‌کنه و اجازه می‌ده انرژی موتور به صورت امن تخلیه بشه.

مرحله ۳

کدنویسی پایتون برای کنترل سرعت فن

برای کنترل نرم و دقیق سرعت فن، از سیگنال PWM نرم‌افزاری با کمک کتابخونه RPi.GPIO استفاده می‌کنیم. سیگنال‌های PWM برای راه‌اندازی موتورها فوق‌العاده‌ان، چون سرعت واکنش موتور نسبت به فرکانس PWM خیلی بالاست. اول از همه باید یه اسکریپت ساده پایتون به اسم calib_fan.py بنویسی و اجراش کنی تا مقدار حداقل سرعت (FAN_MIN) رو پیدا کنی.

مقادیر مختلف بین 0 تا 100 درصد (معمولا حدود 20 درصد جواب می‌ده) رو تست کن تا ببینی کمترین عددی که فن باهاش می‌تونه شروع به چرخش کنه چقدره.

تو کدهای اصلیت می‌تونی ارتباط بین دمای پردازنده و سرعت فن رو شخصی‌سازی کنی. مثلا بهش بگی اگر دما به 50 درجه رسید، فن با سرعت مشخصی بچرخه و اگر دما از یه حدی رد شد، سرعتش بره بالا. این دقیقا همون منطقیه که تو مادربردهای کامپیوتر برای مدیریت گراف دما و سرعت فن استفاده می‌شه.

مرحله ۴

اجرای خودکار اسکریپت کنترل فن در استارتاپ

برای اینکه برنامه کنترل فن با هر بار روشن شدن رزبری‌پای به‌طور خودکار اجرا بشه، من از یه اسکریپت Bash استفاده می‌کنم و اون رو تو فایل rc.local قرار می‌دم.

  1. یه پوشه به اسم Scripts تو مسیر home/pi/ بساز و فایل پایتون کنترل فن (مثلا fan_ctrl.py) رو اونجا قرار بده.
  2. تو همون پوشه، یه فایل متنی به اسم launcher.sh بساز و کدهای پایین رو داخلش کپی کن.
  3. حالا فایل etc/rc.local/ رو باز کن و درست قبل از خط exit 0، این دستور رو بنویس: sudo sh '/home/pi/Scripts/launcher.sh'

محتوای اسکریپت launcher.sh باید به این شکل باشه: #!/bin/sh cd / cd /home/pi/Scripts/ sudo python3 ./fan_ctrl.py & cd / اگر هم می‌خوای این سیستم رو روی توزیع‌هایی مثل OSMC اجرا کنی، بهتره اون رو به عنوان یه سرویس در systemd تعریف کنی.

  1. یه فایل سرویس به اسم fanctrl.service بساز.
  2. مسیر دقیق فایل پایتون رو داخلش مشخص کن.
  3. این فایل رو تو مسیر /lib/systemd/system/ کپی کن.
  4. در نهایت با دستور sudo systemctl enable fanctrl.service سرویس رو فعال کن.

روش دوم (systemd) امنیت و پایداری خیلی بالاتری داره، چون اگر به هر دلیلی برنامه پایتون توسط کاربر یا خود سیستم متوقف بشه، بلافاصله به صورت خودکار دوباره اجرا می‌شه. به همین سادگی تونستی یه سیستم خنک‌کننده هوشمند برای رزبری‌پای خودت بسازی! از این به بعد برد کوچیکت حتی تو پردازش‌های سنگین هم خنک و سرحال می‌مونه.

امیدوارم از ساخت این مدار کاربردی لذت برده باشی. اگر تو مراحل سیم‌کشی یا نوشتن کدهای پایتون به چالشی خوردی، حتما تو بخش نظرات برامون بنویس تا تیم آیسی‌مدار راهنماییت کنه.

فایل‌های پیوست

PY calib_fan.py
PY fan_ctrl.py

تو میتونی اولین سازنده باشی!

اگه پروژه رو ساختی به اشتراک بزار و اعتبار هدیه بگیر

این آموزش با استانداردهای اختصاصی آیسی‌مدار بازنویسی و بهینه‌سازی شده و تمامی حقوق انتشار آن متعلق به این مجموعه است و در صورت کپی یا بازنشر پیگرد قانونی خواهد داشت.

آموزش‌های مشابه

گفتگو‌های کاربران

هنوز نظری ثبت نشده؛ تو شروع کن!