Fläkt RPM med inre hall effekt sensor och Arduino (Intro till hårdvara avbryta och LCD display) (3 / 3 steg)
Steg 3: Arbete och kod
Arbetet är enkel i princip. Halleffekten sensorn genererar signal när magneterna ansluten till dess rotoraxeln (internt). Beroende på antal magneter ansluten, för varje 360 graders rotation av rotorn, kommer 1,2,4 signaler att genereras. Dessa signaler plockas upp av arduino pin (här PIN-kod 12). För att beräkna varv per minut eller RPM, räkna vi antalet signaler i 1 sekund multiplicerat med 60 och resultatet dividerat med antal signaler i 1 rotation.
Linje 74: Hastighet = ((fästingar * 60)/fanspace[fan].fandiv);
I min fläkt jag har två magneter fäst, därav får jag två signaler per varv. Jag har valt {1,2} i följande del av min kod-
Linje 33: fanspec fanspace [3] = {{0,1}, {1,2}, {2,8}}; char fan = 1; Det betyder fan typ 1, som har 2 signaler per varv.
Nuvarande algoritmen och koden ger rimlig noggrannhet på cirka 10 varv/min och uppdateringshastighet av omkring 1 sekund. Genom att optimera koden kan både optimeras för snabbare responstid och högre noggrannhet. Detta kommer att diskuteras i framtida projekt.
I början hade jag problemet med inledande nollor eller LCD-skärm behålla gamla siffror för lägre hastighet t.ex. faktisk hastighet kommer från 330 rpm till 60 rpm, det var fortfarande visar 360 rpm. Detta är standard problem av vänster stoppning eller inledande nollor. För att övervinna detta jag har lagt till följande kod-
Linje 87: / / konvertera heltal hastighet till en ASCII-sträng med 4 tecken vadderade vänster
char SpeedString [4]. Buffert för att lagra sträng 4 tecken + 0 uppsägning
sprintf (SpeedString, "%4 d", hastighet); ändra detta till %3, 4, 5 osv beroende på din Maxfart lcd.print(SpeedString);
Här jag har konverterat den beräknade hastigheten i heltal form till sträng form och sedan skickas till LCD, på detta sätt LCD skriver ut hastighet med tanke på alla siffror som en enda sträng eller textdata.
Den final koden finns på min github här.
Ha kul med arduino...
Tack-
ursprungliga koden av Crenn från http://thebestcasescenario.com
ursprungliga projektet av Charles Gantt från http://themakersworkbench.com