সুচিপত্র:
- ধাপ 1: একটি ADC কি?
- ধাপ 2: AVR- এ মাইক্রোকন্ট্রোলারে ADC কিভাবে কাজ করে
- ধাপ 3: এডিসি রূপান্তর সূত্র
- ধাপ 4: কিভাবে ATmega8 এ ADC কনফিগার করবেন?
- ধাপ 5: ADLAR নির্বাচন
- ধাপ 6: ADCSRA নির্বাচন
- ধাপ 7: আপনি যদি এডিসি মান নিতে চান তবে আপনাকে নীচে তালিকাভুক্ত কিছু কাজ সম্পন্ন করতে হবে
- ধাপ 8: ADC মান সেট করুন
- ধাপ 9: আউটপুট LED পিন কনফিগার করুন
- ধাপ 10: এডিসি হার্ডওয়্যার কনফিগার করুন
- ধাপ 11: ADC সক্ষম করুন
- ধাপ 12: এনালগ থেকে ডিজিটাল রূপান্তর শুরু করুন
- ধাপ 13: চিরকাল
- ধাপ 14: শেষে সম্পূর্ণ কোড হল
ভিডিও: AVR মাইক্রোকন্ট্রোলারে ADC- এর ভূমিকা - নতুনদের জন্য: 14 টি ধাপ
2024 লেখক: John Day | [email protected]. সর্বশেষ পরিবর্তিত: 2024-01-30 08:01
এই টিউটোরিয়ালে আপনি এভিআর মাইক্রোকন্ট্রোলারে এডিসি সবকিছু জানতে পারবেন
ধাপ 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 বাস্তবায়নের জন্য নিম্নলিখিত নিবন্ধগুলি ব্যবহার করা হয়
এডিসি মাল্টিপ্লেক্সার নির্বাচন
ধাপ 5: ADLAR নির্বাচন
ADC বাম সামঞ্জস্য ফলাফল ADLAR বিট ADC ডেটা রেজিস্টারে ADC রূপান্তর ফলাফলের উপস্থাপনাকে প্রভাবিত করে। ADLAR এ একটি লিখুন ফলাফল বাম সমন্বয় করতে। অন্যথায়, ফলাফল ঠিক সমন্বয় করা হয়
যখন একটি ADC রূপান্তর সম্পূর্ণ হয়, ফলাফল পাওয়া যায় ADCH এবং ADCL এ যখন ADCL পড়া হয়, ADCH ডেটা রেজিস্টার আপডেট হয় না যতক্ষণ না ADCH পড়া হয়। ফলস্বরূপ, যদি ফলাফলটি সামঞ্জস্য করা হয় এবং 8-বিটের বেশি নির্ভুলতার প্রয়োজন হয় না, তবে এটি ADCH পড়ার জন্য যথেষ্ট। অন্যথায়, প্রথমে ADCL পড়তে হবে, তারপর ADCH। এনালগ চ্যানেল সিলেকশন বিটস এই বিটের মান সিলেক্ট করে যে কোন এনালগ ইনপুট ADC- এর সাথে সংযুক্ত।
ধাপ 6: 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;
}
প্রথমে এই টিউটোরিয়ালটি এখানে ক্লিক করুন
প্রস্তাবিত:
কোভিড সেফটি হেলমেট পার্ট 1: টিঙ্কারক্যাড সার্কিটের একটি ভূমিকা !: ২০ টি ধাপ (ছবি সহ)
কোভিড সেফটি হেলমেট পার্ট 1: টিঙ্কারক্যাড সার্কিটের একটি ভূমিকা! শেখার সেরা উপায়গুলির মধ্যে একটি হল, করা। সুতরাং, আমরা প্রথমে আমাদের নিজস্ব প্রকল্প ডিজাইন করব: th
ভূমিকা - গোপ্রো সেশনের জন্য DIY গিম্বাল মাউন্ট, ইত্যাদি: 5 টি ধাপ (ছবি সহ)
ভূমিকা - গোপ্রো সেশনের জন্য DIY গিম্বাল মাউন্ট, ইত্যাদি।: আমি এমন একটি সমাধান খুঁজতে খুব বেশি সময় ব্যয় করেছি যা কোনও সেল ফোন গিম্বালের সাথে কাজ করবে - GoPro সেশন মাউন্ট করার একটি উপায়। আমি অবশেষে নিজের তৈরি করার সিদ্ধান্ত নিলাম। একই মাউন্ট অন্যান্য GoPro ক্যামেরার জন্যও কাজ করবে - শুধু রাবার ব্যান্ড দিয়ে মাউন্ট করুন। আমার আছে
হামিংবার্ড কন্ট্রোলার সহ প্রাথমিক বিদ্যালয়ের শিক্ষার্থীদের জন্য রোবটিক্সের ভূমিকা: 18 টি ধাপ
হামিংবার্ড কন্ট্রোলার সহ প্রাথমিক বিদ্যালয়ের শিক্ষার্থীদের জন্য রোবটিক্সের পরিচিতি: আজ বাজারে বেশিরভাগ রোবোটিক্স সরঞ্জাম ব্যবহারকারীদের তাদের হার্ড ড্রাইভে নির্দিষ্ট সফ্টওয়্যার ডাউনলোড করার প্রয়োজন হয়। হামিংবার্ড রোবোটিক কন্ট্রোলারের সৌন্দর্য হল এটি একটি ওয়েব-ভিত্তিক কম্পিউটার যেমন ক্রোমবুক ব্যবহার করে চালানো যায়। এটাও হয়েছে
অ্যান্ড্রয়েডের জন্য ক্যামস্ক্যানারের ভূমিকা: 11 টি ধাপ
অ্যান্ড্রয়েডের জন্য ক্যামস্ক্যানারের ভূমিকা: অ্যান্ড্রয়েডের জন্য ক্যামস্ক্যানারের ভূমিকা
নিজেকে 12V -এর জন্য পুনর্নির্মাণের পরিবর্তে LED লাইট স্ট্রিংগুলির জন্য 12V-to-AC- লাইন বৈদ্যুতিন সংকেতের মেরু বদল করার জন্য নিজেকে বোঝান: 3 ধাপ
নিজেকে 12V এর জন্য রি-ওয়ারিংয়ের পরিবর্তে LED লাইট স্ট্রিংগুলির জন্য 12V-to-AC- লাইন বৈদ্যুতিন সংকেতের মেরু বদল করার জন্য নিজেকে বোঝান: আমার পরিকল্পনাটি সহজ ছিল। আমি একটি প্রাচীর-চালিত LED আলোর স্ট্রিংকে টুকরো টুকরো করে কাটতে চেয়েছিলাম এবং 12 ভোল্ট বন্ধ করার জন্য এটিকে পুনরায় চালিত করেছিলাম। বিকল্প ছিল একটি পাওয়ার ইনভার্টার ব্যবহার করা, কিন্তু আমরা সবাই জানি তারা ভয়ানক অদক্ষ, তাই না? ঠিক? নাকি তারা?