وصف شركة العاصمة. وصف بروتوكول ADC

22.12.2023 الشاشات

تحتوي وحدات التحكم الدقيقة STM32 على وحدة ADC قوية تتمتع بأداء جيد حقًا وميزات مثيرة للاهتمام:

  • 18 قناة إدخال (16 خارجية و2 داخلية)
  • القرار 12 بت
  • أوضاع التحويل المختلفة:
    1. مره واحده
    2. مستمر
    3. بواسطة الزناد
    4. بواسطة الموقت
  • محاذاة مريحة للبتات النتيجة
  • وبطبيعة الحال، توليد جميع أنواع المقاطعات والإشارات لـ DMA
  • سرعة الرقمنة - ما يصل إلى 0.9 MSPS مع إمكانية الالتقاط ووقت التحويل القابل للبرمجة
  • المعايرة التلقائية
  • وضع مسح قائمة الإدخال
  • الوكالة الدولية للطاقة التناظرية

تنشأ الحاجة إلى هذه الوحدة في كثير من الأحيان: وذلك ببساطة لأن الطبيعة من حولنا ليست منفصلة، ​​ولكنها مستمرة، وعادة ما تنتج جميع أنواع أجهزة الاستشعار إشارة تناظرية. هذا ينطبق بشكل خاص على الصوت، ولكن يمكن فعل الشيء نفسه باستخدام راسم الذبذبات، على سبيل المثال: تم تصنيع راسم الذبذبات USB الصيني الشهير DSO Nano خصيصًا على STM32F103.

الهيكل الداخلي

القياس والفولتية المرجعية

مبدأ الرقمنة بسيط للغاية: تتم مقارنة جهد الدخل مع الفولتية المرجعية V_REF- وV_REF+:

  • V_REF - يجب أن يكون متصلاً بالأرض
  • V_REF+ اختياري: إما لمصدر طاقة المعالج (وهو عائم وصاخب، لذا فإن هذا الخيار مناسب فقط للقياسات غير الدقيقة)، أو لمصدر جهد مرجعي خارجي (REV)

ومع ذلك، فمن الممكن تكوين هذه الأرجل برمجيًا للاتصال المباشر بالأرض والطاقة.

سيتم قياس جهد الدخل V_In بالنسبة إلى V_REF- وV_REF+، وستتم إضافة نتيجة التحويل إلى سجل الإخراج بالتناسب التالي:

على سبيل المثال، 1.2 فولت عند تشغيل ADC من 3.3 فولت يتم تحويله إلى 1490.

تسجل ADC في STM32

ريال - سجل الحالة

البت 0: علامة AWD (المراقبة التناظرية). لقد تجاوزت إشارة الإدخال قيم سجلات LTR أو HTR.

1 بت: علامة EOC (نهاية التحويل). بعد اكتمال التحويل، قم بالتبديل إلى 1. تتم إعادة التعيين يدويًا أو عند قراءة سجل DR.

البت 4: علامة STRT (ابدأ). يشير إلى بداية التحويل.

CR1 - تسجيل الإعدادات الأولى

0..4 بت: قيمة AWDCH (قناة المراقبة التناظرية). يضبط رقم القناة للتتبع بواسطة الوكالة الدولية للطاقة.

5 بت: EOCIE (تمكين مقاطعة نهاية التحويل). تمكين المقاطعة في نهاية التحويل.

6 بت: AWDIE (تمكين مقاطعة WatchDog التناظرية). تمكين مقاطعة المراقبة التناظرية.

7 بت: جوسي.

8 بت: المسح الضوئي. تمكين وضع مسح القنوات وفقًا للقائمة الموجودة في السجلات SQR1، SQR2، SQR3.

9 بت: AWDSGL (المراقبة التناظرية الفردية). يضبط نوع تشغيل المراقبة في وضع SCAN: لقناة واحدة (1) أو للجميع (0).

10 بت: جاوتو.

11 بت: القرص (تمكين الوضع غير المستمر). تمكين وضع التشغيل "الخشن" - يتم تشغيل ADC بواسطة مشغل خارجي.

12 بت: جديسن.

13..15 بت: DISCNUM (عدد القنوات في الوضع المتقطع). عدد القنوات للتحويل في الوضع "الممزق".

16..19 بت: DUALMOD (اختيار الوضع المزدوج). يضبط وضع التشغيل المشترك لاثنين من أجهزة ADC.

22 بت: جوادين.

23 بت: AWDEN (تمكين المراقبة التناظرية). يتضمن الوكالة الدولية للطاقة التناظرية.

CR2 - سجل الإعدادات الثانية

0 بت: ADON (تشغيل/إيقاف المحول التناظري/الرقمي). تمكين أدك.

1 بت: CONT (التغطية المستمرة). لتمكين وضع القياس الفردي (0) أو المحلق (1).

البت 2: كال (المعايرة). الإعداد على 1 يتيح المعايرة؛ بعد اكتمال المعايرة، تتم إعادة ضبطها على 0. تحتاج أولاً إلى إعادة ضبط السجلات.

البت 3: RSTCAL (إعادة ضبط المعايرة). إعادة تعيين سجلات المعايرة، اضبطها على 1 بنفس الطريقة وانتظر إعادة التعيين.

8 بت: DMA. تمكين الوصول المباشر للسوق (DMA).

11 بت: محاذاة. يقوم بمحاذاة البيانات إلى الحافة اليمنى (0) أو اليسرى (1) للحالة.

12..14 بت: جيكستسل.

15 بت: JEXTTRIG.

17..19 بت: EXTSEL (تحديد الحدث الخارجي). يعين رقم الحدث لتشغيله (TIM1 CC1، TIM1 CC2، TIM1 CC3، TIM1 CC4، TIM3 TRGO، TIM4 CC4، EXTI_11، SWSTART).

20 بت: EXTTRIG (الزناد الخارجي). تمكين التحويل ليتم تشغيله بواسطة مشغل خارجي.

21 بت: JSWSTART.

22 بت: SWSTART (بدء التحويل). يبدأ التحول. بعد الانتهاء يتم إعادة تعيينه.

23 بت: TSVREFE (مستشعر درجة الحرارة وV_REF ممكّنان). يتضمن مستشعر درجة الحرارة والأيون الداخلي.

DR - سجل نتائج القياس

SMPR1، SMPR2 - وقت التحويل

سجل إعداد وقت التحويل لكل قناة.

HTR وLTR - حدود الوكالة الدولية للطاقة

الحدود العليا والسفلى للمراقبة التناظرية مشابهة لسجل DR.

SQR1، SQR2، SQR3 - قائمة القنوات المراد مسحها

وضع SCAN (بت SCAN في سجل CR1)

الممارسة: قم بتشغيل ADC

أبسط حالة لاستخدام ADC: بدون انقطاع، وبدون أي أوضاع معقدة - نحن فقط نأخذه ونقيسه في دورة.

التهيئة

  1. قم بتشغيل تسجيل الوقت لوحدة ADC
  2. تكوين معلمات الوحدة
  3. قم بتشغيل وحدة ADC
  4. تكوين الإدخال (رقم قناة ADC)
  5. نقوم بالمعايرة

أفترض أن الأرجل البلورية لم يتم تكوينها، أي أنها في حالة "الإدخال التناظري" الافتراضية. هذا هو بالضبط النظام الذي نحتاجه.

فقط بعض أرجل STM32 يمكن أن تعمل كمدخل ADC، ويتم تحديدها بالرمز ANx (x = 0..15، هذا الرقم هو رقم القناة). من الملائم تقدير ذلك في برنامج STM32Cube.

Void adc_init() ( RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1, ENABLE); // إعدادات ADC ADC_InitTypeDef ADC_InitStructure; ADC_StructInit(&ADC_InitStructure); ADC_InitStructure.ADC_Mode = ADC_Mode_Independent; // وضع التشغيل - ADC_InitStructure فردي .ADC_ScanConvMode = DISABLE؛ // لا تفحص القنوات ، ما عليك سوى قياس قناة واحدة ADC_InitStructure.ADC_ContiniousConvMode = DISABLE؛ // قياس لمرة واحدة ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None؛ // بدون مشغل خارجي ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right؛ // نتيجة محاذاة البت - اضغط على اليمين ADC_InitStructure.AD C _NbrOfChannel = 1 // عدد القنوات - قطعة واحدة ADC_Init(ADC1, &ADC_InitStructure); // تكوين القناة ADC_RegularChannelConfig(ADC1, ADC_Channel_8, 1, ADC_SampleTime_55Cycles5); // معايرة ADC ADC_ResetCalibration(ADC1)); بينما (ADC_GetCalibrationStatus(ADC1)); )

بعد إجراء هذه الوظيفة، يتم تكوين ADC1 ومعايرته وجاهز للقياسات على القناة الثامنة.

قياس

القياس بسيط:

  1. بدء التحول
  2. نحن في انتظار نهاية الرقمنة (ضع علامة على العلامة EOC = نهاية التحويل)
  3. قراءة النتيجة من سجل DR
uint16_t get_adc_value() ( ADC_SoftwareStartConvCmd(ADC1, ENABLE); while(ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC) == RESET); إرجاع ADC_GetConversionValue(ADC1); )

أبسط استخدام لهذه الوظائف هو:

الفراغ الرئيسي () (adc_init ()؛ قيمة uint16_t = 0؛ بينما (1) القيمة = get_adc_value ()؛)

يمكنك ببساطة تشغيل البرنامج وإيقافه بنقطة توقف وقراءة القيمة المقاسة في مصحح الأخطاء.

مشاهدات المشاركة: 309

ADC هو بروتوكول قائم على النص لشبكات خادم العميل، مشابه لـ Neo-Modus" Direct Connect (NMDC). الهدف هو إنشاء بروتوكول بسيط لا يثقل كاهل العميل أو الخادم، ويمكن تمديده. إنه يصحح بعض الحلول الضعيفة لبروتوكول NMDC، ولكن ليس كلها.

يتم أخذ نفس التفاعلات في الاعتبار: العميل والعميل وخادم العميل. وتنقسم هذه الوثائق إلى قسمين؛ يصف الجزء الأول بنية البروتوكول، والثاني - خصوصية نظام البروتوكول لاستخدام هذا الهيكل. Advanced Direct Connect هو الإصدار الأول وسيتم تحسينه تدريجيًا.

معظم أفكار البروتوكول جاءت من مشروع DCTNG (جان فيدار كري). المشاركون الرئيسيون في التطوير: داستن برودي، والتر دوكس، تيمو ستانج، فريدريك أولنر، فريدريك ستينبرج وآخرون ساهموا في إنشاء البروتوكول بروتوكول NMDC.

مزايا البروتوكول

  • يتكون SID، بالإضافة إلى أسماء أوامر البروتوكول، من أربعة أحرف لاتينية بأحرف كبيرة. البروتوكول مناسب تمامًا للتنفيذ بلغة SI. وفقًا لمعيار لغة SI، sizeof(char) == 1، أي أن 4 أحرف ستشغل 4 بايت، أو يمكن تمثيلها كعدد صحيح مكون من أربعة بايت. يؤدي تحويل سلسلة إلى رقم والعودة إلى تبسيط وتحسين العمل مع الأوامر بشكل كبير ويجعل من الممكن تخزين الأمر كاتحاد.

عيوب البروتوكول

  • محددات البروتوكول هي أحرف شائعة جدًا (مسافة وواصلة) ويجب استبدالها بـ \s و\n. نظرًا لأن هذه الأحرف شائعة جدًا في رسائل الدردشة، فسيكون عدد الاستبدالات دائمًا كبيرًا، وهو ما لم يكن الحال في بروتوكول NMDC.
  • بالمقارنة مع بروتوكول NMDC، يتمتع بروتوكول ADC بالقدرة على حذف قائمة معينة في UserCommand. ومع ذلك، لا يوجد حتى الآن خيار لحذف قائمة معينة في سياق معين.

تاريخ النسخة

يمكن الحصول على الإصدارات اللاحقة من هذه الوثيقة، بالإضافة إلى الإصدارات المتوسطة والأقدم، من: . تم تقديم هذا الإصدار للمراجعة:

الإصدار 1.0.1، 02-05-2008

  • يتم تسليط الضوء على الملحقات في وثيقة منفصلة.
  • يتم فصل المواصفات في مشروع منفصل على SourceForge.

الإصدار 1.0، 2007-12-01

  • الإصدار الأول

هيكل البروتوكول

  • تبدأ جميع أوامر البروتوكول بأربعة أحرف. يحدد الحرف الأول كيفية إرسال الأمر، وتشير الأحرف الثلاثة التالية إلى ما يجب القيام به.
  • يتم فصل المعلمات بمسافات، وينتهي كل أمر بفاصل أسطر (الرمز 0x0a). العناصر التي تم تجاوزها هي: "\s" - مسافة، و"\n" - السطر الجديد و"\\" - شرطة مائلة عكسية. يحتفظ هذا الإصدار من البروتوكول بجميع الأحرف التي تم تجاوزها لاستخدامها في المستقبل؛ يجب تجاهل أي أوامر تحتوي على أحرف هربت غير معروفة.
  • يجب إرسال جميع الأوامر المرسلة بترميز UTF-8 - مشفر Unicode في تطبيع C.
  • يجب على العملاء تجاهل الأوامر غير المعروفة/غير الصالحة. يجب أن تتجاهل المحاور الأوامر غير الصالحة، ويجب أن ترسل أوامر غير معروفة وفقًا لنوعها (البادئة).
  • يجب تحديد عناوين العملاء بعلامة عشرية منقط ("x.x.x.x") لـ IPv4 أو بتنسيق RFC (1884) لـ IPv6. يجب تحديد عناوين المحور بواسطة رابط ببادئة "adc" في المقدمة، والتي تشير إلى تفاصيل هذا البروتوكول ("adc://server:port/").
  • يتم إرسال الأرقام كسلاسل وفقًا لمعيار النقطة العائمة، مع استخدام النقطة "." كفاصل بين الجزء الكسري الصحيح. . الأعداد الصحيحة هي أرقام بدون جزء كسري وبدون إضافة أسية. يجب أن تكون التطبيقات قادرة على العمل على أرقام موجبة 64 بت وأرقام الفاصلة العائمة 64 بت. بادئة النفي هي علامة "-".

د (رسالة مباشرة)يجب أن يرسل المحور هذا الأمر إلى المستخدم باستخدام معرف الأمان (SID) المحدد.

E (رسالة صدى)يجب أن يرسل المحور الأمر إلى المستخدمين باستخدام sid وmy_sid.

F (بث مميز)يجب أن يرسل المحور هذا الأمر إلى كافة العملاء الذين يدعمون (+)/لا يدعمون (-) هذه الخاصية. يتم تحديد دعم العميل لميزة معينة من حقل SU، الموجود في أمر INF الذي يرسله العميل.

H (رسالة المحور)يجب على العملاء استخدام هذا النوع لإرسال أمر مخصص للوحة الوصل فقط.

أنا (رسالة معلومات)يجب أن تستخدم لوحات الوصل هذا النوع لإرسال أمر لم يتم إرساله بواسطة عميل آخر.

U (رسالة UDP)يجب على العملاء استخدام هذا الأمر فقط لاتصالات UDP المباشرة.

وظائف التجزئة

يتم استخدام بعض الأوامر لتحديد وظائف التجزئة. كلما تم إنشاء اتصال جديد باستخدام أمر SUP، يتم تبادل وظائف التجزئة. عند الاتصال، يقوم العميل بتمرير العديد من وظائف التجزئة إلى الخادم من خلال معلمات أمر SUP. يأخذ الخادم واحدة منها ويمررها إلى العميل، ويضعها قبل أي وظيفة تجزئة أخرى في أمر SUP الذي يتم إرساله من الخادم. يجب أن يكون لدى العميل والمركز وظيفة تجزئة متطابقة واحدة على الأقل، والتي سيتم استخدامها في البروتوكول وفي تعريف الملف.

تحديد هوية العميل

يتم تعريف كل عميل من خلال ثلاثة معرفات مختلفة: معرف الجلسة - معرف الجلسة (SID)، والمعرف الشخصي - المعرف الخاص (PID)، ومعرف العميل - معرف العميل (CID).

ملفات

يتم حساب أسماء الملفات من الجذر النسبي (الوهمي) في مشاركة المستخدم. "/" - فاصل الدليل؛ يجب أن يكون كل اسم ملف أو دليل فريدًا في سياق غير حساس لحالة الأحرف. يُسمح بجميع الأحرف القابلة للطباعة، بما في ذلك المسافة، في اسم الملف؛ ويتم تخطي الأحرف "/" و"\" بالحرف "\". يجب على العملاء استخدام عوامل تصفية الأسماء لأنظمة الملفات الخاصة بهم، كما يجب أن تتبع أسماء الملفات المستلمة من العملاء الآخرين هذه القواعد أيضًا. أسماء خاصة "." و".." لا يمكن تضمينها في اسم الدليل أو الملف؛ يجب تجاهل أي ملف قائمة ناتج يحتوي على هذه الأسماء. يجب أن تنتهي كافة أسماء الدليل بـ "/".

يتم تعريف الملفات المشتركة بالنسبة إلى جذر غير مسمى "/" ("/dir/subdir/filename.ext")، بينما يمكن للملحقات إلحاق اسم الجذر. على سبيل المثال، يستخدم "TTH/..." لوظائف TIGR الإضافية اسم الجذر "TTH" لتعريف الملفات من خلال "Tiger Tree Hash". هذا غير مقبول بالنسبة للأسماء من جذر غير مسمى والمضمنة في مشاركة بمعرف بواسطة المجموع الاختباري.

بدون اسم ملف جذر، يحدد "files.xml" ملف ورقة كاملاً، بتنسيق XML، بترميز UTF-8. يُنصح العملاء باستخدام الوظائف الإضافية لضغط ملف الورقة هذا.

يمكن للوظائف الإضافية إضافة امتداداتها الخاصة إلى اسم الملف، عادةً لتجنب تكرار الأسماء.

يتم استخدام "القائمة" من النوع الخاص لعرض قوائم الملفات. تحتوي قائمة الملفات الجزئية على نفس بنية القائمة العادية، ولكن يمكن وضع علامة على الدلائل باستخدام السمة غير مكتملة = "1"، والتي تشير إلى التحيز. يمكن فقط للأدلة التي لا تحتوي على ملفات جذر أن تبدأ بالحرف "/". سيتم بعد ذلك إرسال محتويات هذا الدليل إلى العميل الطالب على العمق الذي يختاره (وهذا ضروري لإرسال المستوى الذي يطلبه المستخدم فقط). تحدد السمة "Base" للحقل "FileListing" الدليل المحدد الذي ينتمي إليه هذا الملف.

السمات المميزة:

  • وقت التحويل السريع: 1.4 ميكروثانية، بحد أقصى
  • وظيفة العينة/التجميد المضمنة
  • لا يوجد فقدان التعليمات البرمجية
  • لا يتطلب تعديل المستخدم
  • مصدر واحد +5 فولت
  • لا حاجة لساعة خارجية
  • سهولة التكيف مع المعالجات الدقيقة

مجالات الاستخدام:

  • معالجة الإشاراة الرقمية
  • أنظمة الحصول على البيانات السريعة
  • الاتصالات السلكية واللاسلكية
  • دوائر التحكم المؤازرة عالية السرعة
  • أنظمة الصوت

رسم بياني وظيفي:

تثبيت المواقع:

وصف:

إن ADC0820 IC عبارة عن محول تناظري إلى رقمي (ADC) عالي السرعة ومتوافق مع المعالجات الدقيقة ويستخدم تقنية نصف فلاش لتحقيق وقت تحويل يبلغ 1.4 ميكروثانية. يحتوي المحول على مجموعة من إشارات الإدخال التناظرية من 0 فولت إلى +5 فولت وإمدادات فردية تبلغ +5 فولت.

نظام العينة/الحجز المدمج بمعدلات دوران تصل إلى 100 مللي فولت/ثانية يلغي الحاجة إلى نظام عينة/حجز خارجي.

يتوافق ADC بسهولة مع المعالجات الدقيقة، وذلك بفضل القدرة على الوصول إليه كخلية ذاكرة أو منفذ إدخال/إخراج، دون الحاجة إلى منطق مطابقة خارجي. تحتوي مخرجات البيانات على مراحل مخزن مؤقت بثلاث حالات منطقية ومستويات ثابتة، مما يسمح لك بتوصيل IC مباشرة بناقل بيانات المعالج الدقيق، أو بمنفذ بيانات الإدخال/الإخراج للنظام. يوفر خرج تجاوز سعة ADC القدرة على تتالي الدوائر المتكاملة لتحقيق مستويات دقة أعلى.

يعتبر Maxim's ADC0820 متوافقًا مع ADC0820 الوطني لأشباه الموصلات ويوفر أداءً فائقًا. يتوفر IC في حزم من الأنواع التالية: 20-pin SO، DIP، CERDIP.

نحتاج أولاً إلى فهم المكونات التي استخدمناها لإنشاء البرنامج الثابت. واستخدمنا مكونًا واحدًا فقط - PWM8. يرمز PWM إلى Pulse Width Modulator، وهو ما يعني "Pulse Width Modulator". جوهر الجهاز هو أنه يسمح لك بتغيير عرض النبضات الناتجة عن وحدة التحكم الدقيقة. وبالتالي تغيير جهد الخرج للأجهزة غير الحساسة للتردد.
على سبيل المثال: تردد تشغيل وحدة التحكم الدقيقة هو 1 هرتز (أي فترة توليد النبضة هي 1 ثانية)، وعرض النبضة هو 0.5 ثانية، وجهد النبض هو 5 فولت.

ثم متوسط ​​جهد الخرج في الثانية هو 2.5 فولت. ويتم الحصول على هذه القيمة ببساطة: عن طريق جمع مناطق النبضات الفرعية وتقسيمها على إجمالي الفترة الزمنية. فقط في حالة، سأكتب ذلك بمزيد من التفاصيل. لنفترض أننا أخذنا فترة زمنية قدرها ثانية واحدة من الشكل، يمكنك أن ترى أن النبضة الأولى استمرت 0.5. نضرب 0.5 ثانية * 5 فولت (جهد النبض) ونقسم كل هذا على الفاصل الزمني. 0.5 ثانية * 5 فولت/1 ثانية = 2.5 فولت. إذا كنا بحاجة إلى جهد خرج قدره 3.33 فولت، فسيتعين علينا زيادة مساحة النبض إلى 75٪. غالبًا ما يظهر مصطلح دورة العمل في الأدبيات. لذلك، دورة العمل هي نسبة مدة النبضة إلى مدة الإمكانات الصفرية، على سبيل المثال، في الحالة الأولى كانت 50٪، في الثانية - 75٪.

أعتقد أن النظرية كافية بالفعل ولم تكن هناك مشاكل في تثبيت PWM على الدائرة. لكن إعدادات المكون نفسه تستحق النظر فيها بمزيد من التفصيل. للقيام بذلك، سأقدم لقطة شاشة مع تمييز المعلمات التي تم تغييرها.

الساعة هي تردد تشغيل PWM؛ أي كتلة رقمية أو تناظرية رقمية يجب أن تعمل بتردد ساعة معين. ولهذا السبب تم اختراع مقسمات التردد ومجال الساعة. SysClk هو تردد النظام الذي تم تعيينه في علامة التبويب "الموارد العالمية". من المثير للاهتمام ملاحظة أنه في القائمة المنسدلة "الساعة" توجد حقول مثل Row_0_Input_0. وهذا يعني أن مولد الساعة الخاص بالوحدة يمكن أن يكون خارج الشريحة وستتم مزامنته عبر الناقل Row_0_Input_0.

تمكين - مستوى الوحدة المنطقية لهذه الكتلة. عادةً ما يتم استخدام معيارين: عالي = 5 فولت ومنخفض = 3 فولت. بالمناسبة ، يمكن أيضًا تحويل وحدة التحكم الدقيقة نفسها إلى أحد الأوضاع العالية أو المنخفضة.

مقارنة - إخراج المغير عرض النبض.

قد يطرح السؤال: لماذا تم تقديم النظرية المذكورة أعلاه إذا لم نستخدمها عمليًا في أي مكان؟ والجواب هو أننا استخدمنا القيم الافتراضية لطول النبضة والفترة الزمنية (حقول الفترة وعرض النبض) 0 0. مع مثل هذه القيم، سيكون لمخرج PWM إشارة صلبة مساوية في القيمة للإشارة المنطقية. يمكنك أيضًا تغيير قيم الفترة الزمنية وعرض النبضة برمجيًا في وضع تشغيل المتحكم الدقيق، باستخدام وظائف PWM8_1_WritePeriod() وPWM8_1_WritePulseWidth().

أدك أو أدك

ADC - المحول التناظري إلى الرقمي (أو المحول التناظري إلى الرقمي ADC) هو جهاز يسمح لك بتحويل الإشارة التناظرية إلى إشارة رقمية. أي كميات فيزيائية (الضغط، السرعة، زاوية الدوران، الجهد، التيار، شدة الضوء) هي تناظرية، ومهمة ADC هي تحويلها إلى إشارة رقمية. ومن الناحية العملية، عادة ما يستخدم الجهد للتحويل إلى إشارة رقمية.
من بين الخصائص العديدة لـ ADC، يجب تسليط الضوء على ثلاث خصائص رئيسية:

  1. عمق البت هو أصغر وحدة للإشارة التناظرية التي يمكن اكتشافها بواسطة ADC، ويتم قياسها عادةً بالبت.
  2. تردد التحويل - عدد القياسات في الثانية، مقاسًا بـ SPS (عينات في الثانية)
  3. نطاق التشغيل - نطاق القيم التي يعمل فيها هذا المحول.

نظرًا لأن ADC لم يعد جهازًا بسيطًا مثل PWM. سيتعين علينا أن ننظر إلى بعض الجوانب النظرية للمتحكم الدقيق وبعض ميزات ADC نفسها.

الخصائص العامة للمتحكم الدقيق

قائمة ببعض المفاهيم والتسميات التي تحتاج إلى معرفتها عند العمل مع شرائح PSoC (بالمناسبة، وليس كل ما يلي فقط سيكون صحيحًا بالنسبة لوحدات التحكم الدقيقة AVR)

في الأوصاف ومخططات الدوائر في أوراق البيانات، غالبًا ما تظهر تسميات مثل Vcc، وVdd، وVss، وAGND. والفرق بينهما في بعض الأحيان ليس هو الأكثر وضوحا. Vcc هو جهد إمداد المتحكم الدقيق (cc - من جامع إلى جامع) ، وهو نفس Vdd ، وقد حدث تاريخيًا أن نفس القيمة لها تسميتان. Vss هو الحد الأدنى من الإمكانات في المتحكم الدقيق؛ وغالبًا ما يحدث أن هذه القيمة تعادل AGND. يشير الحرف "A" في الاختصار AGND إلى ما إذا كانت أرض صناعية أم أرض صناعية. ومن الجدير بالذكر هذا الجهد الموجود على الدائرة، والذي يسمى عادة بـ BandGap. BandGrap هو مرجع الجهد. يعني الجهد المرجعي أنه يظل ثابتًا بغض النظر عن جهد إمداد MK ودرجة الحرارة والمؤشرات الخارجية الأخرى. Vref هو الجهد المرجعي للوحدة الفردية قيد النظر. لفترة طويلة جدًا لم أتمكن من فهم ما هو "السكك الحديدية إلى السكك الحديدية". ولقد صادفت هذه العبارة في سياقات مثل: "يمكن لهذه الوحدة أن تعمل في وضع "من السكك الحديدية إلى السكك الحديدية"." لذا فإن "السكك الحديدية إلى السكك الحديدية" تعني أن العنصر يمكن أن يعمل على نطاق الجهد بأكمله من Vcc إلى AGND.

مثال 2: قياس الجهد

المهمة: قم بقياس الجهد على مقياس الجهد المتصل بلوحة التصحيح واعرض القيمة على الشاشة.

هذا هو المكان الذي يصبح فيه الأمر أكثر إثارة للاهتمام. كالعادة نطلق المصمم وننشئ مشروعًا. انتقل إلى وحدات المستخدم -> بيانات متنوعة -> شاشة LCD وانقر بزر الماوس الأيسر لسحبها إلى وحدة التحكم الدقيقة. تعد شاشة LCD وحدة مفيدة وبسيطة للغاية، بالإضافة إلى أنها لا تشغل مساحة على الكتلة الرقمية. يمكنك رؤيته في علامة التبويب Workspace Explorer. من الإعدادات، يحتاج فقط إلى تحديد LCDPort = Port_2. انتقل الآن إلى ملف main.c، واسمحوا لي أن أذكرك أنه موجود في Workspace Explorer -> [اسم المشروع] -> ملفات المصدر -> main.c. وأضف الكود التالي إلى الدالة main().

LCD_Start(); LCD_Position(0,0); LCD_PrCString("الجهد المقاس");

نقوم بتجميع الكود وفلاش وحدة التحكم الدقيقة. إذا تم كل شيء بشكل صحيح، فسنحصل على السطر المكتوب أعلاه على الشاشة. لم يتمكنوا من التفكير في طريقة أبسط للتحكم في الشاشة. ويرضي. الآن الأمر متروك لشركة ADC. حدد وحدات المستخدم -> Legacy -> ADCINC12 وقم بإلقائها على وحدة التحكم. قد يطرح السؤال: "لماذا لم نختار ADCINC و ADCINC12 بالإضافة إلى ذلك من المجلد القديم؟ السبب يكمن في تعقيد تهيئة الوحدات النمطية ADCINC هي وحدة أكثر تعقيدًا ومرونة وتتطلب المزيد من الحذر. " والتكوين الشامل في المجلد Legacy، وهو ما يعني الإرث، توجد بالفعل وحدة نمطية أقل مرونة، ولكنها أسهل في التنفيذ. بعد ذلك، دون تفكير، انتقل إلى مجلد مكبرات الصوت وقم بإلقائها في دائرة PGA (مضخم الكسب القابل للبرمجة). ليس هناك حاجة إليه للتضخيم بقدر ما هو ضروري لزيادة مقاومة الإدخال بحيث لا يؤثر حجم التيار في الدائرة على دقة القياس.
اضبط إعدادات PWM كما في لقطة الشاشة.

  1. الربح - عامل الربح.
  2. الإدخال - إدخال الجهاز.
  3. المرجع - الجهد المرجعي.

قمنا بضبط إعدادات ADC مثل هذا:

  1. TMR Clock - تردد ساعة المؤقت.
  2. الإدخال - إدخال الجهاز (متصل بـ PGA).
  3. CNT Clock - تردد العداد.

آخر شيء نحتاجه للتشغيل العادي هو مورد عالمي يسمى Ref Mux. Ref Mux هو نطاق جهد التشغيل للكتل التناظرية. إذا قمنا بضبط القيمة (Vdd/2)+/-(Vdd/2) فسوف نحصل على فرق جهد كامل من 0 إلى 5V. ولكن هناك عيب واحد واضح لهذا. نظرًا لأن جهد الإمداد يؤخذ على أنه الجهد المرجعي. إذا كان الجهد Vdd يطفو، فإن ذلك سيؤثر على دقة النتائج. في هذه الحالة، سيكون BandGap مفيدًا لنا. لكن دعونا لا نقلق بشأن ذلك الآن ونضبط (Vdd/2)+/-(Vdd/2).
للتحقق مرة أخرى، سأقوم بنشر لقطة شاشة للتبديل الناتج بين الكتل التناظرية.

انتقل إلى main.c وأضف الكود التالي إلى الدالة main():

PGA_Start(PGA_HIGPOWER); //بدء PGA ADCINC12_Start(ADCINC12_HIGPOWER); //بدء تشغيل ADC ADCINC12_GetSamples(0); // ضبط ADC على التشغيل المستمر M8C_EnableGInt ; // قم بإلغاء التعليق على هذا السطر لتمكين المقاطعات العامة while(1) // حلقة البرنامج الثابت الرئيسية ( if (ADCINC12_fIsDataAvailable() != 0) // تحقق من البيانات في ADC ( result = ADCINC12_iGetData() + 2048; ADCINC12_ClearFlag(); LCD_Position( 1,0); // تحديد موضع الإخراج LCD_PrHexInt(result);

تتم إضافة 2048 إلى بيانات وظيفة iGetData() لتحويل البيانات إلى مكافئ غير موقع (إذا كنت مهتمًا بالنظر إلى "متغيرات c++ الموقعة وغير الموقعة" من Google).

نقوم بتوصيل مقياس الجهد باللوحة على النحو التالي.

نقوم بوميض المتحكم الدقيق وتقييم نتيجة العمل.

كل ما تبقى هو تحويل السداسيات إلى جهد والتحقق من صحة البيانات باستخدام جهاز اختبار. وسوف نحقق هذا الهدف بشكل تجريبي بحت. دعونا نجعل الوضع أسهل على أنفسنا ونأخذ الإمكانية الصفرية كقيمة 0x0000 عند مخرج ADC. ثم نقوم بتشغيل برنامجنا المكتوب بالفعل، وتحويل الجهد إلى الحد الأقصى وننظر إلى القيم الناتجة. على سبيل المثال، حصلت على 0x0FEC. ثم نأخذ جهاز اختبار ونقيس الجهد الحقيقي على مقياس الجهد. حصلت على 4.78 فولت. الآن نقسم 4.78/0x0FEC (بالنسبة لأولئك الذين لديهم مشاكل مع أنظمة حساب التفاضل والتكامل، أنصحك بالضخ) ونحصل على خطوة التكميم، أي وحدة الجهد التي تتوافق معها قيمة خرج ADC واحدة. حصلت على 0.0011727183513248، هذا هو الرقم. الآن نقوم ببساطة بضرب نتيجة ADC بهذه القيمة ونعرضها على الشاشة. للقيام بذلك، أضف متغيرات إلى حقل الرؤية العامة (هذا هو كل ما هو خارج الدالة main()).