اطلاعیه

Collapse
No announcement yet.

کمک در مورد برنامه نویسی

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

    کمک در مورد برنامه نویسی

    به نام خدا
    با عرض سلام
    من یک مدار با مشخصات زیر ساخته ام
    دو تا شستی دارد یک شستی را که وقتی فشار دهیم یک رله را (که به شیر برقی وصل است) وصل میکند و با رسیدن سطح اب به الکترود ها فرمان قطع میدهد و وقتی شیلنگ تخلیه را انداختیم و سطح اب پایین تر از الکترود ها رفت رله وصل نشود بلکه مستلزم فشار شستی باشد
    شستی دوم هم برای راه اندازی موتور چپ گرد راستگرد است و وقتی شستی دوم را فشار دهیم ابتدا موتور به صورت 25 ثانیه راستگرد
    10 ثانیه استراحت 25 ثانیه چپگرد 10 ثانیه استراحت که این چرخه 9 بار انجام شود
    که برنامه ان به صورت زیر است:

    $regfile = "m8def.dat"

    $crystal = 1000000
    Dim T As Word
    Config Pind.7 = Output , Pind.6 = Output , Pinb.1 = Input , Pinb.0 = Input
    Config Pinc.0 = Output , Pind.3 = Input
    Reset Portd.7 : Reset Portd.6 : Reset Portc.0
    Set Portb.1 : Set Portb.0 : Set Portd.3
    Do
    A1:
    If Pinb.1 = 1 Then Goto A3
    Waitms 15
    If Pinb.1 = 1 Then Goto A1
    A2:
    If Pinb.1 = 0 Then Goto A2

    For T = 0 To 9
    Set Portd.6
    Wait 25
    Reset Portd.6
    Wait 10
    Set Portd.7
    Wait 25
    Reset Portd.7
    Wait 10
    Next

    A3:
    If Pinb.0 = 1 Then Goto A1
    Waitms 15
    If Pinb.0 = 1 Then Goto A3
    A4:
    If Pinb.0 = 0 Then Goto A4
    Set Portc.0
    A5:
    If Pind.3 = 0 Then Goto A5
    Reset Portc.0

    Loop
    ودر نقشه زیر هم نقشه مدار را میبینید

    حال میخواهم برنامه را کمی تغییر دهم به این صورت که من می خواهم اولا فقط زمانی شستی دوم (رله مربوط به موتور) عمل کند که الکترود ها توسط اب به یکدیگر وصل باشند یعنی موتور بدون اب هیچ وقت روشن نشود دوم این که شستی اول (شیر برقی) را وقتی برای بار دوم فشار دهیم ( فقط زمانی که دو الکترود توسط اب به هم اتنصال دارند) یک رله را به مدت معین مثلا (5 دقیقه) راه بیاندازد این رله را برای پمپ تخلیه می خواهم
    اگر امکان دارد برنامه جدید ان را برایم بنویسید

    #2
    پاسخ : کمک در مورد برنامه نویسی

    راستش من با بسکام کار نکردم و CodeVision کار می کنم ولی من اصولا توی این جور مواقع یک flag در نظر می گیرم که مثلا وقتی سطح آب به الکترود ها رسید set شود و اگر کمتر شد reset. و در برنامه ی مربوط به کلید موتور اول این flag رو چک می کنم اگر یک بود کار مورد نظر را انجام دهد !

    به هر حال باید منتظر یک بسکام کار باشی !

    دیدگاه


      #3
      پاسخ : کمک در مورد برنامه نویسی

      خوب اگر بخواهیم شستی اول را برای بار دوم فشار دهیم ویک رله دیگر را برای مدت زمانی روشن کنیم چه کار می کنیم

      دیدگاه


        #4
        پاسخ : کمک در مورد برنامه نویسی

        والا گفتم که .. من برای این مواقع یک بایت در نظر می گیرم به عنوان flag یا شمارنده .. مثلا هر بار کلید اول فشرده شد این بایت از صفر به یک تبدیل شود .. حالا اگر کلید را دوباره بزنی با چک کردن این flag و گذاشتن یک if می تونی بهش بگی اگر بار دوم هست که این کلید فشرده شده (بایت flag یک هست) فلان کار را بکن و اگر بار اول هست (بایت flag صفر است) لان کار را !
        اینا همش به نرم افزار مربوطه .. و خواهش می کنم به basic کار جواب ایشان را بده !
        شرمنده بیشتر از این کاری از دستم بر نمی یاد ..

        دیدگاه


          #5
          پاسخ : کمک در مورد برنامه نویسی

          نوشته اصلی توسط telmak
          خوب اگر بخواهیم شستی اول را برای بار دوم فشار دهیم ویک رله دیگر را برای مدت زمانی روشن کنیم چه کار می کنیم
          سلام دوست عزیز :smile:
          من امروز اومدم برنامشو بنویسم ولی یکم گیج زدم که شما چی می خای
          اگر لطف کنی بگی چند تا کلید داری چند تا خروجی داری و شفافتر بگی چی می خای شاید بتونم کمکت کنم در ضمن اون برنامه ای که نوشتی چرا برای ورودی ها از دستور debounce استفاده نکردی . درکل اگر ممکنه شفاف تر و بیشتر توضیح بده :smile:
          موفق باشید
          انجمن LABVIEW
          http://www.eca.ir/forum2/index.php?board=279.0
          اموزش ميكروكنترلرهاي AVR به زبان ساده
          http://www.eca.ir/forum2/index.php/topic,7070.0.html

          دیدگاه


            #6
            پاسخ : کمک در مورد برنامه نویسی

            به نام خدا
            از این که می خواهید به من کمک کنید خیلی ممنون

            منظورم به طور واضح تر این طور است:
            ما یک مخزن لباس شویی داریم من میخواهم ابتدا توسط فشار شستی یک رله را که به شیر برقی وصل است روشن کنم زمانی که اب به الکترود ها رسید رله فرمان قطع بگیرد

            سپس توسط فشار شستی دیگر یک موتور به این صورت راه اندازی شود 25 ثانیه راست گرد 10 ثانیه خاموش
            25 ثانیه چپ گرد و دوباره 10 ثانیه خاموش که این چرخه 9 بار انجام شود

            دلیل اینکه گفتم شستی مربوط به راه اندازی موتور فقط زمانی عمل کند که الکترود ها توسط اب به یکدیگر وصل باشند این بود که موتور هیچ وقت بدون اب روشن نشود

            تا اینجا که مشکلی نیست خوب

            من به دلیل محدویت (که قصه اش دراز است ) نمیخواهم بیشتر از دو عدد شستی استفاده کنم (یک شستی مربوط به شیر برقی ویک شستی هم مربوط به موتور)

            حالا می خواهم یک پمپ تخلیه هم برای این لباس شویی نصب کنم من می خواهم این پمپ با فشار دادن شستی مربوط به شیر برقی راه بیافتد و برای مدت زمانی (3 دقیقه) روشن بماند

            پس بنابراین شستی مربوط به شیر برقی زمانی که مخزن خالی باشد اگر فشار دهیم شیر برقی روشن می شود و زمانی که اب به سطح الکترود ها رسید قطع میشود
            اگر مخزن پر بود (الکترودها در اب بودند ) شستی مربوط به شیر برقی را فشار دهیم به جای شیر برقی پمپ را راه میاندازد

            با تشکر

            دیدگاه


              #7
              پاسخ : کمک در مورد برنامه نویسی

              لطفا کمک کنید

              دیدگاه


                #8
                پاسخ : کمک در مورد برنامه نویسی

                خیلی عجله ای هست کارتون آقا telmak ?
                آخه امتحانا داره شروع میشه .. و سر بچه ها یکم شلوغه !
                صبور باش .. بچه ها مرام دارن .. جواب می دن !

                دیدگاه


                  #9
                  پاسخ : کمک در مورد برنامه نویسی

                  سلام
                  دوست عزیز چند تا نکته:
                  1.عنوان تایپیک رو درست مطرح کن تا زود تر به نتیجه برسی منم اتفاقی این تایپیک رو باز کردم
                  2.برنامه رو برات نوشتم با همون چیزایی که میخواستی فقط portc.1 وصل پمپ تخلیه می شه
                  http://www.4shared.com/file/17329632/18059c7c/motor_lebas_shoei.html

                  دیدگاه


                    #10
                    پاسخ : کمک در مورد برنامه نویسی

                    اینم برنامه ای که می خواهید
                    توضیحات مربوط به برنامه:
                    برنامه بالا دارای چهار خروجی می باشد :
                    پایه A.0 مربوط به شیر برقی
                    پایه A.1 مربوط به راستگرد موتور
                    پایه A.2 مربوط به چپگرد موترو
                    پایه A.3 مربوط به همان رله ای که باید 5 دقیقه روشن باشد و مربوط به تخلیه می باشد.
                    همچنین برنامه دارای سه ورودی به ترتیب زیر می باشد:
                    پایه B.0 مربوط به استارت اولیه که با زدن ان شیر برقی راه اندازی می شود
                    پایه B.1 مربوط به راه اندازی موتور می باشد
                    پایه B.2 مربوط به الکترود می باشد.

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

                    Config Porta = Output
                    Config Pinb.0 = Input
                    Config Pinb.1 = Input
                    Config Pinb.2 = Input
                    Dim A As Byte
                    Dim B As Byte
                    A = 0
                    B = 0
                    Do
                    Debounce Pinb.0 , 1 , Shir , Sub
                    Debounce Pinb.2 , 1 , Of , Sub
                    Debounce Pinb.1 , 1 , Motor , Sub
                    Loop
                    End

                    Shir:
                    If A = 0 And Pinb.2 = 0 Then
                    A = 1
                    Set Porta.0
                    Elseif A = 1 And Pinb.2 = 1 Then
                    Set Porta.3
                    Waitms 300
                    Reset Porta.3
                    A = 0
                    Else
                    End If
                    Return

                    Of:
                    Reset Porta.0
                    Reset Porta.1
                    Return

                    Motor:
                    If Pinb.2 = 1 Then
                    Goto Motor2
                    Else
                    End If
                    Return

                    Motor2:
                    Do

                    Set Porta.2
                    Waitms 100

                    Reset Porta.2
                    Waitms 50

                    Set Porta.1
                    Waitms 100

                    Reset Porta.1
                    Waitms 50
                    Incr B
                    If B = 9 Then Return


                    Loop




                    انجمن LABVIEW
                    http://www.eca.ir/forum2/index.php?board=279.0
                    اموزش ميكروكنترلرهاي AVR به زبان ساده
                    http://www.eca.ir/forum2/index.php/topic,7070.0.html

                    دیدگاه


                      #11
                      پاسخ : کمک در مورد برنامه نویسی

                      نوشته اصلی توسط nex2004
                      اینم برنامه ای که می خواهید
                      توضیحات مربوط به برنامه:
                      برنامه بالا دارای چهار خروجی می باشد :
                      پایه A.0 مربوط به شیر برقی
                      پایه A.1 مربوط به راستگرد موتور
                      پایه A.2 مربوط به چپگرد موترو
                      پایه A.3 مربوط به همان رله ای که باید 5 دقیقه روشن باشد و مربوط به تخلیه می باشد.
                      همچنین برنامه دارای سه ورودی به ترتیب زیر می باشد:
                      پایه B.0 مربوط به استارت اولیه که با زدن ان شیر برقی راه اندازی می شود
                      پایه B.1 مربوط به راه اندازی موتور می باشد
                      پایه B.2 مربوط به الکترود می باشد.


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

                      $regfile = "m8def.dat"

                      $crystal = 1000000

                      دیدگاه


                        #12
                        پاسخ : کمک در مورد برنامه نویسی

                        سلام
                        دوست عزیز چند تا نکته:
                        1.عنوان تایپیک رو درست مطرح کن تا زود تر به نتیجه برسی منم اتفاقی این تایپیک رو باز کردم
                        2.برنامه رو برات نوشتم با همون چیزایی که میخواستی فقط portc.1 وصل پمپ تخلیه می شه
                        http://www.4shared.com/file/17329632/18059c7c/motor_lebas_shoei.html
                        [/quote]

                        با تشکر از زحمات شما

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

                        دیدگاه


                          #13
                          پاسخ : کمک در مورد برنامه نویسی

                          نوشته اصلی توسط کویر الکترونیک
                          سلام
                          دوست عزیز چند تا نکته:
                          1.عنوان تایپیک رو درست مطرح کن تا زود تر به نتیجه برسی منم اتفاقی این تایپیک رو باز کردم
                          2.برنامه رو برات نوشتم با همون چیزایی که میخواستی فقط portc.1 وصل پمپ تخلیه می شه
                          http://www.4shared.com/file/17329632/18059c7c/motor_lebas_shoei.html
                          با سلام
                          به نظر شما مشکل شستی شیر برقی از کجاست؟
                          از پروتیوس . برنامه یا نقشه مدار؟

                          دیدگاه


                            #14
                            پاسخ : کمک در مورد برنامه نویسی

                            سلام
                            تا شنبه صبر کن با پروتئوس برات می فرستم

                            دیدگاه


                              #15
                              پاسخ : کمک در مورد برنامه نویسی

                              نوشته اصلی توسط telmak


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

                              $regfile = "m8def.dat"

                              $crystal = 1000000
                              سلام :smile:
                              اره اینایی که نوشتی رو هم بنویس .
                              در مورد خطا روی خود خطا کلیک کن ببین مربوط به کدوم خط هستش از داخل نرم افزار هم می تونید میکرو و مقدار فرکانس رو هم تنظیم کنی .راستش من خودم برنامه رو حتی با پروتوس هم امتحان کردم درست کار می کنه. :smile:
                              انجمن LABVIEW
                              http://www.eca.ir/forum2/index.php?board=279.0
                              اموزش ميكروكنترلرهاي AVR به زبان ساده
                              http://www.eca.ir/forum2/index.php/topic,7070.0.html

                              دیدگاه

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