Wa Koodu

Bí Ọ̀nà Láti Lo Servo 360° Tí Ó Máa ń Yí Po Pẹ̀pẹ̀ pẹ̀lú Arduino

Bí Ọ̀nà Láti Lo Servo 360° Tí Ó Máa ń Yí Po Pẹ̀pẹ̀ pẹ̀lú Arduino

Nínú ẹ̀kọ́ yìí, a óò kọ́ bí a ṣe ń ṣàkóso servo 360° tí ń yípo nígbà gbogbo pẹ̀lú Arduino. Yàtọ̀ sí servo tí ó wọ́pọ̀, servo tí ń yípo nígbà gbogbo lè yípo láìdáwọ́dúró ní èyíkéyìí nínú àwọn ìtọ́nà méjèèjì, tí ó ń ṣí ọ̀nà fún àwọn ìlò púpọ̀. Bí ó ti wù kí ó rí, ṣíṣàkóso ipò wọn nílò òye àwọn àṣẹ tí a rán sí wọn àti ìdánwò díẹ̀ láti rí àwọn iye ìdúró tí ó tọ́.

A óò ṣe àgbéjáde ètò kan tí yóò jẹ́ kí a rán àwọn àṣẹ nípasẹ̀ Serial Monitor láti yí servo náà sí òsì, ọ̀tún, tàbí láti dá a dúró. Kóòdù náà yóò ní ìmọ̀ tí ó pọn dandan láti túmọ̀ àwọn iye ASCII ti àwọn àṣẹ tí a tẹ̀ sílẹ̀. Fún ìṣàlàyé nípa ìlànà kíkọ kóòdù, rí i dájú pé o wo fídíò náà (nínú fídíò ní 12:30).

Ohun èlò tí a ṣàlàyé

Láti ṣe ìmúṣẹ iṣẹ́-ọwọ́ yìí, o nílò servo 360° tí ń yípo nígbà gbogbo, bọọdù Arduino kan, àti ìpèsè agbára tí ó lè pèsè ìṣàn tí ó tó (ó kéré tán 500mA). Servo náà gba àwọn àmì ìṣàkóso láti ọ̀dọ̀ Arduino, tí ó ń lo pulse width modulation (PWM) láti sọ ìtọ́nà àti ìyára yípo.

Mọ́tọ̀ servo fúnra rẹ̀ ní àwọn wáyà mẹ́ta: agbára, ilẹ̀, àti ìṣàkóso. Wáyà agbára náà ń sopọ̀ mọ́ ìpèsè agbára, wáyà ilẹ̀ náà ń sopọ̀ mọ́ ìpèsè agbára àti ilẹ̀ Arduino, àti wáyà ìṣàkóso náà ń sopọ̀ mọ́ pínì kan tí a yàn lórí Arduino fún gbígbé àmì ìṣàkóso.

Àwọn àlàyé Datasheet

OlùṣelọpọGeneric
Nọ́mbà apáServo 360° tí ń yípo nígbà gbogbo
Fóltì Logic/IO5 V
Fóltì ìpèsè4.8–6 V
Ìṣàn jáde (fún ikanni)500 mA
Ìṣàn tó ga jùlọ (fún ikanni)1 A max
Ìtọ́sọ́nà ìgbohùnsáfẹ́fẹ́ PWM50 Hz
Àwọn ìpele ìṣàkóso tí a fi síiGíga: >2.5 V, Kekere: <0.8 V
Ìrẹwẹ̀sì fóltì / RDS(on) / ìkún
Àwọn ààlà ooru
ÀpótíÌgbàlódé servo housing
Àwọn àkíyèsí / àwọn oríṣiríṣiWà ní ọ̀pọ̀lọpọ̀ àwọn ìwọ̀n
  • Rí i dájú pé ilẹ̀ kan wà láàrin Arduino àti ìpèsè agbára.
  • Lo ìpèsè agbára òde fún servo láti yẹra fún dídi Arduino lórí.
  • Dánwò pẹ̀lú àwọn iye ìdúró láti rí iṣẹ́ tí ó dára jùlọ fún servo rẹ.
  • Ṣàkíyèsí ìwọ̀n-otútù servo nígbà tí ó ń ṣiṣẹ́ láti yẹra fún gbígbóná janjan.
  • Lo àmì PWM kan láti ṣàkóso ìyára àti ìtọ́nà yípo servo.

Àwọn ìtọ́nà ìsopọ̀ wáyà

Láti so servo 360° tí ń yípo nígbà gbogbo rẹ mọ́ Arduino, bẹ̀rẹ̀ nípa sísopọ̀ wáyà agbára servo náà mọ́ ìpèsè agbára òde kan tí ó pèsè 5V. Wáyà ilẹ̀ servo náà yẹ kí ó sopọ̀ mọ́ pínì ilẹ̀ (GND) lórí Arduino, ní ríri dájú pé ìpèsè agbára àti Arduino pín ilẹ̀ kan. Wáyà ìṣàkóso servo náà yóò lọ sí pínì 9 lórí Arduino, níbi tí àmì PWM yóò ti wá.

Ṣàbẹ̀wò lẹ́ẹ̀mejì pé àwọn ìsopọ̀ rẹ ṣe dáradára, nítorí àwọn ìsopọ̀ tí kò ṣe dáradára lè yọrí sí ìwà servo tí kò dúró ṣinṣin. Bí servo rẹ bá jẹ́ irú tí a lè fi agbára pèsè fún taara láti ọ̀dọ̀ Arduino, o lè so wáyà agbára náà mọ́ pínì 5V Arduino, ṣùgbọ́n rí i dájú pé ìṣàn lápapọ̀ kò ju èyí tí Arduino lè pèsè lọ.

Àwọn àpẹẹrẹ Kóòdù & Ìṣàlàyé

Ìyọ̀kù tí ó tẹ̀le yìí ṣàfihàn bí a ṣe ń ṣètò servo náà àti kíkà àwọn àṣẹ láti Serial Monitor:

#include 

Servo myservo;  // ṣẹ̀dá ohun èlò servo láti ṣàkóso servo kan
int incomingByte = 0;   // fún data serial tí ń bọ̀

void setup() {
  Serial.begin(9600);
  myservo.attach(9);  // so servo náà mọ́ pínì 9 mọ́ ohun èlò servo
}

Nínú ìyọ̀kù kóòdù yìí, a fi ìkàwé Servo sílẹ̀ àti ṣẹ̀dá ohun èlò servo kan tí a ń pè ní myservo. A tún ṣètò ìbánisọ̀rọ̀ serial ní 9600 baud àti so servo náà mọ́ pínì 9.

Ní ìgbà tí ó tẹ̀le, a ní ìyipo àkọkọ níbi tí a ti ń kà data serial tí ń bọ̀ àti ṣàkóso servo náà nípa àwọn àṣẹ:

void loop() {
  if (Serial.available() > 0) {
    incomingByte = Serial.read();
    if (incomingByte == 108) { // àṣẹ 'L'
      myservo.write(0); // yípo ní ìtọ́nà aago
    } else if (incomingByte == 114) { // àṣẹ 'R'
      myservo.write(180); // yípo ní ìtọ́nà òdìkejì aago
    } else if (incomingByte == 60) { // àṣẹ ìdúró
      myservo.write(60); // dá servo dúró
    }
  }
}

Kóòdù yìí ṣàyẹ̀wò bí data èyíkéyìí bá wà ní ibi ìpamọ́ serial. Nípa iye ASCII ti input náà (fún àpẹẹrẹ, 108 fún 'L' láti yípo ní ìtọ́nà aago, 114 fún 'R' láti yípo ní ìtọ́nà òdìkejì aago), ó rán àṣẹ tí ó bá mu mọ́ servo náà.

Fún kóòdù pípé àti àwọn àlàyé àfikún, jọ̀wọ́ tọ́ka sí ètò kíkún tí a gbé sílẹ̀ nísàlẹ̀ àpilẹ̀kọ yìí.

Ìṣàfihàn / Ohun tí o lè retí

Nígbà tí o bá gbé kóòdù náà sílẹ̀ àti ṣí Serial Monitor, o lè tẹ 'L' láti yí servo náà sí òsì, 'R' láti yí i sí ọ̀tún, tàbí àwọn iye mìíràn láti dánwò pẹ̀lú dídá servo náà dúró. Retí láti rí ọ̀pọ̀lọpọ̀ àwọn iye ìdúró, nítorí ìwà servo náà lè yàtọ̀ nípa didára rẹ̀ àti ìrísí rẹ̀ (nínú fídíò ní 18:45).

Ṣọ́ra nípa bí servo náà ṣe ń fèsì sí àwọn àṣẹ; bí kò bá dá dúró bí a ti retí, dánwò pẹ̀lú àwọn iye mìíràn títí tí o fi rí àṣẹ ìdúró tí ó dára jùlọ. Èyí lè nílò ìdánwò díẹ̀, pàápàá láti yẹra fún gbígbóná janjan servo.

Àwọn orí-ìpín

  • Ìfáàrà (0:00)
  • Ohun èlò tí a ṣàlàyé (1:30)
  • Àwọn ìtọ́nà ìsopọ̀ wáyà (3:45)
  • Ìṣàlàyé Kóòdù (5:15)
  • Ìṣàfihàn (18:00)

Àwọn ohun èlò

  • Ìwé àṣẹ Ìkàwé Servo Arduino
  • Àwọn datasheet Olùṣelọpọ Servo tí ń yípo nígbà gbogbo
115-Arduino code to control continuous 360° servo from serial monitor command
Ede: 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); 
                }
                  
                 
        }

  
}

Orisun & itọkasi

Ko si awọn orisun sibẹsibẹ.

Fáìlìs📁

Ko si awọn faili ti o wa.