فهرست مطالب:

تایمر قابل برنامه ریزی 8 کانال: 13 مرحله
تایمر قابل برنامه ریزی 8 کانال: 13 مرحله

تصویری: تایمر قابل برنامه ریزی 8 کانال: 13 مرحله

تصویری: تایمر قابل برنامه ریزی 8 کانال: 13 مرحله
تصویری: گوز زدن پریانکا چوپرا هنرپیشه بالیوود در یکی از برنامه های لایف تلویزیونی |C&C 2024, جولای
Anonim
تایمر قابل برنامه ریزی 8 کانال
تایمر قابل برنامه ریزی 8 کانال
تایمر قابل برنامه ریزی 8 کانال
تایمر قابل برنامه ریزی 8 کانال
تایمر قابل برنامه ریزی 8 کانال
تایمر قابل برنامه ریزی 8 کانال

معرفی

از سال 1993 برای پروژه های خود از محدوده میکروکنترلر PIC Microchip استفاده می کنم و تمام برنامه نویسی خود را با استفاده از Microchip MPLab IDE به زبان اسمبلر انجام داده ام. پروژه های من از چراغ های راهنمایی ساده و LED های چشمک زن گرفته تا رابط های جوی استیک USB برای مدل های R/C و دستگاه های تجزیه و تحلیل تابلوهای مورد استفاده در صنعت. توسعه روزهای زیادی به طول انجامید و گاهی هزاران خط کد مونتاژ کننده.

پس از دریافت Matrix Multimedia Flowcode 4 Professional ، من نسبت به نرم افزار کاملاً شکاک بودم. باورش خیلی ساده به نظر می رسید. من تصمیم گرفتم آن را امتحان کنم و همه ماکروهای مختلف کامپوننت را آزمایش کردم ، همه با موفقیت بزرگ. بهترین بخش استفاده از Flowcode این بود که پروژه های ساده را می توان در یک شب کدگذاری کرد. پس از بازی با I²C و یک ساعت زمان واقعی DS1307 ، تصمیم گرفتم که تایمر 8 کانال را با استفاده از Flowcode طراحی کنم. یک پروژه کوچک و آسان نبودم ، من معتقدم که این یک پروژه عالی برای آموزش Flowcode به خودم خواهد بود.

انتخاب ریزپردازنده و سایر اجزا

با توجه به تعداد پین های ورودی/خروجی مورد نیاز ، مشخص شد که به یک دستگاه 40 پین نیاز است. PIC 18F4520 ، عمدتا برای حافظه برنامه 32K و 1536 بایت حافظه داده انتخاب شد. همه اجزای مورد استفاده ، دستگاههای استاندارد از طریق سوراخ هستند ، و در صورت نیاز می توان مدار را روی برد Vero ساخت. این همچنین به توسعه روی تخته نان کمک کرد.

مرحله 1: اهداف پروژه

اهداف پروژه
اهداف پروژه

اهداف

- حفظ زمان دقیق ، با پشتیبانی از باتری

- همه برنامه ها و داده ها باید حفظ شوند ، حتی پس از قطع قدرت.

- رابط کاربری ساده

- انعطاف پذیری برنامه نویسی

حفظ زمان

استاندارد 50/60 هرتز از خطوط برق برای زندگی در منطقه ای که مستعد قطع برق است ، برای نگهداری دقیق زمان کافی نخواهد بود. ساعت واقعی ضروری بود و پس از آزمایش چندین تراشه RTC ، به دلیل نوسان ساز ساده و تنظیمات پشتیبان باتری ، تصمیم گرفتم DS1307 را انتخاب کنم. با استفاده از کریستال 32.768 کیلوهرتز متصل به DS1307 ، زمان کاملاً دقیقی بدست آمد. دقت در 2 ثانیه در یک دوره آزمایشی 2 ماهه با استفاده از 4 نوع کریستال مختلف انجام شد.

نگهداری داده ها

همه داده های برنامه تایمر باید حتی در زمان قطع برق حفظ شوند. با حداکثر 100 برنامه مختلف و داده های مختلف پیکربندی ، مشخص شد که 256 بایت EEPROM روی PIC به اندازه کافی بزرگ نخواهد بود. برای ذخیره تمام اطلاعات برنامه نویسی از 24LC256 I²C EEPROM استفاده می شود.

رابط کاربری ساده

رابط کاربری تنها شامل 2 مورد ، یک صفحه نمایش LCD 16 * 4 خطی با نور پس زمینه LED و یک صفحه کلید 4 * 3 می باشد. همه برنامه نویسی را می توان تنها با فشار دادن چند دکمه انجام داد. علاوه بر رابط کاربری ، زنگ پیزو قابل شنیدن و نور پس زمینه LCD چشمک زن بصری نیز وجود دارد.

مرحله 2: برنامه نویسی انعطاف پذیری

انعطاف پذیری برنامه نویسی
انعطاف پذیری برنامه نویسی

برای اطمینان از انعطاف پذیری کافی برنامه ، تایمر دارای 100 برنامه است که می تواند به صورت جداگانه تنظیم شود. برای هر برنامه می توان زمان On ، Off Time ، Output Channels و Day of Week را تعیین کرد. هر برنامه دارای سه حالت است:

- خودکار: در زمان ، زمان خاموش ، کانال خروجی و روز هفته تنظیم شده است.

- خاموش: برنامه شخصی را می توان بدون حذف تنظیمات غیرفعال کرد. برای فعال کردن مجدد برنامه ،

به سادگی حالت دیگری را انتخاب کنید

- روز/شب: در زمان ، زمان خاموش ، کانال خروجی و روز هفته تنظیم شده است. همانند حالت خودکار کار می کند ، اما خواهد شد

فقط هنگام روشن و خاموش کردن تاریکی ، خروجی ها را روشن کنید. این همچنین کنترل کامل روز/شب را نیز فعال می کند

به عنوان انعطاف پذیری بیشتر برای روشن کردن چراغ ها در هنگام غروب و خاموش شدن در هنگام طلوع آفتاب.

مثال 1: بعد از ساعت 20:00 چراغ روشن می شود و هنگام طلوع آفتاب چراغ را خاموش می کند:

در: 20:00 ،

خاموش: 12: 00 ،

مثال 2: هنگام غروب آفتاب روشن می شود و ساعت 23:00 خاموش می شود.

روز: 12:00

خاموش: ساعت 23:00

مثال 3: هنگام غروب آفتاب روشن می شود و هنگام طلوع آفتاب خاموش می شود.

در: 12:01

خاموش: ساعت 12:00

گزینه های اضافی موجود است ، همه مستقل از 100 برنامه روشن/خاموش کار می کنند.

کانالهای برنامه فعال هستند: به جای خاموش کردن چندین برنامه ، کانالهای خروجی جداگانه را می توان بدون نیاز به تغییر برنامه ها غیرفعال کرد.

ورودی های کمکی: دو ورودی دیجیتالی در دسترس هستند تا بتوانند کانال های خروجی خاصی را برای یک زمان مشخص روشن کنند. به عنوان مثال می توان از آن برای روشن کردن برخی از چراغ ها هنگام بازگشت به خانه در اواخر شب ، هنگامی که دکمه ای بر روی ریموت فشار داده می شود ، یا برای روشن کردن یک سری دیگر از چراغ ها در هنگام فعال شدن زنگ خانه استفاده کرد.

خروجی های کمکی: دو خروجی اضافی (جدا از 8 کانال خروجی) در دسترس است. می توان آنها را طوری برنامه ریزی کرد که با کانال های خروجی خاصی یا با ورودی های دیجیتال روشن شوند. در نصب خود ، خروجی های 6-8 را دارم که آبیاری من را کنترل می کنند ، که روی 24 ولت کار می کند. من از کانال های 6-8 برای روشن کردن یکی از خروجی های کمکی و روشن کردن منبع تغذیه 24 ولت برای سیستم آبیاری استفاده می کنم.

دستی روشن: هنگامی که در صفحه اصلی هستید ، می توانید از دکمه های 1-8 برای روشن یا خاموش کردن دستی کانال ها استفاده کنید.

مرحله 3: سخت افزار

سخت افزار
سخت افزار

منبع تغذیه: منبع تغذیه شامل یکسو کننده ، خازن صاف کننده و فیوز 1 آمپر برای حفاظت از اضافه بار است. سپس این منبع توسط تنظیم کننده 7812 و 7805 تنظیم می شود. منبع تغذیه 12 ولت برای هدایت رله های خروجی استفاده می شود و سایر مدارها از منبع تغذیه 5 ولت تغذیه می شوند. از آنجا که رگولاتور 7805 به خروجی رگولاتور 7812 متصل است ، جریان کلی باید از طریق رگلاتور 7812 به 1 آمپر محدود شود. توصیه می شود این تنظیم کننده ها را روی یک سینک حرارتی مناسب نصب کنید.

گذرگاه I²C: اگرچه Flowcode امکان کنترل سخت افزاری I²C را می دهد ، اما تصمیم گرفتم از پیکربندی نرم افزار I²C استفاده کنم. این امر به انعطاف پذیری بیشتری در تخصیص پین ها کمک می کند. اگرچه کندتر (50 کیلوهرتز) ، اما در مقایسه با گذرگاه سخت افزاری I²C عملکرد فوق العاده ای دارد. هر دو DS1307 و 24LC256 به این گذرگاه I²C متصل هستند.

ساعت واقعی (DS1307): در هنگام راه اندازی ، ثبت RTC 0 و 7 خوانده می شود تا مشخص شود آیا شامل زمان و داده های پیکربندی معتبر است. پس از تنظیم صحیح ، زمان RTC خوانده می شود و زمان در PIC بارگذاری می شود. این تنها زمانی است که زمان از RTC خوانده می شود. پس از راه اندازی ، یک پالس 1 هرتزی در پایه 7 RTC وجود خواهد داشت. این سیگنال 1 هرتزی به RB0/INT0 متصل است و از طریق یک روال سرویس وقفه ، زمان PIC هر ثانیه به روز می شود.

EEPROM خارجی: همه داده ها و گزینه های برنامه در EEPROM خارجی ذخیره می شوند. داده های EEPROM در هنگام راه اندازی بارگیری می شوند و یک کپی از داده ها در حافظه PIC ذخیره می شود. داده های EEPROM فقط در صورت تغییر تنظیمات برنامه به روز می شود.

سنسور روز/شب: یک مقاومت استاندارد وابسته به نور (LDR) به عنوان سنسور روز/شب استفاده می شود. از آنجا که LDR ها دارای اشکال و انواع مختلفی هستند ، همه با مقادیر مختلف مقاومت در شرایط نوری یکسان ، از یک کانال ورودی آنالوگ برای خواندن سطح نور استفاده کردم. سطوح روز و شب قابل تنظیم هستند و انعطاف پذیری کمی را برای سنسورهای مختلف ایجاد می کنند. برای تنظیم برخی از پسماندها ، می توان مقادیر فردی برای روز و شب را تعیین کرد. وضعیت تنها در صورتی تغییر می کند که سطح نور کمتر از 60 ثانیه زیر روز یا بالاتر از نقاط تنظیم شب باشد.

صفحه نمایش LCD: از 4 خط ، صفحه 16 کاراکتر استفاده می شود ، زیرا همه داده ها نمی توانند روی صفحه نمایش 2 خطی نمایش داده شوند. این پروژه شامل برخی از کاراکترهای سفارشی است که در ماکرو LCD_Custom_Char تعریف شده است.

ورودی های کمکی: هر دو ورودی با ترانزیستور NPN بافر می شوند. +12 ولت و 0 ولت نیز روی کانکتور موجود است که امکان اتصال انعطاف پذیرتر به اتصالات خارجی را فراهم می کند. به عنوان مثال ، گیرنده کنترل از راه دور می تواند به منبع متصل شود.

خروجی ها: تمام خروجی ها توسط یک رله 12 ولت از مدار الکتریکی جدا می شوند. رله های مورد استفاده ، دارای ولتاژ 250 ولت AC ، 10 آمپر هستند. مخاطبین معمولاً باز و معمولاً بسته به پایانه ها منتقل می شوند.

صفحه کلید: صفحه کلید مورد استفاده یک صفحه کلید ماتریس 4 * 3 است و به آن متصل است PORTB: 2..7.

مرحله 4: وقفه های صفحه کلید

وقفه های صفحه کلید
وقفه های صفحه کلید
وقفه های صفحه کلید
وقفه های صفحه کلید
وقفه های صفحه کلید
وقفه های صفحه کلید

می خواستم از وقفه PORTB Interrupt on Change در هر فشار کلیدی استفاده کنم. برای این منظور ، باید یک قطع کننده سفارشی در Flowcode ایجاد کرد تا اطمینان حاصل شود که جهت و داده های PORTB قبل و بعد از هر وقفه صفحه کلید درست تنظیم شده است. هر بار که یک دکمه را فشار می دهید یا آزاد می کنید ، وقفه ایجاد می شود. روال وقفه فقط با فشار دادن کلید پاسخ می دهد.

تداخل سفارشی

فعال کردن کد

portb = 0b00001110 ؛ trisb = 0b11110001 ؛

intcon. RBIE = 1؛

intcon2. RBIP = 1؛

intcon2. RBPU = 1؛

rcon. IPEN = 0؛

کد کنترل کننده

if (intcon & (1 << RBIF))

{FCM_٪ n ()؛

portb = 0b00001110؛

trisb = 0b11110001؛

wreg = portb؛

clear_bit (intcon، RBIF)؛

}

ایراداتی پیدا شد

در حین وقفه ، روال سرویس وقفه باید تحت هیچ شرایطی ، با ماکروهای دیگر که ممکن است در بقیه برنامه استفاده شوند تماس بگیرد. این امر در نهایت منجر به مشکلات سرریز پشته می شود ، زیرا وقفه می تواند همزمان با وقوع برنامه اصلی در یک برنامه فرعی مشابه رخ دهد. این نیز به عنوان یک خطای جدی توسط Flowcode هنگام کدگذاری کامپایل می شود.

در کد سفارشی صفحه کلید تحت GetKeyPadNumber ، چنین فراخوانی به ماکرو Delay_us وجود دارد که باعث سرریز پشته می شود. برای غلبه بر این ، من فرمان Delay_us (10) را حذف کرده و 25 خط "wreg = porta؛" را جایگزین آن کردم. دستورات این دستور PORTA را می خواند و مقدار آن را در رجیستر W قرار می دهد ، فقط برای تأخیر. این دستور در یک دستورالعمل مشابه assembler movf porta ، 0. برای ساعت 10 مگاهرتز مورد استفاده در پروژه ، هر دستورالعمل 400n خواهد بود ، و برای دریافت تاخیر 10 درجه ، به 25 مورد از این دستورات نیاز دارم.

در خط دوم شکل 3 توجه داشته باشید: GetKeypadNumber Custom Code ، که دستور delay_us (10) اصلی با "//" غیرفعال شده است. در زیر این ، من 25 "wreg = porta؛" خود را اضافه کرده ام. دستوراتی برای دریافت تاخیر 10us جدید. بدون تماس با ماکروهای درون کد سفارشی Keypad_ReadKeypadNumber ، ماکرو صفحه کلید را می توان در یک روال سرویس وقفه استفاده کرد.

لازم به ذکر است که قطعات Flowcode Keypad و eBlocks از مقاومتهای کششی استاندارد در خطوط ورودی استفاده نمی کنند. در عوض ، از مقاومت های کششی 100K استفاده می کند. به دلیل تداخلاتی که روی صفحه کلید در حین توسعه یافت شد ، مقاومتهای 100K همه با 10K و همه مقاومتهای 10K با 1K5 جایگزین شدند. صفحه کلید برای عملکرد صحیح با سیم های 200 میلی متری مورد آزمایش قرار گرفت.

مرحله 5: استفاده از تایمر

استفاده از تایمر
استفاده از تایمر
استفاده از تایمر
استفاده از تایمر
استفاده از تایمر
استفاده از تایمر

همه صفحه ها طوری تنظیم شده اند که همه اطلاعات مورد نیاز را برای کاربر برای ایجاد تغییرات سریع در تنظیمات نشان می دهند. خط 4 برای کمک به ناوبری در منوها و گزینه های برنامه استفاده می شود. در حالت عادی 22 صفحه نمایش در دسترس است.

خط 1: زمان و وضعیت

روز و زمان کنونی را نشان می دهد و به دنبال آن نمادهای وضعیت:

A - نشان می دهد که Aux Input A فعال شده است ، و Aux Input A تایمر در حال اجرا است.

B - نشان می دهد که Aux Input B فعال شده است و تایمر Aux Input B در حال اجرا است.

C - نشان می دهد که Aux Output C روشن است.

D - نشان می دهد که Aux Output D روشن است.

} - وضعیت سنسور روز/شب. در صورت وجود ، نشان می دهد که شب است.

خط 2: خروجی های برنامه

کانال هایی را نشان می دهد که توسط برنامه های مختلف روشن شده اند. کانال ها در شماره های خروجی خود نمایش داده می شوند و "-" نشان می دهد که خروجی خاص روشن نشده است. کانالهایی که در "برنامه خروجی فعال" غیر فعال شده اند همچنان در اینجا نشان داده می شوند ، اما خروجی های واقعی تنظیم نمی شوند.

خط 3: خروجی های واقعی

نشان می دهد که کدام برنامه ها توسط برنامه های مختلف ، Aux Inputs A & B یا خروجی های دستی تنظیم شده توسط کاربر روشن می شوند. با فشار دادن 0 تمام خروجی های فعال شده دستی به حالت خاموش باز می گردند و تایمرهای A & B خروجی Aux را بازنشانی می کند.

خط 4: منو و گزینه های کلیدی (در همه منوها)

عملکرد کلیدهای "*" و "#" را نشان می دهد.

قسمت مرکزی نشان می دهد که کدام کلیدهای عددی (0-9) برای صفحه انتخاب شده فعال هستند.

وضعیت ورودی Aux Input A & B نیز با استفاده از نماد سوئیچ باز یا بسته نشان داده می شود.

با فشار دادن کلید مربوطه روی صفحه کلید ، خروجی ها را می توان به صورت دستی روشن/خاموش کرد.

در طول منوها ، کلیدهای Star و Hash برای حرکت در بین گزینه های مختلف برنامه استفاده می شود. کلیدهای 0-9 برای تنظیم گزینه ها استفاده می شود. در مواردی که چندین گزینه در یک صفحه یا منوی برنامه نویسی موجود است ، کلید Hash برای گام نهادن به بین گزینه های مختلف استفاده می شود. گزینه انتخابی فعلی همیشه با کاراکتر ">" در سمت چپ صفحه نشان داده می شود.

0-9 مقادیر زمان را وارد کنید

1-8 تغییر انتخاب کانال

14 36 برنامه های گام به گام ، 1 قدم به عقب ، 4 قدم به عقب 10 برنامه ، 3 قدم به جلو ، 6 قدم به جلو 10

برنامه ها

1-7 روزهای هفته را تنظیم کنید. 1 = یکشنبه ، 2 = دوشنبه ، 3 = سه شنبه ، 4 = چهارشنبه ، 5 = پنجشنبه ، 6 = جمعه ، 7 = شنبه

0 در صفحه اصلی ، همه لغو های دستی و تایمرهای ورودی A و ورودی B را پاک کنید. در سایر منوها ، تغییر می کند

گزینه های انتخاب شده

# در صفحه اصلی ، همه لغو های دستی ، تایمرهای ورودی A و ورودی B و خروجی های برنامه را تا زمانی که

رویداد بعدی

* و 1 تایمر را راه اندازی مجدد کنید

* و 2 همه برنامه ها و گزینه ها را پاک کنید ، تنظیمات را به حالت پیش فرض بازگردانید.

* و 3 تایمر را در حالت آماده به کار قرار دهید. برای روشن کردن دوباره تایمر ، هر کلیدی را فشار دهید.

در هنگام ورود نادرست با هر مقدار زمانی ، نور پس زمینه LCD 5 بار چشمک می زند تا خطایی را نشان دهد. در همان زمان ، زنگ صدا به صدا در می آید. دستورات Exit و Next فقط زمانی کار می کنند که ورودی فعلی صحیح باشد.

نور پس زمینه LCD

هنگام راه اندازی اولیه ، نور پس زمینه LCD به مدت 3 دقیقه روشن می شود ، مگر اینکه:

- خرابی سخت افزاری وجود دارد (EEPROM یا RTC یافت نشد)

- زمان در RTC تنظیم نشده است

نور پس زمینه LCD دوباره به مدت 3 دقیقه بر روی هر ورودی کاربر روی صفحه کلید روشن می شود. اگر نور پس زمینه LCD خاموش باشد ، هر فرمان صفحه کلید ابتدا نور پس زمینه LCD را روشن می کند و کلید فشرده شده را نادیده می گیرد. این اطمینان می دهد که کاربر می تواند صفحه LCD را قبل از استفاده از صفحه کلید بخواند. در صورت فعال بودن Aux Input A یا Aux Input B ، نور پس زمینه LCD نیز به مدت 5 ثانیه روشن می شود.

مرحله 6: عکس های صفحه منو

عکس های صفحه منو
عکس های صفحه منو
عکس های صفحه منو
عکس های صفحه منو
عکس های صفحه منو
عکس های صفحه منو

با استفاده از صفحه کلید ، هر یک از گزینه ها را می توان به راحتی برنامه ریزی کرد. تصاویر برخی از عملکردهای هر صفحه را ارائه می دهند.

مرحله 7: طراحی سیستم

طراحی سیستم
طراحی سیستم

تمام توسعه و آزمایش روی تخته نان انجام شد. با نگاهی به تمام بخشهای سیستم ، سیستم را در سه ماژول تجزیه کردم. این تصمیم عمدتا به دلیل محدودیت اندازه PCB (80 100 100 میلی متر) نسخه رایگان Eagle بود.

ماژول 1 - منبع تغذیه

ماژول 2 - برد CPU

ماژول 3 - برد رله

من تصمیم گرفتم که همه اجزا باید به راحتی قابل دستیابی باشند و من نمی خواهم از اجزای نصب سطح استفاده کنم.

بیایید هر یک از آنها را مرور کنیم.

مرحله 8: منبع تغذیه

منبع تغذیه
منبع تغذیه
منبع تغذیه
منبع تغذیه
منبع تغذیه
منبع تغذیه
منبع تغذیه
منبع تغذیه

منبع تغذیه مستقیم است و پردازنده و بردهای رله را با ولتاژ 12 و 5 ولت تامین کنید.

من تنظیم کننده های ولتاژ را روی سینک های گرم مناسب نصب کردم و همچنین از خازن های بیش از حد برای منبع تغذیه استفاده کردم.

مرحله 9: برد CPU

برد CPU
برد CPU
برد CPU
برد CPU
برد CPU
برد CPU
برد CPU
برد CPU

همه اجزا ، به جز صفحه LCD ، صفحه کلید و رله ها روی برد CPU نصب شده اند.

بلوک های ترمینال برای ساده سازی ارتباط بین منبع تغذیه ، دو ورودی دیجیتال و سنسور نور اضافه شد.

پین ها/سوکت های سرصفحه اتصال آسان به صفحه LCD و صفحه کلید را فراهم می کند.

برای خروجی های رله ها از ULN2803 استفاده کردم. در حال حاضر شامل همه مقاومت های مورد نیاز رانندگی و دیودهای فلای بک است. این امر باعث می شود که برد CPU همچنان با استفاده از نسخه رایگان ایگل ساخته شود. رله ها به دو ULN2803 متصل هستند. ULN2803 پایین برای 8 خروجی و ULN2803 بالا برای دو خروجی کمکی استفاده می شود. هر خروجی کمکی دارای چهار ترانزیستور است. اتصال به رله ها نیز از طریق پین/سوکت هدر انجام می شود.

PIC 18F4520 مجهز به سوکت برنامه نویسی بود تا امکان برنامه نویسی آسان از طریق برنامه نویس PicKit 3 را فراهم آورد.

توجه داشته باشید:

متوجه خواهید شد که برد دارای IC اضافی 8 پین است. IC بالا PIC 12F675 است و به ورودی دیجیتال متصل است. این در طول طراحی PCB اضافه شد. این امر پیش پردازش ورودی دیجیتال را آسان می کند. در برنامه من ، یکی از ورودی های دیجیتال به سیستم زنگ خطر من متصل است. اگر زنگ هشدار به صدا در آید ، چراغ های خاصی در خانه من روشن می شود. مسلح کردن و خلع سلاح سیستم هشدار دهنده من بوق های مختلفی را روی آژیر می دهد. با استفاده از PIC 12F675 ، اکنون می توانم بین بازو/خلع سلاح و زنگ خطر واقعی تمایز قائل شوم. 12F675 همچنین دارای سوکت برنامه نویسی است.

من همچنین یک پورت I2C را از طریق پین/سوکت هدر تهیه کردم. این بعداً با تخته های رله مفید خواهد بود.

تخته شامل چند جهنده است که قبل از نصب سوکت های IC باید لحیم شوند.

مرحله 10: نتیجه گیری از Flowcode

فلوکد نتیجه گیری
فلوکد نتیجه گیری
فلوکد نتیجه گیری
فلوکد نتیجه گیری
فلوکد نتیجه گیری
فلوکد نتیجه گیری

از آنجا که من در سطح ثبت نام در مونتاژ کار می کنم ، گاهی اوقات استفاده از ماکروهای کامپوننت دشوار و ناامید کننده بود. این عمدتا به دلیل عدم آگاهی من از ساختار برنامه نویسی Flowcode بود. تنها جایی که من از بلوک های C یا ASM استفاده کرده ام این بود که خروجی ها را در یک روال وقفه روشن کنم ، و در روال Do_KeyPressed برای غیرفعال کردن/فعال کردن وقفه صفحه کلید. PIC همچنین در SLEEP با استفاده از یک بلوک ASM قرار داده می شود ، زمانی که EEPROM یا RTC یافت نشد.

راهنمایی در مورد استفاده از دستورات مختلف I²C ، همه از داخل فایلهای راهنمای Flowcode دریافت شده است. لازم است قبل از اینکه دستورات با موفقیت مورد استفاده قرار گیرند ، نحوه عملکرد دستگاه های مختلف I²C را دقیقاً بدانید. طراحی مدار مستلزم آن است که طراح تمام برگه های داده مربوطه را در اختیار داشته باشد. این یک نقص در Flowcode نیست.

Flowcode واقعاً در برابر آزمایش ایستاد و برای افرادی که مایل به شروع کار با محدوده ریزپردازنده های Microchip هستند بسیار توصیه می شود.

برنامه نویسی و پیکربندی PIC برای PIC مطابق تصاویر تنظیم شده است

مرحله 11: برد رله I2C اختیاری

برد رله I2C اختیاری
برد رله I2C اختیاری
برد رله I2C اختیاری
برد رله I2C اختیاری
برد رله I2C اختیاری
برد رله I2C اختیاری

برد CPU از قبل دارای 16 سر رله است. این خروجی ها ترانزیستورهای جمع کننده باز از طریق دو تراشه ULN2803 هستند. این می تواند برای تغذیه مستقیم رله ها استفاده شود.

پس از اولین آزمایشات سیستم ، من همه سیمهای بین برد CPU و رله ها را دوست نداشتم. از آنجا که یک پورت I2C را در برد CPU قرار دادم ، تصمیم گرفتم که برد رله را برای اتصال به پورت I2C طراحی کنم. با استفاده از تراشه 16 کاناله MCP23017 I/O Port Expander و آرایه ترانزیستور ULN2803 ، اتصالات CPU و رله ها را به 4 سیم کاهش دادم.

از آنجا که نمی توانم 16 رله را روی PCB 80 در 100 میلی متر جا دهم ، تصمیم گرفتم دو تخته بسازم. هر MCP23017 فقط از 8 پورت از 16 پورت خود استفاده می کند. برد 1 8 خروجی را کنترل می کند و برد 2 دو خروجی کمکی را کنترل می کند. تنها تفاوت در تابلوها آدرس هر تخته است. این به راحتی با یک مینی بلوز تنظیم می شود. هر برد دارای کانکتورهایی برای تغذیه و داده های I2C به برد دیگر است.

توجه داشته باشید:

در صورت لزوم ، نرم افزار فقط برای یک برد که می تواند از 16 پورت استفاده کند ، پیش بینی می کند. تمام داده های رله خروجی در اولین برد موجود است.

از آنجا که مدار اختیاری و بسیار ساده است ، من شماتیک ایجاد نکردم. اگر تقاضای کافی وجود دارد ، می توانم بعداً آن را اضافه کنم.

مرحله 12: پیوند RF اختیاری

پیوند RF اختیاری
پیوند RF اختیاری
پیوند RF اختیاری
پیوند RF اختیاری
پیوند RF اختیاری
پیوند RF اختیاری

پس از اتمام پروژه ، به زودی متوجه شدم که باید سیم کشی 220 ولت AC زیادی را به تایمر بکشم. من یک پیوند RF با استفاده از ماژول های استاندارد 315 مگاهرتز ایجاد کردم که اجازه می داد تایمر در داخل کمد قرار گیرد و تخته های رله در پشت بام ، نزدیک به تمام سیم کشی 220 ولت.

این پیوند از AtMega328P با سرعت 16 مگاهرتز استفاده می کند. نرم افزار فرستنده و گیرنده یکسان است و حالت توسط یک بلوز کوچک انتخاب می شود.

فرستنده

فرستنده به سادگی به درگاه CPU I2C وصل می شود. تنظیمات اضافی لازم نیست ، زیرا AtMega328P به داده های مشابه بردهای رله I2C گوش می دهد.

داده ها یکبار در ثانیه بر روی پورت I2C به روز می شوند و فرستنده این اطلاعات را از طریق پیوند RF ارسال می کند. اگر فرستنده داده های I2C را حدود 30 ثانیه دریافت نکند ، فرستنده به طور مداوم داده ها را منتقل می کند تا همه رله ها را به واحد گیرنده خاموش کند.

ماژول فرستنده را می توان بین 12 ولت و 5 ولت با یک بلوز کوچک روی برد رایانه انتخاب کرد. من فرستنده خود را با استفاده از 12 ولت تغذیه می کنم.

گیرنده

گیرنده به داده های کد شده از فرستنده گوش می دهد و داده ها را بر روی یک درگاه I2C قرار می دهد. برد رله به سادگی به این پورت متصل می شود و همانطور که به برد CPU وصل شده است ، کار می کند.

در صورتی که گیرنده اطلاعات معتبری را به مدت 30 ثانیه دریافت نکند ، گیرنده به طور مداوم داده ها را روی پورت I2C ارسال می کند تا همه رله های بردهای رله را خاموش کند.

طرحواره ها

یک روز ، اگر تقاضا برای آن وجود داشته باشد. طرح آردوینو حاوی تمام اطلاعات مورد نیاز برای ساخت مدار بدون نمودار مدار است.

دامنه

در نصب من ، فرستنده و گیرنده حدود 10 متر از یکدیگر فاصله دارند. تایمر داخل یک کمد و واحد رله در بالای سقف است.

مرحله 13: محصول نهایی

محصول نهایی
محصول نهایی
محصول نهایی
محصول نهایی
محصول نهایی
محصول نهایی

واحد اصلی در یک جعبه پروژه قدیمی نصب شده بود. شامل موارد زیر است:

- ترانسفورماتور 220 ولت/12 ولت

- برد منبع تغذیه

- برد CPU

- صفحه نمایش ال سی دی

- صفحه کلید

- فرستنده پیوند RF

- واحد گیرنده از راه دور خانگی اضافی برای فعال کردن/خاموش کردن چراغ ها از طریق کنترل از راه دور

واحد رله شامل موارد زیر است:

- ترانسفورماتور 220 ولت/12 ولت

- برد منبع تغذیه

- گیرنده پیوند RF

- 2 تخته رله I2C

همه تخته ها با همان ابعاد طراحی شده اند ، بنابراین می توان آنها را با فاصله دهنده های 3 میلی متری روی هم چسباند.

توصیه شده: