विषयसूची:
- चरण 1: 50Hz के लिए Pwm सिग्नल उत्पन्न करना
- चरण 2: वेरिएबल ड्यूटी साइकिल के लिए Arduino प्रोग्राम
- चरण 3: 50Hz Arduino Pins पर बारी-बारी से
- चरण 4: H ब्रिज चलाना और Pwm सिग्नल को फ़िल्टर करना
वीडियो: इनवर्टर के लिए Arduino Sinewave: 4 कदम
2024 लेखक: John Day | [email protected]. अंतिम बार संशोधित: 2024-01-30 09:22
इस परियोजना में मैंने दो arduino pwm डिजिटल आउटपुट से एक SPWM (साइन वेव पल्स वाइड मॉड्यूलेटेड) सिग्नल उत्पन्न किया है।
क्योंकि इस तरह के एक कार्यक्रम को बनाने के लिए मुझे आर्डिनो के कई अन्य कार्यों और गुणों के बारे में बात करनी है, जिसमें आस्टसीलस्कप छवियों सहित पूरी परियोजना है और विभिन्न आवृत्तियों के लिए कृपया मेरी वेबसाइट पर जाएँ:
एप्रोजेक्ट्सज़ोन
चरण 1: 50Hz के लिए Pwm सिग्नल उत्पन्न करना
उच्च आवृत्ति पर 50 हर्ट्ज सिग्नल उत्पन्न करने के लिए कुछ गणना करना आवश्यक है। Arduino से फ़्रीक्वेंसी 8MHz पर हो सकती है, लेकिन हम परिवर्तनशील कर्तव्य चक्र के साथ एक संकेत चाहते हैं।
Arduino के चर कर्तव्य चक्रों के प्रकारों को समझने के लिए आप एक ही पोस्ट 1, 2 और 3 के इस 3 भागों को पढ़ सकते हैं।
आइए मान लें कि हमारी आवृत्ति 50 हर्ट्ज है जिसका मतलब है कि समय अवधि 20ms है। तो 10ms आधा चक्र अवधि है। उन 10ms में हमें छोटे कर्तव्य चक्रों से शुरू होने वाले विभिन्न कर्तव्य चक्रों के साथ कई दालों की आवश्यकता होती है, सिग्नल के बीच में हमारे पास अधिकतम कर्तव्य चक्र होते हैं और छोटे कर्तव्य चक्रों के साथ भी समाप्त होते हैं। साइन लहर उत्पन्न करने के लिए हम दो पिनों का उपयोग करेंगे। सकारात्मक आधा चक्र और एक नकारात्मक आधे चक्र के लिए। इसके लिए हम अपनी पोस्ट में पिन 5 और 6 का इस्तेमाल करते हैं यानि Timer 0.
एक सुचारू संकेत के लिए हम ३१३७२ हर्ट्ज की आवृत्ति पर चरण सही pwm चुनते हैं-पिछली पोस्ट देखें। सबसे बड़ी समस्या यह है कि हम प्रत्येक पल्स के लिए आवश्यक कर्तव्य चक्र की गणना कैसे करते हैं। इसलिए, क्योंकि हमारी आवृत्ति f=31372Hz है, प्रत्येक पल्स की अवधि T=1/31372=31.8 us है, इसलिए आधे चक्र के लिए दालों की संख्या N=10ms/31.8us=314 दालें हैं। अब प्रत्येक नाड़ी के लिए कर्तव्य चक्र की गणना करने के लिए हमारे पास y=sinx है, लेकिन इस समीकरण में हमें डिग्री की आवश्यकता होती है इसलिए 314 दालों के लिए आधे चक्र में 180 डिग्री है। प्रत्येक नाड़ी के लिए हमारे पास 180/314 = 0.57 डिग्री/नाड़ी है। यानी प्रत्येक पल्स के लिए हम 0.57 डिग्री के साथ आगे बढ़ते हैं।
y कर्तव्य चक्र है और x अर्ध कर्तव्य चक्र में स्थिति का मान है। पहले x में 0 है, उसके बाद x=0.57, x=1.14 और इसी तरह x= 180 तक।
यदि हम सभी ३१४ मानों की गणना करते हैं तो हमें एक सरणी ३१४ तत्व प्राप्त होते हैं (आर्डिनो द्वारा आसान गणना के लिए "int" टाइप करें)।
ऐसी सरणी है:
int sinPWM={1, 2, 5, 7, 10, 12, 15, 17, 19, 22, 24, 27, 30, 32, 34, 37, 39, 42, 44, 47, 49, 52, 54, 57, 59, 61, 64, 66, 69, 71, 73, 76, 78, 80, 83, 85, 88, 90, 92, 94, 97, 99, 101, 103, 106, 108, 110, 113, 115, 117, 119, 121, 124, 126, 128, 130, 132, 134, 136, 138, 140, 142, 144, 146, 148, 150, 152, 154, 156, 158, 160, 162, 164, 166, 168, 169, 171, 173, 175, 177, 178, 180, 182, 184, 185, 187, 188, 190, 192, 193, 195, 196, 198, 199, 201, 202, 204, 205, 207, 208, 209, 211, 212, 213, 215, 216, 217, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, २३४, २३५, २३६, २३७, २३७, २३८, २३९, २४०, २४०, २४१, २४२, २४२, २४३, २४३, २४४, २४४, २४५, २४५, २४६, २४६, २४७, २४७, २४७, २४८, २४८, 248, 248, 249, 249, 249, 249, 249, 250, 250, 250, 250, 249, 249, 249, 249, 249, 248, 248, 248, 248, 247, 247, 247, 246, 246, 245, 245, 244, 244, 243, 243, 242, 242, 241, 240, 240, 239, 238, 237, 237, 236, 235, 234, 233, 232, 231, 230, 229, 228, 227, २२६, २२५, २२४, २२३, २२२, २२१, २२०, २१९, २१७, २१ 6, 215, 213, 212, 211, 209, 208, 207, 205, 204, 202, 201, 199, 198, 196, 195, 193, 192, 190, 188, 187, 185, 184, 182, 180, 178, 177, 175, 173, 171, 169, 168, 166, 164, 162, 160, 158, 156, 154, 152, 150, 148, 146, 144, 142, 140, 138, 136, 134, 132, 130, 128, 126, 124, 121, 119, 117, 115, 113, 110, 108, 106, 103, 101, 99, 97, 94, 92, 90, 88, 85, 83, 80, 78, 76, 73, 71, 69, 66, 64, 61, 59, 57, 54, 52, 49, 47, 44, 42, 39, 37, 34, 32, 30, 27, 24, 22, 19, 17, 15, 12, 10, 7, 5, 2, 1};
आप देख सकते हैं कि साइन वेव की तरह कर्तव्य चक्र पहले और आखिरी तत्व में सबसे कम और बीच में सबसे ऊंचा होता है।
चरण 2: वेरिएबल ड्यूटी साइकिल के लिए Arduino प्रोग्राम
ऊपर की छवि में हमारे पास सरणी से मूल्यों के साथ चर कर्तव्य चक्र संकेत हैं।
लेकिन ऐसा संकेत कैसे दें ??
नीचे दिए गए कार्यक्रम का हिस्सा कर्तव्य चक्रों के मूल्यों को बदलने के लिए इंटरप्ट का उपयोग करता है
सेई (); // इंटरप्ट सक्षम करें
}
ISR(TIMER1_COMPA_vect){// व्यवधान जब टाइमर 1 OCR1A मान के साथ मेल खाता है
if(i>313 && OK==0){// पिन 6 के लिए वेक्टर से अंतिम मान
i=0;//वेक्टर (सरणी) के पहले मान पर जाएं
OK=1;//पिन सक्षम करें 5
}
x=sinPWM;// x स्थिति के अनुरूप वेक्टर से मान लें (i शून्य अनुक्रमित है) - कर्तव्य चक्र का मान
i=i+1;// अगली स्थिति पर जाएं
}
चरण 3: 50Hz Arduino Pins पर बारी-बारी से
चूंकि प्रत्येक पिन पूर्ण साइन लहर बनाने के लिए केवल आधा कर्तव्य चक्र उत्पन्न करता है, हम दो पिन का उपयोग करते हैं जो सटीक 10 एमसेकंड (50 हर्ट्ज के लिए) के बाद एक के बाद एक वैकल्पिक होते हैं। पिन का यह परिवर्तन सरणी के अंत में किया जाता है- मान लें कि पिन 5 ने 314 दालों को उत्पन्न किया है, यह पिन बंद है और पिन 6 सक्षम है जो समान काम करता है लेकिन नकारात्मक कर्तव्य चक्र के लिए।
क्योंकि arduino केवल सकारात्मक संकेत उत्पन्न कर सकता है h ब्रिज में नकारात्मक कर्तव्य चक्र बना है- आप इसके बारे में यहां पढ़ सकते हैं
पिन बदलने का कार्यक्रम:
सेई (); // इंटरप्ट सक्षम करें
}
ISR(TIMER1_COMPA_vect){// व्यवधान जब टाइमर 1 OCR1A मान के साथ मेल खाता है
if(i>313 && OK==0){// पिन 6 के लिए वेक्टर से अंतिम मान
i=0;// वेक्टर के पहले मान पर जाएं
OK=1;//पिन सक्षम करें 5
}
if(i>313 && OK==1){// पिन 5 के लिए वेक्टर से अंतिम मान
i=0;//वेक्टर के पहले मान पर जाएं
OK=0;//पिन सक्षम करें 6
}
x=sinPWM;// x स्थिति i के अनुरूप वेक्टर से मान लें (i शून्य अनुक्रमित है)
i=i+1;// अगली स्थिति पर जाएं
अगर (ठीक == 0) {
OCR0B=0;//पिन 5 0. बनाएं
OCR0A=x;//पिन 6 को संबंधित कर्तव्य चक्र में सक्षम करें
अगर (ठीक == 1) {
OCR0A=0;//पिन 6 0. बनाएं
OCR0B=x;//पिन 5 को संबंधित कर्तव्य चक्र में सक्षम करें
}
}
चरण 4: H ब्रिज चलाना और Pwm सिग्नल को फ़िल्टर करना
Arduino से प्राप्त सिग्नल इन्वर्टर एप्लिकेशंस के लिए नियंत्रण भाग हैं क्योंकि दोनों सकारात्मक हैं। एक पूर्ण साइन वेव और एक व्यावहारिक इन्वर्टर बनाने के लिए हमें एच ब्रिज का उपयोग करना होगा और पीडब्लूएम को कम पास फ़िल्टर साफ़ करना होगा।
एच-ब्रिज यहां प्रस्तुत किया गया है।
लो-पास फिल्टर का परीक्षण छोटे एसी मोटर्स के साथ किया गया-यहाँ।
सिफारिश की:
सस्ता NMEA/AIS हब -- RS232 ऑनबोर्ड उपयोग के लिए Wifi ब्रिज के लिए: ६ कदम
सस्ता NMEA/AIS हब - RS232 ऑनबोर्ड उपयोग के लिए Wifi ब्रिज: अपडेट 9 जनवरी 2021 - अतिरिक्त TCP कनेक्शन जोड़ा गया और अधिक क्लाइंट कनेक्ट होने पर अंतिम कनेक्शन का पुन: उपयोग करेंअपडेट 13 दिसंबर 2020 - मौजूदा राउटर के साथ नावों के लिए कोड का कोई कॉन्फ़िगरेशन संस्करण नहीं जोड़ा गयापरिचययह NMEA / AIS RS232 से वाईफाई ब्रिज
अपने वाई-फाई राउटर के लिए घंटों अपटाइम प्राप्त करने के लिए अपने यूपीएस को स्टीम पंक करें: 4 कदम (चित्रों के साथ)
अपने वाई-फाई राउटर के लिए अपटाइम के घंटे प्राप्त करने के लिए अपने यूपीएस को स्टीम पंक करें: आपके यूपीएस को अपनी 12 वी डीसी बैटरी पावर को 220 वी एसी पावर में परिवर्तित करने के बारे में कुछ मौलिक रूप से असहमत है ताकि आपके राउटर और फाइबर ओएनटी चलाने वाले ट्रांसफॉर्मर इसे वापस परिवर्तित कर सकें 12 वी डीसी! आप इसके खिलाफ भी हैं [आमतौर पर
५५५ टाइमर एटमेगा को बाधित करने के लिए सिग्नल उत्सर्जित करने के लिए ३२८: ७ कदम
५५५ टाइमर एमिट सिग्नल को बाधित करने के लिए एटमेगा३२८: इस सर्किट का मुख्य लक्ष्य ऊर्जा की बचत करना है। इसलिए, मैं arduino के बारे में बात नहीं करने जा रहा हूं क्योंकि अंतिम उत्पाद के लिए बोर्ड के पास अनावश्यक बिजली ओवरहेड है। यह विकास के लिए बहुत अच्छा है। लेकिन, बैट पर चल रही अंतिम परियोजनाओं के लिए बहुत अच्छा नहीं है
Arduino के लिए तापमान सेंसर COVID 19 के लिए लागू: 12 कदम (चित्रों के साथ)
Arduino के लिए तापमान सेंसर COVID 19 के लिए लागू: Arduino के लिए तापमान सेंसर एक मौलिक तत्व है जब हम मानव शरीर के एक प्रोसेसर के तापमान को मापना चाहते हैं। Arduino के साथ तापमान संवेदक गर्मी के स्तर को प्राप्त करने और मापने के लिए संपर्क में या करीब होना चाहिए। इस तरह टी
$8 से कम के लिए Arduino के लिए रिले बोर्ड: 5 कदम
$8 से कम के लिए Arduino के लिए रिले बोर्ड: हाय दोस्तों, आज मैं आपको बताने जा रहा हूँ कि Arduino के लिए $8 से कम में रिले बोर्ड कैसे बनाया जाता है। इस सर्किट में, हम किसी भी IC या ट्रांजिस्टर का उपयोग नहीं करने जा रहे हैं।तो, चलो करते हैं