विषयसूची:

Arduino पर आधारित थर्मोस्टेट: 6 कदम
Arduino पर आधारित थर्मोस्टेट: 6 कदम

वीडियो: Arduino पर आधारित थर्मोस्टेट: 6 कदम

वीडियो: Arduino पर आधारित थर्मोस्टेट: 6 कदम
वीडियो: Temperature Sensor DHT11, Arduino & Serial Monitor (Arduino Series - Part 06) | हिंदी में 2024, जुलाई
Anonim
Arduino पर आधारित थर्मोस्टेट
Arduino पर आधारित थर्मोस्टेट
Arduino पर आधारित थर्मोस्टेट
Arduino पर आधारित थर्मोस्टेट
Arduino पर आधारित थर्मोस्टेट
Arduino पर आधारित थर्मोस्टेट

इस बार हम Arduino, तापमान सेंसर और रिले पर आधारित थर्मोस्टेट बनाने जा रहे हैं। आप github पर पा सकते हैं

चरण 1: कॉन्फ़िगरेशन

विन्यास
विन्यास

संपूर्ण कॉन्फ़िगरेशन Config.h में संग्रहीत है। आप रिले, रीडिंग टेम्परेचर, थ्रेशोल्ड या टाइमिंग को नियंत्रित करने वाले पिन बदल सकते हैं।

चरण 2: रिले को कॉन्फ़िगर करना

आइए मान लें कि हम 3 रिले रखना चाहेंगे:

  • आईडी: 0, पिन: 1, तापमान सेटपॉइंट: 20
  • आईडी: 1, पिन: 10, तापमान सेटपॉइंट: 30
  • आईडी: 2, पिन: 11, तापमान सेटपॉइंट: 40

सबसे पहले आपको यह सुनिश्चित करना होगा कि आपकी पसंद का पिन पहले से नहीं लिया गया है। सभी पिन Config.h में पाए जा सकते हैं, वे DIG_PIN से शुरू होने वाले वेरिएबल द्वारा परिभाषित होते हैं।

आपको Config.h संपादित करना होगा और पिन, थ्रेसहोल्ड और रिले की मात्रा को कॉन्फ़िगर करना होगा। जाहिर है कुछ गुण पहले से मौजूद हैं, इसलिए आपको बस उन्हें संपादित करना होगा।

स्थिरांक स्थिर uint8_t DIG_PIN_RELAY_0 = 1;स्थिर स्थिर uint8_t DIG_PIN_RELAY_1 = 10; स्थिरांक स्थिर uint8_t DIG_PIN_RELAY_2 = 11;

स्थिरांक स्थिर uint8_t RELAYS_AMOUNT = 3;

स्थिरांक स्थिर int16_t RELAY_TEMP_SET_POINT_0 = 20;

स्थिरांक स्थिर int16_t RELAY_TEMP_SET_POINT_1 = 30; स्थिरांक स्थिर int16_t RELAY_TEMP_SET_POINT_2 = 40;

अब हमें रिले और कंट्रोलर सेटअप करना है, यह RelayDriver.cpp में होता है

initRelayHysteresisController(0, DIG_PIN_RELAY_0, RELAY_TEMP_SET_POINT_0);initRelayHysteresisController(1, DIG_PIN_RELAY_1, RELAY_TEMP_SET_POINT_1); initRelayHysteresisController(2, DIG_PIN_RELAY_2, RELAY_TEMP_SET_POINT_2);

XXX

चरण 3: हिस्टैरिसीस नियंत्रक

यह ऊपर के उदाहरण में चुना गया है, इसमें कुछ अतिरिक्त कॉन्फ़िगरेशन हैं:

स्थिरांक स्थिर uint32_t RELAY_DELAY_AFTER_SWITCH_MS = 300000; // 5 मिनट स्थिर uint32_t RHC_RELAY_MIN_SWITCH_MS = 3600000;

RELAY_DELAY_AFTER_SWITCH_MS अगले रिले को स्विच करने के लिए प्रतीक्षा समय देता है। कल्पना कीजिए कि हमारे उदाहरण से कॉन्फ़िगरेशन 40 डिग्री वातावरण में काम करना शुरू कर देगा। यह एक ही समय में तीनों रिले को सक्षम करने का परिणाम होगा। यह अंततः उच्च बिजली की खपत का कारण बन सकता है - जो आप नियंत्रित कर रहे हैं उसके आधार पर, इलेक्ट्रिक इंजन उदाहरण के लिए प्रारंभ के दौरान अधिक बिजली की खपत करता है। हमारे मामले में स्विचिंग रिले में निम्नलिखित प्रवाह होता है: पहला रिले जाता है, 5 मिनट प्रतीक्षा करें, दूसरा आगे बढ़ता है, 5 मिनट प्रतीक्षा करें, तीसरा चलता है।

RHC_RELAY_MIN_SWITCH_MS हिस्टैरिसीस को परिभाषित करता है, यह विशेष रिले के लिए अपनी स्थिति बदलने के लिए न्यूनतम आवृत्ति है। एक बार इसके चालू हो जाने पर, यह तापमान परिवर्तन की अनदेखी करते हुए, कम से कम इस अवधि के लिए चालू रहेगा। यह शांत उपयोगी है कि आप इलेक्ट्रिक मोटर्स को नियंत्रित कर रहे हैं, क्योंकि प्रत्येक स्विच का लाइव समय पर नकारात्मक प्रभाव पड़ता है।

चरण 4: पीआईडी नियंत्रक

पीआईडी नियंत्रक
पीआईडी नियंत्रक
पीआईडी नियंत्रक
पीआईडी नियंत्रक

यह उन्नत विषय है। ऐसे नियंत्रक को लागू करना सरल कार्य है, सही आयाम सेटिंग्स खोजना एक अलग कहानी है।

पीआईडी नियंत्रक का उपयोग करने के लिए आपको initRelayHysteresisController(…..) को initRelayPiDController(….) में बदलना होगा और आपको इसके लिए सही सेटिंग्स ढूंढनी होगी। हमेशा की तरह आप उन्हें Config.h. में पाएंगे

मैंने जावा में सरल सिम्युलेटर लागू किया है, ताकि परिणामों की कल्पना करना संभव हो। यह फ़ोल्डर में पाया जा सकता है: pidsimulator.नीचे आप दो नियंत्रकों के लिए सिमुलेशन देख सकते हैं PID a P. PID पूरी तरह से स्थिर नहीं है क्योंकि मैंने सही मान खोजने के लिए कोई परिष्कृत एल्गोरिदम लागू नहीं किया है।

दोनों भूखंडों पर आवश्यक तापमान 30 (नीला) पर सेट है। वर्तमान तापमान रीड लाइन को इंगित करता है। रिले के दो राज्य चालू और बंद हैं। जब यह सक्षम होता है तो तापमान 1.5 गिर जाता है, जब यह अक्षम हो जाता है तो यह 0.5 बढ़ जाता है।

चरण 5: संदेश बस

संदेश बस
संदेश बस
संदेश बस
संदेश बस
संदेश बस
संदेश बस
संदेश बस
संदेश बस

विभिन्न सॉफ्टवेयर मॉड्यूल को एक दूसरे के साथ संवाद करना होता है, उम्मीद है कि दोनों तरीकों से नहीं;)

उदाहरण के लिए:

  • सांख्यिकी मॉड्यूल को यह जानना होता है कि विशेष रिले कब चालू और बंद होती है,
  • एक बटन दबाने से प्रदर्शन सामग्री बदल जाती है और इसे उन सेवाओं को भी निलंबित करना पड़ता है जो कई सीपीयू चक्रों का उपभोग करेंगे, उदाहरण के लिए सेंसर से तापमान पढ़ना,
  • कुछ समय बाद तापमान रीडिंग को नवीनीकृत करना पड़ता है,
  • और इसी तरह…।

प्रत्येक मॉड्यूल संदेश बस से जुड़ा है और विशेष घटनाओं के लिए पंजीकरण कर सकता है, और किसी भी घटना (पहला आरेख) का उत्पादन कर सकता है।

दूसरे आरेख पर हम बटन दबाने पर घटना प्रवाह देख सकते हैं।

कुछ घटकों में कुछ कार्य होते हैं जिन्हें समय-समय पर निष्पादित करने की आवश्यकता होती है। हम मुख्य लूप से उनके संबंधित तरीकों को कॉल कर सकते हैं, क्योंकि हमारे पास संदेश बस है, यह केवल सही घटना (तीसरा आरेख) का प्रचार करने के लिए आवश्यक है

चरण 6: Libs

  • https://github.com/maciejmiklas/Thermostat
  • https://github.com/milesburton/Arduino-Temperature…
  • https://github.com/maciejmiklas/ArdLog.git

सिफारिश की: