اطلاعیه

Collapse
No announcement yet.

ساخت شیر هوشمند

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

    #16
    پاسخ : ساخت شیر هوشمند

    ممنون از پاسخهای شما
    راستش چند روزی نبودم و نتونستم سراغ کار مدار باشم
    امروز یکمی باهاش کار کردم,بردشم ساختم
    برنامشم آزمایشی نوشتم(هنوز تکنیک های حذف نویز رو روش اجرا نکردم)
    ولی یه مشکل تو کار هست ؟!
    شماتیک و سورس رو میزارم تا عیب یابی راحت تر باشه
    دانلود شماتیک و سورس و هگز [glow=red,2,300]http://keytak.persiangig.com/Fal.rar[/glow]



    کد:
    $regfile = "M8def.dat"
    $crystal = 8000000
    
    Config Adc = Single , Prescaler = Auto
    Config Pind.0 = Input                    'Calbirataion Button
    Config Pinb.1 = Output                   'Relay
    Config Pinb.2 = Output                   'Active LED
    Config Pinb.3 = Output                   'Calibration LED
    
    Dim A As Word
    Dim R As Word
    
    
    
    Start Adc
    Enable Adc
    
    
    
    Portb.2 = 1
    Portb.3 = 0 : Waitms 50
    
    Portb.3 = 1
    Portb.2 = 0 : Waitms 50
    
    Portb.2 = 1
    Portb.3 = 0 : Waitms 50
    
    Portb.3 = 1
    Portb.2 = 0 : Waitms 50
    
    Portb.2 = 1
    Portb.3 = 0 : Waitms 50
    
    Portb.3 = 1
    Portb.2 = 0 : Waitms 50
    
    Portb.2 = 1
    Waitms 200
    Portb.3 = 0
    Portb.2 = 0
    
    
    
    Main:
    
    A = Getadc(0)
    Readeeprom R , 0
    
    
    If R = A Then
    Portb.1 = 0
    Portb.2 = 1
    Else
    Portb.1 = 1
    Portb.2 = 0
    
    End If
    
    
    
    Debounce Pind.0 , 1 , Calibrate , Sub
    Waitms 100
    Goto Main
    
    
    
    
    
    
    Calibrate:
    A = Getadc(0)
    
    Writeeeprom A , 0
    Waitms 5
    
    Portb.1 = 0
    Portb.2 = 0
    
    Portb.3 = 1
    Waitms 50
    Portb.3 = 0
    Waitms 50
    Portb.3 = 1
    Waitms 50
    Portb.3 = 0
    Waitms 50
    Portb.3 = 1
    Waitms 50
    Portb.3 = 0
    Waitms 50
    
    
    Return
    End
    خب وقتی سیستم شروع به کار میکنه باید پس از چند بار روشن خاموش شدن led ها بره سراغ خوندن adc
    adc0 هم به 5V وصل کردم
    خوندن adc تو یه حلقه ست که مدام باید تکرار شه و اگر مقادیر adc قرائت شده با مقدار ذخیره شده در eeprom(با زدن دکمه مقدار حاضر adc ذخیره میشه_در واقع کالیبره میشه) متفاوت بود فرمان بده و یه رله رو که در اینجا یه led ه روشن شه
    مشکل اینجاست هیچ اتفاقی نمیوفته و انگار مقدار adc خونده نمیشه !
    www.keytak.blogfa.com
    ---------------------------------------------------------------
    کنترل وسایل برقی با VB6(جالبه یه نگاه بندازید)
    http://www.eca.ir/forum2/index.php?topic=33488.0

    دیدگاه


      #17
      پاسخ : ساخت شیر هوشمند

      کیهان جان
      اولا فایل شما دانلود نمیشه نمیدونم چرا!

      ثانیا پیشنهادم اینه که فعلا از متغییری غیر از E2prom استفاده کنید. برای تست!
      چرا مقادیر متغیر ها رو روی یک ال سی دی نمایش نمیدید؟

      فایل رو اصلاح کنید تا بیشتر بررسی کنم.
      همواره یادمان باشد:
      1-مردان بزرگ اراده می کنند و مردان کوچک آرزو
      2-افراد بزرگ، همیشه به دنبال ایده های بزرگند و افراد کوچک به دنبال افراد بزرگ
      3-همیشه سعی کن آنقدر کامل باشی که بزرگترین تنبیه تو برای دیگران گرفتن خودت از آنها باشد.

      دیدگاه


        #18
        پاسخ : ساخت شیر هوشمند

        لینک چک شد مشکلی نیست
        اینجا هم پ کردم
        http://uplod.ir/42kh9hnerxgj/Fal.rar.htm
        توی ال سی دی هم تست کردم
        در مورد ای2 پی رام هم متوجه نشدم ؟!آ‌ مشکل اون قسمت برنامه نیست ا¾!
        سپاس فراوان
        www.keytak.blogfa.com
        ---------------------------------------------------------------
        کنترل وسایل برقی با VB6(جالبه یه نگاه بندازید)
        http://www.eca.ir/forum2/index.php?topic=33488.0

        دیدگاه


          #19
          پاسخ : ساخت شیر هوشمند

          فایل زیر کههمون فایل خودتون هست که بنده کمی تغییرش دادم.
          http://uplod.ir/hl9me1o8f962/Fal__2.zip.htm
          نقش اون lm35 صرفاجهت تغییر مقدار ADC هست.

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

          من منتظرم
          همواره یادمان باشد:
          1-مردان بزرگ اراده می کنند و مردان کوچک آرزو
          2-افراد بزرگ، همیشه به دنبال ایده های بزرگند و افراد کوچک به دنبال افراد بزرگ
          3-همیشه سعی کن آنقدر کامل باشی که بزرگترین تنبیه تو برای دیگران گرفتن خودت از آنها باشد.

          دیدگاه


            #20
            پاسخ : ساخت شیر هوشمند

            والا قصد بنده اینه که با زدن دکمه کالیبره (اولین بار پس از نصب) یه مقداری از adc که متناسب با نور محیط و شرایط محل نصب شده هست ذخیره بشه و میکرو بیاد هر لحظه چک کنه که عدد حاضر adc با عدد ذخیره شده تغییرات زیادی داشته ؟! که اگر داشته یعنی دستی چیزی جلوی سنسور اومده و این یعنی فرمان به شیر برقی
            البته با راهکاری که شما (آقای موسوی عزیز) گفتید فکر میکنم روشی که من ارائه دادم درست نیست
            اما هنوز کار به اون مرحله نرسیده که بخوام از روش شما استفاده کنم
            من هنوز توی خوندن ADC مشکل دارم
            قبلا با lm35 تست کردم و نتیجه گرفتم رو همین مدار(پروتئوس) ، ولی روی برد جواب نمیده،یعنی مقدار adc تغییر نمیکنه(LCD هم ندارم :cry2
            شما میگید من چیکار کنم ؟!آ‌

            راستی شما تو شماتیک جدید AREF رو به AVCC وصل کردید،آیا نیازه که توی برنامه قسمت
            کد:
            Reference = Off
            رو اضافه کنم!؟
            با تشکر

            www.keytak.blogfa.com
            ---------------------------------------------------------------
            کنترل وسایل برقی با VB6(جالبه یه نگاه بندازید)
            http://www.eca.ir/forum2/index.php?topic=33488.0

            دیدگاه


              #21
              پاسخ : ساخت شیر هوشمند

              سلام پروژه رو کمی تکون دادم و تقریبا از نو نوشتم ببخشید دیگه :biggrin:

              http://uplod.ir/zarol3zdntxw/Fal__3.rar.htm

              توی برنامه توضیحات لازمه رو دادم ولی در کل در این سری از پروژه شما باید دو حالت دارید:
              1 یا پروژه روشن شده و نیاز به کالیبره شدن داره --------> در این صورت قبل از خاموش شدن چراغ Active باید کلید زده شده باشه تا کلیب کنه بعد از کالیبره شدن کلید می تونه قطع بشه.
              2 یا نداره --------> که هیچ، روشن میشه و بر اساس مقدار دورن eeprom مقایسه رو انجام میده و ....

              اگه بازم مشکلی بود بگید.
              همواره یادمان باشد:
              1-مردان بزرگ اراده می کنند و مردان کوچک آرزو
              2-افراد بزرگ، همیشه به دنبال ایده های بزرگند و افراد کوچک به دنبال افراد بزرگ
              3-همیشه سعی کن آنقدر کامل باشی که بزرگترین تنبیه تو برای دیگران گرفتن خودت از آنها باشد.

              دیدگاه


                #22
                پاسخ : ساخت شیر هوشمند

                آقا ممنون از وقتی که گذاشتید
                برنامه ای هم که شما نوشتین روی میکرو ریختم،تستش کنم
                اینجوری تست کردم: (درسته؟)آ‌

                قبل از اینکه پروژه رو روشن کنم به ADC پنج ولت دادم،روشن کردم دکمه هم گرفتم کالیبره هم شد
                بعدش که پنج ولت رو از روی پین ADC برداشتم باید چراغ روشن میشد دیگه که نشد ا¾!!!

                همون مشکل قبلی رو دارم دقیقا !
                www.keytak.blogfa.com
                ---------------------------------------------------------------
                کنترل وسایل برقی با VB6(جالبه یه نگاه بندازید)
                http://www.eca.ir/forum2/index.php?topic=33488.0

                دیدگاه


                  #23
                  پاسخ : ساخت شیر هوشمند

                  خب ببینید شما در هر بار وصل کردن 5 ولت به دلایل مختلفه احتمالا ADC معلوم نیست عدد تبدیل شده چند شده مثلا یه دفعه شده 200 دفعه بعد میشه 203 دفعه بعد می شه 196 و ...

                  چون شما یه عدد خاص رو بررسی می کنید کمی مشکل هست که عین همون عدد تبدیل بشه و شرایط اون مساوی برقرار بشه تا عملیات صورت بگیره.
                  باید یه بازه رو بررسی کنید مثلا بگید اگه بیشتر از 180 و کمتر از 220 شد. برای مثال عرض کردم.
                  اون وقت احتمال وقوع این شرط چندین برابر می شه و مشکل حل می شه انشاالله.

                  در ضمن چون حذف نویز نکردید احتمال دریافت خطا هست و ممکنه علت همین باشه.

                  چیزی که مهم هست اینکه در محیط شبیه سازی برنامه جواب داده و پایه کار درسته حالا از این به بعد ریزه کاری های دنیای واقعی هست که باید متوجه بشوید و اونها رو هم در نطر بگیرید.
                  همواره یادمان باشد:
                  1-مردان بزرگ اراده می کنند و مردان کوچک آرزو
                  2-افراد بزرگ، همیشه به دنبال ایده های بزرگند و افراد کوچک به دنبال افراد بزرگ
                  3-همیشه سعی کن آنقدر کامل باشی که بزرگترین تنبیه تو برای دیگران گرفتن خودت از آنها باشد.

                  دیدگاه


                    #24
                    پاسخ : ساخت شیر هوشمند

                    خب ببینید شما در هر بار وصل کردن 5 ولت به دلایل مختلفه احتمالا ADC معلوم نیست عدد تبدیل شده چند شده مثلا یه دفعه شده 200 دفعه بعد میشه 203 دفعه بعد می شه 196 و ...

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

                    در ضمن چون حذف نویز نکردید احتمال دریافت خطا هست و ممکنه علت همین باشه.
                    توی برد اصلیم از خازن و سلف واسه تغذیه ی ADC استفاده کردم , راه دیگه ای واسه حذف نویز بلد نیستم,لطفا راهنمایی بفرمایید :biggrin:
                    www.keytak.blogfa.com
                    ---------------------------------------------------------------
                    کنترل وسایل برقی با VB6(جالبه یه نگاه بندازید)
                    http://www.eca.ir/forum2/index.php?topic=33488.0

                    دیدگاه


                      #25
                      پاسخ : ساخت شیر هوشمند

                      ببینید بنده و شما توی نرم افزار شبیه سازی تست کردیم و درست کار می کرد.

                      حالا اگر در عمل اتفاقی دیگه می یوفته.دلایل مختلفی داره.

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

                      به جای متغییر Eeprom از یک متغییر معمولی استفاده کنید و توی تست هر دفعه که پروژه روشن می شه نمونه برداری رو انجام بدید (کلید رو بزنید.)

                      ---------------
                      منظورم از حذف نویز همون تاثیر نابجای نور محیط بود.
                      همواره یادمان باشد:
                      1-مردان بزرگ اراده می کنند و مردان کوچک آرزو
                      2-افراد بزرگ، همیشه به دنبال ایده های بزرگند و افراد کوچک به دنبال افراد بزرگ
                      3-همیشه سعی کن آنقدر کامل باشی که بزرگترین تنبیه تو برای دیگران گرفتن خودت از آنها باشد.

                      دیدگاه


                        #26
                        پاسخ : ساخت شیر هوشمند

                        مرسی جناب موسوی عزیز
                        رفتم ال سی دی گرفتم ADC رو تست کردم جواب داد خدا رو شکر :applause:

                        نشستم واسه فیلتر نور محیط واسش برنامه نوشتم
                        بدک نشد ،البته یکمی فرق داره محیط تاریک با پرنورش
                        کد رو گذاشتم چند تا سوال کوچولو دربارش دارم

                        کد:
                        Main:
                        Mcount = 0
                        Miangin = 0
                        While Mcount < 200
                        
                        Portb.4 = 1
                        After = Getadc(0)
                        Portb.4 = 0
                        Before = Getadc(0)
                        Pure = Before - After
                        Pure = Abs(pure)
                        Miangin = Miangin + Pure
                        Incr Mcount
                        
                        Wend
                        
                        Miangin = Miangin / 200
                        
                        
                        
                        Cls
                        Lcd Miangin
                        
                        Waitms 200
                        
                        Goto Main
                        اول اینکه میام میانگین میگیرم بعدش نتیجه رو بررسی میکنم :eek:
                        200 بار زیاد نیست ؟ چند بار خوبه ؟! این یه سوال

                        دوم اینکه وقتی دیود فرستنده رو روشن کردم بعدش تاخیر بذارم و ADC رو بخونم یا نمیخواد تاخیر بذارم؟! واسه خاموش کردنش چطور تاخیر میخواد ؟! چقدر تاخیر؟ این دو سوال


                        یه سوال دیگه هم دارم که اول جواب اینا رو گرفتم اونا هم میپرسم از حضورتون :nerd: :job:
                        سپاس فراوان
                        www.keytak.blogfa.com
                        ---------------------------------------------------------------
                        کنترل وسایل برقی با VB6(جالبه یه نگاه بندازید)
                        http://www.eca.ir/forum2/index.php?topic=33488.0

                        دیدگاه


                          #27
                          پاسخ : ساخت شیر هوشمند

                          نوشته اصلی توسط keihancpu
                          دوم اینکه وقتی دیود فرستنده رو روشن کردم بعدش تاخیر بذارم و ADC رو بخونم یا نمیخواد تاخیر بذارم؟! واسه خاموش کردنش چطور تاخیر میخواد ؟! چقدر تاخیر؟ این دو سوال
                          ببینید هر نوع دیود LED برای روشن شدنش زمانی طول می کشه! مثلا یه چیزی در حد نانو ثانیه.

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

                          پس:
                          برای احتیاط یه تاخیری در حدود همون 1 میلی ثانیه کافیه!
                          ولی با توجه به تجربه ی من نیازی به ایجاد یک تاخیر نیست، چون توابع قرائت ADC برای پایداری مقدار خوانده شده یه تاخیر 10 میکرو ثانیه دارن و بعد مقدار نهایی رو برگشت میدن.
                          همواره یادمان باشد:
                          1-مردان بزرگ اراده می کنند و مردان کوچک آرزو
                          2-افراد بزرگ، همیشه به دنبال ایده های بزرگند و افراد کوچک به دنبال افراد بزرگ
                          3-همیشه سعی کن آنقدر کامل باشی که بزرگترین تنبیه تو برای دیگران گرفتن خودت از آنها باشد.

                          دیدگاه


                            #28
                            پاسخ : ساخت شیر هوشمند

                            نوشته اصلی توسط keihancpu
                            نشستم واسه فیلتر نور محیط واسش برنامه نوشتم
                            بدک نشد ،البته یکمی فرق داره محیط تاریک با پرنورش
                            کد رو گذاشتم چند تا سوال کوچولو دربارش دارم

                            کد:
                            Main:
                            Mcount = 0
                            Miangin = 0
                            While Mcount < 200
                            
                            Portb.4 = 1
                            After = Getadc(0)
                            Portb.4 = 0
                            Before = Getadc(0)
                            Pure = Before - After
                            Pure = Abs(pure)
                            Miangin = Miangin + Pure
                            Incr Mcount
                            
                            Wend
                            
                            Miangin = Miangin / 200
                            
                            
                            
                            Cls
                            Lcd Miangin
                            
                            Waitms 200
                            
                            Goto Main
                            اول اینکه میام میانگین میگیرم بعدش نتیجه رو بررسی میکنم :eek:
                            200 بار زیاد نیست ؟ چند بار خوبه ؟! این یه سوال
                            در مورد برنامه تون باید یگم که
                            شما از 2 فیلتر همزمان استفاده کردین. که این کیفیت کار رو بیشتر می کنه، در مورد تعداد تکرار نیز باید گفت که به نظر من 10 بار حداقل و 100 حداکثر می تونه باشه.
                            همواره یادمان باشد:
                            1-مردان بزرگ اراده می کنند و مردان کوچک آرزو
                            2-افراد بزرگ، همیشه به دنبال ایده های بزرگند و افراد کوچک به دنبال افراد بزرگ
                            3-همیشه سعی کن آنقدر کامل باشی که بزرگترین تنبیه تو برای دیگران گرفتن خودت از آنها باشد.

                            دیدگاه


                              #29
                              پاسخ : ساخت شیر هوشمند

                              پس:
                              برای احتیاط یه تاخیری در حدود همون 1 میلی ثانیه کافیه!
                              ولی با توجه به تجربه ی من نیازی به ایجاد یک تاخیر نیست، چون توابع قرائت ADC برای پایداری مقدار خوانده شده یه تاخیر 10 میکرو ثانیه دارن و بعد مقدار نهایی رو برگشت میدن.
                              شما خودتون جای من بودید چیکار میکردید ؟ تاخیر میذاشتین یا خیرآ‌؟!آ‌
                              فرکانس میکرو رو همون 8 هزار بذارم ؟!
                              www.keytak.blogfa.com
                              ---------------------------------------------------------------
                              کنترل وسایل برقی با VB6(جالبه یه نگاه بندازید)
                              http://www.eca.ir/forum2/index.php?topic=33488.0

                              دیدگاه


                                #30
                                پاسخ : ساخت شیر هوشمند

                                فرقی نداره مهندس.

                                ولی در صورت استفاده از تاخیر زمان نهایی که میشه (تعداد دفعات تکرار برای میانگین گیری * زمان تاخیر) رو در نظر بگیرید.

                                فرکانس میکرو رو عوض می کنید. باید فیوزبیت ها رو هم روی 8 تنظیم کنید. حواستون باشه! این رو گفتم چون توی پروژه های قبلی رعایت نکرده بودید.
                                همواره یادمان باشد:
                                1-مردان بزرگ اراده می کنند و مردان کوچک آرزو
                                2-افراد بزرگ، همیشه به دنبال ایده های بزرگند و افراد کوچک به دنبال افراد بزرگ
                                3-همیشه سعی کن آنقدر کامل باشی که بزرگترین تنبیه تو برای دیگران گرفتن خودت از آنها باشد.

                                دیدگاه

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