فهرست مطالب:

آردوینو و TI ADS1110 ADC 16 بیتی: 6 مرحله
آردوینو و TI ADS1110 ADC 16 بیتی: 6 مرحله

تصویری: آردوینو و TI ADS1110 ADC 16 بیتی: 6 مرحله

تصویری: آردوینو و TI ADS1110 ADC 16 بیتی: 6 مرحله
تصویری: مبدل انالوگ به دیجیتال (ADC) 2024, جولای
Anonim
آردوینو و TI ADS1110 ADC 16 بیتی
آردوینو و TI ADS1110 ADC 16 بیتی

در این آموزش ما استفاده از آردوینو برای کار با Texas Instruments ADS1110 را بررسی می کنیم-یک آی سی مبدل آنالوگ به دیجیتال 16 بیتی فوق العاده کوچک اما مفید.

می تواند بین 2.7 تا 5.5 ولت کار کند ، بنابراین برای Arduino Due و سایر بردهای توسعه ولتاژ پایین نیز مناسب است. قبل از ادامه کار ، لطفاً برگه اطلاعات (pdf) را بارگیری کنید زیرا مفید خواهد بود و در این آموزش به آن اشاره می شود. ADS1110 گزینه ADC دقیق تری را نسبت به ADC های 10 بیتی Arduino ارائه می دهد-و استفاده از آن نسبتاً آسان است. با این حال ، تنها در SOT23-6 به عنوان بخش برهنه موجود است.

مرحله 1:

تصویر
تصویر

خبر خوب این است که می توانید ADS1110 را که بر روی یک برد بسیار راحت نصب شده است سفارش دهید. ADS1110 برای ارتباط از گذرگاه I2C استفاده می کند. و از آنجا که تنها شش پین وجود دارد که نمی توانید آدرس گذرگاه را تعیین کنید - در عوض ، می توانید از بین شش نوع ADS1110 - هر کدام آدرس خود را انتخاب کنید (به صفحه دو صفحه برگه مراجعه کنید).

همانطور که در عکس بالا مشاهده می کنید ، نام ما "EDO" است که با آدرس اتوبوس 1001000 یا 0x48h مطابقت دارد. و با مدارهای مثال ما از مقاومتهای کششی 10kΩ در گذرگاه I2C استفاده کرده ایم.

شما می توانید از ADS1110 به عنوان یک ADC تک پایان یا دیفرانسیل استفاده کنید-اما ابتدا باید ثبت پیکربندی را که برای کنترل ویژگی های مختلف و ثبت داده استفاده می شود ، مورد بررسی قرار دهیم.

مرحله 2: ثبت نام پیکربندی

به صفحه یازدهم برگه اطلاعات بروید. اندازه پیکربندی یک بایت است و با تنظیم مجدد ADS1110 در یک چرخه قدرت-اگر نیازهای شما با پیش فرض ها متفاوت است ، باید ریستور را ریست کنید. برگه اطلاعات آن را کاملاً منظم بیان می کند … بیت های 0 و 1 تنظیم سود را برای PGA (تقویت کننده افزایش برنامه ریزی) تعیین می کنند.

اگر فقط ولتاژها را اندازه گیری می کنید یا آزمایش می کنید ، برای افزایش 1 ولت/ولت آنها را صفر بگذارید. در مرحله بعد ، سرعت داده برای ADS1110 با بیت های 2 و 3 کنترل می شود. اگر نمونه برداری مداوم روشن باشد ، این تعداد نمونه های گرفته شده توسط ADC را در ثانیه تعیین می کند.

پس از آزمایش با Arduino Uno متوجه شدیم که مقادیر برگشتی از ADC هنگام استفاده از سریعترین نرخ کمی خاموش است ، بنابراین آن را به عنوان 15 SPS بگذارید مگر اینکه به طور دیگری نیاز باشد. بیت 4 نمونه گیری مداوم (0) یا نمونه گیری یکبار (1) را تنظیم می کند. بیت های 5 و 6 را نادیده بگیرید ، اما همیشه آنها 0 هستند.

سرانجام بیت 7-اگر در حالت نمونه گیری یکبار مصرف هستید ، تنظیم آن روی 1 نمونه را درخواست می کند-و خواندن آن به شما می گوید که داده های برگشتی جدید (0) یا قدیمی (1) هستند. می توانید بررسی کنید که مقدار اندازه گیری شده مقدار جدیدی است - اگر اولین بیت بایت پیکربندی که بعد از داده 0 می آید ، جدید است. اگر 1 برگرداند ، تبدیل ADC به پایان نرسیده است.

مرحله 3: ثبت داده ها

از آنجا که ADS1110 یک ADC 16 بیتی است ، داده ها را بیش از دو بایت برمی گرداند-و سپس با مقدار ثبت پیکربندی دنبال می شود. بنابراین اگر سه بایت درخواست کنید کل مقدار برمی گردد. داده ها در فرم "مکمل دو" هستند ، که روشی برای استفاده از اعداد امضا شده با باینری است.

تبدیل آن دو بایت توسط چند ریاضی ساده انجام می شود. هنگام نمونه برداری با 15 SPS ، مقدار برگشتی توسط ADS1110 (نه ولتاژ) بین -32768 و 32767 کاهش می یابد. بایت بیشتر مقدار در 256 ضرب می شود ، سپس به بایت پایین اضافه می شود -که سپس در 2.048 ضرب می شود و در نهایت تقسیم بر 32768. نگران نباشید ، زیرا ما این کار را در طرح بعدی انجام می دهیم.

مرحله 4: حالت ADC تک پایان

حالت ADC تک پایان
حالت ADC تک پایان

در این حالت می توانید ولتاژ بین صفر تا 2.048 ولت را بخوانید (که اتفاقاً ولتاژ مرجع داخلی ADS1110 نیز می باشد). مدار نمونه ساده است (از برگه داده).

مقاومت های کششی 10kΩ در گذرگاه I2C را فراموش نکنید. طرح زیر از ADS1110 در حالت پیش فرض استفاده می کند و به سادگی ولتاژ اندازه گیری شده را برمی گرداند:

// مثال 53.1 - ولت متر یک طرفه ADS1110 (0 ~ 2.048VDC) #شامل "Wire.h" #تعریف ولتاژ شناور 0x48 010 ، داده ها ؛ بایت highbyte ، lowbyte ، configRegister؛ void setup () {Serial.begin (9600)؛ Wire.begin ()؛ } void loop () {Wire.requestFrom (ads1110، 3)؛ while (Wire.available ()) // اطمینان حاصل کنید که همه داده ها وارد {highbyte = Wire.read ()؛ // بایت بالا * B11111111 lowbyte = Wire.read ()؛ // کم بایت configRegister = Wire.read ()؛ }

data = highbyte * 256؛

data = data + lowbyte؛ Serial.print ("Data >>") ؛ Serial.println (داده ها ، DEC) ؛ Serial.print ("ولتاژ >>") ؛ ولتاژ = داده * 2.048 ؛ ولتاژ = ولتاژ / 32768.0 ؛ Serial.print (ولتاژ ، DEC) ؛ Serial.println ("V") ؛ تاخیر (1000) ؛ }

مرحله 5:

تصویر
تصویر

پس از بارگذاری ، سیگنال را برای اندازه گیری و باز کردن مانیتور سریال متصل کنید - چیزی شبیه به تصویر مانیتور سریال نشان داده شده در این مرحله به شما نشان داده می شود.

اگر نیاز به افزایش تقویت کننده افزایش قابل برنامه ریزی داخلی ADC دارید - باید یک بایت جدید در ثبت پیکربندی با استفاده از موارد زیر بنویسید:

Wire.beginTransmission (ads1110) ؛ Wire.write (بایت پیکربندی) ؛ Wire.endTransmission ()؛

قبل از درخواست داده های ADC این مقدار 0x8D ، 0x8E یا 0x8F برای افزایش مقدار به ترتیب 2 ، 4 و 8 است - و از 0x8C برای بازنشانی ADS1110 به حالت پیش فرض استفاده کنید.

مرحله 6: حالت ADC تفاضلی

حالت دیفرانسیل ADC
حالت دیفرانسیل ADC

در این حالت می توانید تفاوت بین دو ولتاژ که هر کدام بین صفر تا 5 ولت افت می کنند را بخوانید. مثال مثال ساده است (از برگه اطلاعات).

در اینجا (و در برگه داده) باید توجه داشته باشیم که ADS1110 نمی تواند ولتاژ منفی را در هر یک از ورودی ها بپذیرد. برای نتایج مشابه می توانید از طرح قبلی استفاده کنید- و ولتاژ حاصله مقدار Vin خواهد بود که از Vin+کم می شود. به عنوان مثال ، اگر 2 ولت روی Vin+ و 1 ولت روی وین داشته باشید ، ولتاژ حاصل 1 ولت (با افزایش روی 1) خواهد بود.

بار دیگر امیدواریم این مورد برای شما جالب بوده و احتمالاً مفید بوده است. این پست توسط pmdway.com برای شما ارسال شده است - همه چیز برای سازندگان و علاقه مندان به لوازم الکترونیکی ، با ارسال رایگان در سراسر جهان.

توصیه شده: