via Flatland naar Thoughtland

ik heb onlangs een nieuwe home server gebouwd, het is een multifunctionele box die het grootste deel van mijn infrastructuur zal bevatten en ook is een bestandsserver met veel harde schijven (en ruimte voor meer in de toekomst) al deze schijven betekende dat dit een zeer grote machine werd, dus er was ruimte om ze allemaal te plaatsen. Ik eindigde het krijgen van een CaseLabs Magnum THW10 voor de zaak, die ruimte heeft voor een ton van spullen in het. Terwijl de machine geweldig werkt en alles doet wat ik nodig heb, is er een klein probleem mee. De ventilatoren draaien niet snel genoeg.

de server in mijn woonkamer na de eerste opstart. (de 2 liter frisdrank fles is voor schaal)

de harde schijven zitten achter de frontinlaatventilatoren en Ik wil er zeker van zijn dat ze koel blijven. Alle output van de PWM fan headers op het moederbord, een ASUS Z10PE-D16, zijn gebonden aan de CPU temperaturen. Maar, de CPU ‘ s niet echt te warm in de server, zodat de case fans zelden (of ooit) gaan boven hun minimale snelheid. Mijn normale oplossing voor dit probleem is om de fancontrol utiltity te gebruiken die deel uitmaakt van lm_sensors. Echter, lm_sensors is niet in staat om een van de ventilator controllers op het moederbord te detecteren. Ik denk dat dit komt omdat de ventilator controle wordt gedaan door de BMC op het moederbord en lm_sensors ondersteunt de BMC niet. Ik was niet in staat om een optie voor ventilator controle in de BMC webinterface te vinden, dus ik ben niet zeker. Hoe dan ook besloot ik dat het veel makkelijker zou zijn om gewoon een ventilatorcontroller te bouwen om handmatig een ventilatorsnelheid in te stellen voor de invoerventilatoren.

het bouwen van een ventilatorcontroller

de server heeft 8 ventilatoren aan de voorzijde van 120mm, 1 ventilator aan de achterzijde van 120mm en 6 ventilatoren aan de bovenzijde van 140mm. Echter, omdat het moederbord slechts een paar fan headers heeft heb ik 2 Silverstone CPF04 aangedreven splitters. De voorste 8 ventilatoren zijn aangesloten op de ene splitter en de 6 bovenste afzuigventilatoren op de andere. Voor dit project wilde ik gewoon een controller tussen het moederbord 4 pin fan header steken die me in staat stelt om het PWM besturingssignaal aan te passen dat naar de fans wordt gestuurd. Dit zou alleen stroom van het moederbord nemen en zijn eigen onafhankelijke pwm-uitgang genereren. Aangezien de splitters onafhankelijk van elkaar worden aangedreven, hoef ik me geen zorgen te maken over het routeren van stroom van het moederbord naar de fans.

er zijn commerciële oplossingen, zoals de Noctua na FC1, die vrij dicht bij wat ik zocht. Het probleem met de Noctua controller voor mijn use case was dat het me niet zou laten instellen volledige handmatige modus als het moederbord header was aangesloten. Ik kon een aangepaste kabel die niet de PWM pin aangesloten, maar dan zou ik betalen voor een heleboel functies die ik eigenlijk niet wilde maken.

het ontwerpen van de controller

ik heb wat gezocht op google om te zien wat de meeste mensen aan het doen waren omdat het bouwen van een fan controller nauwelijks iets unieks is. De meeste voorbeelden die ik vond bouwden een circuit met een 555 timer in astable mode met een potentiometer om de duty cycle van de output golfvorm aan te passen. Dus besloot ik hetzelfde te doen. Na het lezen van de Intel specificatie voor 4 wire PWM fans heb ik mijn ontwerp beperkingen voor de oscillator. Het circuit moest een uitgangsfrequentie van ~25 kHz hebben en bij 5 volt werken. Gezien dit heb ik geregeld op dit circuit:

het was meestal geleend van de circuits die ik vond via het zoeken op het internet voor soortgelijke projecten. Maar ik moest een aantal van de componentwaarden aanpassen om te voldoen aan de ventilatorbesturingsspecificatie.

vanaf daar ontwierp ik een PCB voor dit circuit met behulp van KiCad. Ik heb de print speciaal ontworpen om eenvoudig te monteren, met behulp van alle doorgaande gatcomponenten. Hoewel ik het eenvoudig veel kleiner had kunnen maken met opbouwcomponenten wilde ik dat dit een goed project was voor mensen die net begonnen te solderen. Dit is geen erg complex project en ik had het gevoel dat er misschien mensen zijn met een vergelijkbare behoefte aan. Maar zelfs met deze beperking is het bord nog vrij klein met slechts 35mm x 44mm. (vooral omdat het een eenvoudig circuit.

alle ontwerpen hiervoor zijn open source en zijn te vinden op mijn github op:

https://github.com/mtreinish/pwmcontroller

het samenstellen van de Controller

na het voltooien van een functioneel ontwerp stuurde ik het naar elecrow om het bord te laten maken. Een paar weken later kreeg ik de borden bezorgd. (I cheped out op de verzending waardoor het langer duren, de platen werden vervaardigd in < 1 week)

daarna heb ik de componenten op het bord gesoldeerd

toen installeerde ik de nieuwe controller in mijn server, en natuurlijk werkte het niet. Dus nam ik de print naar mijn bank en testte het met een oscilloscoop, een bankvoeding en een reserveventilator. Het bleek dat er twee problemen waren. Ten eerste, de 555 timer werd uitgevoerd op 3.8-4.2 V in plaats van de 5V opgeroepen in de spec. Het tweede probleem was dat de output ook niet echt een vierkante golf was:

tweede poging

om de problemen die ik vond bij de eerste poging te corrigeren, heb ik mijn circuit iets aangepast en een schmitt trigger toegevoegd aan de uitgang. Dit zou drie voordelen hebben: het zou de vierkante golf opruimen, de stijgende en dalende randen veel sneller maken, en het zou ervoor zorgen dat we een stabiele 5V-uitgang hebben. Het is eigenlijk best grappig, ik besloot / herinnerde om de schmitt trigger te gebruiken omdat ik een nep app notitie moest schrijven voor een klas op de universiteit over het gebruik van een schmitt trigger voor schakelaar de-bouncing.

de aanpassing aan het schakelschema was vrij eenvoudig. Voeg gewoon de schmitt trigger toe aan de uitgang van de 555 en sluit die vervolgens aan op de fan header:

de enige complicatie hiervan was de plattegrond. Ik kon geen enkele Schmitt trekker vinden in een through hole pakket. De enige through hole schmitt triggers die ik vond (toegegeven dat ik niet een uitputtende zoekopdracht) was een 4 of 6 manier in een DIP-14 pakket. Dat zou veruit het grootste pakket op het bord zijn. Ik wilde dat de print eenvoudig, klein en makkelijk te solderen was. Dit betekende oorspronkelijk alle gaten, maar met de keuze tussen een DIP 14 en het vergroten van de board grootte of een enkele opbouw component koos ik ervoor om te gaan met de SMT componenten. Ik was in staat om een van TI te vinden in een sot-23-5-pakket, dat eerlijk gezegd niet moeilijk is om te solderen, het vergt gewoon een beetje geduld. (vergroting helpt)

na het voltooien van de herziene board lay-out (Ik heb het veel kleiner gemaakt en tegelijkertijd opgeruimd) stuurde ik het naar OSH Park om gefabriceerd te worden:

toen heb ik alles vastgesoldeerd.:

naast het defecte originele bord

heb ik een fout gemaakt op het nieuwe bord; Ik vergat de grond van de moederbord connector en de 5V kant van de DC/DC converter aan te sluiten. Niets een kleine bodge draad tussen pinnen 1 en 3 op de DC/DC converter kon niet repareren. (het printontwerp in de git repo is al bijgewerkt met deze correctie) daarmee en de nieuwe schmitt trigger werkte perfect:

en als ik het nu in mijn server zet, kan ik de ventilatorsnelheden heel gemakkelijk regelen.

conclusie

dit project deed me beseffen dat veel van de willekeurige controllers en accessoires op moderne computer moederborden die we als vanzelfsprekend beschouwen en volledig gesloten ontwerpen zijn. Er is geen documentatie van ASUS over hoe dingen op mijn server moederbord zijn bedraad of de protocollen die ze gebruiken (tenminste niet dat ik in staat was om te vinden). Ik begon na te denken over mijn andere computers, waaronder mijn desktop en hoe ik de controle over dingen zoals de ventilatoren en de waterpomp daar. Het is daar hetzelfde verhaal.; Ik vertrouw op het moederbord (een ASUS Rampage V Edition 10) gebakken in hardware en software. Ik gecontroleerd en lm_sensors is niet in staat om te praten met de fan controller op het bureaublad. Maar, in tegenstelling tot mijn server de desktop UEFI biedt me het nodige niveau van controle om de temperatuur input aan te passen en stel Aangepaste ventilator curves.

hoewel ik graag zou zien dat deze ontwerpen worden geopend om het gemakkelijker te maken om te profiteren, realiseer ik me dat dat niet erg waarschijnlijk snel zal veranderen. Maar in de tussentijd kunnen we doorgaan met het bouwen van open alternatieven voor de stukken die we nodig hebben. Ik ben momenteel bezig met een ander fan controller project voor mijn desktop om te proberen dit aan te pakken. Ik ga een multi-fan controller bouwen, vergelijkbaar met zoiets als een aquacomputer aquero. Maar, gebouwd op een alle open manier en met een open en gedefinieerde interface. U kunt de voortgang van die inspanning hier volgen: https://github.com/mtreinish/openpwm het is nog steeds super vroeg in het hardware ontwerp en het gaat een zeer lange termijn project waar ik aan werk in mijn vrije tijd.

Geef een antwoord

Het e-mailadres wordt niet gepubliceerd.