- Componenten vereist
- Constructie van robotarm
- Schakelschema en werkbeschrijving:
- Hoe de robotarm te bedienen:
In deze tutorial gaan we een op Arduino Uno gebaseerde robotarm ontwerpen op basis van enkele kaarten en servomotoren. Het gehele bouwproces wordt hieronder in detail uitgelegd. Hier in dit project is Arduino Uno geprogrammeerd om servomotoren aan te sturen die dienen als gewrichten van een robotarm. Deze opstelling ziet er ook uit als een robotkraan of we kunnen hem omzetten in een kraan door enkele eenvoudige aanpassingen uit te voeren. Dit project is nuttig voor beginners die willen leren om tegen lage kosten een eenvoudige robot te ontwikkelen of gewoon willen leren werken met Arduino en servomotoren.
Deze Arduino Robotarm kan worden bestuurd door vier Potentiometers die eraan zijn bevestigd, elke potentiometer wordt gebruikt om elke servo aan te sturen. Je kunt deze servo's verplaatsen door de potten te draaien om een object te pakken, met wat oefening kun je het object gemakkelijk oppakken en van de ene plaats naar de andere verplaatsen. We hebben hier servo's met een laag koppel gebruikt, maar je kunt krachtigere servo's gebruiken om zware voorwerpen te pakken. Het hele proces is aan het eind goed gedemonstreerd in de video. Bekijk ook hier onze andere Robotics Projects.
Componenten vereist
- Arduino Uno
- 1000uF Condensator (4 stuks)
- 100nF Condensator (4 stuks)
- Servomotor (SG 90 - vier stuks)
- 10K pot - Variabele weerstand (4 stuks)
- Voeding (5v- bij voorkeur twee)
Servomotor
Eerst praten we een beetje over Servomotoren. Servomotoren worden voornamelijk gebruikt wanneer er behoefte is aan een nauwkeurige beweging of positie van de as. Deze worden niet voorgesteld voor toepassingen met hoge snelheid. Servomotoren worden voorgesteld voor lage snelheid, gemiddeld koppel en nauwkeurige positietoepassing. Dus deze motoren zijn het beste voor het ontwerpen van de robotarm.
Servomotoren zijn verkrijgbaar in verschillende soorten en maten. We gaan kleine servomotoren gebruiken, hier gebruiken we vier SG90 servo's. 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. Doorloop deze tutorial van Servomotor besturen met Arduino om er meer over te leren. In Arduino hebben we vooraf gedefinieerde bibliotheken om de Servo te besturen, dus het is heel gemakkelijk om de servo te besturen, wat je samen met deze tutorial zult leren.
Constructie van robotarm
Neem een plat en stabiel oppervlak, zoals een tafel of een hard karton. Plaats vervolgens een servomotor in het midden en lijm deze vast. Zorg ervoor dat de mate van rotatie zich in het gebied bevindt dat in de afbeelding wordt weergegeven. Deze servo fungeert als basis van de arm.
Leg een klein stukje karton op de eerste servo en plaats dan de tweede servo op dit stuk bord en lijm deze vast. De servorotatie moet overeenkomen met het diagram.
Neem wat karton en snijd ze in stukken van 3 x 11 cm. Zorg ervoor dat het stuk niet verzacht wordt. Snijd aan het ene uiteinde een rechthoekig gat (laat 0,8 cm van de onderkant over) net genoeg om een andere servo te passen en aan het andere uiteinde de servo-versnelling stevig vast met schroeven of lijm. Monteer vervolgens de derde servo in het eerste gat.
Snijd nu een ander stuk karton met de lengtes zoals weergegeven in onderstaande afbeelding en lijm een ander tandwiel aan de onderkant van dit stuk.
Lijm nu de vierde en laatste servo aan de rand van het tweede stuk zoals weergegeven in de afbeelding.
Hiermee lijken twee stukken op elkaar.
Wanneer we deze opstelling aan de basis bevestigen, zou het eruit moeten zien,
Het is bijna klaar. We hoeven alleen maar de haak te maken om het object vast te pakken en te pakken als een robothand. Snijd voor de haak nog twee stukken karton van 1 cm x 7 cm en 4 cm x 5 cm. Lijm ze aan elkaar zoals weergegeven in de afbeelding en plak het laatste tandwiel helemaal aan de rand.
Monteer dit stuk bovenop en hiermee hebben we onze robotarm gebouwd.
Hiermee werd ons basisontwerp van de robotarm voltooid en zo hebben we onze goedkope robotarm gebouwd. Verbind nu het circuit in breadboard volgens het schakelschema.
Schakelschema en werkbeschrijving:
De circuitaansluiting voor Arduino Uno Robotic Arm wordt hieronder weergegeven.
De spanning over variabele weerstanden is niet volledig lineair; het zal luidruchtig zijn. Om deze ruis te filteren, worden condensatoren over elke weerstand geplaatst, zoals weergegeven in de afbeelding.
Nu zullen we de spanning van deze variabele weerstand (spanning die positieregeling vertegenwoordigt) naar ADC-kanalen van Arduino sturen. Hiervoor gaan we vier ADC-kanalen van UNO van A0 tot A3 gebruiken. Na de ADC-initialisatie hebben we digitale waarde van potten die de positie vertegenwoordigen die de gebruiker nodig heeft. We nemen deze waarde en matchen deze met de servopositie.
Arduino heeft zes ADC-kanalen. We hebben er vier gebruikt voor onze robotarm. De UNO ADC heeft een resolutie van 10 bits, dus de gehele getallen variëren van 0-1023 (2 ^ 10 = 1024 waarden). Dit betekent dat het ingangsspanningen tussen 0 en 5 volt omzet in gehele waarden tussen 0 en 1023. Dus voor elke (5/1024 = 4,9 mV) per eenheid. Lees hier meer over het in kaart brengen van de spanningsniveaus met behulp van ADC-kanalen in Arduino.
Om de UNO nu een analoog signaal in een digitaal signaal te laten omzetten, moeten we het ADC-kanaal van Arduino Uno gebruiken met behulp van onderstaande functies:
1. analogRead (pin); 2. analogReference (); 3. analogReadResolution (bits);
Arduino ADC-kanalen hebben een standaard referentiewaarde van 5V. Dit betekent dat we een maximale ingangsspanning van 5V kunnen geven voor ADC-conversie op elk ingangskanaal. Omdat sommige sensoren spanningen leveren van 0-2,5V, dus met een 5V-referentie, krijgen we minder nauwkeurigheid, dus hebben we een instructie waarmee we deze referentiewaarde kunnen wijzigen. Dus voor het wijzigen van de referentiewaarde hebben we "analogReference ();"
Standaard krijgen we de maximale ADC-resolutie van het bord, die 10 bits is, deze resolutie kan worden gewijzigd met behulp van instructies ("analogReadResolution (bits);").
In ons Robotic- handcircuit hebben we deze referentiespanning op de standaardwaarde gelaten, zodat we de waarde van het ADC-kanaal kunnen aflezen door direct de functie "analogRead (pin)" aan te roepen; hier staat "pin" voor pin waar we het analoge signaal hebben aangesloten, zeg maar we willen "A0" lezen. De waarde van ADC kan worden opgeslagen in een geheel getal als int SENSORVALUE0 = analogRead (A0); .
Laten we het nu hebben over de SERVO, de Arduino Uno heeft een functie waarmee we de servopositie kunnen regelen door alleen de graadwaarde te geven. Stel dat als we willen dat de servo op 30 staat, we de waarde direct in het programma kunnen weergeven. Het SERVO-headerbestand ( Servo.h ) zorgt intern voor alle berekeningen van de duty ratio.
# omvatten
Hier vertegenwoordigt de eerste instructie het header-bestand voor het besturen van de SERVO MOTOR. De tweede verklaring is het benoemen van de servo; we laten het als servo0 omdat we er vier gaan gebruiken. De derde verklaring geeft aan waar de servosignaalpen is aangesloten; dit moet een PWM-pin zijn. Hier gebruiken we PIN3 voor de eerste servo. Vierde verklaring geeft opdrachten voor het positioneren van servomotor in graden. Als het 30 wordt gegeven, draait de servomotor 30 graden.
Nu hebben we de SG90-servopositie van 0 tot 180 en de ADC-waarden zijn van 0-1023. We zullen een speciale functie gebruiken die automatisch overeenkomt met beide waarden.
sensorvalue0 = map (sensorvalue0, 0, 1023, 0, 180);
Deze instructie wijst beide waarden automatisch toe en slaat het resultaat op in integer 'servovalue0' .
Dit is hoe we de servo's in ons robotarmproject hebben aangestuurd met Arduino. Controleer de volledige code hieronder.
Hoe de robotarm te bedienen:
Er zijn vier potten beschikbaar voor de gebruiker. En door deze vier potten te draaien, zorgen we voor variabele spanning op de ADC-kanalen van UNO. Dus de digitale waarden van Arduino zijn onder controle van de gebruiker. Deze digitale waarden worden in kaart gebracht om de servomotorpositie aan te passen, vandaar dat de servopositie de controle heeft over de gebruiker en door deze potten te draaien kan de gebruiker de gewrichten van de robotarm bewegen en elk object oppakken of grijpen.