میلاد مالدار ارسال شده در 11 بهمن، 2024 اشتراک گذاری ارسال شده در 11 بهمن، 2024 در این آموزش، نحوه راه اندازی تعداد 8 و 16 رله راه با استفاده از میکروکنترلر NodeMCU32S و شیفت رجیسترهای 74HC595 تنها با استفاده از 3 پین ESP32 راه اندازی خواهیم کرد. و هر رله را به صورت جداگانه آدرس دهی میکنید تا بتوان هر رله را به صورت جداگانه کنترل کنیم. در نهایت یک رابط وب برای کنترل هر رله از طریق اینترنت ایجاد می کنیم. لوازمی که به آن احتیاج دارید برد توسعه NodeMCU 32S برد بورد (Bread Board) سیم جامپری ماژول رله 8 کانال شیفت رجیستر 74HC595 اصول کار این پروژه برای کنترل ماژول ۸ رله، باید ۸ خروجی دیجیتال از میکروکنترلر رزرو شود. به منظور صرفه جویی در تعداد ورودی/خروجی میکروکنترلر، می توان از مدارهای مجتمع مختلف استفاده کرد. به طور خاص، از رجیستر شیفت استفاده می شود. رجیستر شیفت 74HC595 دارای 8 خروجی قابل برنامه ریزی است که می توانند به 0 یا 5 ولت تنظیم شوند و فقط به 3 ورودی دیجیتال نیاز دارند. بنابراین، این راه حل برای کنترل رله ها و آزاد نگه داشتن خروجی های میکروکنترلر برای سایر عملکردها، ایده آل است. شماتیک برای کنترل رجیستر شیفت، NodeMCU به صورت زیر متصل می شود: GND : اتصال به زمین مدار مجتمع. Vcc : اتصال به پین منبع تغذیه. معمولاً به 5 ولت متصل می شود. SH_CP یا RCLK : اتصال به پین 33. ST_CP یا SRCLK : اتصال به پین 32. DS یا SER : اتصال به پین 25. نقل قول خروجی های Q0-Q7 آیسی 74HC595 مستقیماً به ورودی های ماژول 8 رله متصل می شوند. در این آموزش ما از پین های Enable (OE) و Reset (MR) استفاده نمی کنیم. OE : فعالسازی خروجی، فعال در سطح پایین. این پین به GND متصل می شود تا خروجی ها فعال شوند. MR : بازنشانی اصلی، فعال در سطح پایین. پین بازنشانی. به 5 ولت متصل می شود. توجه : جریان خروجی پایههای میکروکنترلر محدود هستند, لذا برای راه اندازی تعداد زیادی رله، پیشنهاد میشود از یک منبع تعذیه خارجی استفاده شود. کد پروژه در نهایت برای راه اندازی مدار لازم است کد زیر را روی برد خود آپلود کرده با با استفاده از حلقه ایجاد شده در کد, رلههای به ترتیب فعال و غیرفعال شوند. //Constants #define number_of_74hc595s 1 #define numOfRegisterPins number_of_74hc595s * 8 #define SER_Pin 25 #define RCLK_Pin 33 #define SRCLK_Pin 32 //Variables boolean registers [numOfRegisterPins]; void setup() { //Init Serial USB Serial.begin(115200); Serial.println(F("Initialize System")); //Init register pinMode(SER_Pin, OUTPUT); pinMode(RCLK_Pin, OUTPUT); pinMode(SRCLK_Pin, OUTPUT); clearRegisters(); writeRegisters(); delay(500); } void loop() { writeGrpRelay(); } void clearRegisters() { //// Clear registers variables for(int i = numOfRegisterPins-1; i >= 0; i--) { registers[i] = HIGH;//LOW; } } void writeRegisters() { //// Write register after being set digitalWrite(RCLK_Pin, LOW); for(int i = numOfRegisterPins-1; i >= 0; i--) { digitalWrite(SRCLK_Pin, LOW); int val = registers[i]; digitalWrite(SER_Pin, val); digitalWrite(SRCLK_Pin, HIGH); } digitalWrite(RCLK_Pin, HIGH); } void setRegisterPin(int index,int value) { ////Set register variable to HIGH or LOW registers[index] = value; } void writeGrpRelay() { for(int i = numOfRegisterPins-1; i >= 0; i--) { Serial.print(F("Relay ")); Serial.print(i); Serial.println(F(" HIGH")); setRegisterPin(i, LOW); writeRegisters(); delay(200); Serial.print(F("Relay ")); Serial.print(i); Serial.println(F(" LOW")); setRegisterPin(i, HIGH); writeRegisters(); delay(500); } } توسعه پروژه و کنترل 16 رله با استفاده از 2 آیسی شیفت رجیستر 74hc595 برای کنترل 16 رله تنها کافیست مدار را طبق شماتیک بالا بسته و در خط 2 برنامه مقدار number_of_74hc595s را برابر با 2 قرار دهیم #define number_of_74hc595s 2 لینک به دیدگاه https://forum.systempanel.ir/topic/3-%DA%A9%D9%86%D8%AA%D8%B1%D9%84-%D8%A8%DB%8C%D8%B4-%D8%A7%D8%B2-8-%D8%B1%D9%84%D9%87-%D8%A8%D8%A7-%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87-%D8%A7%D8%B2-esp32-%D9%88-%D8%B4%DB%8C%D9%81%D8%AA-%D8%B1%D8%AC%DB%8C%D8%B3%D8%AA%D8%B1-74hc595/ به اشتراک گذاری در سایت های دیگر تنظیمات بیشتر اشتراک گذاری ...
ارسالهای توصیه شده
لطفا برای ارسال دیدگاه وارد شوید
شما بعد از اینکه وارد حساب کاربری خود شدید می توانید دیدگاهی ارسال کنید
ورود به حساب کاربری