Arduino SPWM जनरेटर सर्किट - कोड विवरण और आरेख

समस्याओं को खत्म करने के लिए हमारे साधन का प्रयास करें





इस पोस्ट में हम सीखते हैं कि Arduino के माध्यम से साइन लहर पल्स-चौड़ाई-मॉड्यूलेशन या SPWM कैसे उत्पन्न किया जाता है, जिसका उपयोग शुद्ध साइन वेव इनवर्टर सर्किट या इसी तरह के गैजेट बनाने के लिए किया जा सकता है।

Arduino कोड मेरे द्वारा विकसित किया गया है, और यह मेरा पहला Arduino कोड है, ... और यह बहुत अच्छा दिखता है



एसपीडब्ल्यूएम क्या है

मैंने पहले ही समझाया है कैसे opamp का उपयोग कर SPWM उत्पन्न करने के लिए मेरे पहले के एक लेख में, आप यह समझने के लिए इसके माध्यम से जा सकते हैं कि यह असतत घटकों का उपयोग करके और इसके महत्व के बारे में कैसे बनाया जा सकता है।

मूल रूप से, एसपीडब्ल्यूएम जो साइन वेव पल्स चौड़ाई मॉडुलन के लिए खड़ा है, एक प्रकार का पल्स मॉड्यूलेशन है जहां दालों को साइनसॉइडल वेवफॉर्म को अनुकरण करने के लिए संशोधित किया जाता है, ताकि मॉड्यूलेशन शुद्ध शुद्ध तरंग के गुणों को प्राप्त करने में सक्षम हो।



एक SPWM को लागू करने के लिए दालों को एक प्रारंभिक संकरी चौड़ाई के साथ संशोधित किया जाता है जो धीरे-धीरे चक्र के केंद्र में व्यापक हो जाता है, और अंत में अंत में चक्र को समाप्त करने के लिए संकरा होता जा रहा है।

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

वीडियो डेमो

यह एक एसपीडब्ल्यूएम चक्र का गठन करता है, और यह एक विशेष दर पर दोहराता है जैसा कि आवेदन आवृत्ति (आमतौर पर 50 हर्ट्ज या 60 हर्ट्ज) द्वारा निर्धारित होता है। आमतौर पर, एसपीडब्ल्यूएम का उपयोग इनवर्टर या कन्वर्टर्स में बिजली उपकरण जैसे कि मस्जिद या BJTs चलाने के लिए किया जाता है।

यह विशेष मॉड्यूलेशन पैटर्न यह सुनिश्चित करता है कि आवृत्ति चक्रों को धीरे-धीरे बदलते औसत वोल्टेज मान (जिसे RMS मान भी कहा जाता है) के साथ निष्पादित किया जाता है, इसके बजाय सामान्य रूप से फ्लैट स्क्वायर वेव साइकिल में सामान्य रूप से हाई / लो वोल्टेज स्पाइक्स को फेंकने के बजाय।

एसपीडब्ल्यूएम में धीरे-धीरे पीडब्लूएम को संशोधित करना जानबूझकर लागू किया जाता है, ताकि यह मानक साइनवेस या साइनसोइडल वेवफॉर्म के घातीय रूप से बढ़ते / गिरते पैटर्न की बारीकी से व्याख्या करता है, इसलिए नाम सिनवेव पीडब्लूएम या एसपीडब्ल्यूएम।

Arduino के साथ SPWM उत्पन्न करना

ऊपर वर्णित SPWM को आसानी से कुछ असतत भागों का उपयोग करके लागू किया जा सकता है, और Arduino का उपयोग करके भी जो संभवतः आपको तरंग अवधि के साथ अधिक सटीकता प्राप्त करने में सक्षम करेगा।

निम्नलिखित Arduino कोड का उपयोग किसी दिए गए एप्लिकेशन के लिए इच्छित SPWM को लागू करने के लिए किया जा सकता है।

गोश !! यह भयानक रूप से बड़ा दिखता है, यदि आप जानते हैं कि इसे कैसे छोटा किया जाए, तो आप निश्चित रूप से इसे अपने अंत में करने के लिए स्वतंत्र महसूस कर सकते हैं।

// By Swagatam (my first Arduino Code)
void setup(){
pinMode(8, OUTPUT)
pinMode(9, OUTPUT)
}
void loop(){
digitalWrite(8, HIGH)
delayMicroseconds(500)
digitalWrite(8, LOW)
delayMicroseconds(500)
digitalWrite(8, HIGH)
delayMicroseconds(750)
digitalWrite(8, LOW)
delayMicroseconds(500)
digitalWrite(8, HIGH)
delayMicroseconds(1250)
digitalWrite(8, LOW)
delayMicroseconds(500)
digitalWrite(8, HIGH)
delayMicroseconds(2000)
digitalWrite(8, LOW)
delayMicroseconds(500)
digitalWrite(8, HIGH)
delayMicroseconds(1250)
digitalWrite(8, LOW)
delayMicroseconds(500)
digitalWrite(8, HIGH)
delayMicroseconds(750)
digitalWrite(8, LOW)
delayMicroseconds(500)
digitalWrite(8, HIGH)
delayMicroseconds(500)
digitalWrite(8, LOW)
//......
digitalWrite(9, HIGH)
delayMicroseconds(500)
digitalWrite(9, LOW)
delayMicroseconds(500)
digitalWrite(9, HIGH)
delayMicroseconds(750)
digitalWrite(9, LOW)
delayMicroseconds(500)
digitalWrite(9, HIGH)
delayMicroseconds(1250)
digitalWrite(9, LOW)
delayMicroseconds(500)
digitalWrite(9, HIGH)
delayMicroseconds(2000)
digitalWrite(9, LOW)
delayMicroseconds(500)
digitalWrite(9, HIGH)
delayMicroseconds(1250)
digitalWrite(9, LOW)
delayMicroseconds(500)
digitalWrite(9, HIGH)
delayMicroseconds(750)
digitalWrite(9, LOW)
delayMicroseconds(500)
digitalWrite(9, HIGH)
delayMicroseconds(500)
digitalWrite(9, LOW)
}
//-------------------------------------//

अगली पोस्ट में मैं समझाऊंगा कि उपरोक्त Arduino आधारित SPWM जनरेटर का उपयोग कैसे करें एक शुद्ध sinewave इन्वर्टर सर्किट बनाते हैं ....पढ़ते रहिये!

ऊपर दिए गए SPWM कोड को इसके प्रदर्शन को बढ़ाने के लिए मिस्टर एटटन द्वारा और बेहतर बनाया गया था, जैसा कि नीचे दिया गया है:

/*
This code was based on Swagatam SPWM code with changes made to remove errors. Use this code as you would use any other Swagatam’s works.
Atton Risk 2017
*/
const int sPWMArray[] = {500,500,750,500,1250,500,2000,500,1250,500,750,500,500} // This is the array with the SPWM values change them at will
const int sPWMArrayValues = 13 // You need this since C doesn’t give you the length of an Array
// The pins
const int sPWMpin1 = 10
const int sPWMpin2 = 9
// The pin switches
bool sPWMpin1Status = true
bool sPWMpin2Status = true
void setup()
{
pinMode(sPWMpin1, OUTPUT)
pinMode(sPWMpin2, OUTPUT)
}
void loop()
{
// Loop for pin 1
for(int i(0) i != sPWMArrayValues i++)
{
if(sPWMpin1Status)
{
digitalWrite(sPWMpin1, HIGH)
delayMicroseconds(sPWMArray[i])
sPWMpin1Status = false
}
else
{
digitalWrite(sPWMpin1, LOW)
delayMicroseconds(sPWMArray[i])
sPWMpin1Status = true
}
}
// Loop for pin 2
for(int i(0) i != sPWMArrayValues i++)
{
if(sPWMpin2Status)
{
digitalWrite(sPWMpin2, HIGH)
delayMicroseconds(sPWMArray[i])
sPWMpin2Status = false
}
else
{
digitalWrite(sPWMpin2, LOW)
delayMicroseconds(sPWMArray[i])
sPWMpin2Status = true
}
}
}




पिछला: जूल चोर से 8X ओवर्युनिटी - सिद्ध डिज़ाइन अगला: पूर्ण कार्यक्रम कोड के साथ Arduino शुद्ध साइन वेव इन्वर्टर सर्किट