Inhoudsopgave:

PWM-gereguleerde ventilator op basis van CPU-temperatuur voor Raspberry Pi - Ajarnpa
PWM-gereguleerde ventilator op basis van CPU-temperatuur voor Raspberry Pi - Ajarnpa

Video: PWM-gereguleerde ventilator op basis van CPU-temperatuur voor Raspberry Pi - Ajarnpa

Video: PWM-gereguleerde ventilator op basis van CPU-temperatuur voor Raspberry Pi - Ajarnpa
Video: Review of 20A DC 10-60V PWM Motor Speed Controller 2024, Juli-
Anonim
PWM-gereguleerde ventilator op basis van CPU-temperatuur voor Raspberry Pi
PWM-gereguleerde ventilator op basis van CPU-temperatuur voor Raspberry Pi

Veel gevallen voor Raspberry Pi worden geleverd met een kleine 5V-ventilator om de CPU te helpen koelen. Deze ventilatoren zijn echter meestal behoorlijk luidruchtig en veel mensen pluggen hem op de 3V3-pin om het geluid te verminderen. Deze ventilatoren hebben meestal een vermogen van 200 mA, wat behoorlijk hoog is voor de 3V3-regelaar op de RPi. Dit project leert je hoe je de ventilatorsnelheid kunt regelen op basis van de CPU-temperatuur. In tegenstelling tot de meeste tutorials die dit onderwerp behandelen, zullen we niet alleen de ventilator in- of uitschakelen, maar zullen we de snelheid ervan regelen zoals op een reguliere pc, met behulp van Python.

Stap 1: benodigde onderdelen

Voor dit project zullen we slechts een paar componenten gebruiken die meestal zijn opgenomen in elektronicakits voor hobbyisten die je op Amazon kunt vinden, zoals deze.

  • Raspberry Pi met Raspbian (maar zou met andere distributies moeten werken).
  • 5V-ventilator (maar een 12V-ventilator kan worden gebruikt met een aangepaste transistor en een 12V-voeding).
  • NPN-transistor die minimaal 300mA ondersteunt, zoals een 2N2222A.
  • 1K weerstand.
  • 1 diode.

Optioneel, om de componenten in de behuizing te plaatsen (maar nog niet klaar):

  • Een klein stukje protoboard, om de componenten te solderen.
  • Grote krimpkous, ter bescherming van het bord.

Stap 2: Elektrische aansluitingen

Elektrische verbindingen
Elektrische verbindingen
Elektrische verbindingen
Elektrische verbindingen
Elektrische verbindingen
Elektrische verbindingen

De weerstand kan op beide manieren worden aangesloten, maar wees voorzichtig met de richting van de transistor en de diode. De kathode van de diode moet worden aangesloten op de +5V (rode) draad en de anode moet worden aangesloten op de GND (zwarte) draad. Controleer uw transistordocument op Emitter-, Base- en Collector-pinnen. De massa van de ventilator moet worden aangesloten op de collector en de massa van Rpi moet worden aangesloten op de zender

Om de ventilator te besturen, moeten we een transistor gebruiken die in een open collectorconfiguratie zal worden gebruikt. Door dit te doen, hebben we een schakelaar die de aardedraad van de ventilator met de aarde van de Raspberry Pi verbindt of loskoppelt.

Een NPN BJT-transistor geleidt afhankelijk van de stroom die in zijn poort vloeit. De stroom die van de collector (C) naar de emitter (E) mag vloeien is:

Ic = B * Ib

Ic is de stroom die door de collector de emitter stroomt, Ib is de stroom die door de basis naar de emitter stroomt, en B (bèta) is een waarde die afhankelijk is van elke transistor. We benaderen B = 100.

Omdat onze ventilator 200mA heeft, hebben we minimaal 2mA nodig via de basis van de transistor. De spanning tussen de basis en de emitter (Vbe) wordt als constant beschouwd en Vbe = 0, 7V. Dit betekent dat wanneer de GPIO aan staat, we 3,3 - 0,7 = 2,6 V op de weerstand hebben. Om 2mA door die weerstand te krijgen, hebben we een weerstand nodig van maximaal 2.6 / 0.002 = 1300 ohm. We gebruiken een weerstand van 1000 ohm om de foutenmarge te vereenvoudigen en te behouden. We zullen 2,6 mA hebben via de GPIO-pin, wat volkomen veilig is.

Omdat een ventilator in feite een elektrische motor is, is het een inductieve lading. Dit betekent dat wanneer de transistor stopt met geleiden, de stroom in de ventilator blijft stromen terwijl een inductieve lading de stroom constant probeert te houden. Dit zou resulteren in een hoge spanning op de aardpen van de ventilator en zou de transistor kunnen beschadigen. Daarom hebben we een diode nodig die parallel staat met de ventilator, waardoor de stroom constant door de motor vloeit. Dit type diode-opstelling wordt een vliegwieldiode genoemd

Stap 3: Programma om de ventilatorsnelheid te regelen

Om de ventilatorsnelheid te regelen, gebruiken we een software PWM-signaal uit de RPi. GPIO-bibliotheek. Een PWM-signaal is goed aangepast om elektromotoren aan te drijven, omdat hun reactietijd erg hoog is in vergelijking met de PWM-frequentie.

Gebruik het programma calib_fan.py om de FAN_MIN-waarde te vinden door in de terminal uit te voeren:

python calib_fan.py

Controleer verschillende waarden tussen 0 en 100% (zou ongeveer 20% moeten zijn) en kijk wat de minimumwaarde is voor uw ventilator om in te schakelen.

U kunt de overeenkomst tussen temperatuur en ventilatorsnelheid aan het begin van de code wijzigen. Er moeten evenveel tempSteps zijn als speedSteps-waarden. Dit is de methode die over het algemeen wordt gebruikt in pc-moederborden, waarbij punten worden verplaatst op een Temp / Speed-grafiek met 2 assen.

Stap 4: Voer het programma uit bij het opstarten

Om het programma automatisch uit te voeren bij het opstarten, heb ik een bash-script gemaakt waarin ik alle programma's plaats die ik wil starten, en dan start ik dit bash-script bij het opstarten met rc.locale

  1. Maak een map /home/pi/Scripts/ en plaats het fan_ctrl.py-bestand in die map.
  2. Maak in dezelfde map een bestand met de naam launcher.sh en kopieer het onderstaande script.
  3. Bewerk het bestand /etc/rc.locale en voeg een nieuwe regel toe voor de "exit 0": sudo sh '/home/pi/Scripts/launcher.sh'

launcher.sh-script:

#!/bin/sh#launcher.sh # navigeer naar de home-directory, dan naar deze directory, voer dan het python-script uit en dan terug homelocalecd /cd /home/pi/Scripts/sudo python3./fan_ctrl.py &cd /

Als je het bijvoorbeeld met OSMC wilt gebruiken, moet je het als een service starten met systemd.

  1. Download het fanctrl.service-bestand.
  2. Controleer het pad naar uw python-bestand.
  3. Plaats fanctrl.service in /lib/systemd/system.
  4. Schakel ten slotte de service in met sudo systemctl enable fanctrl.service.

Deze methode is veiliger, omdat het programma automatisch opnieuw wordt gestart als het door de gebruiker of het systeem wordt uitgeschakeld.

Aanbevolen: