ADC এর পূর্ণরূপ এনালগ টু ডিজিটাল। বিভিন্ন সেন্সর/ডিভাইস থেকে এনালগ সিগন্যাল পাওয়া যায়। কিন্তু মাইক্রোকন্ট্রোলার শুধু 0 এবং 1 পড়তে পারে। এজন্য এনালগ সিগন্যাল ভোল্টেজকে ADC এর মাধ্যমে ডিজিটাল সিগন্যালে রূপান্তর করে অপারেশন সম্পন্ন করতে হয়। কিছু মাইক্রোকন্ট্রোলারে এনালগ সিগন্যালকে ডিজিটালে রূপান্তর করার জন্য আইসির মধ্যেই হার্ডওয়্যার সংযুক্ত থাকে। এই প্রজেক্টে আমরা আরডুইনো UNO এর সাহায্যে এনালগ ডাটা রিড করবো।
প্রয়োজনীয় জিনিস-পত্র
- আরডুইনো ইউ.এন.ও.
- আরডুইনো IDE
- ইউ.এস.বি. A to B ক্যাবল
- ব্রেডবোর্ড
- LCD
- LED
- 220Ω রেজিস্টর
- ভেরিয়েবল রেজিস্টর 10kΩ
- ব্রেডবোর্ড জাম্পার
- DC ভোল্টমিটার
আরডুইনোতে A0 থেকে A5 পর্যন্ত ছয়টি পিন দিয়ে এনালগ মান ভোল্টেজ আকারে পরিমাপ করা যায়। আরডুইনো UNO তে সংযুক্ত ADC টি 10-bit এর। অর্থাৎ এটি এনালগ ইনপুট ভোল্টেজকে 210 = 1024 (0 থেকে 1023) ভাগে ভাগ করবে। সিস্টেম ভোল্টেজকে রেফারেন্স ভোল্টেজ হিসেবে নিয়ে 0 থেকে 5V কে আনুপাতিক হাড়ে 0 থেকে 1023 পর্যন্ত দেখাবে।
ডায়াগ্রাম 1
প্রোগ্রাম 1
/* * Program 1 * Arduino ADC * www.eeebangla.com * https://www.youtube.com/channel/UCYHfZ8A796IzaOIdLJowwMQ?sub_confirmation=1 */ void setup(){ Serial.begin(9600); delay(1000); } void loop(){ float i= analogRead(A5); Serial.print("ADC Value: "); Serial.print(i); Serial.println(); delay(300); }
প্রোগ্রাম 1 রান করলে ডায়াগ্রাম 1 অনুসারে সিরিয়াল মনিটরে ADC এর মান দেখাবে। ভেরিয়েবল রেজিস্টরের নব ঘুরালে ADC এর মান পরিবর্তন হবে।
ডায়াগ্রাম 2
প্রোগ্রাম 2
/* * Program 2 * Arduino ADC * www.eeebangla.com * https://www.youtube.com/channel/UCYHfZ8A796IzaOIdLJowwMQ?sub_confirmation=1 */ #include <LiquidCrystal.h> const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2; LiquidCrystal lcd(rs, en, d4, d5, d6, d7); void setup(){ lcd.begin(16, 2); delay(1000); } void loop(){ float i= analogRead(A5); float j= (100*i)/1023; lcd.clear(); lcd.setCursor(0, 0); lcd.print("ADC Value:"); lcd.print(i); lcd.setCursor(0, 1); lcd.print(j); lcd.print("%"); delay(1000); }
ডায়াগ্রাম 2 অনুসারে প্রোগ্রাম 2 রান করলে LCD তে ADC এর আসল মান এবং শতকরা হিসেবে দেখাবে।
ডায়াগ্রাম 3
প্রোগ্রাম 3
/* * Program 3 * Arduino ADC * www.eeebangla.com * https://www.youtube.com/channel/UCYHfZ8A796IzaOIdLJowwMQ?sub_confirmation=1 */ #include <LiquidCrystal.h> const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2; LiquidCrystal lcd(rs, en, d4, d5, d6, d7); void setup(){ pinMode(9, OUTPUT); lcd.begin(16, 2); delay(1000); } void loop(){ digitalWrite(9, LOW); float i= analogRead(A5); float j= (100*i)/1023; float k= (5*i)/1023; lcd.clear(); lcd.setCursor(0, 0); lcd.print("ADC Value:"); lcd.print(i); lcd.setCursor(0, 1); lcd.print(j); lcd.print("%"); lcd.setCursor(10, 1); lcd.print(k); lcd.print("V"); if(j>=50){ digitalWrite(9, HIGH); } delay(1000); }
ডায়াগ্রাম 3 অনুসারে প্রোগ্রাম 3 রান করলে ADC এর মান, শতকরা মান, ভেরিয়েবল রেজিস্টর থেকে A5 পিনে প্রাপ্ত ভোল্টেজের মান এবং একই সাথে ভেরিয়েবল রেজিস্টর 50% ঘুরালে LED জ্বলে উঠবে।
ডায়াগ্রাম 4
প্রোগ্রাম 4
/* * Program 4 * Arduino ADC * www.eeebangla.com * https://www.youtube.com/channel/UCYHfZ8A796IzaOIdLJowwMQ?sub_confirmation=1 */ int led[]={2,3,4,5,6,7,8,9,10,11}; void setup(){ for(int a=0; a<10; a++){ pinMode(led[a],OUTPUT); } } void loop(){ float k= (10*(analogRead(A5)))/1023; for (int l=0; l<k; l++){ digitalWrite(led[l], HIGH); delay(10); } for (int l=(k+1); l<=10; l++){ digitalWrite(led[l], LOW); delay(10); } }
ডায়াগ্রাম 4 অনুসারে প্রোগ্রাম 4 রান করলে ভেরিয়েবল রেজিস্টর প্রতি 10% ঘুরালে একটি LED ইন্ডিকেট করবে। এই প্রোগ্রাম দিয়ে বার-গ্রাফ ব্যাটারি লেভেল ইনডিকেটর (Bar Graph Battery Level Indicator) বানানো যাবে।
মজার-মজার ইলেকট্রনিক্স প্রজেক্ট পেতে এখনই আমাদের ইউটিউব চ্যানেল সাবস্ক্রাইব করুন: https://www.youtube.com/channel/UCYHfZ8A796IzaOIdLJowwMQ?sub_confirmation=1
ভিডিও লিংক: https://youtu.be/CKzYz_WliVs