دا ټیوټوریل برخه ده له: سرو موټرې
ټولې ویډیوګانې چې د سرو موټرو پورې اړوند دي، دلته لیست شوي. د نورو ویډیوګانو لینکونه د دې مقالې لاندې دي.
د سروو موټور کنټرول د پوټینشیومیټر او 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 په کوډ کې په سمه توګه پیل شوی ترڅو د ډسپلې ستونزو مخنیوی وشي.

د تارونو لارښوونې
د اجزاو د تارونو لپاره، د پوټینشیومیټر په نښلولو سره پیل وکړئ. د پوټینشیومیټر یو بهرنی پن په آرډوینو کې له 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).
دا ټیوټوریل برخه ده له: سرو موټرې
- د آردوینو په مرسته د پش بټنونو سره د سروو کنټرول
- Control a Servo Motor with a Push Button: Move Servo and Return SPB-1
- Control a Servo Motor with a Push Button: Move Servo in One Direction SPB-2
- Controlling a Servo Motor with a Push Button: Move Servo While Button Is Pressed (SPB-3)
- د سروو موټور کنټرول د پوټینشیومیټر سره د آردوینو په کارولو سره
- د سروو موټرو کنټرول د انفراریډ ریموټ په کارولو سره د آردوینو سره
- د آردوینو سروو موټور کنټرول د پوټینشنومیټر په کارولو سره
- د آردوینو لپاره د لاس اشارو سره د سروو موقعیت کنټرول
- Controlling Two or More Servos with Potentiometers Using an Arduino
- How to Control a 360° Servo with Three Push-Button Switches
- د ۳۶۰° دوامدار سروو د Arduino سره څنګه وکاروو
- د آردوینو کوډ او ویډیو د PCA9685 16-چینل 12-بټ سروو کنټرولر V1 لپاره
- د ارډوینو سروو ټوګل سویچ د پش بټن سره جوړ کړئ
/*
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
}
سرچینې او حوالې
-
بهرنیLCD1602 library (from GitHub)github.com
-
بهرنیUsing LCD1602 LCD display for Arduinoyoutube.com
فایلونه📁
هیڅ فایل شتون نلري.