arduino
पीडब्लूएम - पल्स चौड़ाई मॉडुलन
खोज…
PWM का उपयोग करके सीरियल पोर्ट के माध्यम से एक डीसी मोटर को नियंत्रित करें
इस उदाहरण में हम सबसे आम कार्यों में से एक को पूरा करने का लक्ष्य रखते हैं: मेरे पास एक छोटी सी डीसी मोटर है, जिसे मैं अपने Arduino का उपयोग कैसे करूं? PWM और धारावाहिक संचार के साथ, फ़ंक्शन analogWrite()
और Serial
लाइब्रेरी का उपयोग करना आसान है।
मूल बातें
पल्स चौड़ाई मॉड्यूलेशन या पीडब्लूएम संक्षेप में डिजिटल आउटपुट का उपयोग करके एनालॉग सिग्नल की नकल करने के लिए एक तकनीक है। यह कैसे काम करता है? उच्च स्तर (डिजिटल 1, आमतौर पर 5V) और समय के बीच प्रत्येक स्तर पर निम्न स्तर (डिजिटल 0, 0V) के बीच एक पल्स ट्रेन जिसका संबंध डी (कर्तव्य चक्र) का उपयोग करके इन दो स्तरों के बीच एक औसत वोल्टेज का उत्पादन करने के लिए संशोधित किया जा सकता है:
Arduino के analogWrite(pin,value)
फ़ंक्शन का उपयोग करके हम pin
के आउटपुट के कर्तव्य चक्र के value
को भिन्न कर सकते हैं। ध्यान दें कि pin
को आउटपुट मोड में रखा जाना चाहिए और value
0 (0V) और 255 (5V) के बीच होना चाहिए। बीच में कोई भी मूल्य आनुपातिक मध्यवर्ती एनालॉग आउटपुट का अनुकरण करेगा।
हालांकि, एनालॉग सिग्नल का उद्देश्य आमतौर पर मैकेनिकल सिस्टम के नियंत्रण से संबंधित होता है जिसे अकेले Arduino बोर्ड की तुलना में अधिक वोल्टेज और वर्तमान की आवश्यकता होती है। इस उदाहरण में, हम सीखेंगे कि Arduino की PWM क्षमताओं को कैसे बढ़ाया जाए।
इसके लिए MOSFET डायोड का उपयोग किया जाता है। संक्षेप में, यह डायोड एक स्विच के रूप में कार्य करता है। यह अपने स्रोत और नाली टर्मिनलों के बीच विद्युत प्रवाह को अनुमति या बाधित करता है। लेकिन एक यांत्रिक स्विच के बजाय, इसमें एक तीसरा टर्मिनल होता है जिसे गेट कहा जाता है। एक बहुत छोटा करंट (<1mA) इस गेट को "ओपन" करेगा और करंट को प्रवाहित करने की अनुमति देगा। यह बहुत सुविधाजनक है, क्योंकि हम Arduino के PWM आउटपुट को इस गेट पर भेज सकते हैं, जिससे MOSFET के माध्यम से समान कर्तव्य चक्र के साथ एक और PWM पल्स ट्रेन बनाई जा सकती है, जो कि Arduino को नष्ट करने वाले वोल्टेज और धाराओं की अनुमति देता है।
सामग्री का बिल: आपको इस उदाहरण का निर्माण करने की क्या आवश्यकता है
- MOSFET डायोड: उदाहरण के लिए, लोकप्रिय BUZ11
- मोटर के लिए सुरक्षा डायोड: Schottky SB320
- रोकनेवाला: कुछ भी 10K ~ 1M ओम
- मोटर: एक सामान्य छोटी मोटर (एक विशिष्ट 12V हो सकती है)
- आपके द्वारा चयनित मोटर के साथ संगत एक शक्ति स्रोत
- एक ब्रेडबोर्ड
- रंगीन केबल!
- एक Arduino, लेकिन आप पहले से ही जानते थे।
निर्माण
सब कुछ एक साथ रखो! ब्रेडबोर्ड की पटरियों को पावर दें और उसमें MOSFET डायोड रखें। पॉजिटिव रेल और MOSFET ड्रेन के बीच मोटर को कनेक्ट करें। उसी तरह से सुरक्षा डायोड कनेक्ट करें: MOSFET नाली और सकारात्मक रेल के बीच। MOSFET के स्रोत को आम जमीनी रेल से जोड़ें। अंत में, PWM पिन (हम इस उदाहरण में पिन 10 का उपयोग कर रहे हैं) को MOSFET के गेट से कनेक्ट करें और रोकनेवाला के माध्यम से आम जमीन पर भी (हमें बहुत कम वर्तमान की आवश्यकता है!)।
यहाँ एक उदाहरण है कि यह निर्माण कैसा दिखता है। यदि आप यहाँ एक योजना पसंद करते हैं।
कोड
अब हम Arduino को कंप्यूटर से कनेक्ट कर सकते हैं, कोड अपलोड कर सकते हैं और सीरियल संचार के माध्यम से मान भेजकर मोटर को नियंत्रित कर सकते हैं। याद रखें कि ये मान 0 और 255 के बीच पूर्णांक होने चाहिए। इस उदाहरण का वास्तविक कोड बहुत सरल है। प्रत्येक पंक्ति में एक स्पष्टीकरण दिया गया है।
int in = 0; // Variable to store the desired value
byte pinOut = 10; // PWM output pin
void setup() { // This executes once
Serial.begin(9600); // Initialize serial port
pinMode(pinOut, OUTPUT); // Prepare output pin
}
void loop() { // This loops continuously
if(Serial.available()){ // Check if there's data
in = Serial.read(); // Read said data into the variable "in"
analogWrite(pinOut, in); // Pass the value of "in" to the pin
}
}
और बस! अब आप Arduino की PWM क्षमताओं का उपयोग उन अनुप्रयोगों को नियंत्रित करने के लिए कर सकते हैं जिन्हें बोर्ड की सीमा से अधिक होने पर भी एनालॉग सिग्नल की आवश्यकता होती है।
एक TLC5940 के साथ PWM
TLC5940 Arduino पर PWM पोर्ट से बाहर निकलने के लिए एक उपयोगी वस्तु है। इसमें 16 चैनल हैं, प्रत्येक व्यक्तिगत रूप से 12 बिट के रिज़ॉल्यूशन (0-4095) के साथ चलाया जा सकता है। एक मौजूदा पुस्तकालय http://playground.arduino.cc/Learning/TLC5940 पर उपलब्ध है। यह कई सर्वो या RGB LED को नियंत्रित करने के लिए उपयोगी है। बस ध्यान रखें, एल ई डी काम करने के लिए सामान्य एनोड होना चाहिए। इसके अलावा, चिप्स डेज़ी-चेनेबल हैं, इससे भी अधिक PWM पोर्ट की अनुमति मिलती है।
उदाहरण:
// Include the library
#include <Tlc5940.h>
void setup() {
// Initialize
Tlc.init();
Tlc.clear();
}
unsigned int level = 0;
void loop() {
// Set all 16 outputs to same value
for (int i = 0; i < 16; i++) {
Tlc.set(i, level);
}
level = (level + 1) % 4096;
// Tell the library to send the values to the chip
Tlc.update();
delay(10);
}