সুচিপত্র:

Arduino উপর ভিত্তি করে থার্মোস্ট্যাট: 6 ধাপ
Arduino উপর ভিত্তি করে থার্মোস্ট্যাট: 6 ধাপ

ভিডিও: Arduino উপর ভিত্তি করে থার্মোস্ট্যাট: 6 ধাপ

ভিডিও: Arduino উপর ভিত্তি করে থার্মোস্ট্যাট: 6 ধাপ
ভিডিও: STC-3028 Thermostat with Heat and Humidity Fully Explained and demonstrated 2024, জুলাই
Anonim
Arduino ভিত্তিক থার্মোস্ট্যাট
Arduino ভিত্তিক থার্মোস্ট্যাট
Arduino ভিত্তিক থার্মোস্ট্যাট
Arduino ভিত্তিক থার্মোস্ট্যাট
Arduino ভিত্তিক থার্মোস্ট্যাট
Arduino ভিত্তিক থার্মোস্ট্যাট

এবার আমরা Arduino, তাপমাত্রা সেন্সর এবং রিলে এর উপর ভিত্তি করে একটি থার্মোস্ট্যাট তৈরি করতে যাচ্ছি।

ধাপ 1: কনফিগারেশন

কনফিগারেশন
কনফিগারেশন

পুরো কনফিগারেশন Config.h- এ সংরক্ষিত আছে। আপনি রিলে, পঠন তাপমাত্রা, থ্রেশহোল্ড বা সময় নিয়ন্ত্রণকারী পিন পরিবর্তন করতে পারেন।

ধাপ 2: রিলে কনফিগার করা

ধরুন আমরা 3 টি রিলে চাই:

  • আইডি: 0, পিন: 1, তাপমাত্রা সেটপয়েন্ট: 20
  • আইডি: 1, পিন: 10, তাপমাত্রা সেটপয়েন্ট: 30
  • আইডি: 2, পিন: 11, তাপমাত্রা সেটপয়েন্ট: 40

প্রথমে আপনাকে নিশ্চিত করতে হবে যে আপনার পছন্দের পিনটি ইতিমধ্যে নেওয়া হয়নি। সমস্ত পিন Config.h এ পাওয়া যাবে, সেগুলি DIG_PIN দিয়ে শুরু হওয়া ভেরিয়েবল দ্বারা সংজ্ঞায়িত করা হয়েছে।

আপনাকে Config.h সম্পাদনা করতে হবে এবং পিন, থ্রেশহোল্ড এবং রিলে পরিমাণ কনফিগার করতে হবে। স্পষ্টতই কিছু বৈশিষ্ট্য ইতিমধ্যে বিদ্যমান, তাই আপনাকে সেগুলি সম্পাদনা করতে হবে।

const স্ট্যাটিক uint8_t DIG_PIN_RELAY_0 = 1; const স্ট্যাটিক uint8_t DIG_PIN_RELAY_1 = 10; const স্ট্যাটিক uint8_t DIG_PIN_RELAY_2 = 11;

const স্ট্যাটিক uint8_t RELAYS_AMOUNT = 3;

const স্ট্যাটিক int16_t RELAY_TEMP_SET_POINT_0 = 20;

const স্ট্যাটিক int16_t RELAY_TEMP_SET_POINT_1 = 30; const স্ট্যাটিক 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: হিস্টেরেসিস কন্ট্রোলার

এটি উপরের উদাহরণে নির্বাচিত, এটির কয়েকটি অতিরিক্ত কনফিগারেশন রয়েছে:

const স্ট্যাটিক 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: পিআইডি কন্ট্রোলার

পিআইডি কন্ট্রোলার
পিআইডি কন্ট্রোলার
পিআইডি কন্ট্রোলার
পিআইডি কন্ট্রোলার

এটি একটি উন্নত বিষয়। এই ধরনের নিয়ামক প্রয়োগ করা সহজ কাজ, সঠিক প্রশস্ততা সেটিংস খুঁজে পাওয়া একটি ভিন্ন গল্প।

PID নিয়ামক ব্যবহার করার জন্য আপনাকে initRelayHysteresisController (…..) পরিবর্তন করে initRelayPiDController (…।) করতে হবে এবং এর জন্য আপনাকে সঠিক সেটিংস খুঁজে বের করতে হবে। যথারীতি আপনি তাদের Config.h এ পাবেন

আমি জাভাতে সহজ সিমুলেটর প্রয়োগ করেছি, যাতে ফলাফলগুলি কল্পনা করা সম্ভব হয়। এটি ফোল্ডারে পাওয়া যেতে পারে: pidsimulator. নীচে আপনি দুটি নিয়ামক PID a P. এর জন্য সিমুলেশন দেখতে পারেন। PID পুরোপুরি স্থিতিশীল নয় কারণ আমি সঠিক মান খুঁজে পেতে কোন অত্যাধুনিক অ্যালগরিদম প্রয়োগ করি নি।

উভয় প্লটে প্রয়োজনীয় তাপমাত্রা 30 (নীল) সেট করা হয়। বর্তমান তাপমাত্রা পড়ার লাইন নির্দেশ করে। রিলে চালু এবং বন্ধ দুটি অবস্থা আছে। যখন এটি সক্রিয় হয় তাপমাত্রা 1.5 দ্বারা হ্রাস পায়, যখন এটি অক্ষম হয় তখন এটি 0.5 দ্বারা বৃদ্ধি পায়।

ধাপ 5: মেসেজ বাস

মেসেজ বাস
মেসেজ বাস
মেসেজ বাস
মেসেজ বাস
মেসেজ বাস
মেসেজ বাস
মেসেজ বাস
মেসেজ বাস

বিভিন্ন সফ্টওয়্যার মডিউল একে অপরের সাথে যোগাযোগ করতে হবে, আশা করি উভয় উপায়ে নয়;)

উদাহরণ স্বরূপ:

  • পরিসংখ্যান মডিউল জানতে হবে যখন বিশেষ রিলে চালু এবং বন্ধ হয়,
  • একটি বোতাম টিপলে প্রদর্শন সামগ্রী পরিবর্তন করতে হয় এবং এটি এমন পরিষেবাগুলি স্থগিত করতে হয় যা অনেক CPU চক্র ব্যবহার করে, উদাহরণস্বরূপ সেন্সর থেকে তাপমাত্রা পড়া,
  • কিছু সময়ের পরে তাপমাত্রা পড়ার পুনর্নবীকরণ করতে হবে,
  • এবং তাই ….

প্রতিটি মডিউল মেসেজ বাসের সাথে সংযুক্ত এবং নির্দিষ্ট ইভেন্টের জন্য নিবন্ধন করতে পারে, এবং যে কোন ইভেন্ট (প্রথম চিত্র) তৈরি করতে পারে।

দ্বিতীয় চিত্রটিতে আমরা বোতাম টিপে ইভেন্ট প্রবাহ দেখতে পারি।

পর্যায়ক্রমে সম্পাদন করার প্রয়োজনের তুলনায় কিছু উপাদানগুলির কিছু কাজ রয়েছে। আমরা মূল লুপ থেকে তাদের সংশ্লিষ্ট পদ্ধতিগুলিকে কল করতে পারি, যেহেতু আমাদের কাছে মেসেজ বাস আছে এটি শুধুমাত্র সঠিক ঘটনা প্রচারের জন্য প্রয়োজনীয় (তৃতীয় চিত্র)

ধাপ 6: Libs

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

প্রস্তাবিত: