واجهة لشواحن USB Type C مع PD/PPS
ينشأ هذا المشروع في التهوية مع Embres GmbH.
لقد قاموا بعمل رائع في
هناك بعض المجالس المثيرة للاهتمام هناك لتشغيل مصادر توصيل الطاقة من نوع USB. مثل ZY12PDN.
يمكنك العثور على العديد من التفاصيل في Manuel BL .. تتيح لك هذه الوحدات أن تتخطى الملامح الثابتة المتوفرة التي تشمل 5 فولت ، 9 فولت ، 12 فولت ، 15 فولت و 20 فولت. هناك العديد من الآخرين هناك ، والبعض الآخر لديه جهد يمكن اختياره من خلال المقاومات أو القفزات.
تمكنت من الحصول على يدي على واحدة تستخدم شريحة HUSB238 من Hynetek. هذا واحد قابل للبرمجة إما من خلال المقاومات أو متحكم باستخدام I2C.
للأسف ، هذا أقل بكثير من إمكانيات مصدر الطاقة المتوافق مع PD 3.0. كل هذه الوحدات تستخدم فقط ما يسمى ملفات التعريف الثابتة. ولكن هناك وضع PPS (مزود الطاقة القابل للتشكيل). هذا يستخدم الملف الشخصي المعزز. يتم تفاقم الملفات الشخصية المعززة من 3.3 فولت إلى 21 فولت وحتى 5 أ.
وهنا فكرتي: هل سبق لك أن استخدمت واحدة من تلك اللوازم المتأصلة في المختبرات المكتنزة التي تتناول معظم المساحة على مكتبك؟ غالبًا ما تتراوح إمدادات الطاقة هذه من 0 إلى 30 فولت و 0 - 5 أ. بقدر ما أشعر بالقلق ، فأنا أستخدم في الغالب 5 - 15 فولت في بضع أمبير.
ماذا لو استطعنا استخدام هذا الملف الشخصي المعزز لتقليد مصدر طاقة مختبر؟ سنحتاج إلى شريحة قادرة على طلب هذا الملف الشخصي من مصدر طاقة من نوع PPS مناسبة لـ USB Type C.
حسنًا ، هناك الطريقة السهلة والصعبة:
تتمثل الطريقة السهلة في إخبار بعض الرقاقة بطلب الجهد المطلوب من مزود الطاقة.
مثل هذه الشريحة هي AP33772 المتاحة من الثنائيات المدمجة. يمكنك الحصول على ثنائيات لوحة تقييم مخصصة أو الشركات المصنعة الأخرى على سبيل المثال. microe. هذا هو نموذج Microe USB-C Sink 2 : 
تم وضع علامة على هذه الشريحة على أنها NRND وتم استبدالها بـ AP33772s. إصدار "S" أسهل في الاستخدام ولكن يحتوي على جانب سلبي كبير: يسمح فقط بخطوة 100 mV و 250 مللي أمبير.
الطريقة الصعبة هي استخدام واحدة من تلك USB-C PD Phys. أنها توفر واجهة OSI 0 + 1 لمصدر الطاقة. يجب تنفيذ مستويات أعلى في SW. يبدو أن الشريحة الأكثر استخدامًا هي شكل FUSB302 على أشباه الموصلات. تم استخدام هذه الشريحة في ZY12PDN الأصلي.
وهنا هو: 
هذا هو PD-micro الذي صاغه ريان ما. إنه Aruduino Pro Micro مع FUSB302 ، وبعض المصابيح ، ومفتاح الطاقة ومنظم الجهد. لقد جعل Ryan من السهل تحديد ملفات تعريف Adversipiate. قام Kai Clemens Liebich ببعض التحسينات على Ryan FUSB302 LIB.
المشكلة الوحيدة هي استقرار الجهد. حتى عند استخدام 5 كابلات USB C ، يكون انخفاض الجهد كبيرًا جدًا. لذلك قد نحتاج إلى قياس جهد الخرج لضبط جهد إمداد الطاقة. كانت فكرة الفريست هي استخدام ADC الداخلي مع جهد الجهد الخارجي 2.048 فولت. المشكلة هي أن هذه ليست سوى 10 بتات من ADC ، لكننا نحتاج إلى قياس الفولتية حتى 21 فولت. على افتراض أننا نقطع في 20.48 فولت سنحصل على دقة 20 mV. يبدو أن هذا يكفي ولكن يمكننا أن نفعل بشكل أفضل. عند استخدام ADC مخصص على سبيل المثال INA219
يمكننا تحسين الدقة إلى 4 mV. هذا هو أقل بكثير من 20 mV الخطوات. و نحصل على مستشعر حالي في الأعلى.
تحذير على المستشعر الحالي ACS712
ACS 712 هو مستشعر تيار سهل الاستخدام. لكن:
الآن يمكننا ضبط الجهد ، وتمكين الإخراج وقياس جهد الخرج والتيار. حتى نتمكن من كتابة بضعة أسطر من التعليمات البرمجية لتنفيذ مصدر جهد / مصدر ثابت. حسنًا ، سوف يقتصر وقت استجابة المتلقي على سرعة مصدر الطاقة ، ولكنه في حدود معقولة تثير إعجاب مصدر طاقة USB الخاص بك. بلدي PS هو nexode ugreen ugreen عفا عليها الزمن مع 100W الذي يتحول في ~ 40 .. 50 مللي ثانية.
ولكن كيف هي الجهد والقرعة الحالية؟ حسنًا ، يمكننا استخدام واجهة تسلسلية وجهاز كمبيوتر "للتحكم عن بعد" الدائرة. ولكن ماذا عن LCD مفتاح دوار مثل واجهة المستخدم؟
وهذا يقودني إلى النموذج الأولي الأول.

وهنا المكونات في اتجاه عقارب الساعة مع الجزء العلوي اليسار.

هذا هو الجهد والمستشعر الحالي. تم تخفيض المقاوم التحويلة إلى R015 للحصول على 5 قراءة كاملة.
هناك EEPROM 24C256 التسلسلي على السبورة. يستخدم هذا لتخزين المعلمات. كان بإمكاني استخدام Atmel على Chip Eeprom ولكن هذا له مقاومة أقل ارتداء. لم أكن أعرف عدد دورات الكتابة التي ستكون مطلوبة ، لذلك اخترت Eeprom خارجي

هذا هو قلب الدائرة.
يشغل مصدر الطاقة USB - C من PD -Micro. لا يمكن استخدام واجهة USB للاتصال. وبالتالي ، يتم توصيل الواجهة التسلسلية HW إلى USB FT232 إلى رقاقة التسلسلية.

هذا هو شاشة متوافقة مع 20x4 HD44780 مع PCF8574 ، عاكس الجهد والمصدر الحالي للتباين كما هو موضح في مكتبة LCD الخاصة بي.
اليسار إلى الشاشة هناك مفتاح تشفير Rotary KY-040. مباشرة فوق المفتاح هناك مجرد شريط الحافلات I2C و VCC.
ما هي الميزات التي يحتاجها مصدر طاقة المختبر؟












عند بدء التشغيل ، سيعرض النظام إصدارًا وإنشاء رسالة قبل البدء في القائمة الرئيسية.
PD/PPS-Controller
====================
Ver. : 3.3 nbl
Build: mmm dd yyyy
بعد الانتهاء من التهيئة ، سيتم عرض القائمة الرئيسية
Mode (x:...) [UI^] !
UU.UU V I.II A
OUT UU.UU V I.II A
[i i i i i] (i)
السطر الأخير الأول: أيقونات القائمة
لتحديد عنصر قائمة اضغط على الزر ، سيظهر المؤشر. قم بتشغيل مفتاح الدوار حتى يصبح المؤشر في موضع العنصر المطلوب. اضغط على الزر مرة أخرى لتحديد القائمة. في هذه القائمة ، فإن "V" و "A" في السطر الثاني هي عناصر القائمة أيضًا. حدد لضبط الجهد المطلوب أو التيار.
يتم استخدام هذه القائمة لتحديد ملف تعريف PD المطلوب.
# 1 / n (...)
U= UU.UU V - UU.UU V
I= I.II A max
[i i i] (i)
السطر الأخير الأول: أيقونات القائمة
لتحديد ملف تعريف ، اضغط على الزر انتقل إلى رمز "#" في السطر الأول واضغط مرة أخرى لإدخال اختيار الملف الشخصي. الدوران سوف يخطو من خلال ملفات تعريف Avalabla. لتحديد ملف تعريف اضغط مرة أخرى وانتقل إلى علامة الاختيار في خط Buttom أو تحديد "X" للإجهاض.
يتم استخدام هذه القائمة لتغيير وضع التشغيل أو قيمة المعايرة.
(i)=auto (*)=. *
(i)=auto
(i)=auto
[i i i x] (i)
[أنا] أو (ط) الرموز بين قوسين
I= I.III A: I.III A
[i i i x] (i)
[أنا] أو (ط) الرموز بين قوسين
لضبط معايرة القياس الحالية ، تمكين الإخراج باستخدام الحمل واستخدام متر مكعب معاير لقياس التيار.
أدخل قائمة الإعدادات وانتقل إلى قائمة المعايرة. أدخل التيار المقاس وحدد علامة الاختيار التي يتم توصيها باختيار التيار بأعلى قدر ممكن لاكتساب أقصى قدر من الدقة.
تتم كتابة AVR SW مع Arduino IDE. أثناء تطوير SW ، اكتشفت بعض الأشياء عن النظام:
بعد أن نجحت الأولية في مواجهة مشكلات مع Flash و RAM. قد تكون قادرًا على تشغيل رمز AVR ولكني أوصي بتقليل الوظائف التي تُحرر بعض الذاكرة.
وهذا يقودني إلى النموذج الأولي الثاني باستخدام ATSAMD21G18.
البرنامج في مجلد AVR هو كما هو. لن يكون هناك تطور آخر في هذا الفرع. إنه نوع من العمل ولكن يستخدم على مسؤوليتك الخاصة. يجمع فقط بدون تحميل التمهيد ، ستحتاج إلى إضافة ملف اللوحات. local.txt من مجلد التكوين إلى
C:Users_user_AppDataLocalArduino15packagesarduinohardwareavr1.8.6
(على الأقل على آلات Windows) وحدد Arduino Leonardo W/O Bootloader من اللوحات المتاحة.
ستحتاج إلى Avrdude و USBASP
تلميح: كن حذرًا عند شراء أحد الحيوانات المستنسخة الرخيصة. غالبًا ما يأتون مع SW عفا عليها الزمن ولن يعمل. لا توجد مشكلة في تحديث هؤلاء ولكنك ستحتاج إلى محول USBASP العاملة.
مبرمج لفلاش SW. لمستخدمي غير CLI: Avrduess هو واجهة المستخدم الرسومية رائعة لـ Avrdude.
يمكنك أيضًا استخدام Arduino UNO كجسر ISP لجسر ISP.
بعد انتكاسات بلدي جربت Arduino Zero. يستخدم هذا اللوحة جهاز ATSAMD21G18 وهو وحدة تحكم ARM Cortex M0+ تعمل عند 48 MHz. لديها 256 كيلو بايت وميض و 32 كيلو بايت ذاكرة الوصول العشوائي والكثير من الواجهات. أظهر منفذ سريع أنه يمكن نقل SW بشكل سهل من AVR لتسليح دون أي مشاكل تقريبًا.
كانت هذه هي النقطة التي قررنا فيها بدء تشغيل أول ثنائي الفينيل متعدد الكلور المخصص لتجنب جميع المشكلات التي تواجهها النمط الأول.
بعض الصداع يسبب العرض VCC. تحتاج معظم دوائر محول Buck إلى بعض مسابقات رأس الجهد لتشغيل و "ميزة" دائرة قفل الجهد. ولكن هذا لا يذهب لهذه الدائرة. يجب أن تعمل إلى 3.3 فولت VBUs. نحتاج إلى انخفاض الجهد الالتفافية لضمان التشغيل عند 3.3 فولت VBUS. وإلا فإن الدائرة ستقفل عندما تنخفض VBUs أسفل thresholt والتي عادة ما تكون 4 فولت - 4.7 فولت عند 3.3 فولت الإخراج.
تم حل هذه المشكلة بشكل مفرط قليلاً. استخدمنا اثنين من المنظمين 3.3 فولت اللذين يتم تنسيقهم إلى الثنائيات المثالية.
تم تكوين TPS62932 لإخراج 3.45 V. تم ضبط UVLO على 4.55 فولت ويتم ضبط التمكين على 5.06 V. وهذا يضمن أن محول Buc يعمل فوق 5 فولت والمخرجات أعلى بقليل من 3.3 فولت بحيث يتم تعطيل 3.3 فولت LDO بامتنان. LDO عبارة عن NCV2951ACDMR2G تم تعيينه على 3.3 V. الجهد المتسرب هو 450 mV كحد أقصى عند 100 مللي أمبير. الاستهلاك الحالي للدائرة أقل من 50 مللي أمبير ، لذلك سيكون لدينا ما هو أقصى قدر من التسرب البالغ 300 mV.
عندما يكون جهد الإدخال أعلى من 5.06 فولت ، يكون LDO في وضع الخمول و VCC هو 3.45 فولت. عندما ينخفض فولتاغ المدخلات إلى أقل من 4.55 فولت ، يتم تعطيل محول باك وينتقل LDO إلى OVE ، مما ينتج عنه VCC من 3.3 V.
ستعمل وحدة المعالجة المركزية بامتنان إلى 2.7 فولت اعتمادًا على إعدادات Brownout.
PCBA:
النموذج الأولي:
Current Calibration
internal I.III A
reference I.III A
[i i i x] (i)
تم إعادة تنظيم القراءة الحالية والقيمة المرجعية.
تم إعادة إعادة تمهيد SW وهو الآن USB-PD2. في أول SW ، تم تنفيذ التحكم في مصدر الطاقة في فئة القائمة. تم نقل هذا إلى فئة وحدة التحكم الخاصة بها.
تمت إضافة رأس لتذكير TODO ، تمت إضافة فئة اختبار إمدادات الطاقة إلى تغييرات ملف تعريف الاختبار.
من أجل فلاش SW لأول مرة ستحتاج إلى واجهة تصحيح JTAG مثل
يمكنك استخدام Atmel Studio أو Arduino IDE لفلاش Arduio Zero Bootloader.
يمكنك استخدام وميض التجريبي كذلك. حدد رسم -> تصدير ثنائي. سيقوم IDE بإنشاء ملف xxx.ino.with_bootloader.arduino_zero.bin. فقط فلاش الملف. قد تحتاج إلى نسخ أجزاء الصمامات من Arduino Zero.
هناك بعض العينات في مجلد الصمامات. بعض الصمامات يتم ضبطها في المصنع ولا يمكن الكتابة عليها.
بمجرد عمل Bootloader ، يمكنك وميض SW باستخدام Sam-Ba Bootloader. يحتوي SW الذي توفره MicroChip على CLI وهو مناسب لجميع أجهزة SAM التي تدعم SAM-BA وبالتالي فهي صعبة بعض الشيء للاستخدام. أداة أكثر بساطة هي Bossa من Shumatech.
يدعم الشاحن الخاص بي 5 فولت / 9 فولت / 12 فولت / 15 فولت @ 3A و 20 V @ 5A ملفات تعريف ثابتة و 3.3 فولت - 21 فولت @ 5 A المعزز. كن حذرًا ، لن تدعم العديد من أجهزة الشحن المميزة بـ 100 واط (حتى UGREEN) 65 واط فقط (3.25 أ) مع نطاق جهد محدود. قد لا يقلل من الفولتية أقل من 3.3 فولت. حتى أن البعض سيكون له ملخصين PPS مع تصنيفات جهد / تيار مختلفة.
ugreen nexode 2 port 100w pd-charger (Model CD254 #50827) ملفات تعريف مدعومة:
ugreen nexode 100W شاحن سطح المكتب (نموذج CD328 #90928) الملامح المدعومة:
Anker Powerport I 30W PD
الملامح المدعومة:
ilepo USB C Chast Charger 65 W
الملامح المدعومة
Iniu Power Bank 20000mah ، 22.5w
الملامح المدعومة
يبدو أن بعض السلطة suplly لإعادة ضبط الطاقة عند عدم رسم التيار.
"شاحن سطح المكتب Nexode 100W الخاص بي" P/N 90928 إعادة تعيين بعد ~ 1 ساعة دون تحميل. شواحن أخرى لا.
إعادة ضبط بنك الطاقة في Iniu مع عدم وجود حمولة خلال 10s ~
سجل مع تحميل 20R
0006: FUSB302 ver ID:B_revA
0118: USB attached CC1 vRd-3.0
0172: RX Src_Cap id=1 raw=0x53A1
0172: obj0=0x2A01912C
0172: obj1=0x0002D0E9
0172: obj2=0x0003C096
0172: obj3=0xC076323C
0172: obj4=0xC0DC3228
0172: [0] 5.00V 3.00A
0172: [1] 9.00V 2.33A
0172: [2] 12.00V 1.50A
0172: [3] 5.00V-5.90V 3.00A PPS *
0172: [4] 5.00V-11.00V 2.00A PPS
0176: TX Request id=0 raw=0x1082
0176: obj0=0x42022628
0186: RX GoodCRC id=0 raw=0x0121
0192: RX Accept id=2 raw=0x05A3
0210: RX PS_RDY id=3 raw=0x07A6
0212: PPS 5.50V 2.00A supply ready
0214: Load SW ON
5214: TX Request id=1 raw=0x1282
5214: obj0=0x42022628
5222: RX GoodCRC id=1 raw=0x0321
5228: RX Accept id=4 raw=0x09A3
5246: RX PS_RDY id=5 raw=0x0BA6
5246: PPS 5.50V 2.00A supply ready
10248:TX Request id=2 raw=0x1482
10248: obj0=0x42022628
10256:RX GoodCRC id=2 raw=0x0521
10262:RX Accept id=6 raw=0x0DA3
10280:RX PS_RDY id=7 raw=0x0FA6
10280:PPS 5.50V 2.00A supply ready
...
سجل بدون تحميل:
0006: FUSB302 ver ID:B_revA
0118: USB attached CC1 vRd-3.0
0172: RX Src_Cap id=1 raw=0x53A1
0172: obj0=0x2A01912C
0172: obj1=0x0002D0E9
0172: obj2=0x0003C096
0172: obj3=0xC076323C
0172: obj4=0xC0DC3228
0172: [0] 5.00V 3.00A
0172: [1] 9.00V 2.33A
0172: [2] 12.00V 1.50A
0172: [3] 5.00V-5.90V 3.00A PPS *
0172: [4] 5.00V-11.00V 2.00A PPS
0176: TX Request id=0 raw=0x1082
0176: obj0=0x42022628
0186: RX GoodCRC id=0 raw=0x0121
0192: RX Accept id=2 raw=0x05A3
0210: RX PS_RDY id=3 raw=0x07A6
0212: PPS 5.50V 2.00A supply ready
0214: Load SW ON
5214: TX Request id=1 raw=0x1282
5214: obj0=0x42022628
5222: RX GoodCRC id=1 raw=0x0321
5228: RX Accept id=4 raw=0x09A3
5248: RX PS_RDY id=5 raw=0x0BA6
5248: PPS 5.50V 2.00A supply ready
10250:TX Request id=2 raw=0x1482
10250: obj0=0x42022628
10258:RX GoodCRC id=2 raw=0x0521
10264:RX Accept id=6 raw=0x0DA3
10284:RX PS_RDY id=7 raw=0x0FA6
10284:PPS 5.50V 2.00A supply ready
==> The Power bank resets and defaults to 5V only.
0006: FUSB302 ver ID:B_revA
0118: USB attached CC1 vRd-3.0
0352: TX Get_Src_Cap id=0 raw=0x0087
0704: TX Get_Src_Cap id=0 raw=0x0087
1056: TX Get_Src_Cap id=0 raw=0x0087