- Materiaal vereist
- Schakelschema
- Wat is een servomotor?
- Arduino Code Uitleg
- Meerdere servo's besturen met Arduino-werken:
Het gebruik van een of twee servo's met Arduino is eenvoudig, maar wat als we meer dan één servomotoren willen gebruiken?
Hier gaan we u laten zien hoe u meerdere servomotoren met Arduino kunt besturen. Het verbinden van meerdere servomotoren met Arduino lijkt eenvoudig te zijn, maar als we alle servo's aansluiten op de voedingspinnen van Arduino, zullen ze niet correct werken vanwege onvoldoende stroom om alle motoren aan te drijven. U moet dus een aparte voeding voor de motoren gebruiken, hetzij van sommige adapters (5v 2A) of van 9v-batterijen van goede kwaliteit.
Materiaal vereist
- Arduino UNO
- Servomotor
- Stroomvoorziening
- Breadboard
- Verbindingsdraden
Schakelschema
Wat is een servomotor?
Voordat we in detail treden, moeten we eerst de Servomotoren kennen.
Servomotoren zijn verkrijgbaar in verschillende soorten en maten. Een servomotor heeft voornamelijk draden, een is voor positieve spanning, een andere is voor aarde en de laatste is voor positie-instelling. De RODE draad is verbonden met de voeding, de zwarte draad is verbonden met aarde en de GELE draad is verbonden met het signaal.
Een servomotor is een combinatie van DC-motor, positieregelsysteem, versnellingen. De positie van de as van de DC-motor wordt aangepast door de besturingselektronica in de servo, gebaseerd op de duty-ratio van het PWM-signaal de SIGNAL-pin.
Simpel gezegd, de besturingselektronica past de aspositie aan door de DC-motor te regelen. Deze gegevens met betrekking tot de positie van de as worden via de SIGNAL-pin verzonden. De positiegegevens naar de besturing moeten worden verzonden in de vorm van een PWM-signaal via de signaalpen van de servomotor.
De frequentie van het PWM-signaal (Pulse Width Modulated) kan variëren op basis van het type servomotor. Het belangrijkste hier is de DUTY RATIO van het PWM-signaal. Op basis van deze WERKREGELING past de besturingselektronica de as aan.
Zoals weergegeven in de onderstaande afbeelding, moet de INSCHAKELRATIO 1/18 zijn om de as naar 9 uur te verplaatsen. 1 ms AAN-tijd en 17 ms UIT-tijd in een 18 ms-signaal.
Om de schacht naar 12o-klok te verplaatsen, moet de AAN-tijd van het signaal 1,5 ms zijn en de UIT-tijd 16,5 ms. Deze verhouding wordt gedecodeerd door het besturingssysteem in servo en het past de positie daarop aan. Deze PWM hier wordt gegenereerd door ARDUINO UNO te gebruiken.
Voordat u servo's op Arduino aansluit, kunt u uw servo testen met behulp van dit servomotor-testcircuit. Bekijk ook onze onderstaande Servo-projecten:
- Servomotorbesturing door Flex-sensor
Arduino Code Uitleg
De volledige Arduino-code voor Multiple Servo Control wordt aan het einde gegeven.
Arduino heeft een bibliotheek voor Servomotoren en het behandelt alle PWM-gerelateerde dingen om de servo te roteren, je hoeft alleen de hoek in te voeren waarnaar je wilt roteren en er is de functie servo1.write (hoek); die de servo naar de gewenste hoek zal draaien.
Dus hier beginnen we met het definiëren van de bibliotheek voor Servomotor.
# omvatten
In onderstaande code initialiseren we alle vier servo's als Servo1, Servo2, Servo3 en Servo4.
Servo servo1; Servo servo2; Servo servo3; Servo servo4;
Vervolgens stellen we alle invoerpennen van de servo in met Arduino. Zoals te zien is in de onderstaande code, is Servo1 verbonden met de 3e pin van de Arduino. U kunt de pinnen naar eigen inzicht verwisselen, maar houd er rekening mee dat het een PWM-pin moet zijn. Het gebruik van een Servo met digitale pinnen van de Arduino is niet betrouwbaar.
leegte setup () { servo1.attach (3); servo2.attach (5); servo3.attach (6); servo4.attach (9); }
Nu draaien we in de void loop () -functie gewoon alle servo's van 0 tot 180 graden en vervolgens 180 tot 0 graden. De vertraging die in de onderstaande code wordt gebruikt, wordt gebruikt om de snelheid van de servo te verhogen of te verlagen, aangezien deze de toenemende of afnemende snelheid van variabele 'i' beïnvloedt.
void loop () { for (int i = 0; i <180; i ++) { servo1.write (i); servo2.write (i); servo3.write (i); servo4.write (i); vertraging (10); } voor (i = 180; i> 0; i--) { servo1.write (i); servo2.write (i); servo3.write (i); servo4.write (i); vertraging (10); } }
Meerdere servo's besturen met Arduino-werken:
We hebben allemaal te maken met het huidige probleem bij het gebruik van meer dan twee servo's met één Arduino. De enige oplossing hiervoor is om een externe voeding aan te sluiten met de juiste hoeveelheid stroom (in dit project heb ik 2A met 9v-voeding gebruikt). Voor externe voeding kunt u adapters, RPS (Regulated Power Supply Instrument) of 9v volt-batterijen van goede kwaliteit gebruiken, en u kunt ook de USB-poort van uw laptop gebruiken voor het voeden van een kleine Servo. Om de externe voeding te gebruiken, hoeft u alleen de Arduino-aarde kort te sluiten met de externe voedingsaarde.
Gebruik de onderstaande Arduino-code om uw Arduino te programmeren en sluit alle servomotoren aan zoals weergegeven in het schakelschema met de juiste voeding voor motoren. Daarom werken alle servo's zonder onderbreking samen.