Arduino पर PWM आउटपुट की आवृत्ति क्या है


22

जब आप एनालॉगवर्ट () का उपयोग करते हैं तो Arduinos सामान्य PWM के लिए किस आवृत्ति का उपयोग करता है?

और क्या यह विभिन्न Arduino मॉडल के लिए अलग है? मैं विशेष रूप से मेगा 2560 में दिलचस्पी रखता हूं, लेकिन यह भी जानना चाहता हूं कि क्या यह मॉडल के बीच संगत है।

मैंने 500 हर्ट्ज का उपयोग करके Arduino के लिए एक संदर्भ देखा है, जो वास्तव में धीमा लगता है।


यह उस पिन पर भी निर्भर करता है जिसका आप उपयोग कर रहे हैं।
गेर्बन

जवाबों:


31

PWM सिग्नल AVR चिप्स पर टाइमर द्वारा उत्पन्न होता है। प्रत्येक टाइमर दो या तीन अलग-अलग पिनों पर एक PWM सिग्नल उत्पन्न कर सकता है। प्रत्येक पिन का अपना कर्तव्य चक्र हो सकता है, लेकिन वे PWM आवृत्ति साझा करते हैं। आप टाइमर के लिए घड़ी के स्रोत को बदलकर पीडब्लूएम की आवृत्ति को बदल सकते हैं। डिफ़ॉल्ट रूप से वे 64 द्वारा विभाजित सीपीयू घड़ी का उपयोग करते हैं, अर्थात। वे Arduino आरंभीकरण कोड द्वारा 64 के लिए अपने प्रीस्कूलर सेट है। चीजों को और अधिक भ्रमित करने के लिए दो अलग-अलग PWM मोड हैं: तेज PWM और चरण सही PWM। तेज PWM में टाइमर 255 तक गिना जाता है, फिर ओवरफ्लो होता है और 0 (256 विभिन्न राज्यों) से शुरू होता है। चरण सही PWM में टाइमर 255 तक गिना जाता है, फिर दिशा बदलता है और नीचे की ओर शून्य में बदल जाता है, दिशा बदलता है और इतने पर (510 मिलियन राज्य)।

Arduino मेगा में 5 टाइमर, टाइमर0 - टाइमर 4 हैं। क्योंकि टाइमर0 का उपयोग मिलिस और माइक्रो फ़ंक्शंस के लिए भी किया जाता है क्योंकि यह तेज़ पीडब्लूएम का उपयोग करता है, जबकि अन्य टाइमर चरण सही पीडब्लूएम के लिए कॉन्फ़िगर किए गए हैं। इसके परिणामस्वरूप विभिन्न पिनों पर अलग-अलग फ्रीक्वेंसी होती हैं:

  • पिन 4 और 13,
    टाइमर 0 द्वारा नियंत्रित: 16 मेगाहर्ट्ज / 64/256 = 976.56 हर्ट्ज

  • अन्य PWM पिन, टाइमर 1-4 द्वारा नियंत्रित:
    16 मेगाहर्ट्ज / 64/510 = 490.20 हर्ट्ज

गणना है: राज्यों की घड़ी / प्रीस्कूलर / पीडब्लूएम मोड संख्या

स्थिति अन्य सभी Arduino बोर्डों के लिए समान है, जिन्हें मैं जानता हूं, सिवाय इसके कि उनके पास कम टाइमर हैं जो विभिन्न पिनों से जुड़ते हैं।

आप टाइमर प्रीस्कूलर को बदलकर PWM फ्रीक्वेंसी बदल सकते हैं। इस पृष्ठ को देखें: http://playground.arduino.cc/Main/TimerPWMCheatsheet

255 से भिन्न मानों की गणना करना भी संभव है। 8 बिट टाइमर पर आप आउटपुट पिन को ढीला कर देंगे, लेकिन 16 बिट टाइमर पर आप टॉप वैल्यू को परिभाषित करने के लिए इनपुट कैप्चर रजिस्टर का उपयोग कर सकते हैं। इनपुट कैप्चर कार्यक्षमता Arduino समुदाय में शायद ही कभी उपयोग की जाने वाली एक विशेषता है, इसलिए आपको इसकी याद नहीं होगी।

Arduino लाइब्रेरी केवल 8 बिट रिज़ॉल्यूशन का उपयोग करने की अनुमति देती है, यहां तक ​​कि 16 बिट टाइमर पर भी। यदि आप उच्च रिज़ॉल्यूशन चाहते हैं, तो आपको अपना स्वयं का एनालॉग लिखना होगा, या उद्देश्य के लिए बनाई गई लाइब्रेरी का उपयोग करना होगा। Arduino मेगा पर टाइमर 0 और टाइमर 2 8 बिट हैं, जबकि बाकी 16 बिट हैं।

पूर्ण संकल्प का उपयोग करने के लिए 16 बिट टाइमर के मोड को बदलकर, प्रीस्कूलर और शीर्ष मूल्य को बदलने के संयोजन में, आप PWM आवृत्तियों की एक बहुत विस्तृत श्रृंखला प्राप्त कर सकते हैं।

अधिकतम आवृत्ति जो आप प्राप्त कर सकते हैं वह घड़ी / 4 है, प्रीस्कूलर को फास्ट पीडब्लूएम मोड में 1 और टीओपी 3 पर सेट करके - कम मूल्य की अनुमति नहीं है। यह आपको 2 बिट रिज़ॉल्यूशन के साथ 4 मेगाहर्ट्ज पीडब्लूएम देगा। यह 0%, 25%, 50% या 75% समय पर हो सकता है। एक उच्च शीर्ष मूल्य आपको कम आवृत्ति पर उच्च रिज़ॉल्यूशन देगा।

एक लंबे समय तक स्पष्टीकरण के लिए यह पढ़ लेख या का उल्लेख डेटापत्रक

प्रीस्कूलर को बदलने, PWM मोड, या टाइमर के लिए TOP मान के साथ गड़बड़ हो जाएगा millis()और micros()


1
मैं इकट्ठा करता हूं, फिर पीडब्लूएम के लिए सबसे तेज़ आवृत्ति आपको 16Mhz / 256 (प्रिस्क्रेलर = 1) या 62.5Khz मिल सकती है?
डंकन सी।

और आगे कि PWM आवृत्ति 62.5KHz का भी एक कारक होना चाहिए? एक और धागे पर कोई भी 4-पिन पीसी प्रशंसक की गति को नियंत्रित करना चाहता था। स्पष्ट रूप से यह 25KHz का PWM नियंत्रण संकेत चाहता है। 62.5 / 25 2.5 है, जो पूर्णांक मान नहीं है।
डंकन सी।

मैंने विशिष्ट आवृत्तियों को प्राप्त करने की संभावनाओं के बारे में अधिक विस्तार से अपडेट किया,
16:29

कम आवृत्ति के अंत में, आप 16e6 / 1024/2 ^ 16/2 = 0.119Hz, या 7.1 चक्र / मिनट प्राप्त करने के लिए 1024 प्रीस्कूलर द्वारा चरण-सही मोड में 16 बिट टाइमर को निर्धारित कर सकते हैं। उससे कम के लिए, किसी को मिलिस () जैसी चीज के आधार पर बिट्स को टॉगल करने की आवश्यकता होगी। या शायद बाहरी इनपुट पिन टी पर काउंटर ट्रिगर।?
डेव एक्स
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.