पल्स चौड़ाई मॉड्यूलेशन (पीडब्लूएम) एक तकनीक है जो तरंग आवृत्ति को स्थिर रखते हुए एक नाड़ी की चौड़ाई को बदलती है। पीडब्लूएम तकनीक मुख्य रूप से एलईडी की चमक को नियंत्रित करने के लिए, डीसी मोटर की गति, एक इमदादी मोटर को नियंत्रित करने के लिए या अन्य मामलों में, जहां डिजिटल स्रोत का उपयोग करके एनालॉग सिग्नल उत्पन्न करना होता है। हमने पिछले लेख में PWM के बारे में विस्तार से बताया।
इस ट्यूटोरियल में, हम ESP32 विकास बोर्ड के पीडब्लूएम (पल्स चौड़ाई मॉडुलन) पिन के बारे में बात करने जा रहे हैं । पीडब्लूएम सिग्नल प्राप्त करने के लिए ईएसपी 32 विकास बोर्ड (पावर, जीएनडी, टीएक्स, आरएक्स और एन को छोड़कर) के सभी जीपीओ पिन का उपयोग किया जा सकता है। एक के रूप में ESP32 PWM उदाहरण के लिए, हम एक साधारण सर्किट कि बनाएँगे PWM संकेत के अनुसार एलईडी चमक बदलता है ।
अवयव आवश्यक
- ईएसपी 32
- एलईडी
- 330 istor रेसिस्टर
- 10k पॉट
- ब्रेड बोर्ड
PWM पीढ़ी
ESP32 पर PWM पीढ़ी को समझाने से पहले, आइए PWM से जुड़े कुछ शब्दों पर चर्चा करें।
TON (समय पर): संकेत के उच्च होने पर समय की अवधि।
TOFF (ऑफ टाइम): सिग्नल कम होने पर समय की अवधि।
अवधि: यह पीडब्लूएम सिग्नल के समय और ऑफ टाइम का योग है।
TotalPeriod = T ON + T OFF
कर्तव्य चक्र: पीडब्लूएम सिग्नल की अवधि के दौरान सिग्नल के उच्च स्तर का समय।
कर्तव्य चक्र = T ON / T कुल * 100
उदाहरण के लिए, यदि 10ms की कुल अवधि के साथ एक पल्स 5ms के लिए ON (उच्च) रहता है। फिर, कर्तव्य चक्र होगा:
ड्यूटी साइकिल = 5/10 * 100 = 50% ड्यूटी साइकिल
सर्किट में एक एलईडी, एक रोकनेवाला, और एक 10K पोटेंशियोमीटर शामिल है। एलईडी का नकारात्मक पिन 330 or अवरोधक के माध्यम से ईएसपी 32 के जीएनडी से जुड़ा होता है। आप 230 Ω और 500 230 के बीच किसी भी प्रतिरोधक मूल्य का उपयोग कर सकते हैं। LED पॉजिटिव पिन को GPIO 16 से कनेक्ट करें और ESP32 के ADC1 (VP) पिन को पॉट का सिग्नल पिन।
ESP32 PWM के लिए कोड स्पष्टीकरण
पूरा कोड पेज के अंत में दिया गया है।
इस कोड को किसी भी पुस्तकालय की आवश्यकता नहीं है, इसलिए पिन को परिभाषित करके अपना कोड शुरू करें, एलईडी संलग्न है। मेरे मामले में, मैंने एलईडी कनेक्ट करने के लिए GPIO 16 का उपयोग किया।
const int ledPin = 16; // 16 GPIO16 से मेल खाती है
उसके बाद, अगली लाइनों में PWM सिग्नल गुण सेट करें। मैंने पीडब्लूएम आवृत्ति को 9000 पर सेट किया है, और 10 तक रिज़ॉल्यूशन, आप इसे अलग-अलग पीडब्लूएम सिग्नल उत्पन्न करने के लिए बदल सकते हैं। ESP32 बोर्ड 1 बिट से 16 बिट्स तक PWM रिज़ॉल्यूशन का समर्थन करते हैं। आपको PWM चैनल चुनने की भी आवश्यकता है। ESP32 में कुल 16 (0 से 15) PWM चैनल हैं।
const int freq = 9000; const int ledChannel = 0; const int resolution = 10;
अब शून्य सेटअप () फ़ंक्शन के अंदर, एलईडी PWM को उन संपत्तियों के साथ कॉन्फ़िगर करें, जिन्हें आप ledcetup () फ़ंक्शन का उपयोग करके सेट करते हैं। अगली पंक्ति में, GPIO पिन को परिभाषित करें जहां एलईडी जुड़ा हुआ है। LedcAttachPin () समारोह GPIO पिन और चैनल कि संकेत पैदा कर रहा है परिभाषित करने के लिए प्रयोग किया जाता है। मेरे मामले में, मैंने ledPin का उपयोग किया जो GPIO 16 और ledChannel है जो चैनल 0 से मेल खाता है।
शून्य सेटअप () {Serial.begin (9600); ledcSetup (ledChannel, freq, resolution); ledcAttachPin (ledPin, ledChannel); }
में शून्य पाश, एनालॉग पिन जहां पॉट जुड़ा हुआ है और पढ़ने के लिए एक चर बुलाया में पढ़ने की दुकान 'dutycycle' । पोटेंशियोमीटर के रोटेशन के अनुसार एलईडी की चमक बढ़ेगी या घटेगी। LedcWrite () बहुत के समान है analogWrite ()।
शून्य लूप () {कर्तव्य चक्र = एनालॉगराइड (ए ०); एलईडीक्राइट (एलईडीचेन, ड्यूटी साइकिल); देरी (15); }
ESP32 PWM सिग्नल का परीक्षण
ईएसपी 32 पीडब्लूएम संकेतों का परीक्षण करने के लिए, सर्किट आरेख के अनुसार एलईडी और पोटेंशियोमीटर कनेक्ट करें, और अपने ईएसपी 32 को कोड अपलोड करें। सुनिश्चित करें कि आपके पास सही बोर्ड और COM पोर्ट चयनित हैं। अब एलईडी चमक को बढ़ाने या कम करने के लिए पोटेंशियोमीटर को घुमाएं।
पूरा काम नीचे दिए गए वीडियो में दिखाया गया है। इसके अलावा, लिंक का अनुसरण करके अन्य ईएसपी 32 आधारित परियोजनाओं की जांच करें।