Koyarwar ESP32 17/55 - Sarrafa Motar Servo ta amfani da ESP32 da Potentiometer - Kayan Koyon IoT na ESP32
A cikin wannan koyawa, za mu koyi yadda ake sarrafa motar servo ta amfani da microcontroller na ESP32 da potentiometer daga kayan aikin IoT na ESP32 na SunFounder. A ƙarshen wannan aikin, za ka iya daidaita kusurwar motar servo cikin sauƙi ta amfani da potentiometer, wanda zai ba da damar sarrafawa daidai. Wannan hanya ce mai kyau don bincika iyawar ESP32 da yadda take haɗawa da motoci.

Yayin da muke zurfafa cikin bayanai, za mu rufe abubuwan hardware da ake buƙata, umarnin haɗin waya, da misalan code don samun komai yana aiki. Don ƙarin bayani na gani, tabbatar da duba bidiyon da ke da alaƙa da wannan koyawa (a cikin bidiyo a 0:30).
Bayanin Hardware
Abubuwan farko na wannan aikin sun haɗa da ESP32 microcontroller, motar servo (SG90), da potentiometer. ESP32 microcontroller ne mai ƙarfi wanda ke ba da Wi-Fi da Bluetooth na ciki, wanda ya dace da ayyukan IoT. Yana iya sarrafa na'urori daban-daban, gami da motoci, da daidaito mai girma.
Motar servo SG90 abu ne da ake amfani da shi sosai wanda zai iya juyawa kusan digiri 270. Yana aiki akan siginar pulse-width modulation (PWM), inda kusurwar juyawa ke ƙayyade ta girman pulse ɗin da aka aika masa. Potentiometer yana aiki azaman resistor mai canzawa, yana ba ka damar daidaita wutar lantarki da aka aika zuwa ESP32, wanda hakan ke sarrafa matsayin servo.
Bayanan Datasheet
| Manufacturer | SG |
|---|---|
| Part number | SG90 |
| Logic/IO voltage | 3.3 V (ESP32) |
| Supply voltage | 5 V |
| Output current (per channel) | 1.2 A |
| Peak current (per channel) | 2.5 A |
| PWM frequency guidance | 50 Hz |
| Input logic thresholds | 0.2 V (low), 2.5 V (high) |
| Voltage drop / RDS(on) / saturation | 0.5 V |
| Thermal limits | 85 °C max |
| Package | Plastic |
| Notes / variants | Available in different gear types |
- Tabbatar da cewa an kunna servo da wutar lantarki mai dacewa (5V).
- Haɗa ƙasan servo zuwa ƙasan ESP32 don samun ma'anar gama gari.
- Yi amfani da siginonin PWM masu dacewa don sarrafa matsayin servo.
- Yi hankali da buƙatun wutar lantarki na servo; yi amfani da wutar lantarki ta waje idan ya cancanta.
- Duba don daidaitattun sassan pin lokacin haɗin waya don guje wa kuskuren tsari.
Umarnin Haɗin Waya

Don haɗa motar servo da potentiometer zuwa ESP32, fara da haɗa wayar ƙasa na servo (yawanci baƙar fata ko launin ruwan kasa) zuwa ɗaya daga cikin pins na ƙasa akan ESP32. Na gaba, haɗa wayar wutar lantarki (yawanci ja) na servo zuwa pin 5V akan ESP32. A ƙarshe, haɗa wayar sigina (yawanci orange ko fari) daga servo zuwa pin 25 akan ESP32.
Don potentiometer, haɗa ɗaya pin na waje zuwa pin 3.3V akan ESP32 da ɗayan pin na waje zuwa ƙasa. Pin na tsakiya na potentiometer ya kamata a haɗa shi zuwa pin 34 akan ESP32. Wannan saitin yana ba da damar ESP32 ya karanta canjin wutar lantarki daga potentiometer, wanda za a yi amfani da shi don sarrafa matsayin servo.
Misalan Code & Bayani
Wannan ɓangaren code na gaba yana fara servo kuma yana saita sigogi don sarrafa motsinsa:
#include
Servo myServo;
const int servoPin = 25;
const int minPulseWidth = 500; // 0.5 ms
const int maxPulseWidth = 2500; // 2.5 ms
void setup() {
myServo.attach(servoPin, minPulseWidth, maxPulseWidth);
myServo.setPeriodHertz(50); // Standard 50Hz servo
}
A cikin wannan code, mun haɗa da ESP32Servo library kuma mun ƙirƙiri misalin servo da sunan myServo. Mun ayyana lambar pin don servo kuma mun saita mafi ƙanƙanta da mafi girman pulse widths waɗanda suka dace da iyakokin kusurwar servo.
Na gaba, bari mu duba loop ɗin da ke motsa servo gaba da baya akai-akai:
void loop() {
for (int angle = 0; angle <= 180; angle++) {
int pulseWidth = map(angle, 0, 180, minPulseWidth, maxPulseWidth);
myServo.writeMicroseconds(pulseWidth);
delay(15);
}
for (int angle = 180; angle >= 0; angle--) {
int pulseWidth = map(angle, 0, 180, minPulseWidth, maxPulseWidth);
myServo.writeMicroseconds(pulseWidth);
delay(15);
}
}
Wannan loop yana canza kusurwa a hankali daga 0 zuwa digiri 180 kuma ya dawo, ta amfani da aikin map don canza kusurwa zuwa pulse width daidai don servo. Kowane canji yana biye da ɗan jinkiri don ba da damar servo ya kai sabon matsayinsa cikin sauƙi.
Nuni / Abin da za ka Yi Tsammani
Da zarar an haɗa komai kuma an ɗora code ɗin, ya kamata ka ga motar servo tana motsawa cikin sauƙi daga 0 zuwa digiri 180 kuma ta dawo. Idan ka daidaita potentiometer, servo ya kamata ya nuna sabon matsayi bisa ga wutar lantarki da potentiometer ke bayarwa. Yi hankali da juyar da polarity lokacin haɗin waya, domin yana iya lalata abubuwan ka (a cikin bidiyo a 3:45).
Lokutan Bidiyo
- 00:00 Farawa
- 1:56 Menene motar servo
- 5:00 Shafin takardu
- 6:33 Bayanin haɗin waya don servo
- 7:45 Zaɓin tashar COMP don ESP32 a cikin Arduino IDE
- 9:27 Bayanin lambar Arduino
- 14:31 Nunin sarrafa servo ta amfani da ESP32
- 16:04 Samar da wutar lantarki ga servo banda 5V
- 18:47 Sarrafa Servo ba tare da madauki ba
- 20:15 Sarrafa Servo da Potentiometer
- 21:37 Bayanin lambar Arduino na servo da pot
#include <ESP32Servo.h>
// Define the servo and the pin it is connected to
Servo myServo;
const int servoPin = 25;
// Define the minimum and maximum pulse widths for the servo
const int minPulseWidth = 500; // 0.5 ms
const int maxPulseWidth = 2500; // 2.5 ms
void setup() {
// Attach the servo to the specified pin and set its pulse width range
myServo.attach(servoPin, minPulseWidth, maxPulseWidth);
// Set the PWM frequency for the servo
myServo.setPeriodHertz(50); // Standard 50Hz servo
}
void loop() {
// Rotate the servo from 0 to 180 degrees
for (int angle = 0; angle <= 180; angle++) {
int pulseWidth = map(angle, 0, 180, minPulseWidth, maxPulseWidth);
myServo.writeMicroseconds(pulseWidth);
delay(15);
}
// Rotate the servo from 180 to 0 degrees
for (int angle = 180; angle >= 0; angle--) {
int pulseWidth = map(angle, 0, 180, minPulseWidth, maxPulseWidth);
myServo.writeMicroseconds(pulseWidth);
delay(15);
}
}
Common Course Links
Common Course Files
Albarkatun da kuma shafukan da za a duba
-
TakarduESP32 Tutorial 17/55 - SunFounder Servo motor documentationdocs.sunfounder.com
Fayiloli📁
Takardar bayanai (pdf)
-
DS5160 Servo motor datasheet
DS5160_datasheet.pdf0.33 MB
Sauran fayiloli
-
Download SG90 datasheet (PDF)
robojax-servo-sg90_datasheet.pdf