यह पीएनपी ट्रांजिस्टर ट्रिगर क्यों नहीं होगा?


9

नीचे सर्किट MCU_LS12 पर MCU से 3.3V सिग्नल ले रहा है और 12V हाई-साइड सिग्नल आउटपुट कर रहा है।

आउटपुट हमेशा 12 वी है। आउटपुट के आधार पर स्कूपिंग के लिए ट्रांजिस्टर को "पर्याप्त" जमीन पर नहीं खींचा जा रहा है - केवल 12V फिर 11.5V तक जा रहा है।

मैं क्या खो रहा हूँ? LS12 पर इनपुट संकेत एक MCU से 3.3V है, जो परीक्षण के लिए 50% वर्ग तरंग में भेज रहा है। क्यू 6 बेस को क्यू 6 क्यों नहीं छोड़ रहा है? मैं क्या बदल सकता हूँ? क्या यह विभक्त है?

enter image description here


2
क्या आपने कलेक्टर के साथ Q8 ड्रा किया और एमिटर उलट गया या यह आपके सर्किट का सटीक है?
कॉलिन

2
आपको पूर्वाग्रह Q6 के लिए एक आधार अवरोधक की आवश्यकता है। अन्यथा यह एमिटर के अनुयायी के रूप में काम करता है।
मीतू राज

अनुरोध के अनुसार संपादित - मुझे विश्वास नहीं हो रहा है कि मैंने Q8 को उल्टा रखा है!
MattyT2017 14

2
क्या आपके पास आउटपुट से जुड़ा कोई लोड है?
फोटॉन

हां 200ohm लोड के साथ, और Q8 ने एक ही मुद्दे को सही ढंग से तार-तार कर दिया - अगर मैं Q8 से आधार कनेक्शन हटाता हूं तो मैं देख सकता हूं कि इसे एक स्क्वायर वेव भेजा जा रहा है (हालांकि इसका वोल्टेज 2.6v कम है, 4.6 हाय)
MattyT2017

जवाबों:


5

आइएएसई संपादक का उपयोग करके योजनाबद्ध रूप से तैयार करते हैं (जैसा आपको करना चाहिए था):

schematic

इस सर्किट का अनुकरण करें - सर्किटलैब का उपयोग करके बनाई गई योजनाबद्ध

मैं तुम्हें इकट्ठा किया तार Q8गलत। जैसा कि एंडी बताते हैं, एक सामान्य पीएनपी अभी भी पीएनपी ट्रांजिस्टर के रूप में कार्य कर सकता है यदि आप इसे उलट देते हैं। लेकिन आमतौर पर बहुत बदतर के साथβ (जिस तरह से चीजों को डोप किया जाता है और शारीरिक रूप से BJT में बनाया जाता है।)

हालाँकि, एंडी क्या याद कर सकता है [यह मानते हुए कि मैं आपको गंभीरता से ले सकता हूं कि आप MJD127G ( डेटाशीट ) का उपयोग कर रहे हैं , तो यह एक डार्लिंगटन है !! आप उन्हें उल्टा नहीं करते हैं और बहुत उम्मीद करते हैं। आपको उन लोगों को सही ढंग से व्यवस्थित करने की आवश्यकता है!

चूंकि आपने उल्लेख किया है कि आपने उपयोग किया है RLOAD=200Ω, मैं उसके साथ जाऊंगा। इसका मतलब यह मात्र हैIC8=60mA। यहां डेटाशीट से एक महत्वपूर्ण चार्ट दिया गया है:

enter image description here

VCESAT800mVइस वर्तमान में। इसलिए आप गंभीरता से इससे बेहतर की उम्मीद नहीं कर सकते11V भर में RLOAD। कभी। आपको उस पर योजना बनाने की जरूरत है। और कम, अगर आपका कलेक्टर वर्तमान काफी बढ़ जाता है।

ध्यान दें कि वे एक का उपयोग करें β=250संतृप्ति के लिए! बहुत महत्वपूर्ण है। लेकिन यह एक डार्लिंगटन है। इसलिए उम्मीद की जानी चाहिए। यदि आपका लोड करंट केवल सही मायने में है60mA फिर आपका आधार करंट ही होना चाहिए 250μA

अब, यह बहुत स्पष्ट है कि आप भी डार्लिंगटन का उपयोग कर रहे हैं Q6! क्या?? ओह अच्छा। वह चीज न्यूनतम है β=5000 एक भूरा IC=10mA! क्या आप समझदार हैं? आधार वर्तमान के लिए आवश्यक हैQ6 यहाँ, इस emitter अनुयायी विन्यास में है 50nA (इन कम धाराओं पर यह मानते हुए कि β रखती है (शायद नहीं।) किसी भी मामले में, आपके पास बोलने के लिए कोई आधार नहीं है Q6

तो इसका क्या मूल्य है? R22? आईटी इसR22=3.3V1V250μA=9200Ω। हालांकि, के लिए लेखांकन, कहते हैं,50μA के लिये R25, मैं एक का उपयोग करेंगे 7.2kΩवहाँ। का मूल्यR25 अधिक से अधिक स्रोत होना चाहिए 50μA, तो मैं कुछ करना चाहता हूँ a 22kΩवहाँ। (मैं इसे बहुत बड़ा बनाने के लिए लुभाऊंगा। लेकिन क्या बिल्ली। इस के साथ रहना।) तो, फिर से।R22=3.3V1V250μA+50μA7.2kΩ

schematic

इस सर्किट का अनुकरण करें

यदि आप लोड बढ़ाते हैं, तो गणना के साथ पालन करें।


आप डार्लिंगटन का उपयोग क्यों कर रहे हैं ?? आह। अब आप उल्लेख करते हैं कि आपके ऊपर एक भार हो सकता है3A। तो यह समझ में आता है।

चलो उस तरह के भार के लिए चीजों को फिर से करें:

schematic

इस सर्किट का अनुकरण करें

वह डार्लिंगटन अधिक वोल्टेज गिराएगा और अब उचित मात्रा में बिजली का प्रसार करेगा। वास्तव में, यह आप को लागू करने की हिम्मत से अधिक फैल जाएगा !! थर्मल प्रतिरोध पर एक नज़र डालें और अधिकतम ऑपरेटिंग तापमान भी! यह मानते हुए कि आप खुद को बेहतर ढंग से फैलाने के लिए बोर्ड पर कुछ विशेष नहीं करते हैं, आप इसके बारे में अधिक नहीं बता सकते हैं1.5W उस उपकरण पर।

इसलिए जब सभी संख्याएँ "अर्ध-ठीक" होती हैं, तो आपको कई समस्याएं होती हैं।

  1. आपके डार्लिंगटन पर अपव्यय केवल कई बार बहुत अधिक है।
  2. आप के बारे में खो देंगे 1.5Vअपने उच्च पक्ष की आपूर्ति रेल से, आपके लोड तक पहुंचना। अगर तुम साथ रह सकते हो10.5V, तो यह एक ऐसी समस्या नहीं हो सकती है। लेकिन वहाँ है, यह मानते हुए कि डार्लिंगटन सिर्फ खुद को पहले जला नहीं करता है।

इसके अलावा, ठीक लगता है।

आपको अपव्यय से निपटने की आवश्यकता है। यह उन मामलों में से एक है जहां एक MOSFET बहुत अच्छा लगने लगता है।


बहुत विस्तृत उत्तर के लिए धन्यवाद। डार्लिंगटन ने मेरे कैडेट सॉफ्टवेयर में पैकेजिंग पर ध्यान केंद्रित करते हुए मेरे कैडिट सॉफ्टवेयर का इस्तेमाल किया, जो ऐनक के विपरीत है (लाज़िली, और अंतिम मिनट जो कि प्रोटीओ पीसीबी को स्पिन करने के लिए होता है) @ जोंक - लोड वास्तव में 2 या 3 ए की तरह है (इसलिए लगभग 4-6ohms) बदले बिना "बहुत अधिक" मैं यहां क्या कर सकता हूं - मुझे लगता है कि सबसे पहले Q6 को मेरे कामकाजी प्रोटो की तरह बदलें - एक 2n3904 समतुल्य एसएमटी डिवाइस, और फिर निश्चित रूप से गलत तरीके से रखे गए / वायर्ड Q8 को फ़्लिप करना - जो मुझे ऐनक पर वापस लाएगा, और कम से कम प्रोटो वर्किंग- अगले चरण में डिजाइन को परिष्कृत करना?
MattyT2017 21

@ MattyT2017 वाह। इतने सारे एम्प्स? ठीक है। अब एक डार्लिंगटन कुछ समझ में आता है। यह अन्य ट्रांजिस्टर के लिए एक नियमित bjt का उपयोग करना आसान बनाता है। मैं घर से दूर हूं, लेकिन आपके लौटने और एक पल पाने के बाद आपकी टिप्पणी को बेहतर तरीके से संबोधित करूंगा। जल्द ही।
Jonk

जोंक - हाँ बिजली का मुद्दा सिर्फ साधारण अपव्यय है - आप सबसे कम कंपोज़िट की संख्या क्या होगी जिसे आप "ब्लैक बॉक्स" के रूप में सोच सकते हैं, 3v3 की आवश्यकता, कम वर्तमान ट्रिगर -> + 12 v / 3A सक्षम आउटपुट - बस इसके बारे में चले गए हैं पूरी तरह से गलत तरीका? हम हर समय कम साइड ड्राइवरों के लिए fets का उपयोग करते हैं - इसलिए वास्तव में सबसे स्वच्छ उच्च पक्ष समाधान क्या आप परिकल्पना कर सकते हैं?
MattyT2017

@ MattyT2017 यह निर्भर करता है। मैं शायद अभी भी BJTs का उपयोग करता हूं क्योंकि मेरे पास उनमें से हजारों हैं और मस्जिद "महंगी" (हालांकि आम) हैं और उच्च गति के लिए कैपेसिटिव ड्राइव मुद्दे भी हैं जो मेरे लिए अधिक "विचार" लेते हैं। क्या आपके पास स्टॉक या पसंद का कोई विशेष पीएफईटी है? मुख्य रूप से, आप जितना संभव हो उतना कम वोल्टेज गिराना चाहते हैं, इसलिए प्रतिरोधों की तलाश करें100mΩ या गेट ड्राइव के साथ कम VGS∣=10V(या छोटे परिमाण) और जब आप समर्थन करना चाहते हैं तो अधिकतम धारा से अधिक में एक नाली का प्रवाह प्रदान करना।
जोंक

7

यहां तक ​​कि अगर Q6 को पूरी तरह से चालू किया जा सकता है, जो कि इस सर्किट में नहीं होता है, तो यह एक होगा VBE ड्रॉप 0.7V, इसलिए इसके एमिटर पर आप पाएंगे 3.3V0.7V=2.6Vलगभग। इसलिए, भले हीVCE लगभग शून्य थे (जैसा कि मैंने कहा, आपके सर्किट में असंभव है), क्यू 8 बेस को जमीन पर नहीं खींचा जाएगा।

एम 22 से आर 22 से छुटकारा पाएं और क्यू 6 आधार के साथ श्रृंखला में डाल दें क्यू 6 को चालू करने के लिए एक उपयुक्त पूर्वाग्रह सेट करें। इस संशोधित योजनाबद्ध के साथ, Q6 एक स्विच के रूप में कार्य करता है और Q8 बेस को जमीन के बहुत पास खींच सकता है (बिल्कुल नहीं, हालांकि: आपके पास लघु संतृप्ति वोल्टेज होगाVCE(sat) Q8 के CE टर्मिनलों के पार, 200mV से कम)।

साइड नोट के रूप में, एमिटर पर R22 के साथ, Q6 एक निरंतर वर्तमान स्रोत के रूप में कार्य करता है, जिसमें आउटपुट करंट होता है ICIE=VB0.7VR22=3.3V0.7V220Ω12mA

समस्या यह है कि यह सर्किट एक मौजूदा स्रोत के रूप में काम करता है जब तक कि यह 12V रेल की ओर वोल्टेज हेडरूम हो। आपके सर्किट में यह Q25 के BE जंक्शन के साथ समानांतर में R25 (2.2k in) में उन 12mA को मजबूर करता है (यह मानते हुए कि आप Q8 को सही ढंग से कनेक्ट करते हैं, यानी आप अपने सर्किट में C और E स्वैप करते हैं)।

यह वर्तमान विभाजन और Q8 के आगे के पक्षपाती बीई जंक्शन में लगभग पूरी तरह से बहता है। क्यों? क्योंकि अगर वह जंक्शन बंद था, तो पूरे 12mA का प्रवाह R25 में बहेगा, और इसके लिए 26V की आवश्यकता होगी, जो कि 12V रेल के साथ संभव नहीं है। इसलिए बीई जंक्शन को चालू होना चाहिए और इस तरह से यह ~ 0.7 वी ड्रॉप भर में दिखाएगा, जो आर 25 में एक बहुत छोटा करंट लगाएगा (0.7V2.2kΩ0.31mA<<12mA)।

इसके बेस में एक 12mA का वर्तमान आउटपुट ट्रांजिस्टर को संतृप्त करने और इसे चालू-चालू स्विच (जो आपको चाहिए) के रूप में काम करने के लिए पर्याप्त से अधिक है। हालाँकि, आपको इसका आधार जमीन पर नहीं मिलेगा, जैसा कि आप उम्मीद करेंगे, क्योंकि "ड्राइवर" ट्रांजिस्टर Q6 एक स्विच की तरह काम नहीं करता है, लेकिन एक (switchable) वर्तमान स्रोत के रूप में।


स्कूल b oy त्रुटि मुझे लगता है - Q8 उल्टा! रवींद्र
MattyT2017

उल्टा Q8 एक अपराधी के अधिक होगा? या मैं अभी भी स्पष्ट याद कर रहा हूँ?
MattyT2017 14

@ MattyT2017 क्या आपने केवल Q8 को उलटा खींचा है या आपने इसे अपने सर्किट में इस तरह से तार दिया है?
लोरेंजो डोनाटी - कोडिडैक्ट.ऑर्ग

इसे पीसीबी पर भी वायर किया
MattyT2017

6

मैं मान रहा हूँ कि PNP ट्रांजिस्टर (Q8) जानबूझकर एमिटर के साथ जुड़ा हुआ है और संतृप्त होने पर थोड़ा कम Vce प्राप्त करने के लिए कलेक्टर ने स्वैप किया है। इस तकनीक का उपयोग अभी और फिर किया जाता है, लेकिन रिवर्स एमिटर-बेस वोल्टेज के टूटने के साथ संभावित समस्याएं होती हैं इसलिए यदि यह जानबूझकर है तो गणित करें। यदि नहीं, तो पर पढ़ें।

आउटपुट हमेशा 12 वी है।

लोड के बिना और एक उच्च प्रतिबाधा मीटर का उपयोग करते हुए और क्यू 8 के माध्यम से एक छोटा रिसाव चालू दिया, आउटपुट 12 वोल्ट तक हल्के से खींचा जाएगा और यह वही हो सकता है जो आप देखते हैं।

आउटपुट के आधार पर स्कूपिंग के लिए ट्रांजिस्टर को "पर्याप्त" जमीन पर नहीं खींचा जा रहा है - केवल 12V फिर 11.5V तक जा रहा है।

12 वोल्ट और आधार के बीच जंक्शन एक आगे की चालन डायोड है और यह केवल मध्यम आधार धारा के लिए 0.4 वोल्ट और 0.7 वोल्ट के बीच ड्रॉप होने की संभावना है। यह कोई समस्या नहीं है। बेस करंट Q6 के बेस पर 3.3 वोल्ट द्वारा सेट किया गया है - यह Q6 के एमिटर पर 2.7 वोल्ट के बारे में "डाल" देगा और R22 के माध्यम से प्रवाह करने के लिए लगभग 12 mA के करंट को बल देगा - यह करंट Q8 के बेस से काफी हद तक गुजरेगा ( इसे चालू करने के लिए लगभग 10 एमए)।

मैं क्या खो रहा हूँ?

एक आउटपुट लोड और संभवतः गलत तरीके से वायरिंग कलेक्टर और एमिटर के अलावा, ज्यादा कुछ नहीं।


ठीक है, इसलिए R22 को बेस में ले जाने की कोशिश की, और एमिट्रे को जमीन से जोड़ दिया, जैसे कि अब मेरे पास एक स्थिर स्थिर 4.5v / 0.7v सिग्नल है जो Q8 के बेस में आ रहा है, और Q8 में 200ohm लोड जोड़ा, और सबसे अनिश्चित रूप से स्वैप किया। वायर्ड सी / ई - अभी भी कोई खुशी नहीं है - मैं वास्तव में उलझन में हूं (दिन में देर होनी चाहिए!) जो कि एक उच्च सिम्पल उच्च पक्ष सर्किट होना चाहिए - एक 3v3 सिग्नल से एम्प के एक जोड़े को ड्राइव करने के लिए ned - यह कितना कठिन हो सकता है ? :)
MattyT2017

@ MattyT2017 आपका सर्किट (उल्टे Q8 को छोड़कर) Q6 को एक एमिटर फॉलोअर के रूप में उपयोग करता है और यह एक अच्छा टोपोलॉजी है, कुछ लोगों के विचार के लिए पूरी तरह से अंधा होने के बावजूद। इसका बहुत बड़ा लाभ है क्योंकि यह पूर्ण की अनुमति देता हैβQ6 लागू होने के लिए। इसका एक नुकसान यह है कि इसे चलाते समय उच्च आवृत्ति दोलन हो सकते हैं (आसानी से एक छोटे मूल्यवान आधार अवरोधक के साथ तय किया गया ।) आपकी समस्या इस बारे में अधिक है कि एंडी यहां क्या बात कर रहा है।
Jonk

1
@ MattyT2017 अगर आप कुछ जोड़े चाहते हैं तो शायद ट्रांजिस्टर (Q8) का बीटा इस स्तर पर बहुत खराब है। मैं एक पी चैनल MOSFET का उपयोग एक amp या ऊपर के आउटपुट ड्राइवर के रूप में करूँगा।
एंडी उर्फ

@Andyaka मैंने अभी आपकी टिप्पणी पढ़ी है! अरे। आपने कहा कि मैंने अभी अपने उत्तर में क्या जोड़ा है। :)
जोंक

@ MattyT2017 ने आपके बारे में सोचने के लिए कुछ अतिरिक्त सामान जोड़े। मुझे लगता है कि एंडी मस्जिद के बारे में सही है, वैसे। और अब आप इसका हिस्सा क्यों देख सकते हैं।
जोंक

3

टिप्पणी 1) एक स्विच के रूप में BJT ट्रांजिस्टर का उपयोग करते समय (एम्पलीफायर नहीं), एमिटर को सीधे पावर स्रोत से कनेक्ट करें, एमिटर और पावर स्रोत के बीच कोई सर्किट तत्व नहीं है। NPN ट्रांजिस्टर के लिए एमिटर को सीधे NEGATIVE पावर रेल (जैसे, GROUND) से कनेक्ट करते हैं, और PNP ट्रांजिस्टर के लिए एमिटर को सीधे पोसिटिव पावर रेल (जैसे, 12V_IGN_ON, जो मैं मान रहा हूं कि आपका पावर सोर्स है) से कनेक्ट करता हूं। कलेक्टर को उस लोड से कनेक्ट करें जिस पर स्विच किया जा रहा है। [इसी तरह, MOSFET स्विच के लिए, MOSFET के SOURCE पिन को सीधे बिजली स्रोत से कनेक्ट करें: N-MOS's SOURCE to NEGATIVE बिजली स्रोत; P-MOS का स्रोत POSITIVE शक्ति स्रोत के लिए। DRAIN को लोड से कनेक्ट करें।]

टिप्पणी 2) डार्लिंगटन जोड़ी में आउटपुट ट्रांजिस्टर संतृप्त नहीं होगा (पूरी तरह से चालू); यह संतृप्ति से संपर्क करेगा लेकिन यह संतृप्ति को कभी प्राप्त नहीं करेगा। इसे ध्यान में रखते हुए, आप जिस डार्लिंगटन ट्रांजिस्टर का उपयोग कर रहे हैं, वह अधिक शक्ति को नष्ट (नष्ट) करेगा और संतृप्ति में संचालित होने वाले "मानक" BJT ट्रांजिस्टर की तुलना में अधिक गर्म होगा; इसलिए, डार्लिंगटन जोड़ी का उपयोग करते समय लोड को कम करने की शक्ति उपलब्ध होगी जैसा कि यहां किया जा रहा है। TL; DR: सर्किट को स्विच करने के लिए कभी भी डार्लिंगटन जोड़ी ट्रांजिस्टर का उपयोग न करें जो कि कटऑफ (OFF) और संतृप्ति (ON) के बीच स्विच होना चाहिए।

टिप्पणी 3) IMO, BJT स्विचिंग सर्किट को डिजाइन करते समय वर्तमान गणना के साथ काम करना सबसे आसान है। मान लें कि आउटपुट लोड अधिकतम 100 mA का है। मान लेते हैं कि आप डार्लिंगटन ट्रांजिस्टर Q8 को एक छोटे-सिग्नल वाले PNP BJT (जैसे, 2N3906) से बदलते हैं, जिसका संतृप्ति बीटा 10 (डेटाशीट देखें) है। पहले सन्निकटन गणना के लिए हम उपयोग करते हैं,

Q8_IC_sat = Q8_Beta_sat * Q8_IB_sat

इसलिए,

=> IB_sat = IC_sat / Beta_sat
= (-100 mA) / (10)
=> IB_sat = -10 mA

तो क्यू 8 के आधार से बाहर निकलने वाला वर्तमान कम से कम 10 एमए होना चाहिए। इस बेस करंट को Q6 के कलेक्टर और Q8 के बेस के बीच श्रृंखला में जुड़े उचित रूप से मूल्यवान करंट- रेमिटिंग R_X के माध्यम से "प्रोग्राम्ड" किया गया है । (nb प्रतिरोधों R22 और R25 को हटा दें।)

R_X = ((12V_IGN_ON) - (Q8_VBE(SAT) @ Q8_IC=100mA) - (Q6_VCE(SAT) @ Q6_IC=10mA)) / 10mA

Q6 को NPN BJT से बदलें - उदाहरण के लिए, एक छोटा-संकेत 2N2222A। अब लक्ष्य Q6 को संतृप्त करना है, जब माइक्रोकंट्रोलर के डिजिटल आउटपुट पिन को एक लॉजिक हाई आउटपुट बनाने के लिए प्रोग्राम किया जाता है। एक बार फिर, 2N2222A के डेटाशीट को देखने पर हम संतृप्ति बीटा को देखते हैं। 10. इसलिए माइक्रोकंट्रोलर के डिजिटल आउटपुट पिन और Q6 के बेस से बहने वाला आवश्यक प्रवाह है

Q6_IB_sat = Q6_IC_sat / Q6_Beta_sat
= (10 mA) / (10)
=> IB_sat(Q6) = 1 mA

इस 1 mA वर्तमान को माइक्रोकंट्रोलर के डिजिटल आउटपुट पिन और Q6 के बेस के बीच श्रृंखला में जुड़े एक उचित रूप से मूल्यवान वर्तमान-सीमित रोकनेवाला R_Y के माध्यम से प्रोग्राम किया जा सकता है:

R_Y = ( (microcontroller VOH) - (Q6_VBE(Sat) @ Q6_IC(sat)=10mA) ) / 1 mA

जहां 'VOH', माइक्रोकंट्रोलर के डिजिटल आउटपुट पिन पर एक लॉजिक हाई आउटपुट सिग्नल के लिए न्यूनतम वोल्टेज है (देखें VOH खोजने के लिए माइक्रोकंट्रोलर की डेटशीट देखें)।

VOH <= uC digital output pin logic HIGH voltage < 3.3V

2

आपको आधार अवरोधक के साथ क्यू 6 को ठीक से पूर्वाग्रह करने की आवश्यकता है। वर्तमान में यह एक एमिटर फॉलोअर है। इसलिए एमिटर 3.3V पर है - Vbe = 2.6 V


-2

दूसरा बीजीटी किसी तरह संतृप्ति में है


1
फिर समझाएं कि इसके कारण क्या हो सकते हैं और इसे कैसे ठीक किया जाए।
फ़िनबार

ओपी के आंकड़े में, ट्रांजिस्टर Q8 एक डार्लिंगटन जोड़ी है। डार्लिंगटन जोड़ी पर इनपुट ट्रांजिस्टर को संतृप्ति में संचालित किया जा सकता है, लेकिन आउटपुट ट्रांजिस्टर को संतृप्त नहीं किया जा सकता है, यह मानते हुए कि कोई एनपीएन ट्रांजिस्टर के लिए 'संतृप्ति' की सामान्य परिभाषा का उपयोग करता है: वीई <वीबी> वीसी।
जिम फिशर
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.