Съдържание:

ШИМ регулиран вентилатор въз основа на температурата на процесора за Raspberry Pi: 4 стъпки (със снимки)
ШИМ регулиран вентилатор въз основа на температурата на процесора за Raspberry Pi: 4 стъпки (със снимки)

Видео: ШИМ регулиран вентилатор въз основа на температурата на процесора за Raspberry Pi: 4 стъпки (със снимки)

Видео: ШИМ регулиран вентилатор въз основа на температурата на процесора за Raspberry Pi: 4 стъпки (със снимки)
Видео: BTT SKR2 - Extruder and cooling fan automation 2024, Ноември
Anonim
ШИМ регулиран вентилатор въз основа на температурата на процесора за Raspberry Pi
ШИМ регулиран вентилатор въз основа на температурата на процесора за Raspberry Pi

Много калъфи за Raspberry Pi идват с малък 5V вентилатор, за да помогнат за охлаждането на процесора. Тези вентилатори обаче обикновено са доста шумни и много хора го включват към щифта 3V3, за да намалят шума. Тези вентилатори обикновено се оценяват на 200mA, което е доста високо за регулатора 3V3 на RPi. Този проект ще ви научи как да регулирате скоростта на вентилатора въз основа на температурата на процесора. За разлика от повечето уроци, обхващащи тази тема, ние не само ще включваме или изключваме вентилатора, но ще контролираме скоростта му, както се прави на мейнстрийм компютър, използвайки Python.

Стъпка 1: Необходими части

За този проект ще използваме само няколко компонента, които обикновено са включени в комплектите за електроника за любители, които можете да намерите в Amazon, като този.

  • Raspberry Pi, работещ с Raspbian (но трябва да работи с други дистрибуции).
  • 5V вентилатор (но 12V вентилатор може да се използва с адаптиран транзистор и 12V захранване).
  • NPN транзистор, който поддържа поне 300mA, като 2N2222A.
  • 1K резистор.
  • 1 диод.

По избор, за да поставите компонентите в кутията (но все още не е направено):

  • Малко парче протоборд, за запояване на компонентите.
  • Голямо термосвиване, за защита на дъската.

Стъпка 2: Електрически връзки

Електрически връзки
Електрически връзки
Електрически връзки
Електрически връзки
Електрически връзки
Електрически връзки

Резисторът може да бъде включен по всякакъв начин, но внимавайте за посоката на транзистора и диода. Катодът на диода трябва да бъде свързан към +5V (червен) проводник, а анодът трябва да бъде свързан към GND (черен) проводник. Проверете вашия транзисторен документ за излъчващи, базови и колекторни щифтове. Земята на вентилатора трябва да бъде свързана към колектора, а земята на Rpi трябва да бъде свързана към излъчвателя

За да управляваме вентилатора, трябва да използваме транзистор, който ще се използва в конфигурация на отворен колектор. По този начин имаме превключвател, който ще свърже или изключи заземяващия проводник от вентилатора към земята на малиновото пи.

NPN BJT транзистор провежда в зависимост от тока, който протича в неговата порта. Токът, който ще може да тече от колектора (C) към излъчвателя (E) е:

Ic = B * Ib

Ic е токът, който протича през колектора емитер, Ib е токът, който преминава през основата към излъчвателя, а B (бета) е стойност в зависимост от всеки транзистор. Приближаваме B = 100.

Тъй като вентилаторът ни е оценен като 200mA, имаме нужда от поне 2mA през основата на транзистора. Напрежението между основата и излъчвателя (Vbe) се счита за постоянно и Vbe = 0, 7V. Това означава, че когато GPIO е включен, имаме 3,3 - 0,7 = 2,6 V на резистора. За да имаме 2mA през този резистор, се нуждаем от резистор от максимум 2,6 / 0,002 = 1300 ома. Използваме резистор от 1000 ома, за да опростим и запазим граница на грешка. Ще имаме 2.6mA чрез GPIO щифта, който е напълно безопасен.

Тъй като вентилаторът е основно електрически двигател, той е индуктивен заряд. Това означава, че когато транзисторът спре да провежда, токът във вентилатора ще продължи да тече, тъй като индуктивният заряд се опитва да поддържа тока постоянен. Това би довело до високо напрежение на заземяващия щифт на вентилатора и може да повреди транзистора. Ето защо имаме нужда от диод паралелно с вентилатора, който ще кара тока да тече постоянно през двигателя. Този тип диодни настройки се наричат маховик диод

Стъпка 3: Програма за контрол на скоростта на вентилатора

За да контролираме скоростта на вентилатора, използваме софтуерен PWM сигнал от библиотеката RPi. GPIO. ШИМ сигнал е добре адаптиран за задвижване на електродвигатели, тъй като времето за реакция е много високо в сравнение с ШИМ честотата.

Използвайте програмата calib_fan.py, за да намерите стойността FAN_MIN, като стартирате в терминала:

python calib_fan.py

Проверете няколко стойности между 0 и 100% (трябва да са около 20%) и вижте каква е минималната стойност за включване на вентилатора ви.

Можете да промените съответствието между температурата и скоростта на вентилатора в началото на кода. Трябва да има толкова tempSteps, колкото speedSteps стойности. Това е методът, който обикновено се използва в дънните платки на компютъра, движещи се точки върху 2-осна графика Temp / Speed.

Стъпка 4: Стартирайте програмата при стартиране

За да стартирам програмата автоматично при стартиране, направих bash скрипт, където поставих всички програми, които искам да стартирам, и след това стартирам този bash скрипт при стартиране с rc.locale

  1. Създайте директория/home/pi/Scripts/и поставете файла fan_ctrl.py в тази директория.
  2. В същата директория създайте файл с име launcher.sh и копирайте скрипта по -долу.
  3. Редактирайте файла /etc/rc.locale и добавете нов ред преди "изхода 0": sudo sh '/home/pi/Scripts/launcher.sh'

launcher.sh скрипт:

#!/bin/sh #launcher.sh #отидете в началната директория, след това в тази директория, след това изпълнете python скрипт, след това обратно homelocalecd/cd/home/pi/Scripts/sudo python3./fan_ctrl.py & cd/

Ако искате да го използвате с OSMC например, трябва да го стартирате като услуга със systemd.

  1. Изтеглете файла fanctrl.service.
  2. Проверете пътя към вашия python файл.
  3. Поставете fanctrl.service в/lib/systemd/system.
  4. И накрая, активирайте услугата с sudo systemctl enable fanctrl.service.

Този метод е по -безопасен, тъй като програмата ще се рестартира автоматично, ако бъде убита от потребителя или системата.

Препоръчано: