کوډ ولټوئ

د سروو موټور کنټرول د پوټینشیومیټر او LCD1602 سره د Arduino په کارولو سره

د سروو موټور کنټرول د پوټینشیومیټر او LCD1602 سره د Arduino په کارولو سره

په دې ټیوټوریل کې به موږ زده کړو چې څنګه د پوټینشیومیټر په کارولو سره د سروو موټور کنټرول کړو او د پوټینشیومیټر ارزښت او همدارنګه د سروو زاویه په LCD1602 سکرین باندې ښکاره کړو. دا پروژه یوه ښه لار ده چې ډیری اجزا سره یوځای کړو او پوه شو چې څنګه دوی کولی شي په ګډه کار وکړي ترڅو یو متقابل سیسټم جوړ کړي. د دې ټیوټوریل په پای کې به تاسو یو فعال ترتیب ولرئ چې تاسو ته اجازه درکوي د کنټرول په واسطه د سروو زاویه تنظیم کړئ پداسې حال کې چې ارزښتونه په LCD باندې په ورته وخت کې ښکاره کیږي.

مخکې له دې چې موږ د تارونو او کوډ په اړه بحث وکړو، دا ګټوره ده چې هغه اجزا وپیژنو چې موږ به یې کاروو. پوټینشیومیټر د متغیر مقاومت په توګه عمل کوي چې کولی شي د خپل موقعیت پر بنسټ د ولتاژ محصول تنظیم کړي، کوم چې موږ به د سروو زاویې د ټاکلو لپاره وکاروو. LCD1602 به د پوټینشیومیټر اوسنی ارزښت او د سروو اړونده زاویه ښکاره کړي. تاسو کولی شئ د ټولې پروسې د بصري لارښود لپاره ویډیو ته مراجعه وکړئ (په ویډیو کې په 00:00 کې).

هارډویر تشریح شوی

اصلي اجزا چې موږ به یې په دې پروژه کې وکاروو دا دي:

  • آرډوینو بورډ: دا به د ټول سیسټم لپاره د کنټرولر په توګه کار وکړي، د پوټینشیومیټر څخه معلومات پروسس کوي او د دې معلوماتو پر بنسټ د سروو موقعیت کنټرولوي.
  • پوټینشیومیټر: یو 10k اوم پوټینشیومیټر به د آرډوینو ته د انلاګ معلوماتو چمتو کولو لپاره وکارول شي. دا درې ترمینلونه لري: یو له 5V سره وصل دی، یو له ځمکې سره، او منځنی یې په آرډوینو کې له انلاګ پن (A0) سره وصل دی.
  • سروو موټور: دا سروو به د پوټینشیومیټر د موقعیت پر بنسټ د زاویې په لیږلو سره کنټرول شي. د سیګنال تار په آرډوینو کې له ډیجیټل پن (پن 9) سره وصل دی.
  • LCD1602 ډسپلې: دا ډسپلې به د پوټینشیومیټر ارزښت او د سروو زاویه ښکاره کړي. دا د کنټرول لپاره په آرډوینو کې له څو ډیجیټل پنونو سره وصل دی.

پوټینشیومیټر د مقاومت او په دې توګه د خپل منځني ترمینل په ولتاژ کې د بدلون په واسطه کار کوي، کوم چې آرډوینو د انلاګ معلوماتو په توګه لوستلی شي. سروو موټور د مطلوب زاویې سره سم د ځانګړي پلټس پراخوالی ماډولیشن (PWM) سیګنال په لیږلو سره کنټرول کیږي. LCD1602 یوه کتابتون کاروي چې موږ ته اجازه راکوي په اسانۍ سره د هغې ډسپلې کنټرول کړو او د پوټینشیومیټر او سروو په اړه معلومات وړاندې کړو.

ډیټاشیټ تفصیلات

جوړونکیمختلف
د پرزې شمېرهLM016L
منطق/IO ولتاژ5 V
د برېښنا ولتاژ4.5 – 5.5 V
د محصول جریان (په هر چینل)تر 2 mA پورې
د لوړ جریان (په هر چینل)20 mA
د PWM فریکونسي لارښود50 Hz
د منطق داخلولو حدونه0.3 x Vcc (ټیټ)، 0.7 x Vcc (لوړ)
د ولتاژ کمښت / RDS(on) / سنتریشن0.2 V اعظمي
حرارتي حدونه85 °C
بسته بندي16-پن DIP
یادښتونه / ډولونه16x2 کرکټر ډسپلې

  • د پوټینشیومیټر منځنی پن له انلاګ پن A0 سره وصل کړئ.
  • ډاډ ترلاسه کړئ چې سروو د 5V برېښنا سره ځواکمن شوی او له ډیجیټل پن 9 سره وصل دی.
  • د LCD لپاره مناسب کتابتون وکاروئ او ډاډ ترلاسه کړئ چې دا ستاسو په آرډوینو IDE کې شامل دی.
  • د تارونو په اړه محتاط اوسئ ترڅو لنډ سرکټونه مخنیوی وکړئ، په ځانګړي توګه د سروو اړیکو سره.
  • وګورئ چې LCD په کوډ کې په سمه توګه پیل شوی ترڅو د ډسپلې ستونزو مخنیوی وشي.
Arduino wiring for LCD1602 12wires servo and pot
Arduino wiring for LCD1602 12wires servo and pot

د تارونو لارښوونې

د اجزاو د تارونو لپاره، د پوټینشیومیټر په نښلولو سره پیل وکړئ. د پوټینشیومیټر یو بهرنی پن په آرډوینو کې له 5V پن سره وصل کړئ، او بل بهرنی پن له ځمکې سره. منځنی پن له انلاګ پن A0 سره ځي.

بیا، د سروو موټور لپاره، نسواري یا تور تار له ځمکې سره وصل کړئ، سور تار له 5V پن سره، او ژیړ یا نارنجي تار په آرډوینو کې له ډیجیټل پن 9 سره وصل کړئ. د LCD1602 لپاره، د VDD پن له 5V سره وصل کړئ، RW له ځمکې سره، او V0 د کنټراسټ تنظیم لپاره د پوټینشیومیټر له منځني پن سره وصل کړئ. RS له پن 12 سره، EN له پن 11 سره، D4 له پن 5 سره، D5 له پن 4 سره، D6 له پن 3 سره، او D7 له پن 2 سره وصل کړئ.

دا هم سپارښتنه کیږي چې که تاسو LED کاروئ، د هغې سره په لړۍ کې یو 220-اوم مقاومت شامل کړئ، او دا له 5V برېښنا سره وصل کړئ. سربیره پردې، یو 470 µF کاپاسیټر د سروو د برېښنا او ځمکې ترمنځ وصل کیدی شي ترڅو د عملیاتو په جریان کې هر ډول شور فلټر کړي.

د کوډ مثالونه او تشریح

کوډ د اړینو کتابتونونو په شاملولو او د LCD او سروو لپاره د پنونو په پیل کولو سره پیل کیږي. لاندې برخه د LCD او سروو تنظیم ښیې:

void setup() {
  lcd.begin(16, 2);
  myservo.attach(9);  // سروو په پن 9 باندې د سروو اعتراض سره نښلوي
  lcd.clear();
  lcd.setCursor(0, 0);
  lcd.print("Robojax Servo Knob");
  delay(2000);
}

دا برخه LCD د 16 کالمونو او 2 قطارونو لپاره پیل کوي، سروو له پن 9 سره نښلوي، او په LCD باندې د ښه راغلاست پیغام ښکاره کوي. د lcd.clear() فنکشن ډاډ ورکوي چې هر پخوانی پیغام لرې شوی دی.

بیا، لوپ په دوامداره توګه د پوټینشیومیټر ارزښت لوستلی شي او د سروو موقعیت او LCD ډسپلې تازه کوي:

void loop() {
  val = analogRead(potpin);            // د پوټینشنومیټر ارزښت لولي
  angle = map(val, 0, 1023, 0, 180);     // دا اندازه کوي چې د سروو سره یې وکاروي
  myservo.write(angle);                  // د سروو موقعیت د اندازې شوي ارزښت سره سم ټاکي
  lcd.clear();
  lcd.setCursor(0, 0);
  lcd.print("د پوټ. ارزښت:");
  lcd.setCursor(11, 0);
  lcd.print(val);
  lcd.setCursor(0, 1);
  lcd.print("زاویه     :");
  lcd.setCursor(11, 1);
  lcd.print(angle);
  delay(500);
}

دا لوپ د پوټینشنومیټر ارزښت لولي، دا د سروو لپاره په اړونده زاویه بدلوي، او LCD ښودنه د پوټینشنومیټر ارزښت او د سروو زاویې دواړو سره تازه کوي. د لوپ په پای کې delay(500) د ښودنې د ډېر چټک تازه کېدو مخه نیسي.

ښودنه / څه تمه وکړو

کله چې تاسو سیسټم ته بریښنا ورکوئ، LCD به د 2 ثانیو لپاره "Robojax Servo Knob" ښکاره کړي، ورپسې د پوټینشنومیټر ارزښت او د سروو زاویه. لکه څنګه چې تاسو پوټینشنومیټر ګرځوئ، د سروو زاویه به په هماغه ډول بدله شي، او د پوټینشنومیټر نوی ارزښت به په LCD کې ښکاره شي. که تاسو کوم غیر متوقع چلند تجربه کړئ، لکه سروو په غلط لوري حرکت کوي، د پوټینشنومیټر او سروو اړیکو تارونه وګورئ (په ویډیو کې په 10:00).

انځورونه

SG90_servo_motor-1
SG90_servo_motor-1
SG90_servo_motor-0
SG90_servo_motor-0
Arduino wiring for LCD1602 12wires servo and pot
Arduino wiring for LCD1602 12wires servo and pot
97-This is the Arduino code for controlling a servo with a potentiometer and an LCD1602.
ژبه: C++
/*
 Controlling a servo position using a potentiometer (variable resistor)
 by Michal Rinott <http://people.interaction-ivrea.it/m.rinott>

 modified on 8 November 2013
 by Scott Fitzgerald
 http://www.arduino.cc/en/Tutorial/Knob

*/


// May 20, 2018 20:08
// Written by Ahmad S. for Robojax.com at Ajax, Ontario, Canada
// Watch the video for this code at https://youtu.be/DN1LPMSZtNA
// This code is taken from http://robojax.com/learn/arduino


#include <LiquidCrystal.h>

// initialize the library by associating any needed LCD interface pin
// with the arduino pin number it is connected to
const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);


// start of servo settings *******
#include <Servo.h>
Servo myservo;  // create servo object to control a servo
int potpin = A0;  // analog pin used to connect the potentiometer
int val;    // variable to read the value from the analog pin
int angle;    // the angle servo is sent to
// END of servo settings *******

void setup() {
  // Robojax Servo knob with LCD1602 Test 
  // set up the LCD's number of columns and rows:
  lcd.begin(16, 2);
   myservo.attach(9);  // attaches the servo on pin 9 to the servo object
  // Robojax Servo knob with LCD1602 Test  
    lcd.clear();
    lcd.setCursor(0, 0);
    lcd.print("Robojax Servo Knob");
    delay(2000);
}

void loop() {
  // Robojax Servo knob with LCD1602 Test 
  val = analogRead(potpin);            // reads the value of the potentiometer (value between 0 and 1023)
  angle = map(val, 0, 1023, 0, 180);     // scale it to use it with the servo (value between 0 and 180)
  myservo.write(angle);                  // sets the servo position according to the scaled value
  
    
    lcd.clear();
    lcd.setCursor(0, 0);
    lcd.print("Pot. Value:");
  // set the cursor to column 0, line 1
    lcd.setCursor(11, 0);
    lcd.print(val);
  // (note: line 1 is the second row, since counting begins with 0):
    lcd.setCursor(0, 1);
  // print the number of seconds since reset:
    lcd.print("Angle     :");
    lcd.setCursor(11, 1);
    lcd.print(angle);


  delay(500);
  // Robojax Servo knob with LCD1602 Test  
}

سرچینې او حوالې

فایلونه📁

هیڅ فایل شتون نلري.