Inhoudsopgave:

Arduino Desk Fan Controller - Ajarnpa
Arduino Desk Fan Controller - Ajarnpa

Video: Arduino Desk Fan Controller - Ajarnpa

Video: Arduino Desk Fan Controller - Ajarnpa
Video: Hacking a PWM PC fan with Arduino 2024, November
Anonim
Arduino Desk Fan Controller
Arduino Desk Fan Controller
Arduino Desk Fan Controller
Arduino Desk Fan Controller
Arduino Desk Fan Controller
Arduino Desk Fan Controller

Toen ik onlangs van functie veranderde binnen het bedrijf, heb ik locaties verplaatst, van Bradford naar ons hoofdkantoor in Wakefield. Ik nam afscheid van mijn trouwe oude bureau met een bureauventilator om me koel te houden terwijl ik overal om me heen was……. Hoe dan ook, de trend in ons hoofdkantoor was voor kleine ventilatoren met USB-voeding van ongeveer 4" tot 6". Dus snel een mooi antiek messing effect 6" model besteld en de volgende dag geleverd.

Het probleem met alle ventilatoren, of ze nu snelheidsinstellingen of mechanische oscillerende modi hebben, is dat ze aan of uit zijn en dat je ze uiteindelijk de hele tijd in- en uitschakelt. Een sprankje fantasie, gecombineerd met een vereiste om mijn monitor een goede 3 te verhogen, en mijn volgende project is geboren. Voer Fanomatic in.

Ik had jarenlang met Arduino gespeeld, dus het was de logische eerste stop.

Stap 1: Boodschappenlijstje en Case

Boodschappenlijstje en koffer
Boodschappenlijstje en koffer
Boodschappenlijstje en koffer
Boodschappenlijstje en koffer
Boodschappenlijstje en koffer
Boodschappenlijstje en koffer

Boodschappenlijst:

  • 1 vel 12 mm MDF - voor de koffer
  • 1 Arduino Uno - de hersens
  • 1 sml breadboard en draden
  • 1 DHT11 - digitale temperatuur- en vochtigheidssensor - alleen voor monstertemperatuur
  • 1.96" OLED-display - om variabelen weer te geven - snelheid, temperatuur etc
  • 1 IRF520 Mosfet-module - om de USB-stroom aan en uit te zetten voor de ventilator
  • 4 10k-potentiometers met verschillende gekleurde knoppen - om de ventilatorsnelheid, aan-, uit- en temperatuurinstelpunt te regelen
  • 1 aan/uit-schakelaar
  • 1 sml blik schoolbordverf - geschikt voor MDF met 1 laag
  • 1 usb-kabel en 1 usb-aansluiting

Geval:

De grootte van de behuizing werd bepaald door de grootte van de basis van mijn 24-inch monitor en 4-poorts KVM-switch op 220 mm breed en de uiteindelijke hoogte waar ik mijn monitor op wilde hebben. De diepte was vrij flexibel, dus ik ging voor 180 mm om voldoende Dus 220 mm x 180 mm x 60 mm was de maat. Nu maken en vullen.

De MDF van 12 mm werd thuis vrij gemakkelijk gesneden, voordat het werd gelijmd en geschroefd om een werkende basis en voorkant te vormen. De voorkant werd vervolgens geboord om te passen op 4 10k Potentiometers en 1 over-the-top aan / uit-schakelaar die de stroom naar Arduino en ventilator zou regelen. Er was een rechthoekig gat gebeiteld voor een klein gerookt grijs acrylpaneel, waarachter ik van plan was een van die schattige OLED-schermen te bevestigen. Halverwege zou ik willen dat ik voor de voorkant voor 3 mm laag was gegaan, in plaats van 12 mm MDF, omdat er meer hout was verwijderd dan er over was.

Nadat er gaten in de achter- en zijkant waren geboord en gebeiteld voor temperatuursensor, usb-aansluiting en usb-stroomingang. Er werden een paar lagen schoolbordverf aangebracht. Het is een geweldige verf voor mdf omdat het goed intrekt en geen onderlaag nodig heeft. Het geeft een zeer meedogenloze matte afwerking, precies wat ik zocht.

Potten en schakelaars werden bevestigd, gerookt acryl heet gelijmd en Dyno-labels geproduceerd voor die retro-look.

Naast de besturing…

Stap 2: De besturing

De besturing
De besturing

Allemaal gebaseerd op een Arduino Uno. Ik brood aan boord van de componenten en maakte een begin met een schets.

De schets maakt gebruik van 3 bibliotheken:

  • Eentje om de irf520 mosfet aan te sturen om de ventilator aan te zetten.
  • Een om het OLED-scherm aan te sturen
  • Eén om de temperatuurgegevens van de DHT11. te lezen en te vertalen

Ik zal de schets hier later toevoegen, als ik het een beetje heb opgeruimd, maar wees gewaarschuwd, ik ben GEEN codeur, ik begrijp goede codeerprincipes, maar ben geneigd een luie codeur te zijn. Als ik ergens een weg omheen kan vinden en het werkt, dan werkt het.

Er zijn een aantal geweldige sites die uitleggen hoe ze elk moeten gebruiken …. en zal links bevatten naar de beste (naar mijn mening) sites om het beste uit elke site te halen.

Logica:

Een enkele USB-kabel levert stroom aan de Arduino EN aan de USB-ventilator. De Arduino kan de ventilator niet laten draaien omdat de stroom die hij trekt de Arduino zou beschadigen (eigenlijk een beetje dramatisch! De ingebouwde zekering zou doorslaan). We moeten dus een manier vinden om de Arduino te gebruiken om de stroom naar de ventilator in of uit te schakelen.

Een transistor is vereist, ik heb eerst een Darlington-transistor besteld, maar na het lezen opgezocht voor een irf520 MOSFET-stuurprogrammamodule van HobbyComponents.com. Geek-Alert!! De IRF520 is geweldig voor schakelen op logisch niveau (uitvoer van Arduino-pinnen). De spanning die naar het apparaat wordt gestuurd, bepaalt de weerstand van de MOSFET, I. E. door 0 tot 255 naar een digitale pin te sturen, wordt de ventilator (of een ander aangesloten apparaat) van uit naar volle snelheid gestuurd.

We komen later terug op 0 tot 255.

Dus we zetten een ventilator aan met een Arduino, waarom zou je je druk maken? We willen toch niet dat hij aangaat als het te koud is? Dus als we een temperatuursensor toevoegen, kunnen we code schrijven en testen om te zien of het warm is en de ventilator aan (255) of uit (0) zetten. Ik ging voor een DHT11 omdat het spotgoedkoop, gemakkelijk te coderen en nauwkeurig genoeg is voor dit project.

Terug naar die 0 tot 255 zaken. Als we weten dat een stukje code de ventilator aanzet (255) als de temperatuur hoog is, of uit (0) als de temperatuur laag is, als we een waarde tussen 0 en 255 hadden, zou de weerstand stijgen of dalen over de MOSFET en versnelt of vertraagt de ventilator.

Voer een potentiometer in die is aangesloten op een analoge pin! Wanneer gedraaid, genereert het een waarde tussen 0 en 1023. Deze waarde kan vervolgens in code worden getest om de ventilatorsnelheid te wijzigen!! joepie.

Er is nog een laatste ding (nou ja, een paar). De motorbesturingsbibliotheek die we zullen gebruiken om de MOSFET-driver aan te sturen, accepteert 2 parameters, één om de weerstand (voor de snelheid) in te stellen en een andere om de duur in te stellen. Met deze magische parameter kunnen we dus instellen hoe lang de ventilator aan staat en hoe lang de ventilator uit staat.

We hebben dus 4 potten om de 4 variabelen te controleren. Vervolgens kijken we naar het display.

Stap 3: Het scherm

Het scherm
Het scherm
Het scherm
Het scherm

Heeft het een display NODIG? Niet echt. Dus waarom heeft het er een? Nou, omdat ik een schattig display wilde hebben om de huidige temperatuur, ventilatorsnelheid, ventilator aan tijd, ventilator uit tijd en temperatuurinstelpunt te tonen.

De U8G-bibliotheek is briljant in het aansturen van dit kleine OLED-scherm. Het vergde een avond van onderzoek en ik kreeg mijn hoofd rond de commando's om de lettergrootte te krijgen die ik wilde voor 5 rijen en om de variabelen weer te geven met behulp van de u8g.print()-opdrachten. Het voordeel van dit display is dat het geen 2 of 4 'rijen' display is waar de Arduino-gemeenschap zo aan gewend is, dus graphics, lettertypen zijn allemaal goed te doen.

Om eerlijk te zijn, stuurt het grootste deel van de code het display aan. als uitspraken bepalen welke waarden moeten worden weergegeven, B. V. converteer een waarde van de analoge potten (0 tot 1023) naar een waarde om op het scherm weer te geven. In totaal zijn er verschillende sets instructieblokken, bepaal de ventilatorsnelheid vanuit de pot, converteer naar een %-waarde voor het scherm en een waarde tussen 0 en 255 om de ventilator aan te drijven.

Nou, dat is genoeg voor nu mensen. Ik hoop dat je geniet van deze eerste aflevering. Ik zal bewerken en bijwerken met links en de code. Als er iets is waar je meer over wilt weten, laat dan een reactie achter en vraag het.

Stap 4: Coderen

Ik beloofde de schets te uploaden toen ik dit 3 jaar geleden plaatste, en dat heb ik nooit gedaan.

Dus hier is het……

Aanbevolen: