কোনও ভোল্টে এডিসি রূপান্তরটি কি +5 ভি পিনের আসল মানের উপর নির্ভর করে?


13

প্রশ্নাবলী:

  1. এডিসি রূপান্তরটি কি ভোল্টেজ হিসাবে গণনা করে +5 ভি পিনের প্রকৃত ভোল্টেজের উপর নির্ভর করে?
  2. যদি হ্যাঁ, বোর্ড থেকে সেই ভোল্টেজ পাওয়ার গ্রহণযোগ্য পদ্ধতি কী?

পটভূমি / বিস্তারিত:

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

পরীক্ষা সার্কিট

এখানে একটি নোকিয়া 5110 স্ক্রিন রয়েছে যা নীচের খুব সাধারণ স্কেচ থেকে ভোল্টেজ প্রদর্শন করে।

void setup() {
  Serial.begin(9600);
  display.begin();
  // Init done

  // You can change the contrast around to adapt the display
  // for the best viewing!
  display.setContrast(50);

  // Text display tests
  display.setTextSize(1);
  display.setTextColor(BLACK);
}


void loop() {
  display.clearDisplay();   // Clears the screen and buffer
  display.setCursor(0,0);
  display.print("Vin=");
  int rawVIN = analogRead(VIN);
  float floatVin = (rawVIN*4.75)/1023.0;
  display.println(floatVin);
  Serial.println(rawVIN);
  display.display();
  delay(1000);
}
  • আমি একটি ডিভিএম ব্যবহার করে ব্যাটারির ভোল্টেজ পরিমাপ করেছি এবং এটি 4.13 ভি, তবুও ন্যানো 4.35 ভি রিপোর্ট করেছে।
  • আমার ব্যাটারি এবং আরডুইনোর মধ্যে একটি সাধারণ গ্রাউন্ড রয়েছে।
  • ভোল্টেজ পরীক্ষা করার সংযোগটি ভেসে উঠতে পারে বলে বন্য ওঠানামা বন্ধ করার জন্য আমার কাছে একটি ডাউন ডাউন রোধ রয়েছে (> 10 কিলো)

কিছু তদন্তের পরে আমি দেখতে পেলাম যে +5 ভি প্রকৃতপক্ষে 4.75 ভি আউটপুট করছে এবং আমার স্কেচটি এর থেকে পরিবর্তন করেছে

float v = (rawVIN*5.0)/1024.0;

প্রতি

float v = (rawVIN*4.75)/1024.0;

এবং আরডুইনোতে ভোল্টেজ পড়া এখন সঠিক ছিল। আমি এটি করিনি কারণ আমি যা করেছি তা বুঝতে পেরেছি, আমি এটি করেছি কারণ আমার একটি কুঁচকী ছিল এটির মানটি সঠিকটিকে পরিবর্তিত হতে পারে।


3
একটি পক্ষ হিসাবে আপনি 1024 না দিয়ে 1024 দিয়ে বিভক্ত হওয়া উচিত This এটি একটি ভুল যা আবারও একটি ওভারের উপর পুনরাবৃত্তি হয়, সম্ভবত ভুলটি আরডিনো উদাহরণগুলিতে হওয়া থেকে উদ্ভূত হয়। সূত্র? AVR এর জন্য ডেটাশিট।
টম কার্পেন্টার

@ টমকার্পেন্টার আমি মনে করি এটি গণনা এবং ডেস্কের বিরুদ্ধে মাথা ঘুরিয়ে দেওয়ার দীর্ঘ সময় পরে কিছু পড়ার ফলস্বরূপ - আমি 1024 দিয়ে শুরু করেছি তবে আপনি 1023 দিয়ে শেষ দেখেছেন - আমি আমার প্রশ্নটি সংশোধন করব ।
ক্যারিবিউ

উত্তর:


16

আরডুইনোর অভ্যন্তরের এডিসি ভোল্টেজ পরিমাপ করে না, বরং ভোল্টেজের অনুপাত । ভেরিফ পিনে অ্যানালগ ইনপুটটিতে ভোল্টেজ থেকে অনুপাত।

ডিফল্ট কনফিগারেশনে, Vref পিনটি অভ্যন্তরীণভাবে +5 ভি লাইনের সাথে আবদ্ধ। আপনি এর পরিবর্তে অভ্যন্তরীণ রেফারেন্সটিকে ভেরেফ হিসাবে ব্যবহার করতে বেছে নিতে পারেন :

analogReference(INTERNAL);

এই রেফারেন্সটি প্রায় 1.1 ভি, এবং +5 ভির উপর ওঠানামা থেকে বেশ প্রতিরোধক The

আপনার ব্যাটারি পরীক্ষকের জন্য, যদি আপনি কিছু ধরণের "নিরঙ্কুশ" পরিমাপ চান, আপনি পরিমাপ করা ভোল্টেজ 1.1 ভি এর নীচে রয়েছে তা নিশ্চিত করতে আপনি অভ্যন্তরীণ রেফারেন্স এবং একটি ভোল্টেজ বিভাজক ব্যবহার করতে পারেন ensure

সম্পাদনা করুন : আর একটি বিকল্প যা ভোল্টেজ বিভাজকের প্রয়োজন হয় না তা হ'ল এনালগ ইনপুট এবং অভ্যন্তরীণ 1.1 ভি "ব্যান্ডগ্যাপ" রেফারেন্স উভয়ই পরিমাপ করার জন্য রেফারেন্স হিসাবে ভিসি ব্যবহার করা । ভিসির বিপরীতে 1.1 ভি পরিমাপ করা ভিসি পরিমাপের একটি পরোক্ষ উপায়। এটি আরডুইনো কোর লাইব্রেরি দ্বারা সমর্থিত নয়, তবে আপনি সরাসরি এডিসির নিয়ন্ত্রণ রেজিস্টারগুলিতে প্রোগ্রামিং করে এটি করতে পারেন:

// Return the supply voltage in volts.
float read_vcc()
{
    const float V_BAND_GAP = 1.1;     // typical
    ADMUX  = _BV(REFS0)    // ref = Vcc
           | 14;           // channel 14 is the bandgap reference
    ADCSRA |= _BV(ADSC);   // start conversion
    loop_until_bit_is_clear(ADCSRA, ADSC);  // wait until complete
    return V_BAND_GAP * 1024 / ADC;
}

সাবধান যে বুটের পরে প্রথম পড়াটি বোগাস হতে পারে।


তাত্ক্ষণিক জবাবের জন্য ধন্যবাদ :) এটি এখন সঠিক ধারণা দেয় এবং ব্যাখ্যা করে কেন আমার কোড (ফজ) সমন্বয় করে আমি সঠিক উত্তর পাই। এটি এনক্রিস্টের উত্তরের সাথে মিলিত হয়ে আমাকে চালিয়ে যাওয়া দরকার।
ক্যারিবিউ

9

একটি ইউএসবি চালিত আরডুইনো ন্যানোর একটি এডিসি ভোল্টেজ রেফারেন্স থাকবে যা আগত ইউএসবি ভোল্টেজের +/- 5% সহনতার কারণে নির্ভর করা যায় না। তার উপরে, ন্যানোর একটি এমবিআর 05520 শোটকি ডায়োড (ডি 1) রয়েছে যা তার নিজস্ব উত্পাদন সহনশীলতা, তাপমাত্রা এবং আপনার বোর্ডের বর্তমান অঙ্কের উপর নির্ভর করে 0.1 এবং 0.5 V এর মধ্যে নেমে যাবে।

এ ব্যাপারে তুমি কি করতে পারবে?

এমসিইউ অন-বোর্ডে আরডুইনো ন্যানো একটি এটিমেগ 328 পি। ন্যানোর এডিসি বিভিন্ন উপলভ্য রেফারেন্স অনুসারে এর এনালগ ভোল্টেজ রিডিংগুলি স্কেল করতে পারে (এবং আপনি যেটি আরও ভাল তার জন্য উপযুক্ত চয়ন করতে পারেন)। আপনি analogReference (type)ফাংশনটির মাধ্যমে এটি করতে পারেন এবং নীচের রেফারেন্সগুলির মধ্যে চয়ন করেছেন type:

  • ডিফল্ট: 5 ভোল্টের ডিফল্ট অ্যানালগ রেফারেন্স (5 ভি আরডুইনো বোর্ডগুলিতে) বা 3.3 ভোল্ট (3.3 ভি আরডুইনো বোর্ডগুলিতে)
  • অভ্যন্তরীণ: একটি অন্তর্নির্মিত রেফারেন্স, এটিমেগা 168 বা এটিমেগা 328 এ 1.1 ভোল্ট এবং এটিমেগা 8-তে 2.56 ভোল্টের সমান (আরডুইনো মেগায় উপলভ্য নয়) [...]
  • বহিরাগত: এআরএফ পিনে প্রয়োগ করা ভোল্টেজ (কেবলমাত্র 0 থেকে 5 ভি) রেফারেন্স হিসাবে ব্যবহৃত হয়।

সূত্র: অ্যানালগ রেফারেন্স

এটিএমগা 328 এর ভিতরে যা আছে তার জন্য এটি অ্যাডিসি স্কিম্যাটিক যাতে আপনি দেখতে পাচ্ছেন সেখানে কী চলছে:

এটিমেগ 328 পি এডিসি ব্লক

সূত্র: এটিমেগ 328 ডাটাশিট

সুতরাং সরল সমাধান হ'ল আপনি যে ভোল্টেজটি ইন্টারন্যাল 1.1 ভি রেফারেন্সের নীচে পরিমাপ করতে চান তা পেতে একটি দুর্বল ভোল্টেজ বিভাজক তৈরি করছে এবং তারপরে সে analogReferenceঅনুযায়ী কনফিগার করবে ।

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

বোনাস

তবে, আপনার যদি আরও ভোল্টেজ রেফারেন্সের প্রয়োজন হয় এটিটিমেগা 328 এর অভ্যন্তরীণ 1.1 ভি ব্যান্ডগ্যাপ রেফারেন্স আপনি এখনও ভাগ্যের বাইরে রয়েছেন। অপশনটি বোর্ডের FT232RL থেকে 3.3 ভি এলডিও নিয়ন্ত্রক আউটপুট ব্যবহার করা হবে যা হেডারের 14 পিনে আপনার জন্য উপলব্ধ, তবে আমি এটি বিশ্বাসযোগ্য বলে মনে করি না। FT232RL উপাত্তপত্র 3.0 এ নির্দিষ্ট করে এটা - 3.6 ভী (নামমাত্র 3.3 v)

সুতরাং একটি সর্বজনীন সমাধান হ'ল সস্তা টিএল 431 এর উপর ভিত্তি করে একটি বাহ্যিক ভোল্টেজ রেফারেন্স তৈরি করা । এটি আপনাকে একটি +/- 1% যথার্থতার সাথে 4.0 - 4.25 ভি পর্যন্ত একটি নির্ভরযোগ্য রেফারেন্স দিতে পারে।

বাহ্যিক ভোল্টেজ রেফারেন্স সার্কিট এর মতো সহজ কিছু হতে পারে (এবং টিএল 431 ব্রেডবোর্ডে বন্ধুত্বপূর্ণ টো -২২ প্যাকেজে উপলব্ধ!):

টিএল 431-ভিত্তিক শান্ট ভোল্টেজ নিয়ন্ত্রক


এই বিস্তৃত উত্তরের জন্য এবং আমি যে বিকল্পগুলি গ্রহণ করতে পারি তার জন্য ধন্যবাদ - আমি সম্ভবত সহজ হয়ে যাব এবং 0 এবং 1.1 এর মধ্যে আমার ইনপুট স্কেল করতে একটি ভোল্টেজ বিভাজক করব। Resisteor মান সম্পর্কে ইঙ্গিত আমার কাছে মূল্যবান ছিল - ধন্যবাদ
ক্যারিবু

3

আমার atmega328P এডিসি রূপান্তরকারী সম্পর্কে একটি পৃষ্ঠা আছে । পৃষ্ঠার কিছুটা নিচে আমি ভোল্টেজ রেফারেন্স বর্ণনা করি। বিভিন্ন ধরণের রেফারেন্স ভোল্টেজ সরবরাহ করতে আপনি TL431 চিপ ব্যবহার করতে পারেন, উদাহরণস্বরূপ 4 ভি:

4 ভি ভোল্টেজ রেফারেন্স

প্রতিরোধকগুলিকে পরিবর্তন করে আপনি অন্যান্য ভোল্টেজ পেতে পারেন (দেখে মনে হচ্ছে আপনি প্রায় 4.2 ভি চাইছেন)।

আউটপুট ভোল্টেজ ইনপুট ভোল্টেজ দ্বারা প্রভাবিত হয় না (এই ক্ষেত্রে 5 ভি)।

লিঙ্কযুক্ত পৃষ্ঠাটি বর্ণনা করে যে আপনি কীভাবে প্রতিরোধকের মান পছন্দ করতে পারেন।


2

ভোল্টে অ্যাডক কাউন্টের রূপান্তরটি কি + 5 ভি পিনের আসল ভোল্টেজের উপর নির্ভর করে?

হ্যাঁ এবং না: অ্যাডিসি মডিউলটি ভেরেফের যত্ন করে, যা ভিডিডি, অভ্যন্তরীণ বা বাহ্যিকভাবে সরবরাহ করা যেতে পারে।

যদি হ্যাঁ বোর্ড থেকে সেই ভোল্টেজ পাওয়ার গ্রহণযোগ্য পদ্ধতি কী?

অ্যাডসি মডিউলটি কনফিগার করে। ডিভাইস ডেটাশিটে রেজিস্টার / বিট থাকা উচিত যা তার জন্য সেট আপ করা দরকার।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.