- ارڈینو اور STM32F103C8 میں ADC کا موازنہ کرنا
- ایس ٹی ایم 32 میں اے ڈی سی
- ینالاگ سگنل کو ڈیجیٹل فارمیٹ میں کیسے تبدیل کیا جاتا ہے
- STM32F103C8T6 میں ADC پنوں
- ضروری اجزاء
- سرکٹ ڈایاگرام اور وضاحتیں
- پروگرامنگ STM32 ADC اقدار کو پڑھنے کے لئے
ایک عام خصوصیت جو تقریبا ہر سرایت شدہ ایپلی کیشن میں استعمال ہوتی ہے وہ ہے ADC ماڈیول (اینالاگ سے ڈیجیٹل کنورٹر)۔ ڈیجیٹل کنورٹرز کے یہ ینالاگ درجہ حرارت سینسر ، جھکاؤ سینسر ، کرنٹ سینسر ، فلیکس سینسر اور بہت کچھ جیسے ینالاگ سینسر سے وولٹیج پڑھ سکتے ہیں۔ تو ہم اس ٹیوٹوریل میں سیکھیں گے کہ ایسٹ ایم 32 ایف 103 سی 8 میں اے ڈی سی کو انرجیہ آئی ڈی ای کا استعمال کرتے ہوئے ینالاگ وولٹیجس کو پڑھنے کے لئے کس طرح استعمال کیا جائے ۔ ہم STM32 بلیو گولی بورڈ میں ایک چھوٹا سا پوٹینومیٹر انٹرفیس کریں گے اور ینالاگ پن کو مختلف وولٹیج فراہم کریں گے ، وولٹیج پڑھیں گے اور اسے 16x2 LCD اسکرین پر ڈسپلے کریں گے۔
ارڈینو اور STM32F103C8 میں ADC کا موازنہ کرنا
ارڈینو بورڈ میں ، اس میں 6 چینل (منی اور نینو پر 8 چینلز ، میگا پر 16) ، 10 بٹ اے ڈی سی ہے جس میں 0V – 5V کی ان پٹ وولٹیج کی حد ہے۔ اس کا مطلب یہ ہے کہ وہ 0 اور 5 وولٹ کے درمیان ان پٹ وولٹیجز کو 0 اور 1023 کے درمیان عدد کی اقدار میں نقشے گا۔ یہ 0 اور 3.3 وولٹ کے درمیان ان پٹ وولٹیجز کو 0 اور 4095 کے درمیان عددی اقدار میں نقشہ بنائے گا۔
ایس ٹی ایم 32 میں اے ڈی سی
ایس ڈی ایم 32 مائکروقابوترالوں میں سرایت کردہ اے ڈی سی SAR (لگاتار تخمینہ رجسٹر) اصول کا استعمال کرتا ہے ، جس کے ذریعہ تبادلوں کو کئی مراحل میں انجام دیا جاتا ہے۔ تبادلوں کے اقدامات کی تعداد ADC کنورٹر میں بٹس کی تعداد کے برابر ہے۔ ہر قدم ADC گھڑی کے ذریعہ چلتا ہے۔ ہر ADC گھڑی نتیجہ سے لے کر آؤٹ پٹ تک تھوڑا سا پیدا کرتی ہے۔ اے ڈی سی داخلی ڈیزائن سوئچڈ-کیپاسٹر تکنیک پر مبنی ہے۔ اگر آپ STM32 میں نئے ہیں ، تو ہمارے STM32 سبق کے ساتھ شروع کرنا چیک کریں۔
12 بٹ قرارداد
یہ ADC 10 چینل 12 بٹ ADC ہے۔ یہاں دس چینل کی اصطلاح کا مطلب ہے کہ 10 اے ڈی سی پن ہیں جن کا استعمال کرتے ہوئے ہم ینالاگ وولٹیج کی پیمائش کرسکتے ہیں۔ اصطلاح 12 بٹ اے ڈی سی کی قرارداد پر مشتمل ہے۔ 12-بٹ کا مطلب دس (2 12) کی طاقت کے لئے 2 ہے جو 4096 ہے۔ یہ ہمارے ADC کیلئے نمونے کے اقدامات کی تعداد ہے ، لہذا ہمارے ADC اقدار کی حد 0 سے 4095 ہوگی۔ قیمت 0 سے بڑھ جائے گی 4095 فی قدم وولٹیج کی قیمت کی بنیاد پر ، جس کا حساب کتاب فارمولے سے لگایا جاسکتا ہے
VOLTAGE / STEP = VOLTAGE / 4096 = (3.3 / 4096 = 8.056mV) فی یونٹ۔
ینالاگ سگنل کو ڈیجیٹل فارمیٹ میں کیسے تبدیل کیا جاتا ہے
چونکہ کمپیوٹر صرف بائنری / ڈیجیٹل اقدار (1's اور 0's) کو اسٹور اور کارروائی کرتے ہیں۔ لہذا وولٹ میں سینسر کی آؤٹ پٹ جیسے ینالاگ سگنلز کو ڈیجیٹل ویلیوز میں پروسیسنگ کے لئے تبدیل کرنا پڑتا ہے اور کنورژن کو درست ہونا ضروری ہے.جب ایک ان پٹ ینالاگ وولٹیج ایس ٹی ایم 32 کو اپنے ینالاگ ان پٹس پر دیا جاتا ہے تو ، ینالاگ ویلیو کو پڑھ کر انٹیجر متغیر میں اسٹور کیا جاتا ہے۔. اس ذخیرہ کردہ ینالاگ ویلیو (0-3.3V) کو نیچے دیئے ہوئے فارمولے کا استعمال کرکے انٹیجرز ویلیوز (0-4096) میں تبدیل کیا گیا ہے۔
ان پٹ وولٹیج = (اے ڈی سی ویلیو / اے ڈی سی ریزولوشن) * حوالہ وولٹیج
قرارداد = 4096
حوالہ = 3.3V
STM32F103C8T6 میں ADC پنوں
STA32 میں PA0 سے PB1 تک 10 ینالاگ پن ہیں۔
دوسرے مائکروکنٹرولروں میں ADC استعمال کرنے کا طریقہ بھی چیک کریں:
- ایردوینو یونو میں اے ڈی سی کا استعمال کیسے کریں؟
- انٹرفیسنگ ADC0808 کے ساتھ 8051 مائکروکانٹرولر
- PIC مائکروکانٹرولر کے ADC ماڈیول کا استعمال
- راسبیری پائی اے ڈی سی ٹیوٹوریل
- MSP430G2 میں ADC کا استعمال کیسے کریں - ینالاگ وولٹیج کی پیمائش کریں
ضروری اجزاء
- STM32F103C8
- LCD 16 * 2
- پوٹینومیٹر 100 کلو
- بریڈ بورڈ
- مربوط تاروں
سرکٹ ڈایاگرام اور وضاحتیں
انٹرفیس 16 * 2 LCD اور ینالاگ ان پٹ کو STM32F103C8T6 بورڈ میں سرکٹ ڈایاگرام ذیل میں دکھایا گیا ہے۔
کنیکشن جو ایل سی ڈی کے لئے کیے جاتے ہیں وہ ذیل میں دیئے گئے ہیں۔
ایل سی ڈی پن نمبر |
LCD پن کا نام |
STM32 پن کا نام |
1 |
گراؤنڈ (Gnd) |
گراؤنڈ (G) |
2 |
وی سی سی |
5V |
3 |
VEE |
سینٹر آف پوٹینومیٹر سے پن |
4 |
رجسٹر سلیکٹ (آر ایس) |
پی بی 11 |
5 |
پڑھیں / لکھیں (RW) |
گراؤنڈ (G) |
6 |
(EN) کو فعال کریں |
پی بی 10 |
7 |
ڈیٹا بٹ 0 (DB0) |
کوئی کنکشن نہیں (NC) |
8 |
ڈیٹا بٹ 1 (DB1) |
کوئی کنکشن نہیں (NC) |
9 |
ڈیٹا بٹ 2 (DB2) |
کوئی کنکشن نہیں (NC) |
10 |
ڈیٹا بٹ 3 (DB3) |
کوئی کنکشن نہیں (NC) |
11 |
ڈیٹا بٹ 4 (DB4) |
پی بی 0 |
12 |
ڈیٹا بٹ 5 (DB5) |
پی بی 1 |
13 |
ڈیٹا بٹ 6 (DB6) |
پی سی 13 |
14 |
ڈیٹا بٹ 7 (DB7) |
پی سی 14 |
15 |
ایل ای ڈی مثبت |
5V |
16 |
ایل ای ڈی منفی |
گراؤنڈ (G) |
رابطے مذکورہ بالا جدول کے مطابق بنائے گئے ہیں۔ سرکٹ میں دو پوٹینومیٹر موجود ہیں ، پہلا ایک وولٹیج ڈیوائڈر کے لئے استعمال ہوتا ہے جو وولٹیج کو مختلف کرنے اور ایس ٹی ایم 32 کو ینالاگ ان پٹ فراہم کرنے کے لئے استعمال کیا جاسکتا ہے۔ اس پوٹینومیٹر کے بائیں پن کو STM32 (3.3V) سے ان پٹ مثبت وولٹیج ملتا ہے اور دایاں پن زمین سے منسلک ہوتا ہے ، پوٹینومیٹر کا سینٹر پن STM32 کے ینالاگ ان پٹ پن (PA7) سے منسلک ہوتا ہے۔ دوسرا پوٹینومیٹر LCD ڈسپلے کے برعکس مختلف ہونے کے لئے استعمال ہوتا ہے۔ STM32 کے لئے طاقت کا منبع USB یا پی سی یا لیپ ٹاپ سے بجلی کی فراہمی کے ذریعہ فراہم کیا گیا ہے۔
پروگرامنگ STM32 ADC اقدار کو پڑھنے کے لئے
ہمارے پچھلے سبق میں ، ہم نے USB پورٹ کا استعمال کرتے ہوئے پروگرامنگ STM32F103C8T6 بورڈ کے بارے میں سیکھا۔ لہذا اب ہمیں FTDI پروگرامر کی ضرورت نہیں ہے۔ اس کو STM32 کے USB پورٹ کے ذریعہ سیدھے پی سی سے مربوط کریں اور آرڈینو IDE کے ساتھ پروگرامنگ شروع کریں۔ ینالاگ وولٹیج پڑھنے کے ل AR اپنے STM32 کو آرڈینو IDE میں پروگرام کرنا بہت آسان ہے۔ یہ ارڈینو بورڈ کی طرح ہے۔ ایسٹی ایم 32 کے جمپر پنوں کو تبدیل کرنے کی ضرورت نہیں ہے۔
اس پروگرام میں ینالاگ ویلیو کو پڑھیں گے اور اس ویلیو کے ساتھ وولٹیج کا حساب لگائیں گے اور پھر ینالاگ اور ڈیجیٹل ویلیوز ، دونوں LCD اسکرین پر ڈسپلے کریں گے۔
پہلے ایل سی ڈی پنوں کی وضاحت کریں ۔ یہ وضاحت کرتے ہیں کہ STM32 کے کس پن سے LCD پن منسلک ہیں۔ آپ اپنی ضروریات کے مطابق ترمیم کرسکتے ہیں۔
const int rs = PB11، en = PB10، d4 = PB0، d5 = PB1، d6 = PC13، d7 = PC14؛ // ایل سی ڈی سے منسلک ہونے والے پن ناموں کا ذکر کریں
اگلا ، ہم LCD ڈسپلے کے لئے ہیڈر فائل شامل کرتے ہیں ۔ اس میں لائبریری کو بلایا گیا ہے جس میں کوڈ پر مشتمل ہے کہ کس طرح STM32 LCD کے ساتھ بات چیت کرنی چاہئے۔ یہ بھی یقینی بنائیں کہ فنکشن مائع کرسٹل کو ان پن ناموں کے ساتھ بلایا گیا ہے جو ہم نے ابھی اوپر بیان کیا ہے۔
# شامل کریں
سیٹ اپ () فنکشن کے اندر ، ہم صرف LCD اسکرین میں ظاہر ہونے کے لئے ایک انٹرو میسج دیں گے۔ آپ STM32 کے ساتھ LCD انٹرفیس کرنے کے بارے میں جان سکتے ہیں۔
lcd.begin (16 ، 2)؛ // ہم 16 * 2 LCD lcd.clear () استعمال کر رہے ہیں ۔ // اسکرین کو صاف کریں lcd.setCursor (0، 0)؛ // پہلی صف میں پہلا کالم lcd.prin t ("CIRCUITDIGEST")؛ // اس lcd.setCursor پرنٹ کریں (0، 1)؛ // سیکنڈ صف میں پہلا کولم n lcd.print ("STM32F103C8")؛ // تھی پرنٹ کی تاخیر (2000)؛ // دو سیکنڈ تک انتظار کریں lcd.clear ()؛ // اسکرین کو صاف کریں lcd.setCursor (0، 0)؛ // پہلی صف میں پہلا کالم lcd.print ("ADC IN استعمال کرتے ہوئے")؛ // اس lcd.setCursor (0،1) پرنٹ کریں ؛ // سیکنڈ صف میں پہلا کالم lcd.print ("STM32F103C8")؛ // اس تاخیر کو پرنٹ کریں (2000)؛ // دو سیکنڈ تک انتظار کریں lcd.clear ()؛ // سکرین صاف کریں
آخر میں ، ہمارے لامحدود لوپ () فنکشن کے اندر ، ہم پوٹینومیٹر سے PA7 پن کو فراہم کردہ ینالاگ وولٹیج کو پڑھنا شروع کرتے ہیں ۔ جیسا کہ ہم نے پہلے ہی تبادلہ خیال کیا ہے ، مائکروکنٹرولر ایک ڈیجیٹل ڈیوائس ہے اور یہ براہ راست وولٹیج لیول نہیں پڑھ سکتا ہے۔ ایس اے آر تکنیک کا استعمال کرتے ہوئے وولٹیج کی سطح کو 0 سے 4096 تک نقش کیا جاتا ہے۔ ان اقدار کو اے ڈی سی اقدار کہا جاتا ہے ، تاکہ اس اے ڈی سی کی قیمت کو آسانی سے درج ذیل لائن کا استعمال کریں۔
انٹ ویل = اینالاگ ریڈ (A7)؛ // پن پی اے 7 سے اے ڈی سی کی قیمت پڑھیں
یہاں تقریب analogRead () پن کے ینالاگ قدر پڑھنے کے لئے استعمال کیا جاتا ہے. آخر میں ہم اس ویلیو کو " ویل " نامی متغیر میں محفوظ کرتے ہیں ۔ اس متغیر کی قسم عددی ہے کیونکہ ہمیں اس متغیر میں صرف 0 سے 4096 تک کی اقدار ملیں گی۔
اگلا قدم ADC ویلیو سے وولٹیج کی قیمت کا حساب لگانا ہوگا۔ ایسا کرنے کے لئے ہمارے پاس درج ذیل فارمولے ہیں
وولٹیج = (ADC ویلیو / ADC قرارداد) * حوالہ وولٹاگ ای
ہمارے معاملے میں ہم پہلے ہی جانتے ہیں کہ ہمارے مائکروکانٹرولر کی اے ڈی سی ریزولیوشن 4096 ہے۔ اے ڈی سی کی قیمت پچھلی لائن میں بھی مل جاتی ہے اور ویل نامی متغیر کو اسٹور کیا جاتا ہے۔ ریفرنس وولٹیج وولٹیج جس میں microcontroller کی کام کر رہا ہے کے برابر ہے. جب STM32 بورڈ USB کیبل کے ذریعہ چلتا ہے تو آپریٹنگ وولٹیج 3.3V ہے ۔ آپ بورڈ پر وی سی سی اور گراؤنڈ پن کے پار ملٹی میٹر کا استعمال کرکے آپریٹنگ وولٹیج کی پیمائش بھی کرسکتے ہیں۔ لہذا مندرجہ بالا فارمولہ ہمارے معاملے میں فٹ بیٹھتا ہے
فلوٹ وولٹیج = (فلوٹ (ویل) / 4096) * 3.3؛ // فارمولے جو ADC قدر کو وولٹاگ ای میں بدل سکتے ہیں
آپ لائن فلوٹ (ویل) سے الجھ سکتے ہیں۔ یہ متغیر "ویل" کو انٹرا ڈیٹا ٹائپ سے "فلوٹ" ڈیٹا ٹائپ میں تبدیل کرنے کے لئے استعمال ہوتا ہے ۔ اس تبدیلی کی ضرورت ہے کیونکہ صرف اسی صورت میں اگر ہمیں فلوٹ میں ویل / 4096 کا نتیجہ مل جاتا ہے تو ہم اسے 3.3 میں ضرب کر سکتے ہیں۔ اگر قیمت عددی حیثیت میں موصول ہوتی ہے تو یہ ہمیشہ 0 رہے گا اور نتیجہ بھی صفر ہوگا۔ ایک بار جب ہم نے اے ڈی سی کی قیمت اور وولٹیج کا حساب لگا لیا تو ، ایل سی ڈی اسکرین پر نتیجہ ڈسپلے کرنا باقی ہے جو درج ذیل لائنوں کا استعمال کرکے کیا جاسکتا ہے۔
lcd.setCursor (0 ، 0)؛ // کرسر کو کالم 0 ، لائن 0 lcd.print ("ADC Val:") پر سیٹ کریں۔ lcd.print (ویل)؛ // ڈسپلے ADC ویلیو lcd.setCursor (0، 1)؛ // کرسر کو کالم 0 ، لائن 1 lcd.print ("ولٹیج:") پر سیٹ کریں۔ lcd.print (وولٹیج)؛ // ڈسپلے وولٹیج
مکمل کوڈ اور مظاہرے کی ویڈیو نیچے دی گئی ہے۔