صفحه 1 از 2 12 آخرینآخرین
نمایش نتایج: از 1 به 10 از 16
Like Tree17 لایک

موضوع: نگه داشتن وضعیت رله بعد از قطع و وصل برق !!!!

  1. #1
    Senior Member
    تاریخ عضویت
    Nov 2014
    نوشته ها
    255

    نگه داشتن وضعیت رله بعد از قطع و وصل برق !!!!

    سلام دوستان خوبید ؟
    اقا من یه سوال دارم.
    وقتی یه تعداد رله با اردوینو فعال و غیر فعال هستن اگر در همین حین برق قطع و وصل بشه وضعیت رله ها همه به یه حالت برمیگرده.
    چطور میتونیم کاری کنم که رله ها بعد اومدن برق همون حالت قبلی خودشو بگیرن ؟
    ممنون

  2. #2
    Member
    تاریخ عضویت
    Apr 2015
    محل سکونت
    ایران :|
    نوشته ها
    76
    میکروکنترلرهای اتمل (مثل همونی که روی آردویینو نصبه) یه ویژگی دارن به اسم brown out detection. این جوریه که وقتی این ویژگی فعال باشه، میکروکنترلر همیشه حواسش به تغذیه خودش هست. وقتی برق اصلی قطع بشه، بخاطر حضور یه خازن با ظرفیت بالا، ولتاژ فورا قطع نمیشه و کمی کمی افت میکنه تا صفر بشه. میکروکنترلر میفهمه داره ولتاژش کم میشه، و با توجه به همون ویژگی که گفتم، میتونه یه قطعه کد مشخص رو در این لحظات آخری اجرا کنه. این ویژگی یه اینتراپته. مثلا میشه برنامه ریزی کرد که وقتی ولتاژ میکروکنترلر افت کرد و به 3 ولت رسید مثلا، این قطعه کد رو اجرا کنه.
    من با آردویینو کار نکردم و مستقیم با اتمل استودیو کد نوشتم. واسه همین باید از دوستان بپرسید که چطور تو آردویینو عملیش کنید. مث برادر magmagmary .

    شما کافیه این کار رو بکنید :

    1) یه خازن با ظرفیت بالا مثلا 470 میکرو فاراد یا 1000 میکروفاراد بذارید جلوی تغذیه "میکروکنترلر" (نه تغذیه رله ها یا تغذیه کلی. چون رله ها مصرفشون زیاده فوری خازن رو خالی میکنن تغذیه قطع میشه میکروکنترلر فورا خاموش میشه وقت نمیکنه کد رو اجرا کنه). یعنی ترجیحا خازن رو بعد از تثبیت کننده ولتاژ بذارید اگه امکانش رو دارید.
    2) جستجو کنید که چجوری تو محیط آردویینو میشه از ویژگی brown out detection استفاده کرد. حالا یا دوستان یا نت
    3) یه قطعه کد بنویسید، که در آخرین لحظه، وضعیت خروجی های خود میکرو (در اصل وضعیت همون رله ها میشه) رو برداره و تو حافظه EEPROM بنویسه.
    4) کاری کنید که با هر بار روشن شدن دستگاه، میکروکنترلر وضعیت خروجی ها رو از EEPROM بخونه و اعمال کنه.
    ویرایش توسط Tiranoid : 09-13-2016 در ساعت 03:58 PM

  3. #3
    Senior Member
    تاریخ عضویت
    Nov 2014
    نوشته ها
    255
    نقل قول نوشته اصلی توسط Tiranoid نمایش پست ها
    میکروکنترلرهای اتمل (مثل همونی که روی آردویینو نصبه) یه ویژگی دارن به اسم brown out detection. این جوریه که وقتی این ویژگی فعال باشه، میکروکنترلر همیشه حواسش به تغذیه خودش هست. وقتی برق اصلی قطع بشه، بخاطر حضور یه خازن با ظرفیت بالا، ولتاژ فورا قطع نمیشه و کمی کمی افت میکنه تا صفر بشه. میکروکنترلر میفهمه داره ولتاژش کم میشه، و با توجه به همون ویژگی که گفتم، میتونه یه قطعه کد مشخص رو در این لحظات آخری اجرا کنه. این ویژگی یه اینتراپته. مثلا میشه برنامه ریزی کرد که وقتی ولتاژ میکروکنترلر افت کرد و به 3 ولت رسید مثلا، این قطعه کد رو اجرا کنه.
    من با آردویینو کار نکردم و مستقیم با اتمل استودیو کد نوشتم. واسه همین باید از دوستان بپرسید که چطور تو آردویینو عملیش کنید. مث برادر magmagmary .

    شما کافیه این کار رو بکنید :

    1) یه خازن با ظرفیت بالا مثلا 470 میکرو فاراد یا 1000 میکروفاراد بذارید جلوی تغذیه "میکروکنترلر" (نه تغذیه رله ها یا تغذیه کلی. چون رله ها مصرفشون زیاده فوری خازن رو خالی میکنن تغذیه قطع میشه میکروکنترلر فورا خاموش میشه وقت نمیکنه کد رو اجرا کنه). یعنی ترجیحا خازن رو بعد از تثبیت کننده ولتاژ بذارید اگه امکانش رو دارید.
    2) جستجو کنید که چجوری تو محیط آردویینو میشه از ویژگی brown out detection استفاده کرد. حالا یا دوستان یا نت
    3) یه قطعه کد بنویسید، که در آخرین لحظه، وضعیت خروجی های خود میکرو (در اصل وضعیت همون رله ها میشه) رو برداره و تو حافظه EEPROM بنویسه.
    4) کاری کنید که با هر بار روشن شدن دستگاه، میکروکنترلر وضعیت خروجی ها رو از EEPROM بخونه و اعمال کنه.

    تشکر از توضیحات خوبتون

  4. #4
    Senior Member
    تاریخ عضویت
    Dec 2013
    محل سکونت
    ایران - شیراز
    نوشته ها
    220
    یا می تونی همون لحظه که فرمان رو ارسال می کنی وضعیت رو در حافظه eeprom ذخیره کنی
    لایک کردن

  5. #5
    Senior Member
    تاریخ عضویت
    Nov 2014
    نوشته ها
    255
    نقل قول نوشته اصلی توسط solxsado نمایش پست ها
    یا می تونی همون لحظه که فرمان رو ارسال می کنی وضعیت رو در حافظه eeprom ذخیره کنی
    سلام ممنون . فقط من یکم تازه کار هستم . میشه بگید چطور میشه دقیقا این کارو کرد ؟ بعد اینکه امکان داره حافظه پر بشه ؟ واسه پاک کردن وضعیت های قبلی چکار باید کرد ؟ در کل واسه یه مدته طولانی استفاده از رله و اینکه هربار برق میره رله حالت خودشو حفظ کنه و از طرفی مشکلی پیش نیاد (پر شدن حافظه و...) چکار باید کرد ؟
    ممنون

  6. #6
    مدیر گروه
    تاریخ عضویت
    Nov 2013
    محل سکونت
    ایران
    نوشته ها
    4,064
    نقل قول نوشته اصلی توسط Tiranoid نمایش پست ها
    میکروکنترلرهای اتمل (مثل همونی که روی آردویینو نصبه) یه ویژگی دارن به اسم brown out detection. این جوریه که وقتی این ویژگی فعال باشه، میکروکنترلر همیشه حواسش به تغذیه خودش هست. وقتی برق اصلی قطع بشه، بخاطر حضور یه خازن با ظرفیت بالا، ولتاژ فورا قطع نمیشه و کمی کمی افت میکنه تا صفر بشه. میکروکنترلر میفهمه داره ولتاژش کم میشه، و با توجه به همون ویژگی که گفتم، میتونه یه قطعه کد مشخص رو در این لحظات آخری اجرا کنه. این ویژگی یه اینتراپته. مثلا میشه برنامه ریزی کرد که وقتی ولتاژ میکروکنترلر افت کرد و به 3 ولت رسید مثلا، این قطعه کد رو اجرا کنه.
    من با آردویینو کار نکردم و مستقیم با اتمل استودیو کد نوشتم. واسه همین باید از دوستان بپرسید که چطور تو آردویینو عملیش کنید. مث برادر magmagmary .

    شما کافیه این کار رو بکنید :

    1) یه خازن با ظرفیت بالا مثلا 470 میکرو فاراد یا 1000 میکروفاراد بذارید جلوی تغذیه "میکروکنترلر" (نه تغذیه رله ها یا تغذیه کلی. چون رله ها مصرفشون زیاده فوری خازن رو خالی میکنن تغذیه قطع میشه میکروکنترلر فورا خاموش میشه وقت نمیکنه کد رو اجرا کنه). یعنی ترجیحا خازن رو بعد از تثبیت کننده ولتاژ بذارید اگه امکانش رو دارید.
    2) جستجو کنید که چجوری تو محیط آردویینو میشه از ویژگی brown out detection استفاده کرد. حالا یا دوستان یا نت
    3) یه قطعه کد بنویسید، که در آخرین لحظه، وضعیت خروجی های خود میکرو (در اصل وضعیت همون رله ها میشه) رو برداره و تو حافظه EEPROM بنویسه.
    4) کاری کنید که با هر بار روشن شدن دستگاه، میکروکنترلر وضعیت خروجی ها رو از EEPROM بخونه و اعمال کنه.

    عالی بود توضیحتون
    من خودم با این ویژه گی کار نکردم تا حالا تست می کنم حتما و اطلاع میدم
    ویرایش توسط magmagmary : 09-14-2016 در ساعت 05:05 AM

  7. #7
    مدیر گروه
    تاریخ عضویت
    Nov 2013
    محل سکونت
    ایران
    نوشته ها
    4,064
    نقل قول نوشته اصلی توسط feredy2011 نمایش پست ها
    سلام ممنون . فقط من یکم تازه کار هستم . میشه بگید چطور میشه دقیقا این کارو کرد ؟ بعد اینکه امکان داره حافظه پر بشه ؟ واسه پاک کردن وضعیت های قبلی چکار باید کرد ؟ در کل واسه یه مدته طولانی استفاده از رله و اینکه هربار برق میره رله حالت خودشو حفظ کنه و از طرفی مشکلی پیش نیاد (پر شدن حافظه و...) چکار باید کرد ؟
    ممنون

    حافظه پر نمیشه تو داری روی یه خونه از حافظه می نویسی و پاک می کنی .
    تعداد دفعات مجاز برای این کار محدوده اما با توجه به این که تو فقط وقتی برق میره روش چیزی می نویسی جواب کار تو رو خواهد داد.

  8. #8
    Senior Member
    تاریخ عضویت
    Nov 2014
    نوشته ها
    255
    نقل قول نوشته اصلی توسط magmagmary نمایش پست ها
    حافظه پر نمیشه تو داری روی یه خونه از حافظه می نویسی و پاک می کنی .
    تعداد دفعات مجاز برای این کار محدوده اما با توجه به این که تو فقط وقتی برق میره روش چیزی می نویسی جواب کار تو رو خواهد داد.
    ممنون فقط اگر لطف کنید یه کد مشابه اجرای این کارم بذارید ممنون میشم.

  9. #9
    Senior Member
    تاریخ عضویت
    Nov 2015
    نوشته ها
    229
    خیلی چیز باحالی بود
    چیزی که فهمیدم:
    به نظر میاد این میکروها 3 جور حاقظه دارن
    Flash که برنامه (اسکچ) اونجا ذخیره میشه ، به نظر میاد بوتلودر هم همینجا ذخیره میشه
    SRAM که مقادیر متغیرهایی که در حین برنامه ایجاد میشن داخلش ذخیره میشن ، بعد از قطع و وصل شدن تغذیه این حافظه پاک میشه
    ٍEEPROM حافظه ای که برنامه برای ذخیره سازی مقادیر برای مدت طولانی تر استفاده میکنه ، این حاقظه و Flash با قطع و وصل شدن برق مقادیرشون سر جاش باقی میمونه

    برای ذخیره مقادیر توی EEPROM و بازخوانی هم میشه از کتابخونه EEPROM (https://www.arduino.cc/en/Reference/EEPROM)استفاده کرد
    و این brown out detection خیلی چیز باحالی به نظر میاد اما شاید
    خوب باشه که قبل ورودی ولتاژ آردوینو به دیود بذاریم و خازن ها رو بعد دیود وصل کنیم و مقدار ولتاژ ورودی قبل دیود رو analogread کنیم و هر وقت برق قطع شد قبل دیود ولتاژ سریعا صفره و احتمالا سریع تر متوجه این موضوع برای ذخیره سازی مقادیر میشیم
    از اونجایی که فرکانس کریستال آردوینو هم 16 مگاهرتز هست فکر میکنم بدون اینتراپت هم مشکلی پیش نیاد و این چک کردن ولتاژ توی همون loop جا بگیره (البته توی loop دیگه delay نباید باشه)
    لایک کردن

  10. #10
    Member
    تاریخ عضویت
    Apr 2015
    محل سکونت
    ایران :|
    نوشته ها
    76
    نقل قول نوشته اصلی توسط siib نمایش پست ها
    خیلی چیز باحالی بود
    چیزی که فهمیدم:
    به نظر میاد این میکروها 3 جور حاقظه دارن
    flash که برنامه (اسکچ) اونجا ذخیره میشه ، به نظر میاد بوتلودر هم همینجا ذخیره میشه
    sram که مقادیر متغیرهایی که در حین برنامه ایجاد میشن داخلش ذخیره میشن ، بعد از قطع و وصل شدن تغذیه این حافظه پاک میشه
    ٍeeprom حافظه ای که برنامه برای ذخیره سازی مقادیر برای مدت طولانی تر استفاده میکنه ، این حاقظه و flash با قطع و وصل شدن برق مقادیرشون سر جاش باقی میمونه

    برای ذخیره مقادیر توی eeprom و بازخوانی هم میشه از کتابخونه eeprom (https://www.arduino.cc/en/reference/eeprom)استفاده کرد
    و این brown out detection خیلی چیز باحالی به نظر میاد اما شاید
    خوب باشه که قبل ورودی ولتاژ آردوینو به دیود بذاریم و خازن ها رو بعد دیود وصل کنیم و مقدار ولتاژ ورودی قبل دیود رو analogread کنیم و هر وقت برق قطع شد قبل دیود ولتاژ سریعا صفره و احتمالا سریع تر متوجه این موضوع برای ذخیره سازی مقادیر میشیم
    از اونجایی که فرکانس کریستال آردوینو هم 16 مگاهرتز هست فکر میکنم بدون اینتراپت هم مشکلی پیش نیاد و این چک کردن ولتاژ توی همون loop جا بگیره (البته توی loop دیگه delay نباید باشه)
    نه انالوگ رید اصن مناسب نیست. میشه. ولی خیلی پرمصرفه و کم سرعت.
    این براون آوت دتکشن اصن برای همینکار ساخته میشه و تو میکروکنترلر ها اضافه میشه. یه اینتراپت داخلیه. (وقفه).
    میکروکنترلرهای موجود رو آردویینو مث 328 ، حدود 10 تا 15 نوع اینتراپت دارن. 2 نوع اینتراپت خارجی و بقیه داخلی .

    اینا معمولا اینتراپت های میکروکنترلر سری اتمگا هستن. به ترتیب اولویت نوشته شدن.

    1) اینتراپت ریست . شامل ریست خارجی/ ریست با قطع و وصل کردن / اینتراپت براون آوت (همینی که تو پست توضیح دادم) ، اینتراپت واچ داگ . توجه کنید که قطع و وصل کردن برق با ریست با پایه شماره یک فرق داره.
    2) اینتراپت خارجی (تو آردویینو روی پایه های 2 و 3 میشه اعمالش کرد)
    3) اینتراپت تغییر پین ( بازم اینتراپت خارجی محسوب میشه)
    4) اینترپت های مربوط به تایمر ها
    5) اینتراپت های مروبط به ارتباط سریال
    6) اینتراپت های مربوط به adc
    7) اینتراپت های مربوط به eeprom
    8) اینتراپت مربوط به مقایسه کننده ولتاژ
    9) اینتراپت مربوط به ارتباط i2c
    و یه مشت دیگه
    ویرایش توسط Tiranoid : 09-14-2016 در ساعت 11:32 AM
    لایک کردن

صفحه 1 از 2 12 آخرینآخرین

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •  

SEO by vBSEO