مرحبا بالجميع!ربما يجدر بك تقديم نفسك قليلاً - أنا مهندس دائرة منتظم مهتم أيضًا بالبرمجة وبعض المجالات الأخرى للإلكترونيات: DSP و FPGA والاتصالات اللاسلكية وبعض المجالات الأخرى. لقد انغمست مؤخرًا في أجهزة استقبال SDR. في البداية كنت أرغب في تكريس مقالتي الأولى (آمل ألا تكون الأخيرة) في موضوع أكثر جدية ، ولكن بالنسبة للكثيرين سوف تصبح فقط مسألة قراءة ولن تحقق أي فائدة. لذلك ، تم اختيار الموضوع على درجة عالية من التخصص والتطبيق الحصري. أود أيضًا أن أشير إلى أنه ، على الأرجح ، سيتم اعتبار جميع المقالات والأسئلة الواردة فيها أكثر من جانب مصمم الدائرة ، وليس المبرمج أو أي شخص آخر. حسنًا - دعنا نذهب!منذ وقت ليس ببعيد ، أمرت بتصميم "نظام مراقبة الطاقة لمبنى سكني" ، يشارك العميل في بناء منازل في الضواحي ، لذلك ربما يكون بعضكم قد شاهد جهازي بالفعل. قام هذا الجهاز بقياس تيارات الاستهلاك في كل مرحلة من مراحل الإدخال والجهد ، وإرسال البيانات في وقت واحد عبر قناة الراديو إلى نظام المنزل الذكي المثبت بالفعل + وتمكن من قطع المبتدئ عند الإدخال إلى المنزل. لكن الحديث اليوم لن يكون حوله ، ولكن حول مكونه الصغير ولكن المهم للغاية - المستشعر الحالي. وكما فهمت بالفعل من عنوان المقال ، ستكون هذه أجهزة استشعار حالية "غير متصلة " من Allegro - ACS758-100 .________________________________________________________________________________________________________________________يمكن العثور على ورقة البيانات ، التي سأتحدث عنها حول المستشعر ، هنا . كما قد تخمن ، فإن الرقم "100" في نهاية العلامة هو أقصى تيار يمكن للمستشعر قياسه. بصراحة - لدي شكوك حول هذا ، يبدو لي أن الاستنتاجات ببساطة لا يمكن أن تصمد 200A لفترة طويلة ، على الرغم من أنها مناسبة تمامًا لقياس تيار التدفق. في جهازي ، يمر مستشعر 100A بدون مشاكل 35A على الأقل من خلاله باستمرار + هناك ذروة استهلاك تصل إلى 60A.
الشكل 1 - ظهور المستشعر ACS758-100 (50/200)قبل الانتقال إلى الجزء الرئيسي من المقالة ، أقترح عليك التعرف على مصدرين. إذا كانت لديك معرفة أساسية بالإلكترونيات ، فستكون زائدة عن الحاجة ولا تتردد في تخطي هذه الفقرة. أنصح البقية بالذهاب للتطوير العام والفهم:1) تأثير القاعة. الظاهرة ومبدأ التشغيل2) أجهزة الاستشعار الحالية الحديثة________________________________________________________________________________________________________________________حسنًا ، لنبدأ بالأهم ، وبالتحديد بالعلامات. أشتري مكونات في 90٪ من الحالات على www.digikey.com. تصل المكونات إلى روسيا في 5-6 أيام ، ربما يكون هناك كل شيء على الموقع ، وكذلك البحث المعياري الملائم والتوثيق. لذلك يمكن العثور على قائمة كاملة من أجهزة الاستشعار في الأسرة عند الطلب " ACS758 ". تم شراء أجهزة الاستشعار الخاصة بي هناك - ACS758LCB-100B .داخل ورقة البيانات ، يتم وضع علامة على كل شيء وفقًا للعلامة ، لكني سأستمر في الانتباه إلى النقطة الرئيسية " 100 فولت ":1) 100 هي حد القياس بالأمبير ، أي أن جهاز الاستشعار الخاص بي يمكنه قياس ما يصل إلى 100 أمبير ؛2) " B " - هذه الرسالة تستحق الانتباه بشكل خاص ، قد يكون هناك أيضًا حرف " U " في مكانها. مستشعر بحرف Bقادرة على قياس التيار المتردد ، وبالتالي مباشرة. يمكن لجهاز الاستشعار الذي يحمل الحرف U قياس التيار المباشر فقط.أيضًا في بداية ورقة البيانات ، توجد لوحة ممتازة حول هذا الموضوع:
الشكل 2 - أنواع أجهزة الاستشعار الحالية لعائلة ACS758أيضا ، كان العزل الجلفاني أحد أهم أسباب استخدام مثل هذا المستشعر . لا يتم توصيل أطراف توصيل الطاقة 4 و 5 كهربائيًا بأطراف التوصيل 1،2،3. في هذا المستشعر ، يكون الاتصال فقط في شكل مجال مستحث.
ظهر معلمة مهمة أخرى في هذا الجدول - اعتماد جهد الخرج على التيار. جمال هذا النوع من أجهزة الاستشعار هو أنه يحتوي على خرج جهد ، وليس تيارًا ، مثل محولات التيار الكلاسيكية ، وهو أمر مريح للغاية. على سبيل المثال ، يمكن توصيل خرج المستشعر مباشرةً بإدخال ADC لوحدة التحكم الدقيقة وأخذ القراءات.بلدي استشعار هذه القيمة هي 20 فولت / A . هذا يعني أنه عندما يتدفق 1A الحالي عبر المحطات 4-5 من المستشعر ، سيزداد الجهد عند خرجه بمقدار 20 mV . أعتقد أن المنطق واضح.في اللحظة التالية ، ماذا سيكون جهد الخرج؟ بالنظر إلى أن الطعام "بشري" ، أي أحادي القطب ، عند قياس التيار المتردد ، يجب أن تكون هناك "نقطة مرجعية". في هذا المستشعر ، هذه النقطة المرجعية هي 1/2 مصدر طاقة (Vcc). غالبًا ما يحدث هذا الحل وهو مناسب. عندما يتدفق التيار في اتجاه واحد ، سيكون الناتج " 1/2 Vcc + I * 0.02V " ، في نصف الدورة الأخرى ، عندما يتدفق التيار في الاتجاه المعاكس ، سيكون جهد الخرج " 1/2 Vcc - I * 0.02V ". عند الإخراج ، نحصل على موجة جيبية ، حيث "صفر" هو 1 / 2Vcc . إذا قمنا بقياس التيار المباشر ، فإن الناتج سيكون " 1/2 Vcc + I * 0.02V " ، ثم عند معالجة البيانات على ADC ، فإننا ببساطة نطرح المكون الثابت 1/2 Vccونحن نعمل مع البيانات الحقيقية ، أي مع ما تبقى من I * 0.02V .حان الوقت الآن لاختبار ما وصفته أعلاه عمليًا ، أو بالأحرى طرحه في ورقة البيانات. من أجل العمل مع المستشعر والتحقق من قدراته ، قمت ببناء هذا "الحامل الصغير":
الشكل 3 - موقع لاختبار المستشعر الحاليأولاً ، قررت تطبيق الطاقة على المستشعر وقياس خرجه للتأكد من أنه "صفر" لقد أخذ 1/2 Vcc . يمكن أن يؤخذ مخطط الاتصال في ورقة البيانات ، ولكن ، برغبتي فقط في التعرف ، لم أضيع الوقت ونحت مكثف الفلتر للحصول على مرشح تمرير منخفض الطاقة + RC على دبوس Vout. في جهاز حقيقي ، في أي مكان بدونهم! حصلت على الصورة التالية في النهاية:
الشكل 4 - نتيجة قياس "صفر"عند تطبيق الطاقة5V من وشاح STM32VL-Discovery ، رأيت هذه النتائج - 2.38 فولت . السؤال الأول الذي نشأ: " لماذا 2.38 ، وليس 2.5 الموصوفة في ورقة البيانات؟ " اختفى السؤال على الفور تقريبًا - قمت بقياس ناقل الطاقة لتصحيح الأخطاء ، وكان هناك 4.76-4.77 فولت. لكن الشيء هو أن الطاقة تأتي من USB ، هناك بالفعل 5 فولت ، بعد USB هناك مثبت خطي LM7805 ، ومن الواضح أن هذا ليس LDO مع انخفاض 40 mV. هنا عليه ، حوالي 250 ميجا فولت. حسنًا ، حسنًا ، هذا ليس بالغ الأهمية ، الشيء الرئيسي الذي يجب معرفته هو أن "صفر" هو 2.38 فولت. هذا هو الثابت الذي سأطرحه عند معالجة البيانات من ADC.والآن سنأخذ القياس الأول ، حتى الآن فقط بمساعدة مرسمة الذبذبات. سأقيس تيار الدائرة القصيرة لمصدر الطاقة القابل للتعديل ، وهو 3.06A. أعطى هذا والعروض المدمجة في مقياس التيار والفلوكا نفس النتيجة. حسنا، وربط مخرجات إمدادات الطاقة في الساقين 4 و 5 من أجهزة الاستشعار (في الصورة I vituha الزهر) ونرى ما سيحدث:
الشكل 5 - قياس PSU الحالية ماس كهربائىوكما نرى، فإن الجهد VOUT زاد من 2.38V إلى 2.44V . إذا نظرت إلى الاعتماد أعلاه ، فيجب أن نحصل على 2.38V + 3.06A * 0.02V / A ، وهو ما يتوافق مع قيمة 2.44V. النتيجة تلبي التوقعات ، في تيار 3A حصلنا على زيادة إلى "صفر" تساوي 60 mV . الخلاصة - يعمل المستشعر ، يمكنك بالفعل العمل معه بمساعدة MK.تحتاج الآن إلى توصيل المستشعر الحالي بأحد دبابيس ADC على وحدة التحكم الدقيقة STM32F100RBT6. الحصاة نفسها متواضعة للغاية ، ويبلغ تردد النظام 24 ميجاهرتز فقط ، ولكن هذا الوشاح نجا كثيرًا وأثبت نفسه. أمتلكه بالفعل ، على الأرجح ، حوالي 5 سنوات ، لأنه تم استلامه مجانًا في ذلك الوقت عندما وزعتهم ST يمينًا ويسارًا.أولاً ، بدافع العادة ، أود أن أضع مضخم تشغيل بمعامل بعد المستشعر. اكتسب "1" ، ولكن بالنظر إلى الرسم البياني الهيكلي ، أدركت أنه كان واقفاً بالفعل في الداخل. الشيء الوحيد الذي يجب مراعاته هو أنه عند الحد الأقصى الحالي ، ستكون طاقة الإخراج مساوية لمصدر الطاقة الخاص بمستشعر Vcc ، أي حوالي 5 فولت ، ويمكن للقياس STM أن يقيس من 0 إلى 3.3 فولت ، لذلك من الضروري في هذه الحالة وضع مقسم جهد مقاوم ، على سبيل المثال ، 1: 1.5 أو 1: 2. تياري هزيل ، لذلك أهملت هذه اللحظة حتى الآن. جهاز الاختبار الخاص بي يبدو كالتالي:
الشكل 6 - وضع مقياس التيار الكهربائي الخاص بناأيضا ، لتصور النتائج ، قمت بتثبيط العرض الصيني على وحدة تحكم ILI9341 ، وكانت الفائدة في متناول اليد ، لكن يدي لم تصل إليها على الإطلاق. لكتابة مكتبة كاملة له ، قتل بضع ساعات وكوب من القهوة ، حيث كانت ورقة البيانات غنية بالمعلومات ، وهو أمر نادر بالنسبة لحرف أبناء جاكي شان.تحتاج الآن إلى كتابة دالة لقياس Vout باستخدام ADC لوحدة التحكم الدقيقة. لن أقول بالتفصيل ، وفقًا لـ STM32 هناك بالفعل بحر من المعلومات والدروس. لذا انظر:uint16_t get_adc_value()
{
ADC_SoftwareStartConvCmd(ADC1, ENABLE);
while(ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC) == RESET);
return ADC_GetConversionValue(ADC1);
}
بعد ذلك ، من أجل الحصول على نتائج قياس ADC في الشفرة التنفيذية للهيئة الرئيسية أو المقاطعة ، تحتاج إلى كتابة ما يلي: data_adc = get_adc_value();
بعد أن سبق أن أعلن متغير data_adc: extern uint16_t data_adc;
نتيجة لذلك ، نحصل على المتغير data_adc ، الذي يأخذ قيمة من 0 إلى 4095 ، لأنه ADC في STM32 هو 12 بت. بعد ذلك ، نحتاج إلى تحويل النتيجة "في الببغاوات" إلى شكل أكثر شيوعًا بالنسبة لنا ، أي إلى أمبيرات. لذلك ، يجب عليك أولاً حساب سعر القسمة. بعد المثبت على حافلة 3.3V ، أظهر راسم الذبذبات 3.17V ، لم أفهم ما كان متصلاً به. لذلك ، بقسمة 3.17V على 4095 ، نحصل على القيمة 0.000774V - هذا هو سعر القسمة. أي الحصول على النتيجة من ADC ، على سبيل المثال ، 2711 ، ببساطة أضربها في 0.000774 فولت وأحصل على 2.09 فولت.في مهمتنا ، التوتر ليس سوى "وسيط" ؛ ما زلنا بحاجة إلى تحويله إلى أمبيرات. للقيام بذلك ، نحتاج إلى طرح 2.38B من النتيجة ، وقسمة الباقي على 0.02 [B / A]. والنتيجة هي هذه الصيغة:float I_out = ((((float)data_adc * presc)-2.38)/0.02);
حسنًا ، حان الوقت لملء البرامج الثابتة في وحدة التحكم الدقيقة ومعرفة النتائج:
الشكل 7 - نتائج قياس بيانات المستشعر ومعالجتها قمتبقياس استهلاكي الخاص للدائرة كما رأينا 230 مللي أمبير. بعد قياس الشيء نفسه بالصدفة التي تم التحقق منها ، اتضح أن الاستهلاك هو 201 مللي أمبير. حسنًا - الدقة مع مكان عشري واحد رائع جدًا بالفعل. سأشرح لماذا ... نطاق التيار المقاس هو 0. 100A ، أي أن الدقة حتى 1 أمبير هي 1٪ ، والدقة حتى أعشار الأمبير هي بالفعل 0.1٪! ويرجى ملاحظة أن هذا بدون أي حلول دائرية. حتى أنني كنت كسولًا جدًا لدرجة أنني لا أعلق كوندور المرشح للطعام.الآن تحتاج إلى قياس تيار الدائرة القصيرة (ماس كهربائى) لمصدر الطاقة الخاص بي. أقوم بلف المقبض إلى أقصى حد وأحصل على الصورة التالية: الشكل 8 - قياسات تيار الدائرة القصيرة
حسنًا ، في الواقع ، قراءات المصدر نفسه مع مقياس التيار الكهربائي الخاص به:
الشكل 9 - القيمة على مقياس BPفي الواقع ، أظهر 3.09A ، ولكن بينما كنت أصور ، تم تسخين فيتوخا وزادت مقاومته ، وانخفض التيار ، وفقًا لذلك ، ولكن هذا لم يحدث مخيف جدا.في الختام ، لا أعرف حتى ماذا أقول. آمل أن تساعد مقالي بطريقة أو بأخرى هواة الراديو المبتدئين بطريقتهم الصعبة. ربما يحب شخص ما شكل عرضي للمادة ، ثم يمكنني الاستمرار في الكتابة بشكل دوري عن العمل مع المكونات المختلفة. يمكنك التعبير عن رغباتك حول الموضوع في التعليقات ، سأحاول أن تأخذ بعين الاعتبار.وبالطبع ، أرفق رمز المصدر للبرنامج ، فسترى من يحتاج إلى مكتبة للعمل مع الشاشة أو ADC. المشروع نفسه في Keil 5.