فهرست مطالب:
- مرحله 1: پیکربندی
- مرحله 2: پیکربندی رله ها
- مرحله 3: کنترل کننده هیسترسیس
- مرحله 4: کنترل کننده PID
- مرحله 5: گذرگاه پیام
- مرحله 6: Libs
تصویری: ترموستات بر اساس آردوینو: 6 مرحله
2024 نویسنده: John Day | [email protected]. آخرین اصلاح شده: 2024-01-30 08:57
این بار ما قصد داریم یک ترموستات بر اساس آردوینو ، سنسور دما و رله بسازیم. می توانید در github پیدا کنید
مرحله 1: پیکربندی
کل پیکربندی در Config.h ذخیره می شود. می توانید پین های کنترل کننده رله ، دمای خواندن ، آستانه ها یا زمان بندی ها را تغییر دهید.
مرحله 2: پیکربندی رله ها
فرض کنید ما می خواهیم 3 رله داشته باشیم:
- شناسه: 0 ، پین: 1 ، نقطه تنظیم دما: 20
- شناسه: 1 ، پین: 10 ، نقطه تنظیم دما: 30
- شناسه: 2 ، پین: 11 ، نقطه تنظیم دما: 40
ابتدا باید مطمئن شوید که پین انتخابی شما قبلاً گرفته نشده است. همه پین ها را می توانید در Config.h پیدا کنید ، آنها با متغیرهایی که با DIG_PIN شروع می شوند ، تعریف می شوند.
شما باید Config.h را ویرایش کرده و PIN ها ، آستانه ها و میزان رله ها را پیکربندی کنید. بدیهی است برخی از ویژگی ها در حال حاضر وجود دارد ، بنابراین شما فقط باید آنها را ویرایش کنید.
const ثابت uint8_t DIG_PIN_RELAY_0 = 1 ؛ const static uint8_t DIG_PIN_RELAY_1 = 10 ؛ const static uint8_t DIG_PIN_RELAY_2 = 11 ؛
const static uint8_t RELAYS_AMOUNT = 3 ؛
const static int16_t RELAY_TEMP_SET_POINT_0 = 20 ؛
const static int16_t RELAY_TEMP_SET_POINT_1 = 30 ؛ const static 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 static 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
این مبحث پیشرفته است پیاده سازی چنین کنترلر کار ساده ای است ، پیدا کردن تنظیمات دامنه مناسب داستان متفاوتی است.
برای استفاده از کنترلر PID ، باید initRelayHysteresisController (…..) را به initRelayPiDController (…) تغییر دهید و باید تنظیمات مناسب را برای آن پیدا کنید. طبق معمول ، آنها را در Config.h پیدا خواهید کرد
من شبیه ساز ساده را در جاوا پیاده سازی کرده ام ، به طوری که امکان تجسم نتایج وجود دارد. این را می توان در پوشه یافت: pidsimulator. در زیر می توانید شبیه سازی های دو کنترل کننده را مشاهده کنید PID a P. PID کاملاً پایدار نیست زیرا من هیچ الگوریتم پیچیده ای برای پیدا کردن مقادیر مناسب اعمال نکرده ام.
در هر دو قطعه دمای مورد نیاز 30 (آبی) تنظیم شده است. دمای فعلی خط خواندن را نشان می دهد. رله دارای دو حالت ON و OFF است. وقتی دمای آن فعال است 1.5 کاهش می یابد ، در صورت غیرفعال شدن آن 0.5 افزایش می یابد.
مرحله 5: گذرگاه پیام
ماژول های نرم افزاری مختلف باید با یکدیگر ارتباط برقرار کنند ، امیدوارم نه به هر دو صورت ؛)
مثلا:
- ماژول آمار باید بداند که رله خاص چه زمانی روشن و خاموش می شود ،
- فشار دادن یک دکمه باید محتوای صفحه نمایش را تغییر دهد و همچنین باید سرویس هایی را که چرخه CPU زیادی را مصرف می کنند ، به عنوان مثال خواندن دما از حسگر ، به حالت تعلیق درآورد.
- بعد از مدتی باید دما خوانده شود ،
- و غیره….
هر ماژول به Message Bus متصل است و می تواند برای رویدادهای خاص ثبت نام کند و می تواند هر رویدادی را تولید کند (نمودار اول).
در نمودار دوم می توان جریان رویداد را با فشار دادن دکمه مشاهده کرد.
برخی از اجزا دارای وظایفی هستند که باید به صورت دوره ای اجرا شوند. ما می توانیم متدهای متناظر آنها را از حلقه اصلی فراخوانی کنیم ، زیرا ما Message Bus داریم فقط باید رویداد مناسب را تبلیغ کرد (نمودار سوم)
مرحله 6: Libs
- https://github.com/maciejmiklas/Thermostat
- https://github.com/milesburton/Arduino-Temperature…
- https://github.com/maciejmiklas/ArdLog.git
توصیه شده:
ترموستات اتاق - آردوینو + اترنت: 3 مرحله
ترموستات اتاق-آردوینو + اترنت: از نظر سخت افزاری ، پروژه از موارد زیر استفاده می کند: Arduino Uno / Mega 2560 Ethernet shield Wiznet W5100 / ماژول اترنت Wiznet W5200-W5500 DS18B20 سنسور دما در رله گذرگاه OneWire SRD-5VDC-SL-C که برای دیگ بخار استفاده می شود. تعویض
نحوه ایجاد لبه بر اساس آردوینو با اجتناب از ربات: 4 مرحله
نحوه ایجاد ربات بر اساس لبه آردوینو: با استفاده از سنسورهای آردوینو و IR یک ربات کاملاً خودمختار بسازیم. سطح میز را بدون افتادن کاوش می کند. برای اطلاعات بیشتر ویدئو را تماشا کنید
ارزان ترین آردوینو -- کوچکترین آردوینو -- آردوینو پرو مینی -- برنامه نویسی -- آردوینو ننو: 6 مرحله (همراه با تصاویر)
ارزان ترین آردوینو || کوچکترین آردوینو || آردوینو پرو مینی || برنامه نویسی || آردوینو ننو: …………………………. لطفاً برای ویدیوهای بیشتر به کانال YouTube من مشترک شوید ……. .این پروژه در مورد نحوه ارتباط با کوچکترین و ارزانترین آردوینو است. کوچکترین و ارزان ترین آردوینو arduino pro mini است. شبیه آردوینو
ترموستات آردوینو کامبوچا: 3 مرحله (همراه با تصاویر)
ترموستات آردوینو کامبوچا: من همیشه عاشق کامبوچا بودم ، اما در فروشگاه بسیار گران است. حدود 4 دلار در هر اونس. به هیچ وجه نمی توانم آنقدر که می خواهم آن را بنوشم. من به دنبال ساختن کامبوچای خودم بودم و متوجه شدم که آنقدرها هم سخت نیست و نیازی هم ندارم
آردوینو HVAC سروو ترموستات/کنترل کننده: 5 مرحله (همراه با تصاویر)
آردوینو HVAC سروو ترموستات/کنترل کننده: به دستورالعمل سبز من خوش آمدید! من قصد دارم نحوه استفاده از آردوینو ، دو موتور سروو ، سنسور دما و مقداری فلز (یا چوب) را برای ساختن ترموستات دیجیتال برای یک واحد تهویه مطبوع دیواری نشان دهم. به گفته CB ریچارد الیس (اصلی واقعی