This tutorial is part of: Mota za Servo
Video zote zinazohusiana na mota za servo zinazohusiana, zimeorodheshwa hapa. Viungo vya video zingine viko chini ya makala haya.
Arduino servomotorkontroll med hjälp av en potentiometer
I den här handledningen kommer vi att utforska hur man kontrollerar en servomotor med en potentiometer med en Arduino. Målet är att skapa en enkel krets där servots position justeras baserat på rotationen av potentiometern. I slutet av detta projekt kommer du att ha en fungerande modell som smidigt varierar servovinkeln från 0 till 180 grader när du vrider på potentiometern. Detta är ett utmärkt sätt att förstå grunderna i analog ingång och servokontroll i Arduino.
För att uppnå detta kommer vi att använda ett Arduino-kort, en servomotor och en potentiometer. Potentiometern fungerar som en variabel resistor och ger en analog ingång till Arduino, som sedan kommer att bestämma servomotorens position därefter. Detta projekt är inte bara roligt utan också lärorikt, eftersom det visar viktiga koncept inom elektronik och programmering. För en mer ingående förklaring, se till att kolla på videon (i videon vid 00:00).
Hårdvara förklarad
I det här projektet är de huvudsakliga komponenterna Arduino-kortet, servomotorn och potentiometern. Arduino är hjärnan i operationen, som bearbetar ingångar och kontrollerar utgångar. Servomotorn är det som fysiskt kommer att röra sig baserat på de kommandon den får från Arduino. Potentiometern kan vara 1k ohm till 1M ohm och gör det möjligt för användare att ge en variabel ingång som översätts till servorörelse.
Servomotorn fungerar genom att ta emot en PWM (Pulsbreddsmodulering) signal som indikerar den önskade positionen. Potentiometern, när den vrids, ändrar sitt motstånd, vilket läses av Arduino som en analog spänning. Servomotorn fungerar med 5V. Den fungerar inte med 3,3V. Denna spänning kartläggs sedan till servomotorns rörelseområde, vilket möjliggör smidig rörelse från 0 grader till 180 grader.
Datasheet Detaljer för SG90 Servo Motor
| Tillverkare | Parallax |
|---|---|
| Delnummer | SG90 |
| Logik/IO-spänning | 5 V |
| Matningsspänning | 4.8-6 V |
| Utgångsström (per kanal) | ~500 mA |
| Spetsström (per kanal) | 1 A |
| PWM-frekvens vägledning | 50 Hz |
| Inmatningslogiktrösklar | 0,5 V (låg), 2,5 V (hög) |
| Spänningsfall / RDS(on)/ mättnad | 0,5 V vid 500 mA |
| Termiska gränser | 0°C till 60°C |
| Paket | Standard 9g Servo |
| Anteckningar / varianter | Vanligt förekommande i RC-applikationer |
- Se säker på att servon inte överskrider sin maximala strömklassning.
- Använd en kylfläns om servon arbetar kontinuerligt under höga belastningar.
- Anslut potentiometern till en analog pin för noggranna avläsningar.
- Var försiktig med PWM-signalens timing för servokontrollen.
- Kontrollera servots rörelseomfång för att undvika fysiska hinder.
Kopplingsanvisningar


För denna installation behöver du ansluta komponenterna enligt följande:
Anslut potentiometerns mittersta pin (wiper) till Arduinos analoga pin.A0. De andra två stiften på potentiometern bör kopplas till5VochGNDpå Arduino. För servomotorn, anslut den röda ledningen till5V, den svarta ledningen tillGND, och den gula eller vita ledningen till digital pin9på Arduino. Denna arrangemang gör det möjligt för potentiometern att ge en analog ingång till Arduino, som kommer att styra servomotorns position baserat på den ingången.
Se till att verifiera alla anslutningar och säkerställa att servot inte är blockerat i sitt rörelseområde. Om du använder en annan Arduino-modell, bekräfta att pin-uppdragen för den analoga ingången och servo-utgången är kompatibla.
Kodexempel och genomgång
Nedan är ett utdrag av koden som initierar servot och läser potentiometervärdet:
#include
Servo myservo; // create servo object to control a servo
int pos = 0; // variable to store the servo position
void setup() {
myservo.attach(9); // attaches the servo on pin 9 to the servo object
}
I den här koden inkluderar vi Servo-biblioteket och skapar ett servoobjekt som kallasmyservoServot är anslutet till pin.9, vilket gör att vi kan styra det med denna pin.
void loop() {
int sensorValue = analogRead(A0); // read the potentiometer
pos = map(sensorValue, 0, 1023, 0, 180); // map to servo position
myservo.write(pos); // move servo to position
delay(15); // waits 15ms for the servo to reach the position
}
I loop-funktionen läser vi potentiometervärdet från pin.A0och mappa det från sitt intervall (0-1023) till servots intervall (0-180 grader). Denmyservo.write(pos)kommandot flyttar sedan servot till den önskade positionen baserat på potentiometerns rotation.
Demonstration / Vad man kan förvänta sig
När du kör det här programmet bör du se servomotorn smidigt röra sig från 0 till 180 grader när du vrider på potentiometern. Om servon inte rör sig som förväntat, kontrollera kablarna och se till att potentiometern fungerar korrekt. Se också till att Arduinon är korrekt strömsatt och att koden har laddats upp utan fel. Du kan förvänta dig att se servon återspegla potentiometerns position i realtid (i videon vid 02:00).
Videotidsstämplar
- 00:00- Introduktion till projektet
- 01:30- Förklaring av hårdvaruinstallation
- 03:45- Kopplingsanvisningar
- 05:00- Kodgenomgång
- 07:30- Demonstration av det färdiga projektet
This tutorial is part of: Mota za Servo
- Kudhibiti Servo kwa Vitufe vya Kushinikiza Kwa Kutumia Arduino
- Control a Servo Motor with a Push Button: Move Servo and Return SPB-1
- Control a Servo Motor with a Push Button: Move Servo in One Direction SPB-2
- Controlling a Servo Motor with a Push Button: Move Servo While Button Is Pressed (SPB-3)
- Kudhibiti Servo kwa Potentiometer Kwa Kutumia Arduino
- Kudhibiti Servo kwa Potentiometer na LCD1602 kwa kutumia Arduino
- Controlling Servo Motors Using an Infrared Remote with Arduino
- Kontrollera servoposition med handgester för Arduino
- Controlling Two or More Servos with Potentiometers Using an Arduino
- How to Control a 360° Servo with Three Push-Button Switches
- Jinsi ya Kutumia Servo ya 360° Inayoendelea na Arduino
- Msimbo wa Arduino na Video kwa Kidhibiti cha Servo cha PCA9685 cha Idhaa 16 cha 12-Bit V1
- Tengeneza Arduino Servo Toggle Switch kwa Kitufe cha Kushinikiza
/**
*Original source: Arduino IDE
* Arduino Project: Controlling the servo position
* This code is used with a video tutorial for Robojax.com
* Published on April 24, 2017, from Ajax, ON, Canada.
* Written/Edited by Ahmad Shamshiri
* Watch the video on YouTube: https://youtu.be/kZ9b31gVemc
* View tutorial page for this code https://robojax.com/RJT8
* Controlling a servo position using a potentiometer (variable resistor)
*/
#include <Servo.h>
Servo myservo; // create servo object to control a servo
// twelve servo objects can be created on most boards
int pos = 0; // variable to store the servo position
void setup() {
myservo.attach(9); // attaches the servo on pin 9 to the servo object
}
void loop() {
for (pos = 0; pos <= 180; pos += 1) { // goes from 0 degrees to 180 degrees
// in steps of 1 degree
myservo.write(pos); // tell servo to go to position in variable 'pos'
delay(15); // waits 15ms for the servo to reach the position
}
for (pos = 180; pos >= 0; pos -= 1) { // goes from 180 degrees to 0 degrees
myservo.write(pos); // tell servo to go to position in variable 'pos'
delay(15); // waits 15ms for the servo to reach the position
}
}
Resurser och referenser
Inga resurser än.
Filer📁
Datablad (pdf)
-
sg90_serveo_motor_datasheet
sg90_serveo_motor_datasheet.pdf0.13 MB