اطلاعیه

Collapse
No announcement yet.

ذخیره اطلاعات در eeprom هنگام قطع تغذیه

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    #16
    پاسخ : ذخیره اطلاعات در eeprom هنگام قطع تغذیه

    واقعا از همه دوستان تشکر میکنم

    نوشته اصلی توسط mostafahk
    همونجوری که دوستان گفتن شما باید 1.5 ثانیه مدارت روشن بمونه که زیاد سخت نیست.
    اولین مشکل شما استفاده از adc برای فهمیدن قطع برقه. همونطور که میدونید خازن وقتی از 5 ولت به 4 ولت برسه حدود 20 درصد انژیش رو از دست داره و شما تا زمانی که ولتاژ به 3 ولت برسه وقت دارید کارتون رو انجام بدید که قطعه نمیشه.
    1. باید همونطور که دوستمون گفتن مسیر 5 ولت اختصاصی برای میکرو درست کنید. طوری که انرژی خازن 4700 فقط فقط صرف میکرو بشه.
    2. روش بهتری برای تشخیص قطع برق هست. شما باید از خروجی ترانس قبل از دیود پل یه اپتو بزارید که وجود برق رو به صورت پالسهای مربعی در خروجیش به میکرو بده. یا روشی مثل این. اندازه گیری ولتاژ تغذیه بینهایت غیر اصولیه.
    3. موقع تشخیص قطع برق تمام پورتهای میکرو باید به حالت ورودی در بیان.
    موفق باشید
    باید بگم که من با یک دیود شاتیکی که افتش حدود 0.2 ولت است تغذیه رو دادم به خازن، یعنی خازن تا ولتاژ 4.8 شارژ میشه و تغذیه میکرو رو هم از خازن گرفتم. یعنی در واقع تغذیه خازن رو از بقیه مدار جدا کردم. برای ADC هم اومدم از قبل از خازن استفاده کردم، یعنی ADC داره ولتاژ 5 ولت رو میخونه و هر وقت کمتر از حدود 4.4 شد، میکرو شروع میکنه به ذخیره اطلاعات. با این روش مگر تغذیه میکرو از بقیه مدار جدا نیست؟ و انرژی خازن فقط صرف میکرو نمیشه؟
    منبع تغذیه هم منبع تغذیه صنعتی هست، دو تا پایه Vcc، دو تا پایه GND، یه پایه s+ و S- داره که پایه های S+ و S- برای اینه که ولتاژ یکی از بردها دقیقا رو 5 ولت نگه داشته بشه، یعنی مثلا ولتاژ قسمت های دیگه ممکنه کمی با 5 ولت فرق داشته باشه ولی ولتاژ بردی که این دو پایه بهش وصل شده دقیقا 5 ولت خواهد بود. من خودم خیلی متوجه نمیشم چرا اینطوریه. حالا با این اوصاف چیکار میتونم بکنم؟ این که گفتین اپتو بذارم ، میشه یه کم بیشتر توضیح بدین؟
    ممنون از راهنمایی دوستان

    دیدگاه


      #17
      پاسخ : ذخیره اطلاعات در eeprom هنگام قطع تغذیه

      نوشته اصلی توسط mostafahk
      3. موقع تشخیص قطع برق تمام پورتهای میکرو باید به حالت ورودی در بیان.
      چرا موقع تشخیص قطع برق تمام پورتها باید به حالت ورودی در بیاد؟؟
      یا به اندازه آرزوهایت تلاش میکنی یا به اندازه تلاشت ارزو میکنی

      دیدگاه


        #18
        پاسخ : ذخیره اطلاعات در eeprom هنگام قطع تغذیه

        نوشته اصلی توسط علیدلی
        چرا موقع تشخیص قطع برق تمام پورتها باید به حالت ورودی در بیاد؟؟
        وقتی میکرو تشخیص داده که برق مدار قطع شده باید از هر گونه اتلاف انرژی جلوگیری کنه.
        پورتها باید به حالت ورودی در بیان تا اگه LED یا چیزایی مثل اون به پورتهاش وصل هستن توان رو نخورن.
        اگه از میکروهایی مثل mega64 استفاده میکنید که قابلیت تقسیم فرکانس کلاکشون رو از طریق برنامه دارن بهتره فرکانس رو تا چند ده کیلوهرتز پایین بیارید جون تو مصرف برق میکرو تاثیر زیادی داره.
        روتین ذخیره در eeprom رو خودتون بنویسید طوری که میکرو وقتی منتظر تا اطلاعات تو eeprom ذخیره بشن loop نکنه و به sleep بره.

        با توجه به اینکه


        پس شیب ولتاژ اگه مصرف میکرو رو 10 میلی آمپر در نظر بگیریم میشه 2.1 ولت بر ثانیه که معنیش اینه که شما که زمان زیاد تری نیاز دارید انرژی کم میارید یا حد اکثر میتونی سر به سر اطلاعات رو ذخیره کنید که حاشیه امنیت رو باید حفظ کنید.
        بهتره با نکاتی که گفتم مصرف میکرو رو در موقع قطع برق به 2-3 میلی آمپر کاهش بدید.

        حتما با اون دیودی که گفتید آمپرمتر بزارید و میکرو رو گول بزنید که فکر کنه مدار خاموش شده و شروع به ذخیره اطلاعات کنه. مصرف میکرو رو گزارش بدید.
        قطعا شما در حدود 15 تا 20 میلی آمپر مصرف دارید که فقط 6 بایت رو میرسید ذخیره کنید.
        بت در بغل و به سجده پیشانی ما کافر زده خنده بر مسلمانی ما
        اسلام به ذات خود ندارد عیبی هر عیب که هست در این مسلمانی ماست

        دیدگاه


          #19
          پاسخ : ذخیره اطلاعات در eeprom هنگام قطع تغذیه

          نوشته اصلی توسط mostafahk
          وقتی میکرو تشخیص داده که برق مدار قطع شده باید از هر گونه اتلاف انرژی جلوگیری کنه.
          پورتها باید به حالت ورودی در بیان تا اگه LED یا چیزایی مثل اون به پورتهاش وصل هستن توان رو نخورن.
          اگه از میکروهایی مثل mega64 استفاده میکنید که قابلیت تقسیم فرکانس کلاکشون رو از طریق برنامه دارن بهتره فرکانس رو تا چند ده کیلوهرتز پایین بیارید جون تو مصرف برق میکرو تاثیر زیادی داره.
          روتین ذخیره در eeprom رو خودتون بنویسید طوری که میکرو وقتی منتظر تا اطلاعات تو eeprom ذخیره بشن loop نکنه و به sleep بره.

          با توجه به اینکه


          پس شیب ولتاژ اگه مصرف میکرو رو 10 میلی آمپر در نظر بگیریم میشه 2.1 ولت بر ثانیه که معنیش اینه که شما که زمان زیاد تری نیاز دارید انرژی کم میارید یا حد اکثر میتونی سر به سر اطلاعات رو ذخیره کنید که حاشیه امنیت رو باید حفظ کنید.
          بهتره با نکاتی که گفتم مصرف میکرو رو در موقع قطع برق به 2-3 میلی آمپر کاهش بدید.

          حتما با اون دیودی که گفتید آمپرمتر بزارید و میکرو رو گول بزنید که فکر کنه مدار خاموش شده و شروع به ذخیره اطلاعات کنه. مصرف میکرو رو گزارش بدید.
          قطعا شما در حدود 15 تا 20 میلی آمپر مصرف دارید که فقط 6 بایت رو میرسید ذخیره کنید.
          ممنون از راهنمایی هاتون و ممنون از وقتی میذارین
          وقتی برق رو قطع میکنم، یک لحظه تا 10 میلی آمپر جریان میکشه و بعدش دیگه جریان میاد پایین.
          تمام پورت ها رو موقع قطع برق به ورودی تبدیل میکنم.
          چطوری میتونم فرکانس میکرو رو داخل برنامه کاهش بدم؟
          برنامه ای که برای ذخیره در eeprom نوشتم اینطوریه:
          کد:
          int i,j;
           #asm("cli");
           for(i=0;i<5;i++)
           {
           for(j=0;j<32;j++)
           {
            while((EECR & 0x2)==1);
            Data[j][i]=LED[j][i]; 
            EECR=0x00;
            EECR|=0x4;
            EECR|=0x2;
            }
            }
           #asm("sei");
          به نظرتون برنامه ای که برای ذخیره در eeprom نوشتم مشکل داره؟
          باز هم ممنونم

          دیدگاه


            #20
            پاسخ : ذخیره اطلاعات در eeprom هنگام قطع تغذیه

            گفتم که فقط تو بعضی از میکروهای mega میشه فرکانس کلاک رو با رجیستری که توشون هست تقسیم بر 2و4و8و...256 کرد. شما از چه میکرویی استفاده میکنید؟

            در مورد برنامه هم باید یه توضیحی بدم.
            عملیات نوشتن تو eeprom خیلی وقت گیره. هر بایت حدود 8.5 میلی ثاینه طول میکشه تو این مدت CPU کلا الافه و کاری نمیکنه و تو یه حلقه میچرخه.
            خوب نتیجتا داره توان بیخودی تلف میکنه. پس بهتره تابع eeprom_write رو خودتون بنویسید و توش بجای loop کردن میکرو رو sleep کنید و بعد از 10 میلی ثانیه wakeup کنید و برید سراغ بایت بعدی.
            این کار تاثیر زیادی تو کنترل توان میکرو داره.
            یادم رفت بگم. حتی تایمرها ، پورت سریال ، adc و .... رو باید کاملا خاموش کنید اینها هم مصرف کننده توان هستند.
            البته همونطور که گفتم شما میگید فقط 6 بایت میتونید ذخیره کنید که معنیش اینه که توان یه جایی داره هدر میره.
            برای تشخیص قطع برق هم اگه من بودم این کار رو میکردم. مقاومت ها رو طوری انتخاب کنید که اگه ولتاژ 30 درصد افت کرد بتونید تشخیص بدید که برق قطع شده.
            http://s3.picofile.com/file/7387491498/powergood.png
            بت در بغل و به سجده پیشانی ما کافر زده خنده بر مسلمانی ما
            اسلام به ذات خود ندارد عیبی هر عیب که هست در این مسلمانی ماست

            دیدگاه


              #21
              پاسخ : ذخیره اطلاعات در eeprom هنگام قطع تغذیه

              سوالی که اینجا پیش میاد این هست که به فرض اگر میکرو توسط باتری تغذیه میشد و با کاهش ولتاژ باتری مثلا از 5 ولت به 4.5 ولت عملیات نوشتن در EEPROM شروع شود در این صورت به دلیل محدود بوده حافظه ی EEPROM میکرو پر می شود. (ولتاژ باتری به صورت ارام ارام کم شود) در این صورت راه حلی که به نظر دوستان می رسد چی هست؟
              گویند سنگ لعل شود در مقام صبر اری شود ولی به خون جگر شود
              همیشه آخر همه چیز خوبه، اگر هم هنوز خوب نشده پس هنوز آخرش نشده(چارلی چاپلین)

              دیدگاه


                #22
                پاسخ : ذخیره اطلاعات در eeprom هنگام قطع تغذیه

                نوشته اصلی توسط mpc نمایش پست ها
                سلام
                دوستان روش هاس خوبی پیشنهاد دادند
                1- در خیلی از دستگاه های صنعتی نیز باطری وجود دارد شما چهار عدد باطری قلمی قابل شارژ و یا یک باطری 9 ولت قابل شارژ و یا دو عدد باطری موبایل بگذاری بعد از رفتن برق نیز کلی دستگاه کار خواهد کرد.

                2- با استفاده از خازن
                این خوبی و ارزان است فقط تغذیه میکرو را با یک دیود از بقیه مدار جدا کن سپس خارن را فقط به تغذیه میکرو وصل کن و یک پایه میکرو که اینتراپت است را به قبل از دیود وصل کن اگر ولتاژ کم شد اینتراپت فعال شود ( لبه پایین رونده فعال شود)
                برای توضیح بهتر میتوانم بگویم که به پایه منفی آی سی رگولاتور 5 ولتت یه عدد دیود وصل کند بعد به زمین بزن تا تغدیه خروجی 5.6 ولت شود سپس خروجی رگولاتور را به دو دیود وصل کن آن طرف دیود ها یکی تغذیه کل مدار را میدهد و آن یکی هم فقط میکرو را
                هر چقدر مصرف مدارت بالا نیز باشد خازن میکرو خالی نخواهد شد و میکرو به اندازه کافی زمان برای ذخیره و کارهای دیگر خواهد داشت
                من خودم این کارها را کرده ام و خوب جواب گرفته ام

                موفق باشید :applause:
                ممنون که تجربیاتتون رو به اشتراک گذاشتین.
                دقت کردین تو مهمونیا یه کیوی رو وقتی با پوست میخورین چه جور نگاتون میکنن.!!!!

                هیچگاه چیزی را خوب نمی فهمی، مگر اینکه بتوانی آن را برای مادربزرگت شرح دهی!((آلبرت انیشتین))

                دیدگاه

                لطفا صبر کنید...
                X