Stap 13: De snelheidsregeling
Dit wordt gedaan met de feedback van de snelheidsmeter.
Eerst en vooral, wordt puls breedte modulatie gebruikt om de macht aan de motor te controleren. Deze puls breedte modulatie is gewoon overschakelen in- en uitschakelen van de voeding zeer snel. Als de pulsen 'op' zijn kort ten opzichte van de pulsen 'uit', is de gemiddelde waarde gedurende de tijd van de huidige aan de motor geleverd zullen laag. Als de 'on' pulsen langer zijn dan de pulsen 'uit', zal de kracht groot worden.
De arduino heeft verschillende analoge uitgangen met PWM. Deze uitgangen hebben een resolutie van 256 met 0 is geen macht en 256 volledig open.
De taak van het programma op de arduino is het vinden van de juiste waarde om te laten de schijf draai zo dicht mogelijk bij 12 omwentelingen per seconde. (of 1 revolutie in 0.083.. s)
In elke revolutie verbindt de aluminiumstrip de twee draden die fungeert als een digitale swich die de arduino met een digitaal pin voorlezen kan. Zoals uitgelegd in de vorige stap een pull up weerstand wordt gebruikt, dus wanneer de arduino dat de digitale pin ziet gaat het van 'Hoog' op 'Laag' het kunnen weten dat het wiel een revolutie heeft.
Met de functie micros() kan de vertraging tussen de pulsen worden gemeten. Deze vertraging is dan de periode van een revolutie.
Feedback betekent dat de arduino de stroom die de motor wordt geleverd kunt aanpassen. Als het gebeurt dat de periode te groot is, kan de kracht om te versnellen naar de motor worden verhoogd. Als de periode te kort is kan het de snelheid verminderen.
Na elke aanpassing wacht de arduino tot de schijf en draaiende motor aan een constante snelheid krijgen. De motor is misschien een beetje te klein voor deze schijf en het vereist enige tijd haar volledige snelheid te bereiken.
Als de arduino niet zou wachten tot de disc wordt gesponnen omhoog, maar haar kracht met elke rotatie zou verhogen en wanneer de disc eindelijk de juiste snelheid bereikt nog zullen versnellen waardoor het arduno te verlagen de macht manier teveel. Zo ontstaat een soort trilling.
Deze trilling kan worden verminderd als de arduino wacht tot de schijf een constante snelheid bereikt en past daarna indien nodig.
Om te weten als de disc wordt gesponnen omhoog, kijkt de arduino verschillen in vertragingen. Als het moet worden versneld en als plotseling een groter is dan de vorige periode wordt waargenomen, weet dat de schijf is niet meer versnellen, maar de snelheid is meer beïnvloed door de omgeving dan de motor.
De code kan hieronder worden gevonden in een zip-bestand.
En tenslotte is er een programmaatje van Python. Het is niet nodig, u kunt gemakkelijk het vervangen van de eerste ' als verklaring ' in de lus door wat code voor een drukknop. (eigenlijk in eerdere foto's ziet u een potentiometer daar heb ik niet een knop naar me. En ik heb gewoon een analogread. Slechts een voorbeeld) het is gewoon handig starten en stoppen alles vanuit mijn laptop.
De code is ook hieronder opgenomen. (lijkt er een probleem met de < pre >< / pre > tags.
Gewoon draaien het programma begint de motor.
En zoals u in de eerste foto zien kunt, de macht begint bij 80, gaat naar ~ 110 en vervolgens een beetje rond 90 fluctueert. Het feit dat er dat nog steeds een trilling in het begin wordt veroorzaakt door het feit dat het denken bijna zelf uit elkaar schudt en de arduino denkt dat de disc wordt gesponnen omhoog door sommige beschadigd waarden.
Maar, zoals u in de tweede foto zien kunt het werkt meer of minder, stabiliseert de periode zelf aroud 83 ms. het duurt enige tijd, maar het werkt!