Stap 3: Werk- en Code
De werking is in principe eenvoudig. De hall effect sensor signaal genereert wanneer de magneten met de rotoras verbonden (intern). Afhankelijk van aantal magneten aangesloten, voor elke 360 graden rotatie van de rotor, 1,2,4 signalen gegenereerd. Deze signalen worden opgepikt door arduino pin (hier pin 12). Als u wilt berekenen omwentelingen per minuut of RPM, rekenen we aantal signalen ontvangen in 1 seconde, vermenigvuldigd met 60 en het resultaat gedeeld door aantal signalen ontvangen in het 1 rotatie.
Lijn 74: Snelheid = ((teken * 60)/fanspace[fan].fandiv);
In mijn fan heb ik twee magneten aangesloten, dus krijg ik twee signalen per omwenteling. Ik heb geselecteerd {1,2} in het volgende deel van mijn code-
Lijn 33: fanspec fanspace [3] = {{0,1} {1,2}, {2,8}}; char fan = 1; het betekent fan type 1 met 2 signalen per omwenteling.
Huidige algoritme en code geeft redelijke nauwkeurigheid van ongeveer 10 RPM en update snelheid van circa 1 seconde. Door het optimaliseren van de code kunnen zowel worden geoptimaliseerd voor snellere respons en hogere nauwkeurigheid. Dit zal worden besproken in toekomstige projecten.
In het begin had ik probleem van voorloopnullen of LCD-scherm, behoud van de oude cijfers voor lagere snelheid bijvoorbeeld werkelijke snelheid komt neer van 330 TPM op 60 rpm, het toonde nog 360 rpm. Dit is de standaard probleem van links opvulling of voorloopnullen. Om dit die ik heb toegevoegd na code - te overwinnen
Lijn 87: / / converteren integer snelheid naar een ASCII-tekenreeks van 4 tekens links opgevuld
char SpeedString [4]; Buffer voor het opslaan van de string van 4 tekens + 0 beëindiging
sprintf (SpeedString, "%4 d", snelheid); Wijzig dit in %3, 4, 5 enz, afhankelijk van uw max snelheid lcd.print(SpeedString);
Hier heb ik de berekende snelheid in geheel getal vorm omgezet in vorm van een tekenreeks en vervolgens verzonden naar LCD, op deze manier afdrukken LCD snelheid alle cijfers gezien als één enkele tekenreeks of tekstgegevens.
De definitieve code is beschikbaar op mijn github pagina hier.
Veel plezier met arduino...
Met dank aan-
code van de oorspronkelijke door Emmanuel van http://thebestcasescenario.com
oorspronkelijke project door Charles Gantt van http://themakersworkbench.com