Arduino - पल्स चौड़ाई मॉडुलन

पल्स चौड़ाई मॉड्यूलेशन या पीडब्लूएम एक आम तकनीक है जिसका उपयोग पल्स-ट्रेन में दालों की चौड़ाई को अलग करने के लिए किया जाता है। पीडब्लूएम में कई एप्लिकेशन होते हैं जैसे कि मोटर और एलईडी की प्रभावी शक्ति को सीमित करने वाले सर्वो और गति नियंत्रकों को नियंत्रित करना।

PWM का मूल सिद्धांत

पल्स चौड़ाई मॉड्यूलेशन मूल रूप से, अलग-अलग उच्च और निम्न समय के साथ एक वर्ग तरंग है। एक बुनियादी पीडब्लूएम संकेत निम्नलिखित आकृति में दिखाया गया है।

PWM से जुड़े विभिन्न शब्द हैं -

  • On-Time - समय संकेत की अवधि अधिक है।

  • Off-Time - समय संकेत की अवधि कम है।

  • Period - इसे PWM सिग्नल के ऑन-टाइम और ऑफ-टाइम के योग के रूप में दर्शाया गया है।

  • Duty Cycle - यह समय सिग्नल के प्रतिशत के रूप में दर्शाया जाता है जो PWM सिग्नल की अवधि के दौरान रहता है।

अवधि

जैसा कि चित्र में दिखाया गया है, T ऑन -टाइम को दर्शाता है और T ऑफ सिग्नल का ऑफ-टाइम दर्शाता है। अवधि दोनों पर और बंद समय का योग है और निम्न समीकरण में दिखाया गया है -

$$ T_ {कुल} = T_ {on} + T_ {बंद} $ $

साइकिल शुल्क

कर्तव्य चक्र की गणना समय की अवधि के समय के रूप में की जाती है। ऊपर दी गई अवधि का उपयोग करके, कर्तव्य चक्र की गणना इस प्रकार की जाती है -

$$ D = \ frac {T_ {on}} {T_ {on} + T_ {off}} = \ frac {T_ {on}}} {T_ {total}} $$

analogWrite () फ़ंक्शन

analogWrite()फ़ंक्शन एक पिन करने के लिए एक एनालॉग मूल्य (PWM लहर) लिखता है। यह अलग-अलग चमक पर एक एलईडी प्रकाश करने या विभिन्न गति से मोटर चलाने के लिए इस्तेमाल किया जा सकता है। AnalogWrite () फ़ंक्शन की कॉल के बाद, पिन निर्दिष्ट कर्तव्य चक्र की एक स्थिर वर्ग तरंग उत्पन्न करेगा जब तक कि अगली कॉल analogWrite () या digitalRead () या digitalWrite () को एक ही पिन पर कॉल न कर दे। अधिकांश पिनों पर पीडब्लूएम सिग्नल की आवृत्ति लगभग 490 हर्ट्ज है। ऊनो और इसी तरह के बोर्डों पर, पिन 5 और 6 में लगभग 980 हर्ट्ज की आवृत्ति होती है। लियोनार्डो पर पिंस 3 और 11 भी 980 हर्ट्ज पर चलते हैं।

अधिकांश Arduino बोर्डों (ATmega168 या ATmega328 वाले) पर, यह फ़ंक्शन पिन 3, 5, 6, 9, 10 और 11 पर काम करता है। Arduino Mega पर, यह पिन 2 - 13 और 44 - 46 पर काम करता है। Old Ar Arinoino ATmega8 वाले बोर्ड ही सपोर्ट करते हैं analogWrite() पिन 9, 10 और 11 पर।

द Arduino ड्यू सपोर्ट करता है analogWrite()13 के माध्यम से 2 पिन पर, और DAC0 और DAC1 पिन करें। PWM पिन के विपरीत, DAC0 और DAC1 एनालॉग कन्वर्टर्स के लिए डिजिटल हैं, और सच्चे एनालॉग आउटपुट के रूप में कार्य करते हैं।

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

analogWrite () फ़ंक्शन सिंटैक्स

analogWrite ( pin , value ) ;

value - कर्तव्य चक्र: 0 (हमेशा बंद) और 255 (हमेशा) के बीच।

Example

int ledPin = 9; // LED connected to digital pin 9
int analogPin = 3; // potentiometer connected to analog pin 3
int val = 0; // variable to store the read value

void setup() {
   pinMode(ledPin, OUTPUT); // sets the pin as output
}

void loop() {
   val = analogRead(analogPin); // read the input pin
   analogWrite(ledPin, (val / 4)); // analogRead values go from 0 to 1023, 
      // analogWrite values from 0 to 255
}