Inhoudsopgave:
- Stap 1: benodigde onderdelen
- Stap 2: Elektrische aansluitingen
- Stap 3: Programma om de ventilatorsnelheid te regelen
- Stap 4: Voer het programma uit bij het opstarten
Video: PWM-gereguleerde ventilator op basis van CPU-temperatuur voor Raspberry Pi - Ajarnpa
2024 Auteur: John Day | [email protected]. Laatst gewijzigd: 2024-01-30 11:16
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
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
- Maak een map /home/pi/Scripts/ en plaats het fan_ctrl.py-bestand in die map.
- Maak in dezelfde map een bestand met de naam launcher.sh en kopieer het onderstaande script.
- 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.
- Download het fanctrl.service-bestand.
- Controleer het pad naar uw python-bestand.
- Plaats fanctrl.service in /lib/systemd/system.
- 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:
Terug naar de basis: solderen voor kinderen: 6 stappen (met afbeeldingen)
Back to Basics: Solderen voor kinderen: Of je nu een robot bouwt of met Arduino werkt, vorm "hands-on" elektronica tot prototyping van een projectidee, weten hoe te solderen komt van pas. solderen is een essentiële vaardigheid om te leren als iemand echt van elektr
Basis 3D-scanner voor digitale 3D-toewijzing: 5 stappen
Basis 3D-scanner voor digitale 3D-mapping: in dit project zal ik de basisprincipes van 3D-scannen en -reconstructie beschrijven en uitleggen die voornamelijk worden toegepast op het scannen van kleine semi-vlakke objecten, en waarvan de werking kan worden uitgebreid tot scan- en reconstructiesystemen die kunnen B
Idee voor doe-het-zelf-activiteit voor weerstations voor 12+ jaar: 4 stappen
Idee voor doe-het-zelf-weerstationactiviteit voor 12-plussers: in deze activiteit zullen deelnemers hun weerstation opzetten, de lucht in sturen en de opnames (licht, temperatuur, vochtigheid) in realtime volgen via de Blynk-app. Bovendien leert u hoe u de geregistreerde waarden publiceert
Water is de basis voor het menselijk leven: 4 stappen
Water is de basis voor het menselijk leven: Inleiding: Arduino gebruiken om een project te maken dat een functie bevat. Ik maak een Arduino-project dat je eraan herinnert om een bepaalde tijd water te drinken.Motivatie:Tegenwoordig besteden de meeste mensen het grootste deel van hun tijd aan hun werk en ze vaak voor
Verdubbel de levensduur van de batterij van de DX3-radio van Spektrum voor minder dan $ 20: 11 stappen
Verdubbel de levensduur van de batterij van de DX3-radio van Spektrum voor minder dan $ 20: ik kreeg het idee hiervoor voor het eerst op de draad voor de DX6/7 op RCGRoups.com-forums. Ik rijd met nitro-auto's, dus kocht ik een DX3. Ik heb de radio een tijdje gebruikt en mijn batterijduur was aan de betere kant van de meeste radio's - maar de DX7-bezitters begonnen