সুচিপত্র:

AVR মাইক্রোকন্ট্রোলারে ADC- এর ভূমিকা - নতুনদের জন্য: 14 টি ধাপ
AVR মাইক্রোকন্ট্রোলারে ADC- এর ভূমিকা - নতুনদের জন্য: 14 টি ধাপ

ভিডিও: AVR মাইক্রোকন্ট্রোলারে ADC- এর ভূমিকা - নতুনদের জন্য: 14 টি ধাপ

ভিডিও: AVR মাইক্রোকন্ট্রোলারে ADC- এর ভূমিকা - নতুনদের জন্য: 14 টি ধাপ
ভিডিও: 66864 মাইক্রোকন্ট্রোলার এন্ড এম্বিডেড সিস্টেম Microcontroller & Embedded System 2024, নভেম্বর
Anonim
AVR মাইক্রোকন্ট্রোলারে ADC- এর ভূমিকা | নতুনদের জন্য
AVR মাইক্রোকন্ট্রোলারে ADC- এর ভূমিকা | নতুনদের জন্য

এই টিউটোরিয়ালে আপনি এভিআর মাইক্রোকন্ট্রোলারে এডিসি সবকিছু জানতে পারবেন

ধাপ 1: একটি ADC কি?

একটি এডিসি, বা এনালগ টু ডিজিটাল কনভার্টার, একজনকে একটি এনালগ ভোল্টেজকে ডিজিটাল ভ্যালুতে রূপান্তর করতে দেয় যা মাইক্রোকন্ট্রোলার ব্যবহার করতে পারে। এনালগ সিগন্যালের অনেক উৎস আছে যা কেউ পরিমাপ করতে পছন্দ করতে পারে। এখানে এনালগ সেন্সর পাওয়া যায় যা তাপমাত্রা, আলোর তীব্রতা, দূরত্ব, অবস্থান এবং শক্তি পরিমাপ করে, কেবল কয়েকটি নাম।

ধাপ 2: AVR- এ মাইক্রোকন্ট্রোলারে ADC কিভাবে কাজ করে

AVR ADC AVR মাইক্রোকন্ট্রোলারকে এনালগ ভোল্টেজকে ডিজিটাল ভ্যালুতে রূপান্তর করার অনুমতি দেয় যার সাথে বাইরের কোন অংশ নেই। ATmega8 একটি 10-বিট ধারাবাহিক আনুমানিক বৈশিষ্ট্য ADC. ATmega8 এর PortC এ 7 টি চ্যানেল ADC আছে এডিসির একটি আলাদা এনালগ সাপ্লাই ভোল্টেজ পিন, AVCC আছে। AVCC অবশ্যই VCC থেকে ± 0.3V এর বেশি আলাদা নয়। AVCC ভোল্টেজ রেফারেন্স হিসাবে ব্যবহৃত হয়। ADC ক্রমাগত চালানোর জন্য সেট করা যেতে পারে (ফ্রি-রানিং মোড) বা শুধুমাত্র একটি রূপান্তর করতে।

ধাপ 3: এডিসি রূপান্তর সূত্র

এডিসি রূপান্তর সূত্র
এডিসি রূপান্তর সূত্র

যেখানে ভিন হল নির্বাচিত ইনপুট পিনের ভোল্টেজ এবং নির্বাচিত ভোল্টেজ রেফারেন্স Vref

ধাপ 4: কিভাবে ATmega8 এ ADC কনফিগার করবেন?

কিভাবে ATmega8 এ ADC কনফিগার করবেন?
কিভাবে ATmega8 এ ADC কনফিগার করবেন?

ATmega8 এ ADC বাস্তবায়নের জন্য নিম্নলিখিত নিবন্ধগুলি ব্যবহার করা হয়

এডিসি মাল্টিপ্লেক্সার নির্বাচন

ধাপ 5: ADLAR নির্বাচন

ADLAR নির্বাচন
ADLAR নির্বাচন
ADLAR নির্বাচন
ADLAR নির্বাচন

ADC বাম সামঞ্জস্য ফলাফল ADLAR বিট ADC ডেটা রেজিস্টারে ADC রূপান্তর ফলাফলের উপস্থাপনাকে প্রভাবিত করে। ADLAR এ একটি লিখুন ফলাফল বাম সমন্বয় করতে। অন্যথায়, ফলাফল ঠিক সমন্বয় করা হয়

যখন একটি ADC রূপান্তর সম্পূর্ণ হয়, ফলাফল পাওয়া যায় ADCH এবং ADCL এ যখন ADCL পড়া হয়, ADCH ডেটা রেজিস্টার আপডেট হয় না যতক্ষণ না ADCH পড়া হয়। ফলস্বরূপ, যদি ফলাফলটি সামঞ্জস্য করা হয় এবং 8-বিটের বেশি নির্ভুলতার প্রয়োজন হয় না, তবে এটি ADCH পড়ার জন্য যথেষ্ট। অন্যথায়, প্রথমে ADCL পড়তে হবে, তারপর ADCH। এনালগ চ্যানেল সিলেকশন বিটস এই বিটের মান সিলেক্ট করে যে কোন এনালগ ইনপুট ADC- এর সাথে সংযুক্ত।

ধাপ 6: ADCSRA নির্বাচন

ADCSRA নির্বাচন
ADCSRA নির্বাচন
ADCSRA নির্বাচন
ADCSRA নির্বাচন

• বিট 7 - এডেন: এডিসি এই বিটটিকে একের কাছে লিখতে সক্ষম করে এডিসি সক্ষম করে। এটি শূন্যে লিখে এডিসি বন্ধ করে দেওয়া হয়

• বিট 6 - ADSC: ADC রূপান্তর শুরু একক রূপান্তর মোডে, প্রতিটি রূপান্তর শুরু করার জন্য এই বিটটি একটিতে লিখুন। ফ্রি রানিং মোডে, প্রথম রূপান্তর শুরু করতে এই বিটটি একজনকে লিখুন।

• বিট 5 - ADFR: ADC ফ্রি রানিং সিলেক্ট করুন যখন এই বিট সেট করা হয় (এক) ADC ফ্রি রানিং মোডে কাজ করে। এই মোডে, ADC ধারাবাহিকভাবে ডেটা রেজিস্টারগুলির নমুনা এবং আপডেট করে। এই বিট (শূন্য) সাফ করলে ফ্রি রানিং মোড বন্ধ হয়ে যাবে।

• বিট 4 - ADIF: ADC বাধা পতাকা এই বিট সেট করা হয় যখন একটি ADC রূপান্তর সম্পন্ন হয় এবং ডেটা রেজিস্টার আপডেট হয়। যদি ADIE বিট এবং SREG- এ I-bit সেট করা থাকে তাহলে ADC কনভার্সেশন কমপ্লিট ইন্টারাপ্ট কার্যকর করা হয়। ADIF হার্ডওয়্যার দ্বারা সাফ করা হয় যখন সংশ্লিষ্ট বাধা হ্যান্ডলিং ভেক্টর চালানো হয়। বিকল্পভাবে, এডিআইএফ পতাকায় একটি যৌক্তিক লেখা লিখে সাফ করা হয়।

• বিট 3-ADIE: ADC Interrupt Enable যখন এই বিটটি একজনকে লেখা হয় এবং SREG তে I-bit সেট করা হয়, তখন ADC কনভার্সেশন কমপ্লিট ইন্টারাপ্ট সক্রিয় হয়।

• বিট 2: 0 - ADPS2: 0: ADC প্রেসকলার নির্বাচন করুন বিটস ডেটশীট অনুযায়ী, এই প্রেসক্যালার সেট করা প্রয়োজন যাতে ADC ইনপুট ফ্রিকোয়েন্সি 50 KHz এবং 200 KHz এর মধ্যে থাকে। ADC ঘড়িটি ADPS2: 0 এর সাহায্যে সিস্টেম ঘড়ি থেকে উদ্ভূত হয়েছে।

ধাপ 7: আপনি যদি এডিসি মান নিতে চান তবে আপনাকে নীচে তালিকাভুক্ত কিছু কাজ সম্পন্ন করতে হবে

  • ADC মান সেট করুন
  • আউটপুট LED পিন কনফিগার করুন
  • এডিসি হার্ডওয়্যার কনফিগার করুন
  • ADC সক্ষম করুন
  • এনালগ থেকে ডিজিটাল রূপান্তর শুরু করুন
  • চিরকাল

যদি ADC মান বেশি হয় তাহলে মান সেট করুন, LED চালু করুন ELSE চালু করুন LED বন্ধ করুন

ধাপ 8: ADC মান সেট করুন

কোড: uint8_t ADCValue = 128;

ধাপ 9: আউটপুট LED পিন কনফিগার করুন

কোড: DDRB | = (1 << PB1);

ধাপ 10: এডিসি হার্ডওয়্যার কনফিগার করুন

এডিসি হার্ডওয়্যার কনফিগার করুন

এডিসির জন্য নিয়ন্ত্রণ রেজিস্টারে বিট সেটিংয়ের মাধ্যমে এটি করা হয়। প্রথমে, আসুন ADC এর জন্য প্রেসক্লার সেট করি। ডেটশীট অনুসারে, এই প্রেসকলারটি সেট করা প্রয়োজন যাতে ADC ইনপুট ফ্রিকোয়েন্সি 50 KHz এবং 200 KHz এর মধ্যে থাকে। ADC ঘড়িটি সিস্টেম ঘড়ি থেকে উদ্ভূত। 1MHz একটি সিস্টেম ফ্রিকোয়েন্সি সঙ্গে, 8 একটি prescaler 125 Khz একটি ADC ফ্রিকোয়েন্সি ফলে হবে। ADCSRA রেজিস্টারে ADPS বিট দ্বারা prescaling সেট করা হয়। ডেটশীট অনুযায়ী, 8 টি প্রেসকলার পেতে তিনটি ADPS2: 0 বিট 011 এ সেট করতে হবে।

কোড: ADCSRA | = (0 << ADPS2) | (1 << ADPS1) | (1 << ADPS0);

পরবর্তী, আসুন ADC রেফারেন্স ভোল্টেজ সেট করি। এটি ADMUX রেজিস্টারে REFS বিট দ্বারা নিয়ন্ত্রিত হয়। নিম্নলিখিতগুলি AVCC তে রেফারেন্স ভোল্টেজ সেট করে।

কোড: ADMUX | = (1 << REFS0);

মাল্টিপ্লেক্সারের মধ্য দিয়ে এডিসিতে প্রেরিত চ্যানেলটি সেট করতে, সেই অনুযায়ী ADMUX রেজিস্টারে MUX বিট সেট করতে হবে। যেহেতু আমরা এখানে ADC5 ব্যবহার করছি

কোড: ADMUX & = 0xF0; ADMUX | = 5;

এডিসিকে ফ্রি-রানিং মোডে রাখার জন্য, এডিসিএসআরএ রেজিস্টারে যথোপযুক্ত নামযুক্ত এডিএফআর বিট সেট করুন:

কোড: ADCSRA | = (1 << ADFR);

এডিসির মান পড়া সহজ করার জন্য একটি শেষ সেটিংস পরিবর্তন করা হবে। যদিও এডিসির 10 বিটের একটি রেজোলিউশন রয়েছে, তবে এই তথ্যের প্রায়শই প্রয়োজন হয় না। এই 10 বিট মানটি দুটি 8 বিট রেজিস্টার, ADCH এবং ADCL জুড়ে বিভক্ত। ডিফল্টরূপে, ADC মানের সর্বনিম্ন 8 বিট ADCL তে পাওয়া যায়, উপরের দুটিটি ADCH এর সর্বনিম্ন দুটি বিট। ADMUX রেজিস্টারে ADLAR বিট সেট করে, আমরা ADC মান বাম সারিবদ্ধ করতে পারি। এটি ADCH রেজিস্টারে পরিমাপের সর্বোচ্চ 8 বিট রাখে, বাকিগুলি ADCL রেজিস্টারে। যদি আমরা ADCH রেজিস্টারটি পড়ি, আমরা একটি 8 বিট মান পাই যা 0 থেকে 255 পর্যন্ত একটি সংখ্যা হিসাবে আমাদের 0 থেকে 5 ভোল্টের পরিমাপকে প্রতিনিধিত্ব করে। এখানে ADLAR বিট সেট করার কোড:

কোড:

ADMUX | = (1 << ADLAR); এই উদাহরণের জন্য ADC হার্ডওয়্যারের সেটআপ সম্পন্ন করে। এডিসি পরিমাপ শুরু করার আগে আরও দুটি বিট সেট করা দরকার।

ধাপ 11: ADC সক্ষম করুন

ADC সক্ষম করতে ADCSRA এ ADEN বিট সেট করুন:

কোড: ADCSRA | = (1 << ADEN);

ধাপ 12: এনালগ থেকে ডিজিটাল রূপান্তর শুরু করুন

ADC পরিমাপ শুরু করার জন্য, ADCSRA এ ADSC বিট সেট করা প্রয়োজন:

কোড: ADCSRA | = (1 << ADSC);

এই মুহুর্তে, ADC ক্রমাগত ADC5 এ উপস্থাপিত ভোল্টেজের নমুনা নেওয়া শুরু করবে। এই বিন্দু কোড এই মত দেখতে হবে:

ধাপ 13: চিরকাল

কেবলমাত্র এডিসি মান পরীক্ষা করা এবং একটি উচ্চ / নিম্ন ইঙ্গিত প্রদর্শনের জন্য LEDs সেট করা বাকি। যেহেতু ADCH এ ADC পড়ার সর্বোচ্চ মান 255, তাই ভোল্টেজ বেশি বা কম তা নির্ধারণের জন্য th এর একটি পরীক্ষা মান বেছে নেওয়া হয়েছিল। FOR লুপগুলিতে একটি সাধারণ IF/ELSE বিবৃতি আমাদের সঠিক LED চালু করতে দেবে:

কোড

যদি (ADCH> ADCValue)

{

পোর্টবি | = (1 << PB0); // LED চালু করুন

}

অন্য

{

PORTB & = ~ (1 << PB0); // LED বন্ধ করুন

}

ধাপ 14: শেষে সম্পূর্ণ কোড হল

কোড:

#অন্তর্ভুক্ত

int প্রধান (শূন্য)

{

uint8_t ADCValue = 128;

DDRB | = (1 << PB0); // আউটপুট হিসাবে LED1 সেট করুন

ADCSRA | = (0 << ADPS2) | (1 << ADPS1) | (1 << ADPS0); // ADC prescalar সেট করুন 8 - // 125KHz নমুনা হার 1MHz

ADMUX | = (1 << REFS0); // AVCC এ ADC রেফারেন্স সেট করুন

ADMUX | = (1 << ADLAR); // 8 বিট সহজে পড়ার অনুমতি দিতে ADC এর ফলাফল বাম সামঞ্জস্য করুন

ADMUX & = 0xF0;

ADMUX | = 5; // MUX মান ADC0 ব্যবহার করার জন্য পরিবর্তন করা প্রয়োজন

ADCSRA | = (1 << ADFR); // এডিসিকে ফ্রি-রানিং মোডে সেট করুন

ADCSRA | = (1 << ADEN); // এডিসি সক্ষম করুন

ADCSRA | = (1 << ADSC); // A2D রূপান্তর শুরু করুন যখন (1) // লুপ চিরতরে

{

যদি (ADCH> ADCValue)

{

পোর্টবি | = (1 << PB0); // LED1 চালু করুন

}

অন্য

{

PORTE & = ~ (1 << PB1); // LED1 বন্ধ করুন

}

}

রিটার্ন 0;

}

প্রথমে এই টিউটোরিয়ালটি এখানে ক্লিক করুন

প্রস্তাবিত: