সুচিপত্র:

Arduino AREF পিন: 6 ধাপ
Arduino AREF পিন: 6 ধাপ

ভিডিও: Arduino AREF পিন: 6 ধাপ

ভিডিও: Arduino AREF পিন: 6 ধাপ
ভিডিও: Control 10 output pins or relay using 10 push button switch with 1 Arduino input pin ANPB-V2 2024, নভেম্বর
Anonim
Arduino AREF পিন
Arduino AREF পিন

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

ধাপ 1: পুনর্বিবেচনা

রিভিশন!
রিভিশন!

আপনি মনে করতে পারেন যে আপনি সেন্সর থেকে বৈদ্যুতিক স্রোতের ভোল্টেজ পরিমাপ করতে Arduino analogRead () ফাংশন ব্যবহার করতে পারেন এবং তাই এনালগ ইনপুট পিনগুলির একটি ব্যবহার করে। AnalogRead () থেকে ফিরে আসা মান শূন্য থেকে 1023 এর মধ্যে হবে, শূন্য শূন্য ভোল্ট এবং 1023 ব্যবহার করা Arduino বোর্ডের অপারেটিং ভোল্টেজের প্রতিনিধিত্ব করে।

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

এটি একটি Arduino Uno কে USB এর সাথে সংযুক্ত করে এবং 5V এবং GND পিন জুড়ে ভোল্টেজ পরিমাপের জন্য একটি মাল্টিমিটার সেট করে সহজেই দেখানো যেতে পারে। কিছু বোর্ড 8. V V হিসাবে কম হবে, কিছু উচ্চ কিন্তু এখনও 5V এর নিচে। সুতরাং যদি আপনি নির্ভুলতার জন্য বন্দুক চালাচ্ছেন, ডিসি সকেট বা ভিন পিনের মাধ্যমে একটি বহিরাগত বিদ্যুৎ সরবরাহ থেকে আপনার বোর্ডকে শক্তি দিন - যেমন 9V ডিসি। তারপরে এটি পাওয়ার রেগুলেটর সার্কিটের মধ্য দিয়ে যাওয়ার পরে আপনার একটি সুন্দর 5V থাকবে, উদাহরণস্বরূপ চিত্রটি।

এটি গুরুত্বপূর্ণ কারণ যেকোনো analogRead () মানের সঠিকতা 5 V না থাকলে প্রভাবিত হবে উদাহরণস্বরূপ, যদি আপনার ভোল্টেজ 4.8V হয় - 0 ~ 1023 এর analogRead () পরিসীমা 0 ~ 4.8V এর সাথে সম্পর্কিত হবে এবং 0 ~ 5V নয়। এটি তুচ্ছ মনে হতে পারে, তবে যদি আপনি একটি সেন্সর ব্যবহার করেন যা একটি ভোল্টেজ হিসাবে একটি মান প্রদান করে (যেমন TMP36 তাপমাত্রা সেন্সর) - গণনা করা মান ভুল হবে। সুতরাং নির্ভুলতার স্বার্থে, একটি বাহ্যিক বিদ্যুৎ সরবরাহ ব্যবহার করুন।

ধাপ 2: কেন AnalogRead () 0 থেকে 1023 এর মধ্যে একটি মান ফেরত দেয়?

কেন AnalogRead () 0 এবং 1023 এর মধ্যে একটি মান ফেরত দেয়?
কেন AnalogRead () 0 এবং 1023 এর মধ্যে একটি মান ফেরত দেয়?

এটি এডিসির রেজোলিউশনের কারণে। রেজোলিউশন (এই নিবন্ধের জন্য) হল ডিগ্রী যা কিছু সংখ্যাসূচকভাবে উপস্থাপন করা যেতে পারে। উচ্চতর রেজোলিউশন, বৃহত্তর নির্ভুলতা যা দিয়ে কিছু প্রতিনিধিত্ব করা যায়। আমরা রেজোলিউশনের বিট সংখ্যার পরিপ্রেক্ষিতে রেজোলিউশন পরিমাপ করি।

উদাহরণস্বরূপ, একটি 1-বিট রেজোলিউশন শুধুমাত্র দুটি (একের ক্ষমতার দুটি) মান-শূন্য এবং একটিকে অনুমতি দেবে। একটি 2-বিট রেজোলিউশন চারটি (দুইটির ক্ষমতার দুটি) মান-শূন্য, এক, দুই এবং তিনটি অনুমোদন করবে। যদি আমরা দুই-বিট রেজোলিউশনের সাথে পাঁচ ভোল্ট পরিসীমা পরিমাপ করার চেষ্টা করি এবং পরিমাপ করা ভোল্টেজ চার ভোল্ট হয়, আমাদের ADC 3 এর একটি সংখ্যাসূচক মান ফেরত দেবে-কারণ চার ভোল্ট 3.75 এবং 5V এর মধ্যে পড়ে। ইমেজ দিয়ে এটি কল্পনা করা সহজ।

সুতরাং 2-বিট রেজোলিউশনের সাথে আমাদের উদাহরণ এডিসির সাথে, এটি কেবল চারটি সম্ভাব্য ফলমূলের ভোল্টেজকে উপস্থাপন করতে পারে। যদি ইনপুট ভোল্টেজ 0 এবং 1.25 এর মধ্যে পড়ে, ADC সংখ্যাসূচক 0 প্রদান করে; যদি ভোল্টেজ 1.25 এবং 2.5 এর মধ্যে পড়ে, ADC 1. এর একটি সংখ্যাসূচক মান প্রদান করে। আমাদের Arduino এর ADC পরিসীমা 0 ~ 1023 এর সাথে-আমাদের 1024 সম্ভাব্য মান আছে-অথবা 2 10 এর ক্ষমতার জন্য।

ধাপ 3: তাহলে AREF কি?

একটি দীর্ঘ কাহিনী সংক্ষিপ্ত করার জন্য, যখন আপনার আরডুইনো একটি এনালগ রিডিং নেয়, এটি রেফারেন্স ভোল্টেজ নামে পরিচিত অ্যানালগ পিনে ব্যবহৃত ভোল্টেজের তুলনা করে। সাধারণ এনালগ রিড ব্যবহারে, রেফারেন্স ভোল্টেজ হল বোর্ডের অপারেটিং ভোল্টেজ।

আরো জনপ্রিয় Arduino বোর্ড যেমন Uno, Mega, Duemilanove এবং Leonardo/Yún বোর্ডের জন্য, 5V এর অপারেটিং ভোল্টেজ। যদি আপনার একটি Arduino ডিউ বোর্ড থাকে, অপারেটিং ভোল্টেজ 3.3V হয়। আপনার যদি অন্য কিছু থাকে - Arduino পণ্য পৃষ্ঠাটি দেখুন বা আপনার বোর্ড সরবরাহকারীকে জিজ্ঞাসা করুন।

সুতরাং যদি আপনার 5V এর একটি রেফারেন্স ভোল্টেজ থাকে, analogRead () দ্বারা ফেরত প্রতিটি ইউনিট 0.00488 V. (এটি 1024 কে 5V এ ভাগ করে গণনা করা হয়) যদি আমরা 0 এবং 2, অথবা 0 এবং 4.6 এর মধ্যে ভোল্টেজ পরিমাপ করতে চাই? আমাদের ভোল্টেজ পরিসরের 100% কি করে ADC জানবে?

আর এর মধ্যে AREF পিনের কারণ লুকিয়ে আছে। AREF মানে অ্যানালগ রেফারেন্স। এটি আমাদের বাহ্যিক বিদ্যুৎ সরবরাহ থেকে আরডুইনোকে একটি রেফারেন্স ভোল্টেজ খাওয়ানোর অনুমতি দেয়। উদাহরণস্বরূপ, যদি আমরা সর্বোচ্চ 3.3V এর পরিসর দিয়ে ভোল্টেজ পরিমাপ করতে চাই, আমরা AREF পিনে একটি সুন্দর মসৃণ 3.3V খাওয়াই - সম্ভবত একটি ভোল্টেজ রেগুলেটর IC থেকে।

তারপর এডিসির প্রতিটি ধাপ প্রায় 3.22 মিলিভোল্টের প্রতিনিধিত্ব করবে (1024 কে 3.3 এ ভাগ করুন)। মনে রাখবেন যে আপনার সর্বনিম্ন রেফারেন্স ভোল্টেজ 1.1V হতে পারে। AREF এর দুটি রূপ আছে - অভ্যন্তরীণ এবং বাহ্যিক, তাই আসুন সেগুলি পরীক্ষা করে দেখি।

ধাপ 4: বাহ্যিক AREF

একটি বাহ্যিক AREF যেখানে আপনি Arduino বোর্ডে একটি বাহ্যিক রেফারেন্স ভোল্টেজ সরবরাহ করেন। এটি একটি নিয়ন্ত্রিত বিদ্যুৎ সরবরাহ থেকে আসতে পারে, অথবা যদি আপনার 3.3V প্রয়োজন হয় তবে আপনি এটি Arduino এর 3.3V পিন থেকে পেতে পারেন। আপনি যদি বাহ্যিক বিদ্যুৎ সরবরাহ ব্যবহার করেন, তাহলে GND কে Arduino এর GND পিনের সাথে সংযুক্ত করতে ভুলবেন না। অথবা যদি আপনি Arduno এর 3.3V উৎস ব্যবহার করেন - শুধু 3.3V পিন থেকে AREF পিনে একটি জাম্পার চালান।

বাহ্যিক AREF সক্রিয় করতে, অকার্যকর সেটআপ () এ নিম্নলিখিতগুলি ব্যবহার করুন:

analogReference (বহিরাগত); // রেফারেন্স ভোল্টেজের জন্য AREF ব্যবহার করুন

এটি AREF পিনের সাথে আপনি যা কিছু সংযুক্ত করেছেন তার জন্য রেফারেন্স ভোল্টেজ সেট করে - যা অবশ্যই 1.1V এবং বোর্ডের অপারেশন ভোল্টেজের মধ্যে একটি ভোল্টেজ থাকবে খুব গুরুত্বপূর্ণ নোট - একটি বহিরাগত ভোল্টেজ রেফারেন্স ব্যবহার করার সময়, আপনাকে অবশ্যই এনালগ রেফারেন্স সেট করতে হবে বহিরাগত analogRead () ব্যবহার করার আগে। এটি আপনাকে সক্রিয় অভ্যন্তরীণ রেফারেন্স ভোল্টেজ এবং AREF পিন সংক্ষিপ্ত করতে বাধা দেবে, যা বোর্ডের মাইক্রোকন্ট্রোলারকে ক্ষতিগ্রস্ত করতে পারে। আপনার আবেদনের জন্য প্রয়োজন হলে, আপনি AREF- এর জন্য বোর্ডের অপারেটিং ভোল্টেজে ফিরে যেতে পারেন (অর্থাৎ - স্বাভাবিক অবস্থায় ফিরে আসুন)

analogReference (DEFAULT);

এখন কর্মস্থলে বাহ্যিক AREF প্রদর্শন করা। একটি 3.3V AREF ব্যবহার করে, নিম্নলিখিত স্কেচ A0 থেকে ভোল্টেজ পরিমাপ করে এবং মোট AREF এবং গণনা করা ভোল্টেজের শতাংশ প্রদর্শন করে:

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

লিকুইডক্রিস্টাল এলসিডি (8, 9, 4, 5, 6, 7);

int analoginput = 0; // আমাদের এনালগ পিন

int analogamount = 0; // সঞ্চয় ইনকামিং মান ভাসা শতাংশ = 0; // আমাদের শতাংশ মূল্য ভাসমান ভোল্টেজ = 0 সংরক্ষণ করতে ব্যবহৃত; // ভোল্টেজ মান সংরক্ষণ করতে ব্যবহৃত

অকার্যকর সেটআপ()

{lcd.begin (16, 2); analogReference (বহিরাগত); // রেফারেন্স ভোল্টেজের জন্য AREF ব্যবহার করুন}

অকার্যকর লুপ ()

{lcd.clear (); analogamount = analogRead (analoginput); শতাংশ = (analogamount/1024.00)*100; ভোল্টেজ = analogamount*3.222; // মিলিভোল্টে lcd.setCursor (0, 0); lcd.print ("AREF এর%:"); lcd.print (শতাংশ, 2); lcd.setCursor (0, 1); lcd.print ("A0 (mV):"); lcd.println (ভোল্টেজ, 2); বিলম্ব (250); }

উপরের স্কেচের ফলাফল ভিডিওতে দেখানো হয়েছে।

ধাপ 5: অভ্যন্তরীণ AREF

আমাদের Arduino বোর্ডের মাইক্রোকন্ট্রোলারগুলি 1.1V এর অভ্যন্তরীণ রেফারেন্স ভোল্টেজ তৈরি করতে পারে এবং আমরা এটি AREF কাজের জন্য ব্যবহার করতে পারি। কেবল লাইনটি ব্যবহার করুন:

analogReference (অভ্যন্তরীণ);

Arduino মেগা বোর্ডের জন্য, ব্যবহার করুন:

analogReference (ইন্টার্নাল 1V1);

অকার্যকর সেটআপ () এবং আপনি বন্ধ। আপনার যদি আরডুইনো মেগা থাকে তবে সেখানে একটি 2.56V রেফারেন্স ভোল্টেজ পাওয়া যায় যা দিয়ে সক্রিয় করা হয়:

analogReference (ইন্টার্নাল 2V56);

পরিশেষে - আপনার AREF পিন থেকে ফলাফল স্থির করার আগে, সর্বদা একটি পরিচিত ভাল মাল্টিমিটারের বিপরীতে রিডিংগুলি ক্রমাঙ্কন করুন।

উপসংহার

AREF ফাংশন আপনাকে এনালগ সংকেত পরিমাপের সাথে আরও নমনীয়তা দেয়।

এই পোস্টটি আপনার জন্য নিয়ে এসেছে pmdway.com - নির্মাতারা এবং ইলেকট্রনিক্স উত্সাহীদের জন্য সবকিছু, বিশ্বব্যাপী বিনামূল্যে বিতরণ সহ।

প্রস্তাবিত: