Search Code

Yadda ake Amfani da Continuous 360° Servo tare da Arduino

Yadda ake Amfani da Continuous 360° Servo tare da Arduino

A cikin wannan koyawa, za mu koyi yadda ake sarrafa servo mai ci gaba na 360° ta amfani da Arduino. Ba kamar daidaitattun servos ba, servos masu ci gaba na iya juyawa har abada a kowane bangare, wanda ke ba da damar aikace-aikace masu yawa. Duk da haka, sarrafa matsayinsu yana buƙatar fahimtar umarnin da aka aika musu da ɗan gwaji don nemo ƙimar tsayawa daidai.

Za mu ƙera shirin da zai ba mu damar aika umarni ta hanyar Serial Monitor don juya servo zuwa hagu, dama, ko tsayar da shi. Lambar za ta haɗa da mahimmancin dabaru don fassara ƙimar ASCII na umarnin da muka shigar. Don ƙarin bayani kan tsarin coding, tabbatar da duba bidiyon a (a cikin bidiyo a 12:30).

Kayan Aiki Da Aka Bayyana

Don aiwatar da wannan aikin, za ku buƙaci servo mai ci gaba na 360°, allo na Arduino, da kuma wutar lantarki mai iya samar da isasshen wutar lantarki (aƙalla 500mA). Servo yana karɓar siginonin sarrafawa daga Arduino, wanda ke amfani da pulse width modulation (PWM) don nuna alkibla da saurin juyawa.

Motar servo kanta tana da wayoyi uku: wutar lantarki, ƙasa, da sarrafawa. Wayar wutar lantarki tana haɗawa da wutar lantarki, wayar ƙasa tana haɗawa da duka wutar lantarki da ƙasar Arduino, kuma wayar sarrafawa tana haɗawa da wani fil ɗin da aka keɓe akan Arduino don aika sigina.

Cikakkun Bayanai na Datasheet

Mai ƙeraGeneric
Lambar sashiServo mai ci gaba na 360°
Wutar Logic/IO5 V
Wutar samarwa4.8–6 V
Fitowar wutar lantarki (kowane tashar)500 mA
Ƙarfin wutar lantarki (kowane tashar)1 A max
Jagorar mitar PWM50 Hz
Shigar da matakan dabaruHigh: >2.5 V, Low: <0.8 V
Rage wutar lantarki / RDS(on) / saturation
Iyakokin zafi
KunshinDaidaitaccen gidan servo
Bayanan kula / bambance-bambanceAkwai a cikin girma dabam-dabam
  • Tabbatar da ƙasa guda tsakanin Arduino da wutar lantarki.
  • Yi amfani da wutar lantarki ta waje don servo don guje wa ɗaukar nauyi fiye da kima akan Arduino.
  • Gwada ƙimar tsayawa don nemo mafi kyawun aiki ga servo ɗin ku.
  • Kula da zafin servo yayin aiki don hana yin zafi fiye da kima.
  • Yi amfani da siginar PWM don sarrafa sauri da alkiblar servo.

Umarnin Haɗin Waya

Don haɗa servo ɗin ku mai ci gaba na 360° zuwa Arduino, fara da haɗa wayar wutar servo zuwa wutar lantarki ta waje wadda ke ba da 5V. Wayar ƙasa ta servo yakamata a haɗa ta zuwa fil ɗin ƙasa (GND) akan Arduino, tabbatar da cewa wutar lantarki da Arduino suna raba ƙasa ɗaya. Wayar sarrafawa ta servo za ta tafi zuwa fil 9 akan Arduino, wanda shine inda za a aika siginar PWM daga.

Sau biyu duba cewa haɗin ku sun amintu, saboda haɗin da ba su da ƙarfi na iya haifar da halayen servo marasa daidaituwa. Idan servo ɗin ku nau'in da za a iya kunna shi kai tsaye daga Arduino, kuna iya haɗa wayar wutar zuwa fil 5V na Arduino, amma tabbatar da cewa jimlar wutar lantarki ba ta wuce abin da Arduino zai iya bayarwa ba.

Misalan Lamba & Bayani

Ɗan ƙaramin rubutu mai zuwa yana nuna yadda ake saita servo da karanta umarni daga Serial Monitor:

#include 

Servo myservo;  // ƙirƙirar abu na servo don sarrafa servo
int incomingByte = 0;   // don shigowar bayanan serial

void setup() {
  Serial.begin(9600);
  myservo.attach(9);  // haɗa servo akan fil 9 zuwa abu na servo
}

A cikin wannan ɗan ƙaramin lamba, mun haɗa da ɗakin karatu na Servo kuma mun ƙirƙiri abu na servo mai suna myservo. Mun kuma saita sadarwar serial a 9600 baud kuma mun haɗa servo zuwa fil 9.

Na gaba, muna da babban madauki inda muke karanta shigowar bayanan serial da sarrafa servo bisa ga umarnin:

void loop() {
  if (Serial.available() > 0) {
    incomingByte = Serial.read();
    if (incomingByte == 108) { // umarnin 'L'
      myservo.write(0); // juya zuwa agogo
    } else if (incomingByte == 114) { // umarnin 'R'
      myservo.write(180); // juya sabanin agogo
    } else if (incomingByte == 60) { // umarnin tsayawa
      myservo.write(60); // tsayar da servo
    }
  }
}

Wannan lambar tana duba idan akwai wani bayanai a cikin buffer na serial. Dangane da ƙimar ASCII na shigarwa (misali, 108 don 'L' don juya zuwa agogo, 114 don 'R' don juya sabanin agogo), tana aika umarnin da ya dace zuwa servo.

Don cikakken lamba da ƙarin bayani, da fatan za a koma ga cikakken shirin da aka ɗora a ƙarƙashin labarin.

Nuni / Abin da Za Ku Yi Tsammani

Lokacin da kuka ɗora lambar kuma ku buɗe Serial Monitor, kuna iya shigar da 'L' don juya servo zuwa hagu, 'R' don juya shi zuwa dama, ko wasu ƙimomi don gwada tsayar da servo. Yi tsammanin samun ƙimar tsayawa daban-daban, saboda halayen servo na iya bambanta bisa ga ingancinsa da ƙirarsa (a cikin bidiyo a 18:45).

Yi hattara da yadda servo ke amsa umarnin; idan bai tsaya kamar yadda ake tsammani ba, gwada ƙimomi daban-daban har sai kun sami mafi kyawun umarnin tsayawa. Wannan na iya buƙatar ɗan gwaji, musamman don guje wa yin zafi fiye da kima ga servo.

Babuka

  • Gabatarwa (0:00)
  • Kayan Aiki Da Aka Bayyana (1:30)
  • Umarnin Haɗin Waya (3:45)
  • Bayani kan Lamba (5:15)
  • Nuni (18:00)

Albarkatu

  • Takardun ɗakin karatu na Arduino Servo
  • Takardun bayanai na masu ƙera Servo mai ci gaba
115-Arduino code to control continuous 360° servo from serial monitor command
Harshe: C++
/* 
 *  
 *  Demonstration of Controlling Continuous Servo (360 servo)
 *  This code allows you to control a 360-degree servo by a command from the Serial Monitor.
* this 350 servo motor is a just for fun. it can't be used for real application where you need exact positioning. get stepper motor or expensive servo motor. 
📚⬇️ Download and resource page https://robojax.com/RJT762
 *  
 * Modified by Ahmad Shamshiri for Robojax.com
 * on Sunday, July 1, 2018, at 11:09 AM in Ajax, Ontario, Canada
 * Watch a video instruction of this project: https://youtu.be/b_xvu6wWafA
 * Get this code from Robojax.com
 * 
 Original code by BARRAGAN <http://barraganstudio.com>
 This example code is in the public domain.
 Modified 8 Nov 2013
 by Scott Fitzgerald
 http://www.arduino.cc/en/Tutorial/Sweep
*/

#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
int incomingByte = 0;   // for incoming serial data

void setup() {
  Serial.begin(9600);
  myservo.attach(9);  // attaches the servo on pin 9 to the servo object
}



void loop() {

        // send data only when you receive data:
        if (Serial.available() > 0) {
                // read the incoming byte:
                incomingByte = Serial.read();

                // say what you got:
                Serial.print("received: ");
                Serial.print (incomingByte);
                if(incomingByte == 108){
                 Serial.println(" sent 0 Rotating CW "); 
                 myservo.write(0); 
                }else if(incomingByte == 114){
                  Serial.println(" sent 180 Rotating CCW "); 
                  myservo.write(180); 
                }else if(incomingByte == 60){
                  Serial.println(" sent Stopped "); 
                  myservo.write(60); 
                }else{
                  Serial.println(" moving Randomly"); 
                  myservo.write(incomingByte); 
                }
                  
                 
        }

  
}

Albarkatun da kuma shafukan da za a duba

Babu kayan aiki tukuna.

Fayiloli📁

Babu fayiloli da ake da su.