সুচিপত্র:

ইনফ্রা রেড রিমোট নিয়ন্ত্রিত রোবোকার ব্যবহার করে AVR (ATMEGA32) MCU: 5 টি ধাপ
ইনফ্রা রেড রিমোট নিয়ন্ত্রিত রোবোকার ব্যবহার করে AVR (ATMEGA32) MCU: 5 টি ধাপ

ভিডিও: ইনফ্রা রেড রিমোট নিয়ন্ত্রিত রোবোকার ব্যবহার করে AVR (ATMEGA32) MCU: 5 টি ধাপ

ভিডিও: ইনফ্রা রেড রিমোট নিয়ন্ত্রিত রোবোকার ব্যবহার করে AVR (ATMEGA32) MCU: 5 টি ধাপ
ভিডিও: LED TV মাস্টার রিমোট সেটিং | Master remote Very Easy Setup | RM-1306+ 2024, জুলাই
Anonim
AVR (ATMEGA32) MCU ব্যবহার করে ইনফ্রা রেড রিমোট নিয়ন্ত্রিত রোবোকার
AVR (ATMEGA32) MCU ব্যবহার করে ইনফ্রা রেড রিমোট নিয়ন্ত্রিত রোবোকার

বর্তমান প্রকল্পটি একটি ইনফ্রারেড (IR) রিমোট নিয়ন্ত্রিত রোবোকারের নকশা এবং বাস্তবায়নের বর্ণনা দেয় যা বিভিন্ন স্বয়ংক্রিয় মানহীন নিয়ন্ত্রণ অ্যাপ্লিকেশনের জন্য ব্যবহার করা যেতে পারে। আমি রিমোট কন্ট্রোল্ড রোবকার (বাম-ডান/সামনে-পিছনের গতি) ডিজাইন করেছি। পুরো সিস্টেমটি মাইক্রোকন্ট্রোলার (Atmega32) এর উপর ভিত্তি করে যা নিয়ন্ত্রণ ব্যবস্থাকে স্মার্ট এবং অন্যান্য অ্যাপ্লিকেশনের জন্য পরিবর্তন করা সহজ করে তোলে। এটি ব্যবহারকারীকে একটি RoboCar পরিচালনা বা নিয়ন্ত্রণ করতে সক্ষম করে এবং প্রায় 5 মিটার দূরে থেকে মেইন পাওয়ার সুইচটি পরিচালনা করে।

মূল শব্দ: আইআর ডিকোডার, AVR (Atmega32) মাইক্রোকন্ট্রোলার, টিভি রিমোট কন্ট্রোলার, ওয়্যারলেস কমিউনিকেশন

_

ধাপ 1: ইন্ট্রারেড কমিউনিকেশন

ইন্ট্রারেড কমিউনিকেশন
ইন্ট্রারেড কমিউনিকেশন

আইআর যোগাযোগ নীতি:

ক) আইআর ট্রান্সমিশন

একটি IR LED এর ট্রান্সমিটার তার সার্কিটের ভিতরে, যা প্রদত্ত প্রতিটি বৈদ্যুতিক পালসের জন্য ইনফ্রারেড আলো নির্গত করে। রিমোটের একটি বোতাম টিপে এই পালস তৈরি হয়, এইভাবে সার্কিটটি সম্পূর্ণ করে, LED কে পক্ষপাত প্রদান করে। পক্ষপাতদুষ্ট হওয়ার কারণে LED 940nm তরঙ্গদৈর্ঘ্যের আলোকে ডালের ধারাবাহিক হিসাবে নির্গত করে, যা বোতামটি চাপানো হয়। যাইহোক যেহেতু আইআর LED এর সাথে ইনফ্রারেড আলোর অন্যান্য উৎস যেমন আমাদের মানুষ, আলোর বাল্ব, সূর্য ইত্যাদি, প্রেরিত তথ্য হস্তক্ষেপ করা যেতে পারে। এই সমস্যার সমাধান হল মডুলেশন। প্রেরিত সংকেতটি 38 কিলোহার্টজ (অথবা 36 থেকে 46 কিলোহার্জের মধ্যে অন্য কোন ফ্রিকোয়েন্সি) এর ক্যারিয়ার ফ্রিকোয়েন্সি ব্যবহার করে সংশোধন করা হয়। নাড়ির সময়কালের জন্য আইআর এলইডি এই ফ্রিকোয়েন্সিতে দোলানোর জন্য তৈরি করা হয়। তথ্য বা হালকা সংকেত পালস প্রস্থ মডুলেটেড এবং 38 KHz ফ্রিকোয়েন্সি অন্তর্ভুক্ত। ইনফ্রারেড ট্রান্সমিশন বলতে ইলেক্ট্রোম্যাগনেটিক রেডিয়েশন বর্ণালীর অঞ্চলে তরঙ্গদৈর্ঘ্যে দৃশ্যমান আলোর চেয়ে বেশি, কিন্তু রেডিও তরঙ্গের চেয়ে খাটো শক্তিকে বোঝায়। অনুরূপভাবে, ইনফ্রারেড ফ্রিকোয়েন্সিগুলি মাইক্রোওয়েভের চেয়ে বেশি, কিন্তু দৃশ্যমান আলোর চেয়ে কম। বিজ্ঞানীরা ইনফ্রারেড বিকিরণ (আইআর) বর্ণালীকে তিনটি অঞ্চলে ভাগ করেছেন। তরঙ্গদৈর্ঘ্য মাইক্রনগুলিতে নির্দিষ্ট করা হয় (প্রতীক µ, যেখানে 1 µ = 10-6 মিটার) বা ন্যানোমিটারে (সংক্ষেপে এনএম, যেখানে 1 এনএম = 10-9 মিটার = 0.001 5)। নিকটবর্তী আইআর ব্যান্ডটি দৃশ্যমানের নিকটতম তরঙ্গদৈর্ঘ্যের পরিসরে শক্তি ধারণ করে, প্রায় 0.750 থেকে 1.300 5 (750 থেকে 1300 এনএম) পর্যন্ত। মধ্যবর্তী আইআর ব্যান্ড (মধ্য আইআর ব্যান্ডও বলা হয়) 1.300 থেকে 3.000 5 (1300 থেকে 3000 এনএম) পরিসরে শক্তি নিয়ে গঠিত। দূরবর্তী আইআর ব্যান্ড 2.000 থেকে 14.000 5 (3000 এনএম থেকে 1.4000 x 104nm) পর্যন্ত বিস্তৃত।

খ) IR অভ্যর্থনা

রিসিভারে একটি ফটো ডিটেক্টর থাকে যা একটি আউটপুট ইলেকট্রিক্যাল সিগন্যাল তৈরি করে কারণ এটিতে আলো ঘটে। ডিটেক্টরের আউটপুট একটি সংকীর্ণ ব্যান্ড ফিল্টার ব্যবহার করে ফিল্টার করা হয় যা ক্যারিয়ারের ফ্রিকোয়েন্সি নীচে বা উপরে সমস্ত ফ্রিকোয়েন্সি বাতিল করে (এই ক্ষেত্রে 38 KHz)। ফিল্টার করা আউটপুট তখন মাইক্রোকন্ট্রোলার বা মাইক্রোপ্রসেসরের মতো উপযুক্ত ডিভাইসে দেওয়া হয় যা পিসি বা রোবটের মতো ডিভাইস নিয়ন্ত্রণ করে। ফিল্টার থেকে আউটপুট ডাল পড়ার জন্য অসিলোস্কোপের সাথে সংযুক্ত করা যেতে পারে।

আইআর এর আবেদন:

ইনফ্রারেড বিভিন্ন ধরণের বেতার যোগাযোগ, পর্যবেক্ষণ এবং নিয়ন্ত্রণ অ্যাপ্লিকেশনগুলিতে ব্যবহৃত হয়। এখানে কিছু উদাহরন:

· হোম-বিনোদন রিমোট-কন্ট্রোল বক্স

· ওয়্যারলেস (লোকাল এরিয়া নেটওয়ার্ক)

Note নোটবুক কম্পিউটার এবং ডেস্কটপ কম্পিউটারের মধ্যে লিঙ্ক

· কর্ডলেস মডেম

· অনুপ্রবেশ ডিটেক্টর

· মোশন ডিটেক্টর

· ফায়ার সেন্সর

· নাইট-ভিশন সিস্টেম

· মেডিকেল ডায়াগনস্টিক সরঞ্জাম

· মিসাইল গাইডেন্স সিস্টেম

· ভূতাত্ত্বিক পর্যবেক্ষণ যন্ত্র

এক ডিভাইস থেকে অন্য ডিভাইসে আইআর ডেটা প্রেরণ করাকে কখনও কখনও বিমিং বলা হয়।

ধাপ 2: আইআর সেন্সর এবং এনইসি প্রোটোকল ফ্রোম্যাট

আইআর সেন্সর এবং এনইসি প্রটোকল ফ্রোম্যাট
আইআর সেন্সর এবং এনইসি প্রটোকল ফ্রোম্যাট
আইআর সেন্সর এবং এনইসি প্রোটোকল ফ্রোম্যাট
আইআর সেন্সর এবং এনইসি প্রোটোকল ফ্রোম্যাট
আইআর সেন্সর এবং এনইসি প্রটোকল ফ্রোম্যাট
আইআর সেন্সর এবং এনইসি প্রটোকল ফ্রোম্যাট
আইআর সেন্সর এবং এনইসি প্রটোকল ফ্রোম্যাট
আইআর সেন্সর এবং এনইসি প্রটোকল ফ্রোম্যাট

আইআর সেন্সর (চিত্র 1)

TSOP1738, SFH-5110-38 (38kHz)

TSOP সেন্সর বৈশিষ্ট্য:

  • প্রিম্প্লিফায়ার এবং ফটো ডিটেক্টর উভয়ই একক প্যাকেজে রয়েছে
  • PCM ফ্রিকোয়েন্সি জন্য অভ্যন্তরীণ ফিল্টার
  • বৈদ্যুতিক ক্ষেত্রের ব্যাঘাতের বিরুদ্ধে উন্নত ieldাল
  • টিটিএল এবং সিএমওএস সামঞ্জস্য
  • আউটপুট সক্রিয় কম কম বিদ্যুৎ খরচ
  • পরিবেষ্টিত আলোর বিরুদ্ধে উচ্চ প্রতিরোধ ক্ষমতা
  • ক্রমাগত তথ্য প্রেরণ সম্ভব

NEC প্রোটোকল:

এনইসি আইআর ট্রান্সমিশন প্রোটোকল মেসেজ বিটের পালস দূরত্ব এনকোডিং ব্যবহার করে। প্রতিটি পালস বিস্ফোরণের দৈর্ঘ্য 562.5µs, একটি ক্যারিয়ার ফ্রিকোয়েন্সি 38kHz (26.3µs)। যৌক্তিক বিটগুলি নিম্নরূপ প্রেরণ করা হয় (চিত্র 2):

  • লজিক্যাল '0' - একটি 562.5µs পালস বিস্ফোরিত হয় যার পরে 562.5µ স্পেস, মোট ট্রান্সমিট সময় 1.125ms
  • লজিক্যাল '1' - একটি 562.5µs পালস বিস্ফোরণের পরে 1.6875ms স্থান, মোট ট্রান্সমিট সময় 2.25ms

ক্যারিয়ার পালস 38kHz এ 21 চক্র নিয়ে গঠিত। ডালগুলি সাধারণত বর্তমান খরচ কমাতে 1: 4 এর একটি চিহ্ন/স্থান অনুপাত থাকে:

(চিত্র 3)

প্রতিটি কোড ক্রম একটি 9ms পালস দিয়ে শুরু হয়, যা AGC পালস নামে পরিচিত। এর পরে একটি 4.5ms নীরবতা রয়েছে:

(চিত্র 4)

তথ্য তারপর 32 বিট, একটি 16-বিট ঠিকানা একটি 16-বিট কমান্ড, যে ক্রমে তারা প্রেরণ করা হয় দেখানো হয় (বাম থেকে ডান):

(চিত্র 5)

ডেটা বিটগুলির চারটি বাইট প্রতিটিকে কমপক্ষে উল্লেখযোগ্য বিট পাঠানো হয়। চিত্র 1 একটি NEC IR ট্রান্সমিশন ফ্রেমের বিন্যাসকে ব্যাখ্যা করে, 00h (00000000b) এর ঠিকানা এবং ADH (10101101b) এর একটি কমান্ডের জন্য।

একটি বার্তা ফ্রেম প্রেরণের জন্য মোট 67.5ms প্রয়োজন। 16 বিট ঠিকানা (ঠিকানা + বিপরীত) এবং 16 বিট কমান্ড (কমান্ড + বিপরীত) প্রেরণের জন্য এটি 27ms প্রয়োজন।

(চিত্র 6)

ফ্রেম প্রেরণের জন্য প্রয়োজনীয় সময়:

ঠিকানার জন্য 16 বিট (ঠিকানা + বিপরীত) সময় প্রেরণের জন্য 27ms প্রয়োজন। কারণ (ঠিকানা + ঠিকানা বিপরীত) বা (কমান্ড + কমান্ড বিপরীত) সর্বদা 8 '0 এবং 8' 1 এর থাকবে (8 * 1.125ms) + (8 * 2.25ms) == 27 ms। এই মোট সময় অনুযায়ী ফ্রেম প্রেরণ করতে হবে (9ms +4.5ms +27ms +27ms) = 67.5 ms।

পুনরাবৃত্তি কোড: যদি রিমোট কন্ট্রোলারের চাবিটি হতাশ করে রাখা হয়, তাহলে একটি পুনরাবৃত্তি কোড জারি করা হবে, সাধারণত পালস ফেটে যাওয়ার পরে প্রায় 40 মিটার যা বার্তার শেষকে বোঝায়। একটি পুনরাবৃত্তি কোড 108ms বিরতিতে পাঠানো অব্যাহত থাকবে, যতক্ষণ না চাবি শেষ পর্যন্ত মুক্তি পায়। পুনরাবৃত্তি কোডটি নিম্নলিখিত ক্রমে গঠিত:

  • একটি 9ms নেতৃস্থানীয় পালস বিস্ফোরণ
  • একটি 2.25ms স্থান
  • একটি 562.5µs পালস বিস্ফোরণ স্থান শেষ (এবং সেইজন্য প্রেরিত পুনরাবৃত্তি কোড শেষ) চিহ্নিত করতে।

(চিত্র 7)

বিলম্ব গণনা (1ms):

ক্লক ফ্রিক = 11.0592 Mhz

মেশিন চক্র = 12

বিলম্ব = 1ms

TimerValue = 65536 - ((বিলম্ব * ClockFreq)/মেশিন সাইকেল) = 65536 - ((1ms * 11.0592Mhz)/12)

= 65536 - 921 = 0xFC67

ধাপ 3: L293D ব্যবহার করে ডিসি মোটর নিয়ন্ত্রণ

ডিসি মোটর নিয়ন্ত্রণ L293D ব্যবহার করে
ডিসি মোটর নিয়ন্ত্রণ L293D ব্যবহার করে

ডিসি মোটর

একটি ডিসি-মোটর বৈদ্যুতিক শক্তিকে যান্ত্রিক শক্তিতে রূপান্তরিত করে যা অনেক দরকারী কাজ করতে ব্যবহার করা যেতে পারে। এটি আমার রোবোকারের গো ফরওয়ার্ড/ব্যাকওয়ার্ডের মতো যান্ত্রিক আন্দোলন তৈরি করতে পারে। ডিসি মোটর 6V এবং 12V এর মত বিভিন্ন রেটিংয়ে আসে। এর দুটি তার বা পিন রয়েছে। আমরা ইনপুটের পোলারিটি উল্টে দিয়ে ঘূর্ণনের দিক উল্টাতে পারি।

এখানে আমরা L293D পছন্দ করি কারণ 600mA রেটিং ছোট ডিসি মোটর চালানোর জন্য ভাল এবং সুরক্ষা ডায়োডগুলি IC তে অন্তর্ভুক্ত করা হয়েছে। প্রতিটি পিনের বর্ণনা নিম্নরূপ: পিন সক্ষম করুন: এগুলি পিন নং। 1 এবং পিন নং। 9. পিন নং। 1 হাফ-এইচ ড্রাইভার 1 এবং 2 সক্ষম করতে ব্যবহৃত হয় (বাম দিকে এইচ ব্রিজ)। পিন নং 9 ব্যবহার করা হয় এইচ-ব্রিজ ড্রাইভার 3 এবং 4 সক্ষম করতে (ডান দিকে এইচ ব্রিজ)।

ধারণাটি সহজ, আপনি যদি একটি নির্দিষ্ট H সেতু ব্যবহার করতে চান তাহলে আপনাকে IC- তে পাওয়ার সাপ্লাই সহ সংশ্লিষ্ট সক্ষম পিনের একটি উচ্চ যুক্তি দিতে হবে। এই পিনটি PWM কৌশল ব্যবহার করে মোটরের গতি নিয়ন্ত্রণ করতেও ব্যবহার করা যেতে পারে। VCC1 (পিন 16): পাওয়ার সাপ্লাই পিন। এটি 5V সরবরাহের সাথে সংযুক্ত করুন। VCC2 (পিন 8): মোটরের জন্য পাওয়ার সাপ্লাই। মোটর রেটিং অনুযায়ী এটিতে +ve ভোল্টেজ প্রয়োগ করুন। আপনি যদি 12V এ আপনার মোটর চালাতে চান, এই পিনে 12V লাগান।

সার্কিটে বিদ্যুৎ সরবরাহের জন্য ব্যবহৃত ব্যাটারি ছাড়া সরাসরি ব্যাটারিতে মোটর চালানোও সম্ভব, শুধু সেই ব্যাটারির +ve টার্মিনালকে VCC2 পিনের সাথে সংযুক্ত করুন এবং উভয় ব্যাটারির GND সাধারণ করুন। (এই পিনে MAX ভোল্টেজ তার ডেটশীট অনুযায়ী 36V)। GND (Pins 4, 5, 12, 13): এদেরকে সার্কিটের সাধারণ GND এর সাথে সংযুক্ত করুন। ইনপুট (পিন 2, 7, 10, 15):

এগুলি ইনপুট পিন যার মাধ্যমে মাইক্রোকন্ট্রোলার বা অন্যান্য সার্কিট/আইসি দ্বারা নিয়ন্ত্রণ সংকেত দেওয়া হয়। উদাহরণস্বরূপ, যদি পিন 2 (প্রথম অর্ধেক এইচ ড্রাইভারের ইনপুট) তে আমরা যুক্তি 1 (5V) দেই, তাহলে আমরা প্রথম অর্ধেক এইচ ড্রাইভারের সংশ্লিষ্ট আউটপুট পিন অর্থাৎ পিন নম্বরে VCC2 এর সমান ভোল্টেজ পাব। 3. একইভাবে পিন 2 তে লজিক 0 (0V), পিন 3 এ 0V প্রদর্শিত হয়। আউটপুট (পিন 3, 6, 11, 14): আউটপুট পিন। ইনপুট সিগন্যাল অনুযায়ী আউটপুট সিগন্যাল আসে।

মোটর চলাচল A খ

-----------------------------------------------------------------------------------------

…………… থামুন: কম: কম

…… ঘড়ির কাঁটার দিকে: নিম্ন: উচ্চ

ঘড়ির কাঁটার বিপরীতে: উচ্চ: নিম্ন

…………….স্টপ: হাই: হাই

ধাপ 4: মোটর ড্রাইভার এবং আইআর সেন্সরের জন্য সার্কিট ডায়াগ্রাম

মোটর ড্রাইভার এবং আইআর সেন্সরের জন্য সার্কিট ডায়াগ্রাম
মোটর ড্রাইভার এবং আইআর সেন্সরের জন্য সার্কিট ডায়াগ্রাম
মোটর ড্রাইভার এবং আইআর সেন্সরের জন্য সার্কিট ডায়াগ্রাম
মোটর ড্রাইভার এবং আইআর সেন্সরের জন্য সার্কিট ডায়াগ্রাম
মোটর ড্রাইভার এবং আইআর সেন্সরের জন্য সার্কিট ডায়াগ্রাম
মোটর ড্রাইভার এবং আইআর সেন্সরের জন্য সার্কিট ডায়াগ্রাম

ATmega32 হল AVR বর্ধিত RISCarchitecture এর উপর ভিত্তি করে একটি লো-পাওয়ার CMOS 8-বিট মাইক্রোকন্ট্রোলার। একটি একক ঘড়ি চক্রের মধ্যে শক্তিশালী নির্দেশাবলী সম্পাদন করে, ATmega32 প্রতি এমএইচজে 1 এমআইপিএসের কাছাকাছি থ্রুপুট অর্জন করে যা সিস্টেম ডিজাইনারকে প্রক্রিয়াকরণের গতি বনাম বিদ্যুৎ খরচ অপ্টিমাইজ করার অনুমতি দেয়।

AVR কোর একটি সমৃদ্ধ নির্দেশ সেট 32 সাধারণ উদ্দেশ্য কাজ রেজিস্টার সঙ্গে একত্রিত। সমস্ত 32২ টি রেজিস্টার সরাসরি গাণিতিক লজিক ইউনিটের (ALU) সাথে সংযুক্ত, যার ফলে দুটি স্বাধীন রেজিস্টার এক ঘড়ির চক্রে সম্পাদিত একক নির্দেশে অ্যাক্সেস করা যায়। প্রচলিত সিআইএসসি মাইক্রোকন্ট্রোলারের চেয়ে দশগুণ দ্রুতগতির থ্রুপুট অর্জন করার সময় ফলপ্রসূ স্থাপত্য আরো কোড দক্ষ।

ATmega32 নিম্নলিখিত বৈশিষ্ট্যগুলি প্রদান করে:

  • 32 Kbytes ইন-সিস্টেম প্রোগ্রামযোগ্য ফ্ল্যাশ প্রোগ্রাম মেমরি পড়ার সময়-লেখার ক্ষমতা সহ,
  • 1024 বাইট EEPROM, 2K বাইট SRAM,
  • 32 সাধারণ উদ্দেশ্য I/O লাইন,
  • 32 সাধারণ উদ্দেশ্য কাজ নিবন্ধন,
  • বাউন্ডারিস্ক্যানের জন্য একটি JTAG ইন্টারফেস,
  • অন-চিপ ডিবাগিং সাপোর্ট এবং প্রোগ্রামিং, তুলনামূলক মোডের সাথে তিনটি নমনীয় টাইমার/কাউন্টার, অভ্যন্তরীণ এবং বাহ্যিক বাধা, একটি সিরিয়াল প্রোগ্রামযোগ্য USART, একটি বাইট ওরিয়েন্টেড দুই-তারের সিরিয়াল ইন্টারফেস, একটি 8-চ্যানেল,
  • প্রোগ্রামেবল লাভের সাথে -চ্ছিক ডিফারেনশিয়াল ইনপুট পর্যায়ের সাথে 10-বিট ADC (শুধুমাত্র TQFP প্যাকেজ),
  • অভ্যন্তরীণ অসিলেটর সহ একটি প্রোগ্রামযোগ্য ওয়াচডগ টাইমার,
  • একটি এসপিআই সিরিয়াল পোর্ট, এবং
  • ছয়টি সফটওয়্যার নির্বাচনযোগ্য পাওয়ার সেভিং মোড।

    • নিষ্ক্রিয় মোড USART এর অনুমতি দেওয়ার সময় CPU বন্ধ করে দেয়,
    • দুই তারের ইন্টারফেস, এ/ডি কনভার্টার,
    • SRAM,
    • টাইমার/কাউন্টার,
    • এসপিআই পোর্ট, এবং
    • কাজ চালিয়ে যাওয়ার জন্য ব্যাহত সিস্টেম।
    • পাওয়ার-ডাউন মোড রেজিস্টারের বিষয়বস্তু সংরক্ষণ করে কিন্তু অসিলেটরকে জমে রাখে, পরবর্তী বহিরাগত বাধা বা হার্ডওয়্যার রিসেট না হওয়া পর্যন্ত অন্যান্য সমস্ত চিপ ফাংশন অক্ষম করে।
    • পাওয়ার-সেভ মোডে, অ্যাসিঙ্ক্রোনাস টাইমার চলতে থাকে, যা ব্যবহারকারীকে টাইমার বেস বজায় রাখতে দেয় যখন বাকি ডিভাইস ঘুমিয়ে থাকে।
    • এডিসি নয়েজ রিডাকশন মোড সিপিইউ এবং এসিঙ্ক্রোনাস টাইমার এবং এডিসি ব্যতীত সমস্ত আই/ও মডিউল বন্ধ করে দেয়, যাতে এডিসি রূপান্তরের সময় স্যুইচিং শব্দ কম হয়।
    • স্ট্যান্ডবাই মোডে, ক্রিস্টাল/রেজোনেটর অসিলেটর চলছে যখন বাকি ডিভাইস ঘুমাচ্ছে। এটি স্বল্প-বিদ্যুত ব্যবহারের সাথে খুব দ্রুত শুরু করার অনুমতি দেয়।
    • এক্সটেন্ডেড স্ট্যান্ডবাই মোডে, প্রধান অসিলেটর এবং অ্যাসিঙ্ক্রোনাস টাইমার উভয়ই চলতে থাকে।

সমস্ত সম্পর্কিত সার্কিট এখানে দেওয়া হয় এবং প্রধান সার্কিট (atmega32) দেওয়া হয়।

ধাপ 5: এভিআর প্রোগ্রাম

এভিআর প্রোগ্রাম
এভিআর প্রোগ্রাম
এভিআর প্রোগ্রাম
এভিআর প্রোগ্রাম

1. "রিমোট সেন্সর" এর জন্য:

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

#অন্তর্ভুক্ত "remote.h"

// গ্লোবাল অস্থির স্বাক্ষরবিহীন int টাইম; // প্রধান টাইমার, 10us এ সময় সঞ্চয় করে, // ISR (TIMER0_COMP) দ্বারা আপডেট করা অস্থির স্বাক্ষরবিহীন বিট নং; // পরবর্তী বিআইটি -এর অস্থির স্বাক্ষরবিহীন স্বাক্ষরযুক্ত চর বাইটনো; // বর্তমান বাইটের অবস্থান

অস্থির স্বাক্ষরবিহীন চর IrData [4]; // Ir প্যাকেটের চারটি ডেটা বাইট // 2-বাইট ঠিকানা 2-বাইট ডেটা অস্থির স্বাক্ষরবিহীন চর IrCmdQ [QMAX]; // চূড়ান্ত কমান্ড রিসিভ (বাফার)

উদ্বায়ী স্বাক্ষরবিহীন চর PrevCmd; // পুনরাবৃত্তির জন্য ব্যবহৃত

// নির্দিষ্ট সময়ের জন্য একটি কী চাপার পরেই পুনরাবৃত্তি শুরু করার জন্য ব্যবহৃত ভেরিয়েবলগুলি

উদ্বায়ী স্বাক্ষরবিহীন চর পুনরাবৃত্তি; // 1 = হ্যাঁ 0 = কোন অস্থির স্বাক্ষরবিহীন চার RCount; // পুনরাবৃত্তি গণনা

উদ্বায়ী চর QFront = -1, QEnd = -1;

অস্থির স্বাক্ষরবিহীন চর রাজ্য; // রিসিভারের অবস্থা

অস্থির স্বাক্ষরবিহীন চার এজ; // বাধার প্রান্ত [RISING = 1 অথবা FALLING = 0]

উদ্বায়ী স্বাক্ষরবিহীন int স্টপ;

/***************************************************** *********************************************** / /*ফাংশন স্টার্টস* / / **************************************************** **************************************************

অকার্যকর RemoteInit () {

চর i; জন্য (i = 0; i <4; i ++) IrData = 0;

স্টপ = 0; রাজ্য = IR_VALIDATE_LEAD_HIGH; প্রান্ত = 0; পুনরাবৃত্তি = 0;

// সেটআপ টাইমার 1 // ------------ TCCR0 | = ((1 <

টিমস্ক | = (1 <

OCR0 = TIMER_COMP_VAL; // মান তুলনা করুন

স্বাক্ষরবিহীন চার GetRemoteCmd (char wait) {স্বাক্ষরবিহীন char cmd;

যদি (অপেক্ষা করুন) যখন (QFront ==-1); অন্যথায় যদি (QFront ==-1) রিটার্ন (RC_NONE);

cmd = IrCmdQ [QFront];

যদি (QFront == QEnd) QFront = QEnd = -1; অন্য {যদি (QFront == (QMAX-1)) QFront = 0; অন্যথায় QFront ++; }

cmd ফেরত;

}

2. প্রধান ():

int main (void) {

uint8_t cmd = 0; DDRB = 0x08;

DDRD = 0x80;

DDRC = 0x0f; PORTC = 0x00;

while (1) // Infinite Loop to active IR-sensor {

cmd = GetRemoteCmd (1);

সুইচ (cmd) {

কেস xx: {// BOT এগিয়ে যায় // Ch+ btn forwardmotor ();

বিরতি; // উভয় মোটর ফরওয়ার্ড দিকনির্দেশনায়

}

………………………………………………….

………………………………………………….

………………………………………………….

ডিফল্ট: PORTC = 0x00; বিরতি; // বাম এবং ডান উভয় মোটর থেমে আছে}

}

}/*প্রধানের শেষ*/

……………………………………………………………………………………………………………………

// এটি একটি মৌলিক মডেল, কিন্তু আমি এটি PWM মোডে ব্যবহার করতে পারি।

//……………………………………………..আনন্দ কর……………………………………………………//

প্রস্তাবিত: