Raadi Koodka

Tutorial ESP32 17/55 - Xakinta Servo Motor iyadoo la isticmaalayo ESP32 iyo Potentiometer - Qalabka Barashada ESP32 IoT

Tutorial ESP32 17/55 - Xakinta Servo Motor iyadoo la isticmaalayo ESP32 iyo Potentiometer - Qalabka Barashada ESP32 IoT

Cashigarkii, waxaan baran doonnaa sida loo xakameeyo matoor servo iyadoo la adeegsanayo microcontroller-ka ESP32 iyo potentiometer ka tirsan qalabka barashada IoT ee ESP32 ee SunFounder. Marka aad dhamaystirto mashruucan, waxaad awood u yeelan doontaa inaad hagaajiso xagasha matoorka servo si habsami leh iyadoo la adeegsanayo potentiometer-ka, taasoo kuu oggolaanaysa xakameyn sax ah. Tani waa hab fiican oo lagu sahamiyo awoodaha ESP32 iyo sida uu ula xiriiro matoorada.

Markaan si qoto dheer u eegno faahfaahinta, waxaan dabooli doonnaa qaybaha qalabka ee lagama maarmaanka ah, tilmaamaha fiilada, iyo tusaalooyinka koodka si wax walba loo shideeyo. Si aad u hesho sawir muuqaal ah oo dheeri ah, hubi inaad daawato fiidiyowga la xidhiidha casharkan (fiidiyowga 0:30).

Qalabka La Sharaxay

Qaybaha ugu muhiimsan ee mashruucan waxaa ka mid ah ESP32 microcontroller-ka, matoorka servo (SG90), iyo potentiometer-ka. ESP32 waa microcontroller awood badan oo bixiya Wi-Fi iyo Bluetooth ku dhex dhisan, taasoo ka dhigaysa mid ku habboon mashruucyada IoT. Waxa uu awood u leeyahay inuu xakameeyo qalabyo kala duwan, oo ay ku jiraan matoorada, si sax ah oo sare leh.

Matoorka servo SG90 waa qayb si weyn loo isticmaalo oo u rogi kara qiyaastii 270 darajo. Wuxuu ku shaqeeyaa signal-ka PWM (pulse-width modulation), halkaasoo xagasha wareegga lagu go'aamiyo ballaca pulse-ka loo diro. Potentiometer-ku wuxuu u shaqeeyaa sidii resistor doorsooma, taasoo kuu ogolaanaysa inaad hagaajiso voltage-ka loo diro ESP32, kaas oo markaa xakameeya booska servo-ga.

Faahfaahinta Xaashida Xogta

Soo saaraha SG
Nambarka qaybta SG90
Voltage-ka Logic/IO 3.3 V (ESP32)
Voltage-ka sahayda 5 V
Korontada soo baxa (kanal kasta) 1.2 A
Korontada ugu sarreysa (kanal kasta) 2.5 A
Hagaha soo noqnoqoshada PWM 50 Hz
Heerarka xadka gelinta 0.2 V (hoose), 2.5 V (sare)
Hoos u dhaca voltage-ka / RDS(on) / saturation 0.5 V
Xadka kulaylka 85 °C ugu badnaan
Baakad Balastiig
Qoraalo / noocyo kala duwan Waxaa laga heli karaa noocyo gear ah oo kala duwan

 

  • Hubi in matoorka servo lagu shideeyo voltage ku habboon (5V).
  • Ku xir dhulka (ground) ee servo-ga dhulka ESP32 si aad u hesho tixraac wadaag ah.
  • Isticmaal signal-ka PWM ee ku habboon si aad u xakameyso booska servo-ga.
  • Ka warqab baahida korontada ee servo-ga; isticmaal sahay koronto dibadeed haddii loo baahdo.
  • Hubi meelaynta pin-ka ee saxda ah markaad fiilooyinka xirto si aad uga fogaato qalad.

Tilmaamaha Fiilada

ESP32-17-Sevo_motor-wiring

Si aad ugu xirto matoorka servo iyo potentiometer-ka ESP32, waxaad ku bilaabi kartaa adigoo ku xira fiilada dhulka ee servo-ga (badanaa madow ama bunni) mid ka mid ah pin-yada dhulka ee ESP32. Marka xigta, ku xir fiilada korontada (badanaa cas) ee servo-ga pin-ka 5V ee ESP32. Ugu dambeyntii, ku xir fiilada signal-ka (badanaa orange ama cad) ee servo-ga pin-ka 25 ee ESP32.

Potentiometer-ka, ku xir hal pin oo dibadda ah pin-ka 3.3V ee ESP32 iyo kan kale ee dibadda dhulka. Pin-ka dhexe ee potentiometer-ka waa in lagu xiraa pin-ka 34 ee ESP32. Qaabkani wuxuu u oggolaanayaa ESP32 inuu akhriyo korontada doorsooma ee ka soo baxda potentiometer-ka, kaas oo loo isticmaali doono inuu xakameeyo booska servo-ga.

Tusaalooyinka Koodka & Sharaxaad

Qaybta koodka ee soo socota waxay bilaabaysaa servo-ga oo waxay dejisaa cabbirrada xakamaynta dhaqdhaqaaqiisa:

#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
}

Koodkan, waxaan ku daraynaa maktabadda ESP32Servo waxaanan abuuraynaa tusaale ka mid ah servo-ga oo magaciisu yahay myServo. Waxaan qeexaynaa nambarka pin-ka ee servo-ga waxaanan dejisaynaa ballaca pulse-ka ugu yar iyo ugu weyn ee u dhigma xadka xagasha servo-ga.

ESP32_servo_lib

Marka xigta, aan eegno loop-ka si joogto ah u dhaqaajiya servo-ga gadaal iyo horay:

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);
  }
}

Loop-kani wuxuu si tartiib ah u beddelaa xagasha 0 ilaa 180 darajo iyo dib, isagoo adeegsanaya shaqada map si uu ugu beddelo xagasha ballaca pulse-ka ee ku habboon servo-ga. Isbeddel kasta waxaa ku xiga daahid gaaban si loogu oggolaado servo-ga inuu gaaro booskiisa cusub si habsami leh.

Muuqaal / Waxa Laga Filan Karo

Marka wax walba la xiro oo koodka la soo geliyo, waxaad arki doontaa matoorka servo isagoo si habsami leh u dhaqaaqaya 0 ilaa 180 darajo iyo dib. Haddii aad hagaajiso potentiometer-ka, servo-gu waa inuu ka tarjumaa booska cusub iyadoo ku xiran voltage-ka uu bixiyo potentiometer-ku. Ka digtoonow polarity-ga rogan markaad fiilooyinka xirto, sababtoo ah waxay dhaawici kartaa qaybahaaga (fiidiyowga 3:45).

Waqtiyada Fiidiyowga

  • 00:00 Bilow
  • 1:56 Waa maxay matoor servo
  • 5:00 Bogga dukumeentiga
  • 6:33 Fiilalka servo oo la sharaxay
  • 7:45 Doorashada dekedda COMP ee ESP32 ee Arduino IDE
  • 9:27 Koodhka Arduino oo la sharaxay
  • 14:31 Tusaale xakamaynta servo iyadoo la isticmaalayo ESP32
  • 16:04 Sii daynta korontada servo ee aan ahayn 5V
  • 18:47 Xakamaynta Servo iyada oo aan la isticmaalin loop-ka
  • 20:15 Xakamaynta Servo iyadoo la isticmaalayo Potentiometer
  • 21:37 Servo iyo pot koodhka Arduino oo la sharaxay

Sawirro

ESP32-17-Sevo_motor-schematic
ESP32-17-Sevo_motor-schematic
ESP32-17-Sevo_motor-wiring
ESP32-17-Sevo_motor-wiring
ESP32_servo_lib
ESP32_servo_lib
816-ESP32 Tutorial 17/55- Arduino code for controling servo motor
Luqadda: C++
#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);
  }
}

Faylasha📁

Waraaqa xogta (pdf)

Faylal kale