সুচিপত্র:
- ধাপ 1:
- ধাপ 2: কনফিগারেশন রেজিস্টার
- ধাপ 3: ডেটা নিবন্ধন
- ধাপ 4: একক সমাপ্ত ADC মোড
- ধাপ 5:
- ধাপ 6: ডিফারেনশিয়াল এডিসি মোড
ভিডিও: Arduino এবং TI ADS1110 16-বিট ADC: 6 ধাপ
2024 লেখক: John Day | [email protected]. সর্বশেষ পরিবর্তিত: 2024-01-30 08:00
এই টিউটোরিয়ালে আমরা টেক্সাস ইন্সট্রুমেন্টস ADS1110- এর সাথে কাজ করার জন্য Arduino ব্যবহার করে পরীক্ষা করি-একটি অবিশ্বাস্যভাবে ক্ষুদ্র কিন্তু দরকারী 16-বিট এনালগ-টু-ডিজিটাল কনভার্টার আইসি।
এটি 2.7 এবং 5.5 V এর মধ্যে কাজ করতে পারে তাই এটি Arduino ডিউ এবং অন্যান্য লোয়ার-ভোল্টেজ ডেভেলপমেন্ট বোর্ডের জন্যও ভাল। আরও কিছু চালিয়ে যাওয়ার আগে, দয়া করে ডেটা শীট (পিডিএফ) ডাউনলোড করুন কারণ এটি এই টিউটোরিয়ালের সময় দরকারী এবং উল্লেখ করা হবে। ADS1110 আপনাকে Arduino এর 10-বিট ADC- এর প্রস্তাবের চেয়ে আরও সঠিক ADC এর বিকল্প দেয়-এবং এটি ব্যবহার করা অপেক্ষাকৃত সহজ। তবে এটি শুধুমাত্র SOT23-6 এর একটি খালি অংশ হিসাবে উপলব্ধ।
ধাপ 1:
ভাল খবর হল যে আপনি একটি খুব সুবিধাজনক ব্রেকআউট বোর্ডে মাউন্ট করা ADS1110 অর্ডার করতে পারেন। ADS1110 যোগাযোগের জন্য I2C বাস ব্যবহার করে। এবং মাত্র ছয়টি পিন থাকায় আপনি বাসের ঠিকানা সেট করতে পারবেন না - পরিবর্তে, আপনি ADS1110 এর ছয়টি রূপ থেকে নির্বাচন করতে পারেন - প্রত্যেকটি তাদের নিজস্ব ঠিকানা দিয়ে (ডেটা শীটের পৃষ্ঠা দুইটি দেখুন)।
আপনি উপরের ছবিতে দেখতে পাচ্ছেন, আমাদের "EDO" চিহ্নিত করা হয়েছে যা বাসের ঠিকানা 1001000 বা 0x48h এর সাথে মেলে। এবং উদাহরণ সার্কিটগুলির সাথে আমরা I2C বাসে 10kΩ পুল-আপ প্রতিরোধক ব্যবহার করেছি।
আপনি ADS1110 কে একক-সমাপ্ত বা ডিফারেনশিয়াল ADC হিসাবে ব্যবহার করতে পারেন-তবে প্রথমে আমাদের কনফিগারেশন রেজিস্টার যা বিভিন্ন গুণাবলী এবং ডেটা রেজিস্টার নিয়ন্ত্রণ করতে ব্যবহৃত হয় তা পরীক্ষা করতে হবে।
ধাপ 2: কনফিগারেশন রেজিস্টার
ডাটা শীটের একাদশ পৃষ্ঠায় ঘুরুন। কনফিগারেশন রেজিস্টারটি আকারে এক বাইট এবং ADS1110 পাওয়ার-সাইকেলে রিসেট হওয়ার সাথে সাথে-আপনার প্রয়োজন ডিফল্টের থেকে আলাদা হলে আপনাকে রেজিস্টারটি পুনরায় সেট করতে হবে। ডেটা শীটটি বেশ সুন্দরভাবে বানান করেছে … বিট 0 এবং 1 পিজিএ (প্রোগ্রামযোগ্য লাভ পরিবর্ধক) এর জন্য লাভ সেটিং নির্ধারণ করে।
আপনি যদি কেবল ভোল্টেজ পরিমাপ করছেন বা পরীক্ষা করছেন, তাহলে 1V/V লাভের জন্য এগুলিকে শূন্য হিসাবে ছেড়ে দিন। পরবর্তীতে, ADS1110 এর ডেটা রেট বিট 2 এবং 3 দ্বারা নিয়ন্ত্রিত হয়। যদি আপনার ক্রমাগত নমুনা চালু থাকে, এটি ADC দ্বারা নেওয়া প্রতি সেকেন্ডে নমুনার সংখ্যা নির্ধারণ করে।
একটি Arduino Uno নিয়ে কিছু পরীক্ষা -নিরীক্ষার পর আমরা দেখতে পেলাম যে ADC থেকে ফেরত আসা মানগুলি দ্রুততম হার ব্যবহার করার সময় কিছুটা বন্ধ ছিল, তাই অন্যথায় প্রয়োজন না হলে এটি 15 SPS হিসাবে ছেড়ে দিন। বিট 4 সেট হয় ক্রমাগত নমুনা (0) অথবা এক-বন্ধ নমুনা (1)। 5 এবং 6 বিট উপেক্ষা করুন, তবে এগুলি সর্বদা 0 হিসাবে সেট করা হয়।
অবশেষে বিট 7-যদি আপনি এক-স্যাম্পলিং মোডে থাকেন, তাহলে এটি 1 টি নমুনা অনুরোধের জন্য সেট করুন-এবং এটি পড়লে আপনাকে জানানো হবে যে ফেরত দেওয়া ডেটা নতুন (0) বা পুরাতন (1)। আপনি যাচাই করতে পারেন যে পরিমাপ করা মানটি একটি নতুন মান - যদি কনফিগারেশন বাইটের প্রথম বিটটি ডেটার পরে আসে 0, এটি নতুন। যদি এটি 1 ফেরত দেয় তবে ADC রূপান্তর শেষ হয়নি।
ধাপ 3: ডেটা নিবন্ধন
যেহেতু ADS1110 একটি 16-বিট ADC, এটি দুটি বাইটের উপর ডেটা ফেরত দেয়-এবং তারপর কনফিগারেশন রেজিস্টারের মান অনুসরণ করে। সুতরাং আপনি যদি তিন বাইটের অনুরোধ করেন তাহলে পুরো লট ফিরে আসে। ডেটা "দুই'র পরিপূরক" আকারে, যা বাইনারি সহ স্বাক্ষরিত সংখ্যা ব্যবহার করার একটি পদ্ধতি।
সেই দুটি বাইটকে রূপান্তর করা কিছু সাধারণ গণিত দ্বারা করা হয়। 15 এসপিএসে নমুনা দেওয়ার সময়, ADS1110 (ভোল্টেজ নয়) দ্বারা ফেরত মান -32768 এবং 32767 এর মধ্যে পড়ে। মানটির উচ্চতর বাইট 256 দ্বারা গুণিত হয়, তারপর নিম্ন বাইটে যোগ করা হয় -যা পরে 2.048 দ্বারা গুণিত হয় এবং পরিশেষে 32768 দ্বারা বিভক্ত। আতঙ্কিত হবেন না, যেহেতু আমরা আসন্ন উদাহরণ স্কেচে এটি করি।
ধাপ 4: একক সমাপ্ত ADC মোড
এই মোডে আপনি একটি ভোল্টেজ পড়তে পারেন যা শূন্য এবং 2.048 V এর মধ্যে পড়ে (যা ADS1110 এর জন্য অন্তর্নির্মিত রেফারেন্স ভোল্টেজও হয়)। উদাহরণ সার্কিট সহজ (ডেটা শীট থেকে)।
I2C বাসে 10kΩ পুল-আপ প্রতিরোধক ভুলবেন না। নিম্নলিখিত স্কেচটি ADS1110 ডিফল্ট মোডে ব্যবহার করে, এবং কেবল পরিমাপ করা ভোল্টেজ প্রদান করে:
// উদাহরণ 53.1 - ADS1110 একক পার্শ্বযুক্ত ভোল্টমিটার (0 ~ 2.048VDC) #অন্তর্ভুক্ত "Wire.h" #সংজ্ঞায়িত 1111 0x48 ভাসমান ভোল্টেজ, ডেটা; বাইট highbyte, lowbyte, configRegister; অকার্যকর সেটআপ () {Serial.begin (9600); Wire.begin (); } অকার্যকর লুপ () {Wire.requestFrom (ads1110, 3); যখন (Wire.available ()) // নিশ্চিত করুন যে সমস্ত ডেটা {highbyte = Wire.read (); // উচ্চ বাইট * B11111111 lowbyte = Wire.read (); // কম বাইট configRegister = Wire.read (); }
ডেটা = হাইবাইট * 256;
ডেটা = ডেটা + লোবাইট; সিরিয়াল.প্রিন্ট ("ডেটা >>"); Serial.println (ডেটা, DEC); সিরিয়াল.প্রিন্ট ("ভোল্টেজ >>"); ভোল্টেজ = ডেটা * 2.048; ভোল্টেজ = ভোল্টেজ / 32768.0; সিরিয়াল.প্রিন্ট (ভোল্টেজ, ডিইসি); Serial.println ("V"); বিলম্ব (1000); }
ধাপ 5:
একবার আপলোড হয়ে গেলে, সিরিয়াল মনিটর পরিমাপ করতে এবং খুলতে সংকেতটি সংযুক্ত করুন - আপনাকে এই ধাপে দেখানো সিরিয়াল মনিটর ছবির অনুরূপ কিছু উপস্থাপন করা হবে।
আপনার যদি ADC- এর অভ্যন্তরীণ প্রোগ্রামযোগ্য লাভ পরিবর্ধকের লাভ পরিবর্তন করতে হয় - আপনাকে কনফিগারেশন রেজিস্টারে একটি নতুন বাইট লিখতে হবে:
Wire.beginTransmission (ads1110); Wire.write (কনফিগারেশন বাইট); Wire.endTransmission ();
ADC ডেটা অনুরোধ করার আগে। এটি হবে 0x8D, 0x8E বা 0x8F যথাক্রমে 2, 4 এবং 8 লাভের মান - এবং 0x8C ব্যবহার করে ADS1110 আবার ডিফল্টে রিসেট করুন।
ধাপ 6: ডিফারেনশিয়াল এডিসি মোড
এই মোডে আপনি দুটি ভোল্টেজের মধ্যে পার্থক্য পড়তে পারেন যা প্রতিটি শূন্য এবং 5 V এর মধ্যে পড়ে। উদাহরণ সার্কিটটি সহজ (ডেটা শীট থেকে)।
আমাদের অবশ্যই এখানে (এবং ডেটা শীটে) লক্ষ্য করতে হবে যে ADS1110 ইনপুটগুলির মধ্যে নেতিবাচক ভোল্টেজ গ্রহণ করতে পারে না। আপনি একই ফলাফলের জন্য আগের স্কেচ ব্যবহার করতে পারেন- এবং ফলে ভোল্টেজ হবে ভিন-এর মান ভিন+থেকে বিয়োগ করা হবে। উদাহরণস্বরূপ, যদি আপনার ভিন+ তে 2 ভি এবং ভিনে 1 ভি থাকে- ফলস্বরূপ ভোল্টেজ 1 V হবে (লাভ 1 সেট করে)।
আবারও আমরা আশা করি আপনি এই আগ্রহ খুঁজে পেয়েছেন, এবং সম্ভবত দরকারী। এই পোস্টটি আপনার জন্য নিয়ে এসেছে pmdway.com - নির্মাতারা এবং ইলেকট্রনিক্স উত্সাহীদের জন্য সবকিছু, বিশ্বব্যাপী বিনামূল্যে বিতরণ সহ।
প্রস্তাবিত:
কিভাবে একটি টেবিল তৈরি এবং Insোকানো যায় এবং মাইক্রোসফট অফিস ওয়ার্ড 2007 এ সেই টেবিলে অতিরিক্ত কলাম এবং/অথবা সারি যোগ করা হয়: 11 টি ধাপ
কিভাবে একটি টেবিল তৈরি এবং Insোকানো যায় এবং মাইক্রোসফট অফিস ওয়ার্ড 2007 এ সেই টেবিলে অতিরিক্ত কলাম এবং/অথবা সারি যোগ করা হয়: আপনি কি কখনো এমন অনেক ডেটা পেয়েছেন যার সাথে আপনি কাজ করছেন এবং নিজেকে ভেবেছেন … " আমি কিভাবে সব করতে পারি এই ডেটাগুলি আরও ভাল দেখায় এবং বুঝতে সহজ হবে? " যদি তাই হয়, তাহলে মাইক্রোসফ্ট অফিস ওয়ার্ড 2007 এর একটি টেবিল আপনার উত্তর হতে পারে
প্রসেসিং এবং আরডুইনো সংযোগ এবং 7 সেগমেন্ট এবং Servo GUI কন্ট্রোলার তৈরি করুন: 4 টি ধাপ
প্রসেসিং এবং আরডুইনো সংযোগ করা এবং 7 সেগমেন্ট এবং সার্ভো GUI কন্ট্রোলার তৈরি করুন: কিছু প্রকল্পের জন্য আপনাকে Arduino ব্যবহার করতে হবে কারণ এটি একটি সহজ প্রোটোটাইপিং প্ল্যাটফর্ম প্রদান করে কিন্তু Arduino এর সিরিয়াল মনিটরে গ্রাফিক্স প্রদর্শন করতে বেশ সময় লাগতে পারে এবং এটি করাও কঠিন। আপনি Arduino সিরিয়াল মনিটর bu এ গ্রাফ প্রদর্শন করতে পারেন
Arduino এবং PCF8591 ADC DAC IC: 7 ধাপ
Arduino এবং PCF8591 ADC DAC IC: আপনি কি কখনও আপনার Arduino প্রকল্পে আরো এনালগ ইনপুট পিন চেয়েছিলেন, কিন্তু একটি মেগা জন্য ফর্ক আউট করতে চান নি? অথবা আপনি এনালগ সংকেত তৈরি করতে চান? তারপরে আমাদের টিউটোরিয়ালের বিষয়টি দেখুন - NXP PCF8591 IC এটি উভয় সমস্যার সমাধান করে
ওয়াইফাই এবং আইআর রিমোট এবং অ্যান্ড্রয়েড অ্যাপ ব্যবহার করে নোডএমসিইউ এবং আইআর রিসিভারের সাথে রিলে কন্ট্রোল: 5 টি ধাপ (ছবি সহ)
ওয়াইফাই এবং আইআর রিমোট এবং অ্যান্ড্রয়েড অ্যাপ ব্যবহার করে নোডএমসিইউ এবং আইআর রিসিভারের সাথে 8 রিলে কন্ট্রোল: ওয়াইফাই এবং আইআর রিমোট এবং অ্যান্ড্রয়েড অ্যাপের মাধ্যমে নোডেমকু এবং আইআর রিসিভার ব্যবহার করে 8 রিলে সুইচ নিয়ন্ত্রণ করুন। এখানে
Arduino এবং প্রক্রিয়াকরণের সাথে তাপমাত্রা এবং আর্দ্রতা প্রদর্শন এবং ডেটা সংগ্রহ: 13 টি ধাপ (ছবি সহ)
Arduino এবং প্রক্রিয়াকরণের সাথে তাপমাত্রা এবং আর্দ্রতা প্রদর্শন এবং ডেটা সংগ্রহ: ভূমিকা: এটি একটি প্রকল্প যা একটি Arduino বোর্ড, একটি সেন্সর (DHT11), একটি উইন্ডোজ কম্পিউটার এবং প্রসেসিং (একটি বিনামূল্যে ডাউনলোডযোগ্য) প্রোগ্রাম ব্যবহার করে তাপমাত্রা, ডিজিটাল এবং আর্দ্রতা ডেটা প্রদর্শন করতে বার গ্রাফ ফর্ম, প্রদর্শন সময় এবং তারিখ এবং একটি গণনা সময় চালান