- امدادی موٹر
- ایل پی سی 2148 پی ڈبلیو ایم اور اے ڈی سی کا استعمال کرتے ہوئے سروو موٹر کو کنٹرول کرنا
- ARW7-LPC2148 میں PWM اور ADC پنوں
- ضروری اجزاء
- سرکٹ ڈایاگرام اور رابطے
- امدادی موٹر کنٹرول کے لئے پروگرامنگ ARM7-LPC2148
ہمارے پچھلے سبق میں ، ہم نے اے آر ایم 7-ایل پی سی 2148 کے ساتھ اسٹیپر موٹر انٹرفیس کی ہے۔ اس ٹیوٹوریل میں ، ہم ARM7-LPC2148 کے ساتھ سروو موٹر کو کنٹرول کریں گے ۔ امدادی موٹر کو اسٹیپر موٹر سے زیادہ بجلی کی کھپت کا فائدہ ہے۔ مطلوبہ مقام تک پہنچنے پر ایک سرو موٹر اپنی بجلی کی کھپت روکتا ہے لیکن شافٹ کو مطلوبہ پوزیشن میں لاک کرنے کے ل power بجلی کا استعمال جاری رکھنا پڑتا ہے۔ سروو موٹرز زیادہ تر روبوٹکس پروجیکٹس میں ان کی درستگی اور آسانی سے ہینڈلنگ کی وجہ سے استعمال ہوتی ہیں۔
اس ٹیوٹوریل میں ہم سروو موٹر اور اے آر ایم 7-ایل پی سی 2148 کے ساتھ سرو کو انٹرفیس کرنے کا طریقہ سیکھیں گے ۔ امدادی موٹر کے شافٹ کی پوزیشن کو مختلف کرنے کے ل A ، ایک پوٹینومیٹر انٹرفیس کیا گیا ہے ، اور زاویہ کی قیمت کو ظاہر کرنے کے لئے LCD بھی ہے۔
امدادی موٹر
ایک سروو موٹر ڈی سی موٹر ، پوزیشن کنٹرول سسٹم اور گیئرز کا امتزاج ہے۔ امدادی موٹر کی گردش اس پر پی ڈبلیو ایم سگنل لگا کر کنٹرول کی جاتی ہے ، پی ڈبلیو ایم سگنل کی چوڑائی موٹر کی گردش زاویہ اور سمت کا فیصلہ کرتی ہے۔ یہاں ہم اس سبق میں ایس جی 90 سروو موٹر استعمال کریں گے ، یہ مقبول اور سستا ترین میں سے ایک ہے۔ ایس جی 90 ایک 180 ڈگری امداد ہے۔ لہذا اس امدادی مدد سے ہم محور کو 0-180 ڈگری سے پوزیشن میں لے سکتے ہیں۔
- آپریٹنگ وولٹیج: + 5V
- گئر کی قسم: پلاسٹک
- گردش زاویہ: 0 سے 180 ڈگری
- وزن: 9 گرام
- ٹورک: 2.5 کلوگرام / سینٹی میٹر
اس سے پہلے کہ ہم سروو موٹر کے لئے پروگرامنگ شروع کرسکیں ہمیں معلوم ہونا چاہئے کہ سروو موٹر کو کنٹرول کرنے کے لئے کس قسم کا اشارہ بھیجا جانا ہے۔ ہمیں ایم سی یو کو سروو موٹر کے سگنل تار پر پی ڈبلیو ایم سگنل بھیجنے کے لئے پروگرام کرنا چاہئے۔ سروو موٹر کے اندر ایک کنٹرول سرکٹری موجود ہے جو پی ڈبلیو ایم سگنل کے ڈیوٹی سائیکل کو پڑھتی ہے اور سروکو موٹرس شافٹ کو متعلقہ جگہ پر رکھتا ہے جیسا کہ ذیل کی تصویر میں دکھایا گیا ہے۔
ہر 20 ملی سیکنڈ کیلئے سروو موٹر نبض کی جانچ پڑتال کرتی ہے۔ لہذا ، موٹر کے شافٹ کو گھمانے کیلئے سگنل کی نبض کی چوڑائی کو ایڈجسٹ کریں۔
- امدادی کو 0 ڈگری تک گھمانے کے لئے 1 ایم ایس (1 ملی سیکنڈ) پلس کی چوڑائی
- 1.5 ڈگری گردش کے لئے پلس کی چوڑائی 90 ڈگری (غیر جانبدار پوزیشن)
- 180 ڈگری تک امدادی گردش کے لئے 2 ایم ایس پلس کی چوڑائی ۔
امدادی کو ARM7-LPC2148 سے مربوط کرنے سے پہلے ، آپ اس سروو موٹر ٹیسٹر سرکٹ کی مدد سے اپنے سروو کی جانچ کرسکتے ہیں۔ یہ بھی چیک کریں کہ دوسرے مائکروکنٹرولروں کے ساتھ ایک सर्वो موٹر کو کیسے انٹرفیس کیا جاسکتا ہے:
- اردوینو کا استعمال کرتے ہوئے सर्वो موٹر کنٹرول
- امدادی موٹر 8051 مائکروکانٹرولر کے ساتھ انٹرفیسنگ
- امدادی موٹر کنٹرول میٹلائب کا استعمال کرتے ہوئے
- راسبیری پائی کے ساتھ امدادی موٹر کنٹرول
- ایم ایس پی 430 جی 2 کے ساتھ انٹرفیسنگ سروو موٹر
- STM32F103C8 کے ساتھ انٹرفیسنگ سروو موٹر
ایل پی سی 2148 پی ڈبلیو ایم اور اے ڈی سی کا استعمال کرتے ہوئے سروو موٹر کو کنٹرول کرنا
ایک سرو موٹر کو پی پی ڈبلیو ایم کا استعمال کرکے ایل پی سی 2148 کے ذریعہ کنٹرول کیا جاسکتا ہے۔ پی آر ڈبلیو ایم سگنل کو سروس کے پی ڈبلیو ایم پن کو 20 ایم ایم کی مدت اور 50 ہ ہرٹاز کی فریکوئنسی کے ذریعہ فراہم کرکے ہم 180 ڈگری (-90 تا +90) کے ارد گرد سرو موٹر کی شافٹ پوزیشن کرسکتے ہیں۔
ایک پوٹینومیٹر پی ڈبلیو ایم سگنل کے ڈیوٹی سائیکل کو مختلف کرنے اور سروو موٹر کے شافٹ کو گھمانے کے لئے استعمال کیا جاتا ہے ، یہ طریقہ ایل پی سی 2148 میں اے ڈی سی ماڈیول کا استعمال کرکے لاگو کیا جاتا ہے۔ لہذا ہمیں اس ٹیوٹوریل میں لاگو ہونے کے لئے پی ڈبلیو ایم اور اے ڈی سی دونوں تصورات کی ضرورت ہے۔ تو براہ کرم ARM7-LPC2148 میں PWM اور ADC سیکھنے کے لئے ہمارے پچھلے سبق حاصل کریں۔
- اے آر ایم 7-ایل پی سی 2148 میں پی ڈبلیو ایم کا استعمال کیسے کریں
- اے آر ایم- LPLC2148 میں ADC کا استعمال کیسے کریں
ARW7-LPC2148 میں PWM اور ADC پنوں
LPC2148 میں نیچے دی گئی تصویر PWM اور ADC پنوں کو دکھاتی ہے۔ پیلے رنگ کے خانے (6) پی ڈبلیو ایم پنوں اور بلیک باکس میں (14) اے ڈی سی پنوں کی نشاندہی کرتے ہیں۔
ضروری اجزاء
ہارڈ ویئر
- ARM7-LPC2148
- LCD (16x2) ڈسپلے ماڈیول
- امدادی موٹر (SG-90)
- 3.3V وولٹیج ریگولیٹر
- 10 ک پوٹینومیٹر (2 نمبر)
- بریڈ بورڈ
- مربوط تاروں
سافٹ ویئر
- کییل یوویژن 5
- فلیش جادو کا آلہ
سرکٹ ڈایاگرام اور رابطے
مندرجہ ذیل جدول میں سروو موٹر اور اے آر ایم 7-ایل پی سی 2148 کے مابین رابطے کو ظاہر کیا گیا ہے۔
سرو پنس |
ARM7-LPC2148 |
سرخ (+ 5V) |
+ 5 وی |
براؤن (GND) |
GND |
اورنج (پی ڈبلیو ایم) |
P0.1 |
پن P0.1 LPC2148 کی PWM پیداوار ہے۔
نیچے دی گئی جدول میں LCD اور ARM7-LPC2148 کے درمیان سرکٹ رابطے دکھائے گئے ہیں ۔
ARM7-LPC2148 |
LCD (16x2) |
P0.4 |
آر ایس (رجسٹر سلیکٹ) |
P0.6 |
ای (قابل بنائیں) |
P0.12 |
ڈی 4 (ڈیٹا پن 4) |
P0.13 |
ڈی 5 (ڈیٹا پن 5) |
P0.14 |
ڈی 6 (ڈیٹا پن 6) |
P0.15 |
ڈی 7 (ڈیٹا پن 7) |
GND |
وی ایس ایس ، آر / ڈبلیو ، کے |
+ 5 وی |
وی ڈی ڈی ، اے |
نیچے دی گئی ٹیبل میں ARM7 LPC2148 اور 3.3V وولٹیج ریگولیٹر کے ساتھ پوٹینومیٹر کے درمیان رابطے دکھائے گئے ہیں ۔
3.3V وولٹیج ریگولیٹر آئی سی |
پن تقریب |
ARM-7 LPC2148 پن |
1. بائیں پن |
- GND سے Ve |
GND پن |
2. سینٹر پن |
ریگولیٹ + 3.3V آؤٹ پٹ |
LPC2148 کے P0.28 کے پوٹینومیٹر ان پٹ اور پوٹینومیٹر کی پیداوار میں |
3. رائٹ پن |
+ وی سے 5 وی ان پٹ |
+ 5 وی |
نوٹ کرنے کے لئے پوائنٹس
1. LPC2148 کے ADC پن (P0.28) کو ینالاگ ان پٹ ویلیو فراہم کرنے کے لئے یہاں 3.3V کا وولٹیج ریگولیٹر استعمال کیا جاتا ہے۔ جب ہم 5V طاقت استعمال کررہے ہیں تو ہمیں 3.3V کے وولٹیج ریگولیٹر کے ساتھ وولٹیج کو کنٹرول کرنے کی ضرورت ہے۔
2. ایل پی سی 2148 پن P0.28 کو ینالاگ ان پٹ (ADC) فراہم کرنے کے لئے (0V سے 3.3V) کے درمیان وولٹیج کو مختلف کرنے کے لئے ایک پوٹینومیٹر استعمال کیا جاتا ہے
3. ایل پی سی 2148 کا پن P0.1 موٹر کی پوزیشن کو کنٹرول کرنے کے لئے امدادی موٹر کو پی ڈبلیو ایم آؤٹ پٹ فراہم کرتا ہے۔
4. ینالاگ ان پٹ (ADC) کے مطابق ایل پی سی 2148 کے P0.1 پر پی ڈبلیو ایم آؤٹ پٹ پن کے ذریعہ (0 سے 180 ڈگری) سے سروو موٹر میں تبدیلی کی پوزیشن کی قدر ہوتی ہے۔
امدادی موٹر کنٹرول کے لئے پروگرامنگ ARM7-LPC2148
ARM7-LPC2148 پروگرام کرنے کے لئے ہمیں کیل یوویژن اور فلیش جادو آلے کی ضرورت ہے۔ ہم مائکرو USB پورٹ کے ذریعہ اے آر ایم 7 اسٹک پروگرام کرنے کے لئے USB کیبل استعمال کررہے ہیں۔ ہم کیل کا استعمال کرتے ہوئے کوڈ لکھتے ہیں اور ایک ہیکس فائل تخلیق کرتے ہیں اور پھر HEX فائل فلیش جادو کا استعمال کرتے ہوئے ARM7 اسٹیک پر چمک جاتی ہے۔ کیل یوویژن اور فلیش جادو کو انسٹال کرنے کے بارے میں اور ان کا استعمال کرنے کے طریقہ کے بارے میں مزید جاننے کے ل AR اے آر ایم 7 ایل پی سی 2148 مائکروکنٹرولر کے ساتھ شروعات کرنا اور کییل یوویژن کا استعمال کرکے اسے پروگرام کریں۔
امدادی موٹر کو کنٹرول کرنے کے لئے پی ڈبلیو ایم اور اے ڈی سی کے لئے ایل پی سی 2148 کی تشکیل میں شامل اقدامات
مرحلہ 1: - LPC2148 کوڈ کرنے کے لئے ضروری ہیڈر فائلوں کو شامل کریں
# شامل کریں
مرحلہ 2: - اگلی چیز PLL کو گھڑی بنانے کے ل config ترتیب دینا ہے کیونکہ یہ پروگرامروں کی ضرورت کے مطابق LPC2148 کی سسٹم گھڑی اور پیریفیریل گھڑی طے کرتا ہے۔ ایل پی سی 2148 کے لئے گھڑی کی زیادہ سے زیادہ تعدد 60 میگاہرٹز ہے۔ مندرجہ ذیل لائنیں PLL گھڑی کی تیاری کو ترتیب دینے کے ل used استعمال ہوتی ہیں۔
باطل initilizePLL (باطل) // گھڑی کی نسل کے لئے PLL استعمال کرنے کے کام { PLL0CON = 0x01؛ PLL0CFG = 0x24؛ PLL0FEED = 0xAA؛ PLL0FEED = 0x55؛ جبکہ (! (PLL0STAT & 0x00000400))؛ PLL0CON = 0x03؛ PLL0FEED = 0xAA؛ PLL0FEED = 0x55؛ VPBDIV = 0x01؛ }
مرحلہ 3: - اگلے کام کرنے کا مطلب یہ ہے کہ PINSEL رجسٹر کا استعمال کرکے LPC2148 کے PWM پنوں اور PWM فنکشن کا انتخاب کریں۔ ہم PINSEL0 کو استعمال کرتے ہیں کیونکہ ہم LPC2148 کے PWM آؤٹ پٹ کیلئے P0.1 استعمال کرتے ہیں۔
PINSEL0 - = 0x00000008؛ // LPC2148 کے P0.1 کو PWM3 کے طور پر ترتیب دینا
مرحلہ 4: - اگلا ، ہمیں پی ڈبلیو ایم ٹی سی آر (ٹائمر کنٹرول رجسٹر) کا استعمال کرتے ہوئے ٹائمرز کو دوبارہ مرتب کرنے کی ضرورت ہے۔
PWMTCR = 0x02؛ // PWM کے لئے کاؤنٹر کو دوبارہ ترتیب دیں اور غیر فعال کریں
اور پھر اگلا سیٹ کریں جس کی پیش کش کی قیمت PWM کی قرارداد طے کرتی ہے۔
پی ڈبلیو ایم پی آر = 0 ایکس 1 ڈی؛ // پریسکل رجسٹر قدر
مرحلہ 5: - اگلا ، پی ڈبلیو ایم ایم سی آر (پی ڈبلیو ایم میچ کنٹرول رجسٹر) مرتب کریں کیونکہ اس نے ری سیٹ کی طرح آپریشن طے کیا ہے ، پی ڈبلیو ایم ایم آر0 اور پی ڈبلیو ایم ایم آر 3 کے لئے رکاوٹ ہے۔
PWMMCR = 0x00000203؛ // ایم آر0 میچ پر ری سیٹ اور رکاوٹ ، ایم آر 3 میچ پر رکاوٹ
مرحلہ 6: - PWM چینل کی زیادہ سے زیادہ مدت PWMMR0 کا استعمال کرتے ہوئے طے کی گئی ہے اور PWM ڈیوٹی سائیکل کا ٹن ابتدائی طور پر 0.65msec پر طے کیا گیا ہے
PWMMR0 = 20000؛ // PWM لہر کا وقت ، 20msec PWMMR3 = 650؛ // PWM لہر کا ٹن 0.65 msec
مرحلہ 7: - اگلا ، ہمیں پی ڈبلیو ایم ایل ای آر کا استعمال کرتے ہوئے اسی میچ رجسٹرز پر لیچ ایبل کو سیٹ کرنے کی ضرورت ہے
PWMLER = 0x09؛ // PWM3 اور PWM0 کے لئے میچ قابل بنائیں
(ہم PWMMR0 & PWMMR3 استعمال کرتے ہیں) لہذا پی ڈبلیو ایم ایل ای آر میں 1 ترتیب دے کر متعلقہ سا کو قابل بنائیں۔
مرحلہ 8: - PWM آؤٹ پٹ کو پن پر قابل بنانے کے ل we ہمیں PWM ٹائمر کاؤنٹرز اور PWM طریقوں کو فعال کرنے کے لئے PWMTCR کو استعمال کرنے کی ضرورت ہے۔
PWMPCR = 0x0800؛ // PWM3 اور PWM 0 ، واحد کنارے سے کنٹرول شدہ PWM PWMTCR = 0x09 کو فعال کریں۔ // PWM اور کاؤنٹر کو فعال کریں
مرحلہ 9: - اب ہمیں اے ڈی سی پن P0.28 سے پی ڈبلیو ایم کے ڈیوٹی سائیکل قائم کرنے کے لئے پوٹینومیٹر ویلیو حاصل کرنے کی ضرورت ہے۔ لہذا ، ہم پوٹینومیٹر اینالاگ ان پٹ (0 سے 3.3V) کو اے ڈی سی کی اقدار (0 سے 1023) میں تبدیل کرنے کیلئے ایل پی سی 2148 میں اے ڈی سی ماڈیول کا استعمال کرتے ہیں۔
مرحلہ 10: - کے LPC2148 میں اے ڈی سی پن P0.28 منتخب، ہم استعمال کرتے ہیں
PINSEL1 = 0x01000000؛ // P0.28 کو بطور ADC INPUT AD0CR = (((14) << 8) - (1 << 21)) مقرر کرنا؛ // A / D تبادلوں کے لئے گھڑی اور PDN مرتب کرنا
مندرجہ ذیل لائنیں ینالاگ ان پٹ (0 سے 3.3V) پر قبضہ کرتی ہیں اور اسے ڈیجیٹل ویلیو (0 سے 1023) میں تبدیل کرتی ہیں۔ اور پھر اس ڈیجیٹل اقدار کو 4 سے تقسیم کرکے ان (0 سے 255) میں تبدیل کیا جاتا ہے اور آخر کار LWC2148 کے P0.1 پن میں PWM آؤٹ پٹ کے طور پر کھلایا جاتا ہے ۔ یہاں ہم اقدار کو 0-1023 سے 0-255 میں 4 کے ساتھ تقسیم کرکے تبدیل کررہے ہیں کیونکہ ایل پی سی 2148 کے پی ڈبلیو ایم میں 8 بٹ ریزولوشن (28) ہے ۔
AD0CR - = (1 << 1)؛ // اے ڈی سی رجسٹر میں تاخیر کے وقت AD0.1 چینل منتخب کریں (10)؛ AD0CR - = (1 << 24)؛ // جب کہ ((AD0DR1 & (1 << 31)) == 0) A / D تبادلوں کا آغاز کریں ؛ // ADC ڈیٹا رجسٹر میں DONE بٹ چیک کریں adcvalue = (AD0DR1 >> 6) & 0x3ff؛ // ADC ڈیٹا رجسٹر ڈیوائسیکل = ایڈکلیو / 4 سے نتیجہ حاصل کریں؛ // ڈیوائسیکل اقدار حاصل کرنے کے لئے فارمولہ (0 سے 255) PWMMR1 = ڈیوائسیکل؛ // PWM میچ رجسٹر پر ڈیوائسیکل ویلیو سیٹ کریں PWMLER - = (1 << 1)؛ // ڈیوائسیکل ویلیو کے ساتھ پی ڈبلیو ایم آؤٹ پٹ کو قابل بنائیں
مرحلہ 11: - اگلا ، ہم LCD (16X2) ڈسپلے ماڈیول میں ان اقدار کو ظاہر کرتے ہیں۔ لہذا ہم LCD ڈسپلے ماڈیول کی ابتدا میں مندرجہ ذیل لائنوں کو شامل کرتے ہیں
باطل LCD_INITILIZE (باطل) // LCD تیار کرنے کے لئے فنکشن { IO0DIR = 0x0000FFF0؛ // سیٹ P0.12 ، P0.13 ، P0.14 ، P0.15 ، P0.4 ، P0.6 بطور آؤٹ پٹ تاخیر (20)؛ LCD_SEND (0x02)؛ // LCD کو آپریشن 4-بٹ وضع میں LCD_SEND (0x28) میں شروع کریں؛ // 2 لائنیں (16 ایکس 2) LCD_SEND (0x0C)؛ // LCD_SEND (0x06) پر کرسر پر ڈسپلے کریں ؛ // آٹو انکریمنٹ کرسر LCD_SEND (0x01)؛ // واضح LCD_SEND (0x80) ڈسپلے کریں ؛ // پہلی لائن پہلی پوزیشن }
جب ہم LPC2148 کے ساتھ 4 بٹ موڈ میں LCD سے منسلک ہوتے ہیں تو ہمیں اقدار بھیجنا پڑتا ہے تاکہ گھٹاؤ کے ذریعہ بطور (اپر نبل اور لوئر بلبل) ڈسپلے ہوں۔ لہذا مندرجہ ذیل لائنوں کو استعمال کیا جاتا ہے۔
باطل LCD_DISPLAY (char * msg) // ایک ایک کرکے بھیجے گئے حروف کو پرنٹ کرنے کا کام { uint8_t i = 0؛ جبکہ (=! = 0) { IO0PIN = ((IO0PIN & 0xFFFF00FF) - ((# & 0xF0) << 8))؛ // اپر نیبل IO0SET = 0x00000050 بھیجتا ہے ؛ ڈیٹا IO0CLR = 0x00000020 پرنٹ کرنے کے لئے // RS HIGH & EHLE HIGH ؛ // RW LOW موڈ میں تاخیر (2) لکھیں ؛ IO0CLR = 0x00000040؛ // EN = 0 ، آر ایس اور آر ڈبلیو کوئی تبدیلی نہیں (یعنی آر ایس = 1 ، آر ڈبلیو = 0) تاخیر سے (5)؛ IO0PIN = ((IO0PIN & 0xFFFF00FF)) - ((# & 0x0F) << 12٪)؛ // نچلے نچلے IO0SET = 0x00000050 بھیجتا ہے ؛ // RS & EN HIGH IO0CLR = 0x00000020؛ تاخیر (2)؛ IO0CLR = 0x00000040؛ تاخیر (5)؛ میں ++؛ } }
ان ADC اور PWM اقدار کو ظاہر کرنے کے لئے ہم INT مین () فنکشن میں درج ذیل لائنوں کا استعمال کرتے ہیں ۔
LCD_SEND (0x80)؛ سپرنٹف (ڈسپلےڈ سی ، "ایڈکلیو =٪ f" ، ڈیوٹی سائیکل)؛ LCD_DISPLAY (displayadc)؛ // ڈسپلے ADC ویلیو (0 سے 1023) زاویہ = (adcvalue / 5.7)؛ // اے ڈی سی کی قیمت کو زاویہ میں تبدیل کرنے کا فارمولہ (o to 180 درجے ) LCD_SEND (0xC0)؛ سپرنٹف (اینگل ویلیو ، "ANGLE =٪. 2f डिग्री" ، زاویہ)؛ LCD_DISPLAY (زاویہ قیمت)؛
سبق کا مکمل کوڈ اور ویڈیو تفصیل ذیل میں دیا گیا ہے