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

راسم ذبذبات التتبع المزدوج: 11 خطوة (بالصور)
راسم ذبذبات التتبع المزدوج: 11 خطوة (بالصور)

فيديو: راسم ذبذبات التتبع المزدوج: 11 خطوة (بالصور)

فيديو: راسم ذبذبات التتبع المزدوج: 11 خطوة (بالصور)
فيديو: Tektronix 570 Curve Tracer DEMO Mullard 12AX7 2024, شهر نوفمبر
Anonim
راسم ذبذبات التتبع المزدوج
راسم ذبذبات التتبع المزدوج

عندما أقوم ببناء راسم الذبذبات المصغر السابق الخاص بي ، كنت أرغب في معرفة مدى استطاعتي أن أجعل أصغر متحكم ARM الخاص بي يعمل STM32F030 (F030) ، وقد قام بعمل جيد.

في أحد التعليقات ، تم اقتراح أن "Blue Pill" مع STM32F103 (F103) قد يكون أفضل ، وأصغر من لوحة التطوير مع F030 وربما أرخص. لكن بالنسبة إلى الذبذبات المصغرة ، لم أستخدم لوحة التطوير ولكن F030 على لوحة SMD-DIP أصغر ، لذلك لن يكون هناك بالتأكيد Blue Pill أصغر وأشك في أنه سيكون أرخص أيضًا.

الكود متاح الآن على Gitlab:

gitlab.com/WilkoL/dual-trace-oscilloscope

اللوازم

قائمة الأجزاء: - صندوق بلاستيك - لوحة بيرفبوارد (لوحة نموذج أولي مزدوج الجوانب 8 × 12 سم) - حبة زرقاء - شاشة ST7735s TFT - بطارية ليثيوم أيون - منظم تسرب منخفض HT7333 3.3 فولت - MCP6L92 opamp مزدوج - لوحة TSSOP8 إلى DIP8 - كريستال 12 ميجا هرتز (غير ضروري) - مشفر دوار زائد مقبض (2x) - powerwitch - أطراف موز (4x) - لوحة شاحن ليثيوم أيون - عدة مقاومات ومكثفات - فواصل من النايلون وصواميل ومسامير

أدوات:

- محطة لحام - لحام 0.7 مم - بعض الأسلاك - قاطع جانبي - نظارات وعدسة - مثقاب - مقياس متعدد - راسم الذبذبات - STLink-V2

برمجة:

- STM32IDE - STM32CubeMX - STLink Utility - مكتبة LowLayer - مكتبة معدلة لـ ST7735s - Notepad ++ - Kicad

الخطوة 1: وضع متداخل أو متزامن

وضع متداخل أو متزامن
وضع متداخل أو متزامن
وضع متداخل أو متزامن
وضع متداخل أو متزامن

الحبة الزرقاء

لكن الفكرة كانت موجودة ، وعرفت أن F103 به جهازي ADC! ماذا لو استخدمت هاتين ADCs معًا في وضع "interleave" ، وهو شيء قمت به من قبل باستخدام STM32F407 (F407). سوف تتضاعف سرعة أخذ العينات. هذا ، قم بدمج ذلك مع متحكم دقيق أسرع وسيكون من الممكن أن يكون خليفة رائعًا لموسم الذبذبات المصغر.

وضع التداخل الغريب أن ADCs في F103 أقل تقدمًا من تلك الموجودة في F030 (و F407) ، لا يمكنك اختيار الدقة. الأهم من ذلك هو أنه لا يمكنك أيضًا تغيير التوقيت بين ADCs. الآن ، عند استخدام وضع التشذير ، عادةً ما تريد أخذ العينات بأسرع وقت ممكن مع أقصر وقت بين أي عينات ، ولكن باستخدام مرسمة الذبذبات ، من الضروري تغيير التوقيت. ربما لا يزال من الممكن القيام بذلك ، فأنا لست مصممًا محترفًا لذبذبات الذبذبات ، لكنني أسقطت خطة استخدام وضع التشذير.

الوضع المتزامن

ولكن ، وجود اثنين من ADCs يعطي العديد من الخيارات ، يمكن ضبط اثنين من ADCs على الوضع "المتزامن العادي" أيضًا. ماذا عن راسم التتبع المزدوج؟

بعد أن قررت محاولة عمل راسم ذبذبات تتبع مزدوج ، أردت أيضًا الحصول على حساسية إدخال متغيرة ، وهو خيار لم يكن لديّ في راسم الذبذبات المصغر. هذا يعني مخفف (ومكبر للصوت) على المدخلات. وربما أردت المزيد؟ لذلك قمت بإعداد قائمة صغيرة من "اللطفاء".

قائمة الرغبات

قناتين

حساسية متغيرة على كلا القناتين

تشغيل على كلتا القناتين

مستوى الزناد المتغير على كلتا القناتين

تعويض متغير

طاقة بطارية واحدة

تناسب نفس صندوق الذبذبات المصغرة

الخطوة 2: النمذجة

النماذج
النماذج
النماذج
النماذج

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

الخطوة 3: المخففات

المخففات
المخففات

في راسمات الذبذبات العادية ، تكون مخففات الإدخال عبارة عن دوائر تغير التوهين والتضخيم عن طريق تبديل المقاومات إلى الداخل والخارج باستخدام مرحلات إشارة صغيرة. بينما لدي بعض هذه المرحلات ، أعلم أنها لن تتحول إلى أقل من 4 فولت ، وهذا يعني أنها ستعمل فقط مع بطارية ليثيوم أيون محملة بالكامل (4.2 فولت). لذلك كنت بحاجة إلى طريقة أخرى لتبديل تلك المقاومات. بالطبع يمكنني فقط تثبيت مفاتيح ميكانيكية ، ولكن هذا بالتأكيد لن يكون مناسبًا في صندوق المشروع في الاعتبار ، ربما يمكنني تجربة مقياس جهد رقمي أفضل مرة أخرى (الذي أملكه هو طريقة صاخبة للغاية).

ثم فكرت في "المفاتيح التناظرية" ، مع تلك التي يمكنني صنع مقياس جهد رقمي بنفسي. في مجموعة أجزائي ، وجدت CD4066 بأربعة مفاتيح تناظرية. الفكرة هي جعل مقاومة التغذية المرتدة لمتغير opamp عن طريق التبديل داخل وخارج المقاومات الموازية لمقاومة التغذية الراجعة.

إنه يعمل بشكل جيد للغاية ، ولكن بوجود 4 مفاتيح فقط في 4066 ووجود قناتين ، لم يكن من الممكن عمل أكثر من ثلاثة مستويات من الحساسية. اخترت 500mV و 1V و 2V لكل قسم لأن هذه هي مستويات الجهد التي أستخدمها أكثر من غيرها. تنقسم الشاشة إلى 6 أقسام ، مما يجعل النطاقات من -1.5 فولت إلى + 1.5 فولت ، ومن -3 فولت إلى + 3 فولت ومن -6 فولت إلى 6 فولت.

باستخدام "الأرضية الافتراضية" ، يمكنك تحريك هذه النطاقات لأعلى ولأسفل حتى يصبح من الممكن حتى 0 فولت إلى + 12 فولت.

الخطوة 4: الأرضية الافتراضية

أرض افتراضية
أرض افتراضية
أرض افتراضية
أرض افتراضية

نظرًا لأن راسم الذبذبات يستخدم سكة طاقة واحدة (3.3 فولت) ، فإن opamps تحتاج إلى مستوى أرضي افتراضي أو أنها لن تعمل. يتم إنشاء مستوى الأرض الافتراضي هذا باستخدام PWM على قناة إخراج واحدة لـ TIM4 ، وتتغير دورة العمل الخاصة به من نسبة قليلة إلى ما يقرب من مائة بالمائة. يقوم مرشح تمرير منخفض بمقاوم 1 كيلو ومكثف 10 فائق التوهج بتحويل ذلك إلى جهد (تقريبًا) 0 فولت إلى (تقريبًا) 3.3 فولت. تردد الموجة المربعة أقل بقليل من 100 كيلو هرتز ، لذا فإن مرشح التمرير المنخفض البسيط جيد بما فيه الكفاية.

بل في وقت متأخر من بناء هذا الذبذبات ، أدركت أنه لا يمكنك الحصول على إزاحتين منفصلتين للقنوات. هذا بسبب حقيقة أنه مع مصدر طاقة واحد ، يجب أن يكون مستوى المدخلات الأرضي منفصلًا عن مستوى الأرض الحقيقي لل opamps. لذلك تتحرك كلتا القناتين بنفس الطريقة التي تغير بها إعداد GND.

الخطوة 5: التشفير الدوراني والتصحيح

التشفير الروتاري والتصحيح
التشفير الروتاري والتصحيح
التشفير الروتاري والتصحيح
التشفير الروتاري والتصحيح

على مرسمة الذبذبات المصغرة ، استخدمت مشفرًا دوارًا واحدًا فقط لجميع الوظائف. من شأن ذلك أن يجعل استخدام راسم الذبذبات المزدوج أمرًا صعبًا للغاية ، لذا أحتاج هنا إلى اثنين. مشفر واحد للمخففات ومستوى الأرض الافتراضي والآخر للقاعدة الزمنية والتشغيل. للأسف ، كما هو الحال في مشروعي الآخر ، فإن أجهزة التشفير الدوارة هذه "صاخبة" للغاية. إنها سيئة للغاية لدرجة أنها ببساطة لن تعمل مع أجهزة ضبط الوقت في "وضع التشفير" ، وهي الطريقة القياسية لقراءتها. اضطررت إلى إنشاء آلية إزالة مع المؤقت TIM2 ، والتحقق من المشفرات كل 100us. يتم تشغيل هذا المؤقت بدوره (فقط) عندما يكون هناك بعض النشاط على أجهزة التشفير ، يتم التحقق من ذلك باستخدام وظيفة EXTI في منافذ الإدخال. الآن تعمل أجهزة التشفير بشكل جيد.

وكما ترى ، فإن وجود شاشة يمكن أن يكون مفيدًا جدًا لعرض معلومات تصحيح الأخطاء.

الخطوة 6: العرض والقاعدة الزمنية

العرض والقاعدة الزمنية
العرض والقاعدة الزمنية

تبلغ دقة الشاشة 160 × 128 بكسل ، لذا هناك 160 عينة مطلوبة لشاشة واحدة كاملة ، وتمكنت من تسريع ADC لعمل 1.6 مليون عينة في الثانية وهذا ، مع متحكم فيركلوكيد كثيرًا (المزيد حول ذلك لاحقًا) ، يعطي قاعدة زمنية لا تقل عن 20 دولارًا لكل قسم (100 دولار لكل شاشة). وبالتالي فإن شكل موجة 10 كيلو هرتز سيملأ الشاشة بأكملها.

هذا هو ضعف سرعة الذبذبات المصغرة التي صنعتها من قبل. حسنًا ، الآن مع قناتين:-).

كما قيل ، يبلغ عرض الشاشة 160 بكسل ، لذا يلزم 160 قيمة فقط لكل شاشة. لكن جميع المخازن المؤقتة تحتوي في الواقع على 320 عينة. لذلك يخزن DMA 320 قيمة قبل أن يقوم بتشغيل مقاطعة الإرسال الكاملة (TC). هذا لأن التشغيل يتم في البرنامج. يبدأ أخذ العينات في لحظة عشوائية ، لذلك فمن غير المرجح أن تكون القيمة الأولى في المخزن المؤقت هي المكان الذي يجب أن تكون فيه نقطة الانطلاق.

لذلك يتم العثور على نقطة التشغيل من خلال قراءة trace_x_buffer ، إذا كانت القيمة عند قيمة المشغل المطلوبة en إذا كانت القيمة السابقة أقل بقليل ، يتم العثور على نقطة التشغيل. يعمل هذا بشكل جيد ، لكنك تحتاج إلى مخزن مؤقت أكبر من حجم العرض الفعلي.

هذا أيضًا هو السبب في أن معدل التحديث في إعدادات القاعدة الزمنية المنخفضة أبطأ مما قد تتوقعه. عند استخدام إعداد 200 مللي ثانية / div ، تكون شاشة واحدة ممتلئة بالبيانات هي ثانية واحدة ، ولكن نظرًا لإتمام مضاعفة كمية التحويلات ، يستغرق ذلك ثانيتين. في إعدادات القاعدة الزمنية الأسرع ، لن تلاحظ ذلك كثيرًا.

يتم استخدام TIM3 لإنشاء القاعدة الزمنية. يقوم بتشغيل ADCs بالسرعة التي يتطلبها إعداد القاعدة الزمنية المحدد. تبلغ ساعتها TIM3 120 ميجاهرتز (انظر زيادة السرعة) ، ويحدد الحد الأقصى للعدد الذي يتم حسابه (ARR) كيف يفيض الآخر أو يتم تحديثه بلغة ST. عبر TRGO ، تؤدي نبضات التحديث هذه إلى تشغيل ADCs. أقل تردد يولده هو 160 هرتز ، وأعلى تردد هو 1.6 ميجا هرتز.

الخطوة 7: ADCs و DMA

ADCs و DMA
ADCs و DMA

يقوم كل من ADCs بتحويل الجهد على مدخلاتهم في نفس الوقت ، ويقومان بتخزين هاتين القيمتين 12 بت في متغير 32 بت واحد. لذا فإن DMA لديه متغير واحد فقط لكل تحويل (مزدوج) يتم نقله.

لاستخدام هذه القيم ، من الضروري تقسيمها إلى قيمتين حتى يمكن استخدامها لعرض الأثرين. كما قيل ، لا يمكن تعيين ADCs في F103 على قرارات أخرى بخلاف 12 بت. هم دائمًا في وضع 12 بت ، وبالتالي تأخذ التحويلات دائمًا نفس عدد نبضات الساعة. ومع ذلك ، مع رفع تردد التشغيل عن ADCs ، يمكن عمل 1.6 عينة MS بالثانية (انظر إضافي: Overclocking).

مرجع ADCs هو Vdd ، سكة 3.3V. لتحويل ذلك إلى قيم أكثر ملاءمة (لكل قسم) ، قمت بحساب قيم المخففات ، لأنني لا أملك قيم المقاوم الدقيقة التي تأتي من تلك الحسابات ، يتم إجراء بعض التصحيحات في البرنامج.

في هذا المشروع ، أستخدم التحليل الميكانيكي الديناميكي (DMA) في "الوضع العادي". في هذا الوضع ، يتوقف DMA عن نقل البيانات (من de ADCs إلى الذاكرة) عند نقل عدد الكلمات (أو نصف الكلمات أو البايت). في الوضع المحتمل الآخر ، "الوضع الدائري" يعيد DMA ضبط نفسه ويستمر في نقل البيانات دون انقطاع. لم يعمل ذلك مع F103 ، فهو سريع جدًا لدرجة أنه يقوم بالكتابة فوق البيانات الموجودة في adc_buffer قبل أن يتمكن بقية البرنامج من قراءتها. حتى الآن العملية كما يلي:

- إعداد DMA لعدد البيانات المراد نقلها وتمكين DMA

- ابدأ تشغيل ADCs ، وستطلب هذه تحويلات DMA بعد كل تحويل (مزدوج)

- بعد نقل العدد المحدد من التحويلات ، يتوقف DMA

- توقف على الفور أيضًا عن تشغيل ADCs

- القيام بجميع المعالجات اللازمة على البيانات الموجودة في الذاكرة

- تظهر آثار على الشاشة

- ابدأ العملية مرة أخرى

الخطوة 8: واجهة المستخدم

واجهة المستخدم
واجهة المستخدم

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

الخطوة 9: البناء والتحسينات الممكنة

البناء والتحسينات الممكنة
البناء والتحسينات الممكنة
البناء والتحسينات الممكنة
البناء والتحسينات الممكنة
البناء والتحسينات الممكنة
البناء والتحسينات الممكنة
البناء والتحسينات الممكنة
البناء والتحسينات الممكنة

أنا سعيد جدًا بهذا المشروع. إنه يعمل بشكل جيد ويقوم بالمهمة ، لكن يمكن أن يكون أفضل.

صندوق المشروع صغير جدًا بحيث لا يتناسب مع كل شيء بشكل مريح ، مما يؤدي إلى الاضطرار إلى وضع المكونات تحت الحبة الزرقاء. لجعل ذلك ممكناً ، لا يمكن لحام الحبة الزرقاء في "اللوحة الرئيسية" مباشرة. ولأن هذا جعله مرتفعًا للغاية ، فقد اضطررت إلى إزالة العديد من الأجزاء من Blue Pill ، مثل وصلات العبور لاختيار BOOT0 و BOOT1 (أشياء لم أستخدمها أبدًا على أي حال) واضطررت حتى إلى تحريك البلورة من أعلى إلى أسفل ثنائي الفينيل متعدد الكلور.

لقد جعلت الحياة أكثر صعوبة باستخدام موصلات الموز بدلاً من موصلات BNC أو SMA ، فهذا يعني أن جزءًا كبيرًا من لوحة الأداء كانت "منطقة محظورة" ، لتوضيح ذلك لنفسي قمت بوضع شريط kapton فوقه لمنع نفسي من وضع أجزاء عليه.

هناك مشكلة أخرى في وضع كل ذلك في صندوق مشروع صغير وهي أن الدارات التناظرية والرقمية قريبة جدًا من بعضها البعض. يمكنك أن ترى أن هناك الكثير من الضوضاء المرئية على كلا الأثرين. هذا لم يكن لدي حتى على اللوح! من خلال تحريك خطوط الطاقة للدوائر التناظرية والرقمية بعيدًا عن بعضهما البعض قدر الإمكان ، تم إجراء تحسين طفيف ، ولكن ليس بما يكفي لإرضاء. لم يساعد تقليل جميع قيم المقاوم في الدوائر التناظرية حتى أكثر مما فعلت (مقاومة الإدخال 100 كيلو أوم بدلاً من 1 ميجا أوم). أظن أن التشغيل على أسرع إعداد للقاعدة الزمنية (20us / div) ، وهو ليس رائعًا ، سوف يتحسن أيضًا مع ضوضاء أقل على الإشارات.

إذا قمت بعمل هذا التصميم على ثنائي الفينيل متعدد الكلور "حقيقي" ، مع جميع أجزاء smd وطبقات منفصلة للتناظرية والرقمية والطاقة (أي 4 طبقات!) فمن المحتمل أن يعمل بشكل جيد للغاية. سيكون أصغر بكثير ، لن يستخدم حبة زرقاء كاملة ولكن فقط F103 وهذا سيجعل من الممكن تزويده بـ Vdda (نظيف) تناظري منفصل لـ ADCs.

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

الخطوة 10: الكود وفيديو قصير

الخطوة 11: إضافي: رفع تردد التشغيل

إضافي: رفع تردد التشغيل
إضافي: رفع تردد التشغيل

تمامًا كما فعلت مع F03 ، أردت أن أرى مدى جودة رفع تردد التشغيل عن F103. تدعي مواصفات هذا المتحكم الدقيق أن الحد الأقصى لسرعة الساعة يجب ألا يتجاوز 72 ميجا هرتز (وهو بالطبع أسرع بالفعل من F030) لكنني قرأت في العديد من المدونات أن رفع تردد التشغيل كان أمرًا سهلاً ، فلماذا لا؟

يتم تزويد Blue Pill بكريستال 8 ميجاهرتز ، يضاعف PLL ذلك بعامل من 9 إلى 72 ميجاهرتز. يمكن زيادة PLL حتى 16 مما يعطي ساعة تبلغ 128 ميجاهرتز. لم تكن هذه مشكلة على الإطلاق بالنسبة إلى Blue Pill الخاص بي ، في الواقع ، تعمل جميع أقراص Blue Pills الخاصة بي دون أي مشاكل على 128 ميجاهرتز.

لكن الآن أردت معرفة الحد الحقيقي. لذلك قمت بإزالة الكريستال 8 ميجاهرتز واستبدله بواحد من 12 ميجاهرتز. مرة أخرى قمت بزيادة مضاعف PLL حتى استسلم الميكروكونترولر أخيرًا. كان ذلك عند 168 ميجا هرتز! على 156 ميجاهرتز لا يزال يعمل بشكل جيد. تركتها تعمل بهذه السرعة لساعات ولم أرها تتحطم أبدًا. في راسم الذبذبات هذا ، استقرت على 120 ميجاهرتز ، وهي سرعة يمكن اختيارها باستخدام بلورة 12 ميجاهرتز و PLL على 10 ، وكذلك مع بلورة 8 ميجاهرتز و PLL على 15. (انظر SystemClock_Config in main.c)

تعمل ADCs الآن بشكل أسرع ، ولديها تعمل بسرعة 30 ميجاهرتز (بدلاً من 14) ، ولا تزال تعمل بشكل جيد على 60 ميجاهرتز ، وتصنع STMicroelectronics بعض الأجهزة الرائعة!

تضع STMicroelectronics هذه الحدود في ورقة البيانات لسبب وجيه ، فهي تضمن أن المتحكم الدقيق يعمل عند 72 ميجا هرتز المحددة في جميع الظروف.

ولكن نظرًا لأنني لا أستخدم المتحكم الدقيق عند -40 درجة مئوية ، أو +85 درجة مئوية ، أو 2.0 فولت أو 3.6 فولت فقط ، أعتقد أنه من الآمن رفع تردد التشغيل. لا تفعل هذا عندما تنوي بيع جهاز مع وحدات التحكم الدقيقة الخاصة به ، فأنت لا تعرف أبدًا مكان استخدامها.

موصى به: