કોડ શોધો

કન્ટિન્યુઅસ 360° સર્વોને આર્ડુઇનો સાથે કેવી રીતે ઉપયોગ કરવો

કન્ટિન્યુઅસ 360° સર્વોને આર્ડુઇનો સાથે કેવી રીતે ઉપયોગ કરવો

આ ટ્યુટોરિયલમાં, આપણે શીખીશું કે Arduino નો ઉપયોગ કરીને સતત 360° સર્વોને કેવી રીતે નિયંત્રિત કરવું. પ્રમાણભૂત સર્વોથી વિપરીત, સતત સર્વો કોઈપણ દિશામાં અનિશ્ચિત સમય સુધી ફરી શકે છે, જે વિવિધ ઉપયોગો માટે પરવાનગી આપે છે. જો કે, તેમની સ્થિતિને નિયંત્રિત કરવા માટે તેમને મોકલવામાં આવતી આદેશોને સમજવી અને યોગ્ય રોકવાના મૂલ્યો શોધવા માટે થોડો પ્રયોગ કરવો જરૂરી છે.

અમે એક પ્રોગ્રામ વિકસાવીશું જે અમને સર્વોને ડાબે, જમણે ફેરવવા અથવા રોકવા માટે સીરિયલ મોનિટર દ્વારા આદેશો મોકલવાની મંજૂરી આપે છે. કોડમાં આપણે દાખલ કરેલા આદેશોના ASCII મૂલ્યોને અર્થઘટન કરવા માટે જરૂરી તર્ક શામેલ હશે. કોડિંગ પ્રક્રિયાની સ્પષ્ટતા માટે, વિડિઓ (વિડિઓમાં 12:30 પર) ચકાસવાનું ભૂલશો નહીં.

હાર્ડવેર સમજાવ્યું

આ પ્રોજેક્ટને અમલમાં મૂકવા માટે, તમારે સતત 360° સર્વો, એક Arduino બોર્ડ અને પૂરતો પ્રવાહ (ઓછામાં ઓછો 500mA) પ્રદાન કરવામાં સક્ષમ પાવર સપ્લાયની જરૂર પડશે. સર્વો Arduino થી નિયંત્રણ સંકેતો મેળવે છે, જે પરિભ્રમણની દિશા અને ગતિ નક્કી કરવા માટે પલ્સ પહોળાઈ મોડ્યુલેશન (PWM) નો ઉપયોગ કરે છે.

સર્વો મોટરમાં પોતે ત્રણ વાયર હોય છે: પાવર, ગ્રાઉન્ડ અને કંટ્રોલ. પાવર વાયર પાવર સપ્લાય સાથે જોડાય છે, ગ્રાઉન્ડ વાયર પાવર સપ્લાય અને Arduino ગ્રાઉન્ડ બંને સાથે જોડાય છે, અને કંટ્રોલ વાયર સિગ્નલ ટ્રાન્સમિશન માટે Arduino પર નિયુક્ત પિન સાથે જોડાય છે.

ડેટાશીટ વિગતો

ઉત્પાદકજેનેરિક
ભાગ નંબરસતત 360° સર્વો
લોજિક/IO વોલ્ટેજ5 V
સપ્લાય વોલ્ટેજ4.8–6 V
આઉટપુટ પ્રવાહ (પ્રતિ ચેનલ)500 mA
પીક પ્રવાહ (પ્રતિ ચેનલ)1 A મહત્તમ
PWM આવર્તન માર્ગદર્શન50 Hz
ઇનપુટ લોજિક થ્રેશોલ્ડઉચ્ચ: >2.5 V, નીચું: <0.8 V
વોલ્ટેજ ડ્રોપ / RDS(on) / સંતૃપ્તિ
થર્મલ મર્યાદાઓ
પેકેજપ્રમાણભૂત સર્વો હાઉસિંગ
નોંધો / પ્રકારોવિવિધ કદમાં ઉપલબ્ધ
  • Arduino અને પાવર સપ્લાય વચ્ચે સામાન્ય ગ્રાઉન્ડ સુનિશ્ચિત કરો.
  • Arduino ને ઓવરલોડ કરવાનું ટાળવા માટે સર્વો માટે બાહ્ય પાવર સપ્લાયનો ઉપયોગ કરો.
  • તમારા સર્વો માટે શ્રેષ્ઠ કામગીરી શોધવા માટે રોકવાના મૂલ્યો સાથે પ્રયોગ કરો.
  • ઓવરહિટિંગ અટકાવવા માટે ઓપરેશન દરમિયાન સર્વો તાપમાનનું નિરીક્ષણ કરો.
  • સર્વોની ગતિ અને દિશાને નિયંત્રિત કરવા માટે PWM સિગ્નલનો ઉપયોગ કરો.

વાયરિંગ સૂચનાઓ

તમારા સતત 360° સર્વોને Arduino સાથે વાયર કરવા માટે, સર્વો પાવર વાયરને 5V પ્રદાન કરતા બાહ્ય પાવર સપ્લાય સાથે જોડીને શરૂ કરો. સર્વોનો ગ્રાઉન્ડ વાયર Arduino પરના ગ્રાઉન્ડ (GND) પિન સાથે જોડાયેલો હોવો જોઈએ, ખાતરી કરો કે પાવર સપ્લાય અને Arduino સામાન્ય ગ્રાઉન્ડ શેર કરે છે. સર્વોનો કંટ્રોલ વાયર Arduino પર પિન 9 પર જશે, જ્યાંથી PWM સિગ્નલ મોકલવામાં આવશે.

ખાતરી કરો કે તમારા જોડાણો સુરક્ષિત છે, કારણ કે છૂટક જોડાણો અસ્થિર સર્વો વર્તન તરફ દોરી શકે છે. જો તમારો સર્વો એવો પ્રકાર છે જે સીધા Arduino થી પાવર કરી શકાય છે, તો તમે પાવર વાયરને Arduino ના 5V પિન સાથે જોડી શકો છો, પરંતુ ખાતરી કરો કે કુલ પ્રવાહ Arduino પૂરો પાડી શકે તે કરતાં વધુ ન હોય.

કોડ ઉદાહરણો અને વોકથ્રુ

નીચેનો અંશ સર્વો સેટ કરવા અને સીરિયલ મોનિટરમાંથી આદેશો વાંચવાનું દર્શાવે છે:

#include 

Servo myservo;  // સર્વોને નિયંત્રિત કરવા માટે સર્વો ઑબ્જેક્ટ બનાવો
int incomingByte = 0;   // આવતા સીરિયલ ડેટા માટે

void setup() {
  Serial.begin(9600);
  myservo.attach(9);  // સર્વો ઑબ્જેક્ટ સાથે પિન 9 પર સર્વો જોડે છે
}

આ કોડ સ્નિપેટમાં, અમે Servo લાઇબ્રેરી શામેલ કરીએ છીએ અને myservo નામનો સર્વો ઑબ્જેક્ટ બનાવીએ છીએ. અમે 9600 બોડ પર સીરિયલ સંચાર પણ સેટ કરીએ છીએ અને સર્વોને પિન 9 સાથે જોડીએ છીએ.

આગળ, અમારી પાસે મુખ્ય લૂપ છે જ્યાં અમે આવતા સીરિયલ ડેટાને વાંચીએ છીએ અને આદેશોના આધારે સર્વોને નિયંત્રિત કરીએ છીએ:

void loop() {
  if (Serial.available() > 0) {
    incomingByte = Serial.read();
    if (incomingByte == 108) { // 'L' આદેશ
      myservo.write(0); // ઘડિયાળની દિશામાં ફેરવો
    } else if (incomingByte == 114) { // 'R' આદેશ
      myservo.write(180); // ઘડિયાળની વિરુદ્ધ દિશામાં ફેરવો
    } else if (incomingByte == 60) { // રોકવાનો આદેશ
      myservo.write(60); // સર્વો રોકો
    }
  }
}

આ કોડ તપાસે છે કે સીરિયલ બફરમાં કોઈ ડેટા ઉપલબ્ધ છે કે નહીં. ઇનપુટના ASCII મૂલ્યના આધારે (દા.ત., ઘડિયાળની દિશામાં ફેરવવા માટે 'L' માટે 108, ઘડિયાળની વિરુદ્ધ દિશામાં ફેરવવા માટે 'R' માટે 114), તે સર્વોને અનુરૂપ આદેશ મોકલે છે.

સંપૂર્ણ કોડ અને વધારાની વિગતો માટે, કૃપા કરીને લેખની નીચે લોડ કરેલા સંપૂર્ણ પ્રોગ્રામનો સંદર્ભ લો.

પ્રદર્શન / શું અપેક્ષા રાખવી

જ્યારે તમે કોડ અપલોડ કરો અને સીરિયલ મોનિટર ખોલો, ત્યારે તમે સર્વોને ડાબે ફેરવવા માટે 'L', જમણે ફેરવવા માટે 'R', અથવા સર્વોને રોકવાનો પ્રયોગ કરવા માટે અન્ય મૂલ્યો દાખલ કરી શકો છો. વિવિધ રોકવાના મૂલ્યો શોધવાની અપેક્ષા રાખો, કારણ કે સર્વોનું વર્તન તેની ગુણવત્તા અને ડિઝાઇનના આધારે બદલાઈ શકે છે (વિડિઓમાં 18:45 પર).

સર્વો આદેશો પ્રત્યે કેવી પ્રતિક્રિયા આપે છે તેની કાળજી રાખો; જો તે અપેક્ષા મુજબ અટકતું નથી, તો શ્રેષ્ઠ રોકવાનો આદેશ શોધવા માટે વિવિધ મૂલ્યો અજમાવો. આ માટે થોડો પ્રયોગ કરવાની જરૂર પડી શકે છે, ખાસ કરીને સર્વોને ઓવરહિટિંગ ટાળવા માટે.

પ્રકરણો

  • પરિચય (0:00)
  • હાર્ડવેર સમજાવ્યું (1:30)
  • વાયરિંગ સૂચનાઓ (3:45)
  • કોડ વોકથ્રુ (5:15)
  • પ્રદર્શન (18:00)

સંસાધનો

  • Arduino સર્વો લાઇબ્રેરી દસ્તાવેજીકરણ
  • સતત સર્વો ઉત્પાદક ડેટાશીટ્સ
115-Arduino code to control continuous 360° servo from serial monitor command
ભાષા: 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); 
                }
                  
                 
        }

  
}

સંસાધનો અને સંદર્ભો

હજી સુધી કોઈ સંસાધનો નથી.

ફાઇલો📁

કોઈ ફાઇલો ઉપલબ્ધ નથી.