جدول المحتويات:

Arduino و TI ADS1110 16 بت ADC: 6 خطوات
Arduino و TI ADS1110 16 بت ADC: 6 خطوات

فيديو: Arduino و TI ADS1110 16 بت ADC: 6 خطوات

فيديو: Arduino و TI ADS1110 16 بت ADC: 6 خطوات
فيديو: Массимо Банци: Как Arduino пробуждает воображение 2024, يوليو
Anonim
Arduino و TI ADS1110 16 بت ADC
Arduino و TI ADS1110 16 بت ADC

في هذا البرنامج التعليمي ، ندرس استخدام Arduino للعمل مع Texas Instruments ADS1110 - محول IC صغير للغاية ولكنه مفيد 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 (مضخم الكسب القابل للبرمجة).

إذا كنت تقيس الفولتية أو تجري التجارب فقط ، فاتركها على أنها صفر للحصول على 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 عبارة عن ADC 16 بت ، فإنه يقوم بإرجاع البيانات التي تزيد عن 2 بايت - ثم يتبعها بقيمة سجل التكوين. لذلك إذا طلبت ثلاثة بايت ، فستعود المجموعة بأكملها. تكون البيانات في شكل "مكمل اثنين" ، وهي طريقة لاستخدام الأرقام الموقعة مع النظام الثنائي.

يتم تحويل هذين البايتين بواسطة بعض العمليات الحسابية البسيطة. عند أخذ العينات عند 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" # تعريف ads1110 0x48 الجهد العائم ، البيانات ؛ بايت مرتفع ، بايت منخفض ، configRegister ؛ إعداد باطل () {Serial.begin (9600) ؛ Wire.begin () ؛ } حلقة فارغة () {Wire.requestFrom (ads1110، 3)؛ while (Wire.available ()) // تأكد من أن جميع البيانات تأتي في {highbyte = Wire.read () ؛ // بايت مرتفع * B11111111 منخفض بايت = Wire.read () ؛ // تهيئة منخفضة البايت = Wire.read () ؛ }

البيانات = ارتفاع بايت * 256 ؛

البيانات = بيانات + بايت منخفض ؛ Serial.print ("البيانات >>") ؛ Serial.println (بيانات ، DEC) ؛ Serial.print ("الجهد >>") ؛ الجهد = البيانات * 2.048 ؛ الجهد = الجهد / 32768.0 ؛ Serial.print (الجهد ، DEC) ؛ Serial.println ("V") ؛ تأخير (1000) ؛ }

الخطوة الخامسة:

صورة
صورة

بمجرد التحميل ، قم بتوصيل الإشارة للقياس وافتح الشاشة التسلسلية - سيتم تقديمك بشيء مشابه لصورة الشاشة التسلسلية الموضحة في هذه الخطوة.

إذا كنت بحاجة إلى تغيير كسب مضخم الكسب الداخلي القابل للبرمجة الخاص بـ 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 فولت على Vin- فسيكون الجهد الناتج 1 فولت (مع ضبط الكسب على 1).

مرة أخرى ، نأمل أن تكون قد وجدت هذا الاهتمام ، وربما يكون مفيدًا. هذا المنشور يقدمه لك pmdway.com - كل شيء للصانعين وعشاق الإلكترونيات ، مع التوصيل المجاني في جميع أنحاء العالم.

موصى به: