मैंने हाल ही में पीडब्लूएम के साथ खुद को प्रयोग करना शुरू करने का कुछ कारण पाया है, और पाया कि (जैसा कि टिप्पणियों में से एक द्वारा बताया गया है) आवृत्ति चक्र - बिज़ारे के साथ बदलती है, है ना? यह पता चला है कि ब्रॉडकॉम ने पीडब्लूएम को चालू और बंद करने के लिए "संतुलित" पीडब्लूएम को लागू किया है ताकि समान रूप से वितरित किया जा सके। वे एल्गोरिथम और उनके डेटाशीट के पेज 139 पर कुछ और चर्चा का विवरण देते हैं:
http://www.element14.com/community/servlet/JiveServlet/downloadBody/43016-102-1-231518/Broadcom.Detasheet.pdf
तो आप वास्तव में पीडब्लूएम को मार्क-स्पेस मोड में रखना चाहते हैं, जो आपको पारंपरिक (और आसानी से अनुमान लगाने योग्य) पीडब्लूएम की तलाश करेगा:
pwmSetMode(PWM_MODE_MS);
शेष उत्तर मान लेते हैं कि हम मार्क-स्पेस मोड में हैं।
मैंने कुछ मानों की स्वीकार्य सीमा के साथ प्रयोग भी किया pwmSetClock()
और pwmSetRange()
। जैसा कि अन्य उत्तरों में से एक में उल्लेख किया गया है, के लिए मान्य सीमा pwmSetClock()
2 से 4095 तक जाती है, जबकि वैध सीमा pwmSetRange()
4096 तक है (मैंने निचली सीमा खोजने का प्रयास नहीं किया था)।
रेंज और घड़ी (एक बेहतर नाम शायद भाज्य है) दोनों आवृत्ति को प्रभावित करते हैं। सीमा संकल्प को भी प्रभावित करती है, इसलिए जब यह बहुत कम मूल्यों का उपयोग करना संभव हो सकता है, तो इस बात की व्यावहारिक सीमा है कि आप शायद कितना कम जाना चाहते हैं। उदाहरण के लिए, यदि आपने 4 की सीमा का उपयोग किया है, तो आप उच्च आवृत्तियों को प्राप्त कर सकते हैं, लेकिन आप केवल 0/4, 1/4, 2/4, 3/4 या 4/4 के लिए शुल्क चक्र निर्धारित कर पाएंगे।
रास्पबेरी पाई पीडब्लूएम घड़ी की आधार आवृत्ति 19.2 मेगाहर्ट्ज है। यह आवृत्ति, जिसे तर्क द्वारा विभाजित किया गया है pwmSetClock()
, वह आवृत्ति है जिस पर PWM काउंटर बढ़ा हुआ है। जब काउंटर निर्दिष्ट सीमा के बराबर मूल्य तक पहुंचता है, तो यह शून्य पर रीसेट हो जाता है। जबकि काउंटर निर्दिष्ट कर्तव्य चक्र से कम है, आउटपुट अधिक है, अन्यथा आउटपुट कम है।
इसका मतलब है, यदि आप PWM को एक विशिष्ट आवृत्ति के लिए सेट करना चाहते हैं, तो आप निम्न संबंध का उपयोग कर सकते हैं:
pwmFrequency in Hz = 19.2e6 Hz / pwmClock / pwmRange.
यदि आप अधिकतम अनुमेय मूल्यों का उपयोग करते हैं pwmSetClock()
और pwmSetRange()
, आप ~ 1.14 हर्ट्ज की न्यूनतम प्राप्त करने योग्य हार्डवेयर पीडब्लूएम आवृत्ति के साथ समाप्त हो जाएंगे। यह निश्चित रूप से एक एलईडी के लिए एक दृश्यमान झिलमिलाहट (फ्लैश का अधिक, वास्तव में) देगा। मैंने एक आस्टसीलस्कप के साथ उपरोक्त समीकरण की पुष्टि की, और यह पकड़ लगता है। ऊपरी आवृत्ति सीमा आपके द्वारा आवश्यक संकल्प से प्रभावित होगी, जैसा कि ऊपर वर्णित है।
pwmWrite()
। ऐसा कुछ नहीं जो मैं होने की उम्मीद