- ضروری سامان
- STM8S103F3P6 پر ADC
- STM8S اور LCD پر ڈسپلے پر ADC کی اقدار کو پڑھنے کے لئے سرکٹ ڈایاگرام
- STM8S103F3P6 کیلئے ADC لائبریری
- LCD پر ینالاگ وولٹیج اور ڈسپلے پڑھنے کے لئے STM8S پروگرام
- ایس ٹی ایم 8 ایس کا استعمال کرتے ہوئے دو پوٹینومیٹر سے ینالاگ وولٹیج پڑھنا
اگر آپ باقاعدہ پڑھنے والے ہیں جو ہمارے STM8S مائکرو قابو پانے والے سبق کی پیروی کر رہے ہیں تو ، آپ کو معلوم ہوگا کہ ہمارے آخری سبق میں ، ہم نے ایس ٹی ایم 8 کے ساتھ 16x2 LCD کو انٹرفیس کرنے کا طریقہ سیکھا ہے۔ اب ، اس ٹیوٹوریل پر اس کے ساتھ آگے بڑھتے ہوئے ، ہم سیکھیں گے کہ ہمارے STM8S103F3P6 مائکروقابوکنٹرولر پر ADC کی خصوصیت کو کس طرح استعمال کیا جائے۔ ایک اے ڈی سی مائکروکنٹرولر پر ایک بہت ہی مفید پردیی ہے جو ایمبیڈڈ پروگرامرز اکثر ایسے یونٹوں کی پیمائش کے لئے استعمال کرتا ہے جو مستقل تبدیلی میں رہتے ہیں جیسے مختلف وولٹیج ، موجودہ ، درجہ حرارت ، نمی وغیرہ۔
جیسا کہ ہم جانتے ہیں کہ "ہم ڈیجیٹل ڈیوائسز کے ساتھ ایک ینالاگ دنیا میں رہتے ہیں" ، یعنی ہمارے آس پاس کی ہر چیز جیسے ہوا کی رفتار ، روشنی کی شدت ، درجہ حرارت ، اور جس چیز سے ہم نمٹتے ہیں رفتار ، رفتار ، دباؤ وغیرہ فطرت میں ینالاگ ہیں۔ لیکن ہمارے مائکروکونٹرولر اور مائکرو پروسیسرز ڈیجیٹل ڈیوائسز ہیں اور وہ انالما کو ڈیجیٹل کنورٹرز (اے ڈی سی) نامی ایک اہم پردیی کے بغیر پیمائش نہیں کرسکیں گے۔ تو اس مضمون میں ، آئیے سیکھیں کہ COMIC C مرتب کنندہ کے ساتھ STM8S مائکروکونٹرلر پر ADC کا استعمال کیسے کریں ۔
ضروری سامان
اس آرٹیکل میں ، ہم دو پوٹینومیٹرس سے دو ینالاگ وولٹیج ویلیوز پڑھ رہے ہوں گے اور اس کی اے ڈی سی ویلیو کو 16x2 LCD ڈسپلے پر ڈسپلے کریں گے۔ ایسا کرنے کے ل we ، ہمیں مندرجہ ذیل اجزاء کی ضرورت ہوگی۔
- STM8S103F3P6 ڈویلپمنٹ بورڈ
- ایس ٹی لنک وی 2 پروگرامر
- 16x2 LCD
- پوٹینومیٹر
- مربوط تاروں
- 1 ک مزاحم
STM8S103F3P6 پر ADC
یہاں بہت ساری قسم کی اے ڈی سی ہے اور ہر مائکروکانٹرولر کی اپنی ایک مخصوص خصوصیات ہیں۔ STM8S103F3P6 پر ، ہمارے پاس ایک اے ڈی سی ہے جس میں 5 چینل اور 10 بٹ ریزولوشن ہے۔ 10 بٹ ریزولوشن کے ساتھ ، ہم 0 سے 1024 تک ڈیجیٹل ویلیو کی پیمائش کرنے کے اہل ہوں گے اور 5 چینل اے ڈی سی سے پتہ چلتا ہے کہ ہمارے پاس مائکروکنٹرولر پر 5 پن ہیں جو اے ڈی سی کی مدد کرسکتے ہیں ، ان 5 پنوں کو ذیل کی تصویر میں نمایاں کیا گیا ہے۔
جیسا کہ آپ دیکھ سکتے ہیں ، یہ پانچوں پن (AIN2 ، AIN3 ، AIN4 ، AIN5 ، اور AIN6) دوسرے پردییوں کے ساتھ ملٹی پلیکس ہیں ، جس کا مطلب ہے صرف ADC پن کی حیثیت سے کام کرنے کے علاوہ ، ان پنوں کو بھی دوسرے مواصلات جیسے مثال کے طور پر انجام دینے کے لئے استعمال کیا جاسکتا ہے۔ ، پن 2 اور 3 (AIN5 اور AIN 6) نہ صرف ADC کے لئے استعمال کیا جاسکتا ہے بلکہ سیریل مواصلات اور GPIO افعال کے لئے بھی استعمال کیا جاسکتا ہے۔ نوٹ کریں کہ تینوں مقاصد کے لئے ایک ہی پن کا استعمال ممکن نہیں ہوگا ، لہذا اگر ہم اے ڈی سی کے لئے یہ دونوں پن استعمال کررہے ہیں تو ہم سیریل مواصلات انجام نہیں دے پائیں گے۔ دیگر اہم ADC خصوصیات STM8S103P36 کو ڈیٹا شیٹ سے نیچے دیئے گئے ٹیبل میں پایا جاسکتا ہے۔
مذکورہ جدول میں ، Vdd آپریٹنگ وولٹیج کی نمائندگی کرتا ہے اور Vss زمین کی نمائندگی کرتا ہے۔ لہذا ہمارے ڈویلپمنٹ بورڈ پر ہمارے معاملے میں ، ہمارے پاس مائکروقانونی کار 3.3V پر کام کرتا ہے ، آپ ایس ٹی ایم 8 ایس ٹیوٹوریل کے ساتھ شروع ہونے سے ہی ڈویلپمنٹ بورڈ سرکٹ ڈایاگرام چیک کرسکتے ہیں۔ آپریٹنگ وولٹیج کی حیثیت سے 3.3V کے ساتھ ، ہماری ADC گھڑی تعدد 1 سے 4MHz کے درمیان طے کی جاسکتی ہے اور ہمارے تبادلوں کی وولٹیج کی حد 0V سے 3.3V کے درمیان ہے۔ اس کا مطلب یہ ہے کہ جب ہمارے 0-وی (وی ایس) فراہم کی جاتی ہے تو ہمارا 10 بٹ اے ڈی سی 0 پڑھتا ہے اور زیادہ سے زیادہ 1024 پڑھتا ہے جب 3.3V (وی ڈی ڈی) فراہم کیا جاتا ہے۔ اگر ضرورت ہو تو ہم MCU کے آپریٹنگ وولٹیج کو تبدیل کرکے آسانی سے اس 0-5V کو تبدیل کرسکتے ہیں۔
STM8S اور LCD پر ڈسپلے پر ADC کی اقدار کو پڑھنے کے لئے سرکٹ ڈایاگرام
اس پروجیکٹ میں استعمال ہونے والا مکمل سرکٹ ڈایاگرام ذیل میں دیا گیا ہے ، یہ STM8S LCD ٹیوٹوریل سے بہت ملتا جلتا ہے جس پر ہم نے پہلے تبادلہ خیال کیا تھا۔
جیسا کہ آپ دیکھ سکتے ہیں ، LCD کے علاوہ صرف اضافی اجزاء دو پوٹینومیٹر POT_1 اور POT_2 ہیں ۔ یہ برتن بندرگاہوں پی سی 4 اور پی ڈی 6 سے منسلک ہیں ، جو اے این آئی 2 اور اے این آئی 6 پن ہیں جیسا کہ پہلے پن آؤٹ امیج پر بحث کی گئی ہے۔
پوٹینومیٹر اس طرح جڑے ہوئے ہیں کہ جب ہم اس میں مختلف ہوجائیں تو ہمیں اپنے ینالاگ پنوں پر 0-5 V مل جائے گا۔ ہم ڈیجیٹل ویلیو (0 سے 1024) میں اس ینالاگ وولٹیج کو پڑھنے اور اسے LCD اسکرین پر ظاہر کرنے کے لئے اپنے کنٹرولر کا پروگرام بنائیں گے۔ اس کے بعد ہم برابر وولٹیج کی قیمت کا بھی حساب لگائیں گے اور LCD پر اس کی نمائش کریں گے ، یاد رکھیں کہ ہمارا کنٹرولر 3.3V سے چلتا ہے ، لہذا اگر ہم ADV پن کو 5V فراہم کرتے ہیں تو بھی ، وہ 0V سے 3.3V تک ہی پڑھ سکے گا۔.
ایک بار رابطے ہوجانے کے بعد ، میرا ہارڈویئر اس طرح نظر آتا ہے جیسا کہ ذیل میں دکھایا گیا ہے۔ آپ دائیں طرف دو پوٹینومیٹر اور بائیں طرف ایس ٹی لنک پروگرامر دیکھ سکتے ہیں۔
STM8S103F3P6 کیلئے ADC لائبریری
STM8S پر ADC فعالیتوں کے لئے پروگرام کرنے کے لئے ، ہم SPL لائبریریوں کے ساتھ برہمانڈیی C مرتب کنندہ کا استعمال کریں گے۔ لیکن عمل کو آسان بنانے کے ل I ، میں نے ایک اور ہیڈر فائل بنائی جو نیچے کے لنک کے ساتھ گٹ ہب پر مل سکتی ہے۔
STM8S103F3P6 کیلئے ADC لائبریری
اگر آپ جانتے ہیں کہ آپ کیا کر رہے ہیں تو ، آپ مندرجہ بالا کوڈ کا استعمال کرکے ہیڈر فائل تشکیل دے سکتے ہیں اور اسے اپنے پروجیکٹ کے صفحے پر "فائلیں شامل کریں" ڈائریکٹری میں شامل کرسکتے ہیں۔ اور نہ ہی اپنے پروگرامنگ ماحول اور مرتب کو ترتیب دینے کا طریقہ جاننے کے ل ST STM8S ٹیوٹوریل کے ساتھ شروعات کریں۔ ایک بار جب آپ کا سیٹ اپ تیار ہوجاتا ہے تو ، آپ کے IDE میں درج ذیل ہیڈر فائلیں ہونی چاہئیں ، کم از کم سرخ رنگ کی چابیاں۔
مذکورہ بالا ہیڈر فائل ایک فنکشن پر مشتمل ہے جسے ADC_Read () کہتے ہیں ۔ کسی بھی پن پر ADC ویلیو حاصل کرنے کے ل This آپ کے مرکزی پروگرام میں اس فنکشن کو بلایا جاسکتا ہے۔ مثال کے طور پر ، ADC_Read (AN2) نتیجے میں پن AN2 پر ADC ویلیو واپس کرے گا۔ فنکشن نیچے دکھایا گیا ہے۔
بغیر دستخط شدہ ADC_Read (ADC_CHANNEL_TypeDef ADC_Channel_Number) {دستخط شدہ نتیجہ نتیجہ = 0؛ ADC1_DeInit ()؛ ADC1_Init (ADC1_CONVERSIONMODE_CONTINUOUS، ADC_Channel_Number، ADC1_PPressEL_FCPU_D18، ADC1_EXTTRIG_TIM، غلط، ADC1_ALIGN_RIGHT، ADC1_SCHMITTRIG_ALL، D؛ D) ADC1_Cmd (فعال)؛ ADC1_StartConversion ()؛ جبکہ (ADC1_GetFlagStatus (ADC1_FLAG_EOC) == غلط)؛ نتیجہ = ADC1_GETConversionValue ()؛ ADC1_ClearFlag (ADC1_FLAG_EOC)؛ ADC1_DeInit ()؛
جیسا کہ آپ دیکھ رہے ہیں ، ہم اس فنکشن میں آٹھ پیرامیٹرز کو منتقل کرسکتے ہیں اور اس سے یہ معلوم ہوتا ہے کہ اے ڈی سی کو کنفیگر کیا گیا ہے۔ مذکورہ بالا ہمارے لائبریری کے کوڈ میں ، ہم نے تبادلوں کے موڈ کو مستقل طور پر سیٹ کیا ہے اور پھر چینل نمبر کو پیرامیٹر پاس کیا جائے۔ اور پھر ہمیں اپنے کنٹرولر کی سی پی یو فریکوئنسی طے کرنا ہوگی ، بطور ڈیفالٹ (اگر آپ نے بیرونی کرسٹل سے رابطہ نہیں کیا ہے) تو ، آپ کا ایس ٹی ایم 8 ایس ایک 16 میگاہرٹز داخلی آسکیلیٹر کے ساتھ کام کرے گا۔ لہذا ہم نے " ADC1_PPressEL_FCPU_D18 " کو پری اسکیلر ویلیو کے طور پر ذکر کیا ہے ۔ اس فنکشن کے اندر ، ہم SPL stm8s_adc1.h ہیڈر فائل کے ذریعہ بیان کردہ دوسرے طریقے استعمال کر رہے ہیں ۔ ہم ADC پنوں کو ڈی اسٹارشائز کرکے اور پھر ADC1_Init () کو ADC کے پردیی شروع کرنے کے لئے شروع کرتے ہیں۔ ایس پی ایل صارف دستی سے اس فنکشن کی تعریف ذیل میں دکھائی گئی ہے۔
اگلا ، ہم ٹائمر کا استعمال کرتے ہوئے بیرونی محرکات مرتب کرتے ہیں اور بیرونی محرک کو غیر فعال کردیتے ہیں کیونکہ ہم اسے یہاں استعمال نہیں کریں گے۔ اور پھر ہمارے پاس سیدھ سیدھی ہوئی ہے اور آخری دو پیرامیٹرز شمٹ ٹرگر کو سیٹ کرنے کے لئے استعمال کیے جاتے ہیں ، لیکن ہم اسے اس ٹیوٹوریل کے لئے غیر فعال کردیں گے۔ لہذا ، اس کو مختصر کرنے کے ل we ، ہمارا اے ڈی سی بیرونی ٹرگر اور اسمتٹ ٹرگر کو غیر فعال رکھنے والے مطلوبہ اے ڈی سی پن پر مستقل تبادلوں کے موڈ میں کام کرے گا۔ اگر آپ کو خارجی ٹرگر یا شمٹ ٹرگر آپشن کو استعمال کرنے کے طریقے کے بارے میں مزید معلومات کی ضرورت ہو تو آپ ڈیٹا شیٹ چیک کرسکتے ہیں ، ہم اس سبق میں اس پر بات نہیں کریں گے۔
LCD پر ینالاگ وولٹیج اور ڈسپلے پڑھنے کے لئے STM8S پروگرام
مین پی سی فائل میں استعمال ہونے والا مکمل کوڈ اس صفحے کے نیچے پایا جاسکتا ہے۔ مطلوبہ ہیڈر فائلوں اور سورس فائلوں کو شامل کرنے کے بعد ، آپ کو مرکزی فائل کو براہ راست مرتب کرنے کے قابل ہونا چاہئے۔ مرکزی فائل میں کوڈ کی وضاحت مندرجہ ذیل ہے۔ میں STM8S LCD پروگرام کی وضاحت نہیں کروں گا کیوں کہ ہم اس پر پہلے ہی سبق کے بارے میں بات چیت کر چکے ہیں۔
کوڈ کا مقصد دو پنوں سے اے ڈی سی اقدار کو پڑھنا اور اسے وولٹیج کی قیمت میں تبدیل کرنا ہوگا۔ ہم LCD پر ADC ویلیو اور وولٹیج ویلیو دونوں بھی ظاہر کریں گے۔ لہذا ، میں نے LCD_Pپرنٹ ور نامی ایک فنکشن استعمال کیا ہے جو انٹیجر فارمیٹ میں ایک متغیر لے جاتا ہے اور اسے کسی کردار میں تبدیل کرتا ہے تاکہ LCD پر ڈسپلے ہوسکے۔ متغیر سے ہر ایک ہندسہ حاصل کرنے کے لئے ہم نے آسان ماڈیولس (٪) اور تقسیم (/) آپریٹرز کا استعمال کیا ہے اور جیسا کہ ذیل میں دکھایا گیا ہے متغیرات میں D1 ، d2 ، d3 ، اور d4 ڈال دیا ہے۔ تب ہم ان حروف کو LCD پر ظاہر کرنے کے لئے LCD_P پرن_Char فنکشن استعمال کرسکتے ہیں ۔
باطل LCD_P پرن__ar (انٹ ور) {چار D4، d3، d2، d1؛ d4 = var٪ 10 + '0'؛ d3 = (var / 10)٪ 10 + '0'؛ d2 = (var / 100)٪ 10 + '0'؛ d1 = (var / 1000) + '0'؛ ایل سی ڈی_پرنٹ_چار (ڈی 1)؛ ایل سی ڈی_پرنٹ_چار (ڈی 2)؛ ایل سی ڈی_پرنٹ_چار (ڈی 3)؛ ایل سی ڈی_پرنٹ_چار (ڈی 4)؛ }
مرکزی تقریب کے تحت اگلا ، ہمارے پاس چار متغیرات کا اعلان کیا گیا ہے۔ ان میں سے دو ADC ویلیو (0 سے 1024) بچانے کے ل to استعمال ہوتے ہیں اور دوسرے دو کو حقیقی وولٹیج ویلیو حاصل کرنے کے لئے استعمال کیا جاتا ہے۔
بغیر دستخط شدہ ADC_value_1 = 0؛ بغیر دستخط شدہ ADC_value_2 = 0؛ int ADC_voltage_1 = 0؛ int ADC_voltage_2 = 0؛
اگلا ، ہمیں ینالاگ وولٹیج پڑھنے کے لئے GPIO پنوں اور گھڑی کی ترتیب تیار کرنا ہوگی۔ یہاں ہم پنوں AIN2 اور AIN6 سے ینالاگ وولٹیج پڑھ رہے ہیں جو بالترتیب پنوں پی سی 4 اور PD6 ہیں۔ جیسا کہ ذیل میں دکھایا گیا ہے ہمیں ان پن کو تیرتی حالت میں بیان کرنا ہے۔ ہم اے ڈی سی کے لئے گھڑی کے پردیی کو بھی فعال بنائیں گے۔
CLK_PeripheralClockConfig (CLK_PERIPHERAL_ADC، فعال)؛ // ADC GPIO_Init (GPIOC، GPIO_PIN_4، GPIO_MODE_IN_FL_IT) کے لئے پیریفرل گھڑی کو فعال کریں؛ GPIO_Init (GPIOC، GPIO_PIN_4، GPIO_MODE_IN_FL_IT)؛
اب جب پن تیار ہیں تو ، ہمیں ینالاگ وولٹیج کو پڑھنے کے لinite لامحدود میں جانا پڑے گا۔ چونکہ ہمارے پاس ہیڈر فائل ہے ، لہذا ہم آسانی سے نیچے والی لائنوں کا استعمال کرتے ہوئے پن AIN2 اور AIN 6 سے مطابق وولٹیج کو آسانی سے پڑھ سکتے ہیں۔
ADC_value_1 = ADC_Read (AIN2)؛ ADC_value_2 = ADC_Redad (AIN6)؛
اگلا مرحلہ اس ADC ریڈنگ (0 سے 1023) کو ینالاگ وولٹیج میں تبدیل کرنا ہے۔ اس طرح ، ہم AIN2 اور AIN6 کو پن کرنے کے لئے دیئے گئے عین مطابق وولٹیج ویلیو کو ظاہر کرسکتے ہیں۔ ینالاگ وولٹیج کا حساب لگانے کے فارمولے بذریعہ دی جاسکتے ہیں۔
ینالاگ وولٹیج = ADC پڑھنا * (3300/1023)
STM8S103F3 کنٹرولرز پر ہمارے معاملے میں ، ہمارے پاس 10 بٹ ریزولوشن کے ساتھ ایک ADC ہے ، لہذا ہم نے 1023 (2 ^ 10) استعمال کیا ہے ۔ ہماری ترقیاتی طاقتوں پر بھی 3.3V والا کنٹرولر جو 3300 ہے ، لہذا ہم نے مندرجہ بالا فارمولوں میں 3300 کو 1023 تک تقسیم کیا۔ تقریبا 33 3300/1023 ہمیں 3.226 دے گا ، لہذا ہمارے پروگرام پر ، اے ڈی سی وولٹیج کا استعمال کرتے ہوئے حقیقی اے ڈی سی وولٹیج کی پیمائش کرنے کے لئے ہمارے پاس درج ذیل لائنز موجود ہیں۔
ADC_voltage_1 = ADC_value_1 * (3.226)؛ // (3300/1023 = ~ 3.226) ADC ویلیو 1 کو 0 سے 3300mV میں تبدیل کریں ADC_voltage_2 = ADC_value_2 * (3.226)؛ // ADC ویلیو 1 کو 0 سے 3300mV میں تبدیل کریں
کوڈ کا باقی حصہ صرف ان چار اقدار کو LCD اسکرین پر ظاہر کرنے کے لئے استعمال ہوتا ہے۔ ہمارے پاس 500ms کی تاخیر بھی ہے تاکہ LCD ہر 500mS کے لئے اپ ڈیٹ ہوجائے۔ اگر آپ کو تیز تر تازہ کاریوں کی ضرورت ہو تو آپ اسے مزید کم کرسکتے ہیں۔
ایس ٹی ایم 8 ایس کا استعمال کرتے ہوئے دو پوٹینومیٹر سے ینالاگ وولٹیج پڑھنا
کوڈ مرتب کریں اور اسے اپنے ڈویلپمنٹ بورڈ میں اپ لوڈ کریں۔ اگر آپ کو کوئی مرتب غلطی ہو تو ، اس بات کو یقینی بنائیں کہ آپ نے پہلے ہی زیر بحث تمام ہیڈر فائلوں اور سورس فائلوں کو شامل کیا ہے۔ ایک بار کوڈ اپ لوڈ ہوجانے کے بعد ، آپ کو ایک چھوٹا استقبالیہ پیغام دیکھنا چاہئے جس میں "STC8S پر ADC" کہا گیا تھا اور پھر آپ کو نیچے کی سکرین نظر آنی چاہئے۔
D1 اور D2 کی قدر بالترتیب پن Ain2 اور AIN6 سے ADC قدر کی نشاندہی کرتی ہے۔ دائیں طرف ، ہمارے پاس برابر وولٹیج کی قیمتیں بھی دکھائی گئیں۔ یہ قدر بالترتیب پن AIN2 اور AIN6 پر آنے والے وولٹیج کے برابر ہونی چاہئے۔ ہم ملٹی میٹر کا استعمال کرتے ہوئے اسی کی جانچ پڑتال کرسکتے ہیں ، ہم یہ بھی جانچنے کے لئے پوٹینیوومیٹرس میں فرق کرسکتے ہیں کہ آیا وولٹیج کی قیمت بھی اسی مطابق تبدیل ہوتی ہے۔
ذیل میں ویڈیو میں مکمل کام بھی پایا جاسکتا ہے۔ امید ہے کہ آپ نے ٹیوٹوریل سے لطف اندوز ہوئے ہوں گے اور کچھ مفید چیز سیکھی ہے ، اگر آپ کے ذہن میں کوئی سوالات ہیں تو ، انہیں نیچے تبصرہ سیکشن میں چھوڑ دیں۔ آپ گفتگو شروع کرنے یا دیگر تکنیکی سوالات پوسٹ کرنے کے لئے ہمارے فورمز کا استعمال بھی کرسکتے ہیں۔