विषयसूची:

Arduino के साथ रोटरी एनकोडर का ट्यूटोरियल: 6 कदम
Arduino के साथ रोटरी एनकोडर का ट्यूटोरियल: 6 कदम

वीडियो: Arduino के साथ रोटरी एनकोडर का ट्यूटोरियल: 6 कदम

वीडियो: Arduino के साथ रोटरी एनकोडर का ट्यूटोरियल: 6 कदम
वीडियो: 6-TINKERCAD TWO DC MOTOR WITH ENCODER USING ARDUINO UNO 2024, जुलाई
Anonim
Arduino के साथ रोटरी एनकोडर का ट्यूटोरियल
Arduino के साथ रोटरी एनकोडर का ट्यूटोरियल

रोटरी एनकोडर एक इलेक्ट्रॉनिक घटक है जो घूमते समय गति और स्थिति की निगरानी करने में सक्षम है। रोटरी एनकोडर ऑप्टिकल सेंसर का उपयोग करता है जो रोटरी एनकोडर के घूमने पर पल्स उत्पन्न कर सकता है। आमतौर पर मैकेनिकल या रोबोट मोशन मॉनिटर के रूप में रोटरी एन्कोडर का उपयोग डिस्प्ले पर मेनू चयन के लिए भी किया जा सकता है। रोटरी एन्कोडर में दो आउटपुट होते हैं ताकि यह नकारात्मक (सीडब्ल्यू) और सकारात्मक (सीसीडब्ल्यू) रोटेशन के बीच अंतर कर सके और इसमें एक बटन भी हो।

चरण 1: रोटरी एनकोडर का पल्स फ्लो

रोटरी एनकोडर का पल्स फ्लो
रोटरी एनकोडर का पल्स फ्लो

निम्नलिखित रोटरी एन्कोडर द्वारा उत्पन्न पल्स प्रवाह ऊपर की तस्वीर की तरह है।

चरण 2: रोटरी एनकोडर का पिनआउट

रोटरी एनकोडर का पिनआउट
रोटरी एनकोडर का पिनआउट

व्याख्या:

  • जीएनडी जीएनडी
  • +5वी
  • दबाए जाने पर रोटरी एन्कोडर का एसडब्ल्यू बटन
  • डीटी डेटा
  • सीएलके डेटा 2

DT या CLK पिन में से एक को Arduino Uno के इंटरप्ट फुट से जोड़ा जाना चाहिए, या DT और CLK दोनों इंटरप्ट पिन से जुड़े हैं।

चरण 3: योजनाबद्ध

ढांच के रूप में
ढांच के रूप में
  • GND GND Arduino Uno
  • + +5V Arduino Uno
  • SW पिन 4 Arduino Uno
  • डीटी पिन ३ Arduino Uno
  • CLK PIN2 Arduino Uno

चरण 4: कोड

कोड
कोड

निम्नलिखित ट्यूटोरियल में, जिसे एक रुकावट के रूप में उपयोग किया जाएगा, वह Arduino Uno का पिन 2 है, जबकि पिन 3 का उपयोग केवल एक नियमित इनपुट के रूप में किया जाता है।

# एनकोडर 0 पिनए 2 को परिभाषित करें # एनकोडर 0 पिनबी 3 को परिभाषित करें # एनकोडर 0 बीटीएन 4 इंट एन्कोडर 0 पीओएस = 0 परिभाषित करें; शून्य सेटअप () {Serial.begin (९६००); पिनमोड (एनकोडर 0 पिनए, INPUT_PULLUP); पिनमोड (एनकोडर0पिनबी, INPUT_PULLUP); पिनमोड (एनकोडर0बीटीएन, INPUT_PULLUP); अटैचइंटरप्ट (0, doEncoder, CHANGE); } int valRotary, lastValRotary; शून्य लूप () { int btn = digitalRead (encoder0Btn); सीरियल.प्रिंट (बीटीएन); सीरियल.प्रिंट (""); सीरियल.प्रिंट (वैलरोटरी); if(valRotary>lastValRotary) {Serial.print("CW"); } अगर (वैलरोटरी {

सीरियल.प्रिंट ("सीसीडब्ल्यू");

} lastValRotary = valRotary; सीरियल.प्रिंट्लन (""); देरी (250); } void doEncoder() { अगर (digitalRead(encoder0PinA) == digitalRead(encoder0PinB)) {encoder0Pos++; } और { encoder0Pos--; } valRotary = encoder0Pos/2.5; }

ऊपर दिए गए स्केच की लाइन 10 में पिन 2 Arduino Uno के इंटरप्ट को सक्षम करने के लिए उपयोग किया जाता है। "DoEncoder" फ़ंक्शन में रोटरी एन्कोडर से गणना की जाती है। यदि DT और CLK (Arduino Uno का पिन इंटरप्ट) का मान समान है, तो "encoder0Pos" वेरिएबल को बढ़ाया / जोड़ा जाएगा, उस स्थिति के अलावा, "encoder0Pos" वेरिएबल को घटाया जाता है।

चरण 5: स्पष्टीकरण

ValRotary मान चल रहे चरणों की संख्या का मान है। वैलरोटरी वैल्यू 2.5 से विभाजित रोटरी सेंसर एनकोडर रीडिंग वैल्यू से प्राप्त की जाती है। परीक्षण से २.५ का मान प्राप्त होता है, क्योंकि रोटरी एनकोडर का एक चरण १ से अधिक हो सकता है, इसलिए प्रतिस्टेप के अनुसार इसके मूल्य के लिए २.५ से विभाजित करें और पठन विलंब को भी जोड़ें।

जबकि ऑन लाइन 19 - 25 यह निर्धारित करने के लिए एक कार्यक्रम है कि रोटरी रोटरी एनकोडर CW या CCW है या नहीं। 19 - 25 लाइनों की व्याख्या तब होती है जब वर्तमान रोटरी एन्कोडर रीडआउट पिछले रोटरी डेटा से अधिक होता है जिसे CW के रूप में व्यक्त किया जाता है। जबकि अगर वर्तमान रीडिंग पिछली रीडिंग से छोटी है तो इसे CCW कहा जाता है।

चरण 6: आउटपुट

उत्पादन
उत्पादन

1 = रोटरी का स्टार्ट बटन वैल्यू जब दबाया नहीं गया हो

सिफारिश की: