اطلاعیه

Collapse
No announcement yet.

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

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

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

    سلام دوستان عیدتون مبارک
    دوستان بنده یه برنامه نوشتم با بسکام که استپ موتورمون نسبت به دما حرکت کنه . مثلا اگه دما شد 20درجه استپ موتور بره رو زاویه 40درجه (به اعمال پالس) اما اتوماتیک انجام نمیشه بلکه با کلید حرکت میکنه میخوام با تغییرات دمایی حرکت کنه. :angry:
    کسی میتونه راهنماییم کنه یا یه نمونه کد بزاره برام ؟
    مشخصات من در لینک زیر
    http://www.eca.ir/forum2/index.php?topic=1721.msg698645#msg698645

    www.********

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

    سلام :bye
    شما ابتدا باید زاویه پله موتور را برای هرپالس بدونید که زاویه پله می تونه بین محدوده 0.72 تا 90 باشه که ما زاویه پله رو بر فرض یک در نظر میگیریم
    خوب زاویه پله رو می دونیم حال موتور به ازای هر پالسی که توسط میکرو دریافت می کند باید به اندازه یک درجه چرخش کند لزوما پالس ارسالی باید حداقل 5 میلی ثانیه نگه داشته شود تا موتور بتواند آن را تشخیص دهد شما که می خوایین 40 درجه باشه مثلا اگر زاویه پله 1 باشد باید 40 تا پالس با تاخیر حداقل 5 میلی ثانیه بدی البته این زاویه پله یک رو برای درک مطلب گفتم بنابراین شما باید ابتدا طبق زاویه پله موتور خودت تعداد پالس برای 40 درجه رو بدست بیاری بنابراین طوری برنامه نویسی کن و از دستورات شرطی استفاده کن که اگر فرضا دمای من 20 شد 40 تا پالس رو به پایه x (موتور) بفرست و این حلقه رو 40 بار اجرا میکنی سپس از دستور شرطی خارج میشی که اگر بیشتر اجرا بشه پالس های اضافی میفرسته که زاویت میره بالا
    اگه این کار رو کنی دیگه همه چی اتوماتیک هست دیگه نیازی به تنظیم توسط فرد رو نداره
    امیدوارم کمک کرده باشم :agree:

    برد جوجه کشی:
    مطالعه پست 1 (حتما مطالعه کنید)


    مطالعه پست 2 (برای مطلع شدن از تغییرات برنامه مطالعه کنید)

    دانلود

    توجه:
    این برد نیمه صنعتی و خانگی هست...
    برای صنعتی شدن حتما برد مخصوص خودتون رو بزنید...

    آی دی کانال تلگرامی مربوط به برد جوجه کشی : electr0o0nic@

    دیدگاه


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

      ممنون از پاسخت دوست عزیز :bye
      راستش من با راه اندازیش مشکلی ندارم با حلقه for پالس میدم تو اون رنج تقریبی که میخوام میچرخه
      مشکل من اینه که تو قسمت دما که میخواد اتوماتیک باشه هستش یعنی مثلا تو برنامه تعریف کرم که اگه
      temp>5 and temp<10 بود مثلا بره تو زاویه 40 درجه که تو این رنج اگه باشه موتورم دائم میچرخه واسه خودش
      نکته دومم اینه که اگه رفت تو دمای بین 10 تا 15 مثلا موتور بیاد رو 20 درجه ایست کنه پیشنهادت چیه با مد نظر این که رو 40 درجه هست.

      ممنون میشم کمکم کنی اخه خیلی ضرروریه
      مشخصات من در لینک زیر
      http://www.eca.ir/forum2/index.php?topic=1721.msg698645#msg698645

      www.********

      دیدگاه


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

        نوشته اصلی توسط majid68
        temp>5 and temp<10 بود مثلا بره تو زاویه 40 درجه که تو این رنج اگه باشه موتورم دائم میچرخه واسه خودش
        نکته دومم اینه که اگه رفت تو دمای بین 10 تا 15 مثلا موتور بیاد رو 20 درجه ایست کنه پیشنهادت چیه با مد نظر این که رو 40 درجه هست.
        ممنون میشم کمکم کنی اخه خیلی ضرروریه
        سلام
        تو برنامه دو متغیر از نوع بایت تعریف کن
        کد:
        dim a as byte, b as byte,i as byte 
        do
        if temp>5 and temp<10 then
        if a=0 then
        for i=0 to 40
        set motor
        waitms 5
        reset motor
        waitms 5
        if i=40 then a=1
        next
        end if
        else
        a=0
        end if
        if temp>10 and temp<15 then
        if b=0 then
        for i=0 to 20
        set motor
        waitms 5
        reset motor
        waitms 5
        if i=20 then a=1
        next
        end if
        else
        b=0
        end if
        loop
        این برنامه همونی که تو می خوای با کمی تحلیل می تونی جواب سوالت رو بدونی متغیر a , b از چرخش اضافه خودداری میکنه
        برد جوجه کشی:
        مطالعه پست 1 (حتما مطالعه کنید)


        مطالعه پست 2 (برای مطلع شدن از تغییرات برنامه مطالعه کنید)

        دانلود

        توجه:
        این برد نیمه صنعتی و خانگی هست...
        برای صنعتی شدن حتما برد مخصوص خودتون رو بزنید...

        آی دی کانال تلگرامی مربوط به برد جوجه کشی : electr0o0nic@

        دیدگاه


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

          آقا محمد خیلی گلی :bye
          دستت دردنکنه ایشالا عروسیت بیام سیب بشورم :smile:
          لایک داری :nice: :nice: :nice: :wow:

          مشخصات من در لینک زیر
          http://www.eca.ir/forum2/index.php?topic=1721.msg698645#msg698645

          www.********

          دیدگاه


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

            نوشته اصلی توسط majid68
            آقا محمد خیلی گلی :bye
            دستت دردنکنه ایشالا عروسیت بیام سیب بشورم :smile:
            لایک داری :nice: :nice: :nice: :wow:
            سلام خواهش میکنم اگه مشکلی باشه در خدمتم :rolleyes:
            خوشحالم که مشکلت حل شد :mrgreen:
            برد جوجه کشی:
            مطالعه پست 1 (حتما مطالعه کنید)


            مطالعه پست 2 (برای مطلع شدن از تغییرات برنامه مطالعه کنید)

            دانلود

            توجه:
            این برد نیمه صنعتی و خانگی هست...
            برای صنعتی شدن حتما برد مخصوص خودتون رو بزنید...

            آی دی کانال تلگرامی مربوط به برد جوجه کشی : electr0o0nic@

            دیدگاه


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

              آقا محمد بازم سلام :bye
              یه مشکلی که هست موتور باز مدام میچرخه و رو 40درجه ایست نداره باید چیکار کنم
              :cry2:
              مشخصات من در لینک زیر
              http://www.eca.ir/forum2/index.php?topic=1721.msg698645#msg698645

              www.********

              دیدگاه


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

                نوشته اصلی توسط majid68
                آقا محمد بازم سلام :bye
                یه مشکلی که هست موتور باز مدام میچرخه و رو 40درجه ایست نداره باید چیکار کنم
                :cry2:
                سلام
                اگه میشه برنامتو بذار این طوری سریعتر می تونم کمکت کنم :redface:
                برد جوجه کشی:
                مطالعه پست 1 (حتما مطالعه کنید)


                مطالعه پست 2 (برای مطلع شدن از تغییرات برنامه مطالعه کنید)

                دانلود

                توجه:
                این برد نیمه صنعتی و خانگی هست...
                برای صنعتی شدن حتما برد مخصوص خودتون رو بزنید...

                آی دی کانال تلگرامی مربوط به برد جوجه کشی : electr0o0nic@

                دیدگاه


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

                  ممنون که کمکم میکنی آقا محمد
                  کد:
                  [left]$regfile = "m16def.dat"
                  $crystal = 8000000
                  
                  '..........................................................................
                  Config Lcdpin = Pin , Db4 = Portb.4 , Db5 = Portb.5 , Db6 = Portb.6 , Db7 = Portb.7 , E = Portb.2 , Rs = Portb.0
                  Config Lcd = 16 * 2
                  Cursor Off
                  Cls
                  Config Portd = Output
                  Motor Alias Portd.1
                  Config Adc = Single , Prescaler = Auto , Reference = Avcc
                   Stop Adc
                   Start Adc
                   Gosub En1
                  
                  
                  
                  Dim A As Byte
                  Dim B As Byte
                  Dim W As Integer
                  Dim X As Integer
                  Dim X1 As Integer
                  Dim I As Byte
                  
                  
                  Dim Gas As Byte
                  X = 18
                  
                  Deflcdchar 1 , 24 , 24 , 32 , 32 , 32 , 32 , 32 , 32
                  '**************************************************************|
                  Config Portc.0 = Input : Portc.0 = 1 : Up1 Alias Pinc.0   '|
                  Config Portc.1 = Input : Portc.1 = 1 : Down1 Alias Pinc.1  '|
                  Config Portc.2 = Input : Portc.2 = 1 : On1 Alias Pinc.2   '|
                  Config Portc.3 = Input : Portc.3 = 1 : Off1 Alias Pinc.3  '|
                  Config Portc.4 = Input : Portc.4 = 1 : Co Alias Pinc.4   '|
                  '**************************************************************|
                  'Gosub En1
                  Home
                  Do
                  
                  Gosub Gass
                  Gosub Temp1
                  Gosub Chek
                  Locate 1 , 1
                  Lcd "Di=" ; X ; Chr(1) ; "C"
                  Locate 2 , 1
                  Lcd "mod="
                  Loop
                  
                  
                   Temp1:
                   W = Getadc(0)
                    W = W / 2
                    Locate 1 , 9
                    Lcd " Df=" ; W ; Chr(1) ; "" ; "C "
                    X1 = W - X
                        A
                  Return
                  Gass:
                  Gas = Getadc(1)
                    Gas = Gas / 2
                    Waitms 250
                  Locate 2 , 11
                    Lcd Gas ; "PPM     "
                    Return
                  Chek:
                  If On1 = 0 Then
                  Locate 2 , 5
                  Lcd ""
                  
                  Lcd "ON "
                  Flag_0 = 1
                  
                  Incr Count
                  Count1 = 0
                  If Count = 2 Then
                  Do
                  If Up1 = 0 And Down1 = 0 Then Exit Do
                  Loop
                  Goto Chek
                  Count = 0
                  End If
                  
                   Waitms 50
                  
                  
                  
                  End If
                  '------
                  If Off1 = 0 Then
                  Flag_1 = 1
                  
                  Incr Count1
                  Count = 0
                  If Count1 = 2 Then
                  
                  Count1 = 0
                  End If
                  Locate 2 , 5
                  Lcd ""
                  Lcd "OFF "
                  Waitms 50
                  
                  End If
                  '------
                  If Up1 = 0 Then
                  
                  Gosub Up
                  J = 1
                  End If
                  If Down1 = 0 Then
                  Gosub Down
                  
                  End If
                  
                  If Co = 0 Then
                  Gosub Hh
                  End If
                  Return
                  Up:
                  Incr X
                  Locate 1 , 1
                  Lcd X
                  
                  Return
                  
                  '*******************
                  Down:
                  Decr X
                  Locate 1 , 1
                  Lcd X
                  Return
                  Hh:
                  X = 18
                  Do
                    X1 = X - W
                  Locate 2 , 6
                  Lcd X1
                  Gosub Temp
                  Gosub Half
                  Gosub En
                  Gosub Dire
                  If Up1 = 0 Then
                  
                  Incr X
                  Locate 1 , 1
                  Lcd X
                  End If
                  If Down1 = 0 Then
                  Decr X
                  Locate 1 , 1
                  Lcd X
                  
                  J1 = 1
                  End If
                  Loop
                  End
                  Temp:
                  Do
                   W = Getadc(0)
                    W = W / 2
                    Locate 1 , 9
                    Lcd " Df=" ; W ; Chr(1) ; "" ; "C "
                  
                    Gosub Half
                  Gosub En
                  Gosub Dire
                  
                     X1 = W - X
                  Locate 2 , 7
                  Lcd X1
                  
                    If X1 > 5 And X1 < 10 Then
                  If A = 0 Then
                  For I = 0 To 40
                  set motor
                  waitms 5
                  reset motor
                  Waitms 5
                  End If
                  
                  If I = 40 Then A = 1
                  Next
                  Else
                  
                  a=0
                  End If
                  
                  '*****************************
                  If X1 > 10 And X1 < 15 Then
                  if b=0 then
                  for i=0 to 20
                  set motor
                  waitms 5
                  reset motor
                  Waitms 5
                  End If
                  if i=20 then a=1
                  next
                  else
                  b=0
                  
                  End If
                  
                  
                  
                     Loop
                  
                  
                  
                  
                  
                  
                  
                  '********************
                  Half:
                  Set Portd.2
                  Return
                  '******************
                  En:
                  Set Portd.3
                  Return
                  '******************
                  Dire:
                  Set Portd.4
                  Return
                  '******************
                  Dire1:
                  Reset Portd.4
                  Return
                  '******************
                  En1:
                  Reset Portd.3
                  Return
                  '******************[/left]
                  متغیر x توسط 2تا کلید مقدارش اضافه و کم میشه
                  مشخصات من در لینک زیر
                  http://www.eca.ir/forum2/index.php?topic=1721.msg698645#msg698645

                  www.********

                  دیدگاه


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

                    برچسبهایی که با اسم Dir1 . Dir. En1.En .Half تعریف کردم مربوط به درایور استپ موتور میباشد
                    مشخصات من در لینک زیر
                    http://www.eca.ir/forum2/index.php?topic=1721.msg698645#msg698645

                    www.********

                    دیدگاه


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

                      سلام
                      end if ها رو این طوری بذار ببین مشکل حل میشه
                      If X1 > 5 And X1 < 10 Then
                      If A = 0 Then
                      For I = 0 To 40
                      set motor
                      waitms 5
                      reset motor
                      Waitms 5
                      If I = 40 Then A = 1
                      Next
                      [glow=red,2,300]End If[/glow]
                      Else
                      a=0
                      End If

                      '*****************************
                      If X1 > 10 And X1 < 15 Then
                      if b=0 then
                      for i=0 to 20
                      set motor
                      waitms 5
                      reset motor
                      Waitms 5
                      if i=20 then a=1
                      next
                      [glow=red,2,300]End If[/glow]
                      else
                      b=0
                      End If
                      برد جوجه کشی:
                      مطالعه پست 1 (حتما مطالعه کنید)


                      مطالعه پست 2 (برای مطلع شدن از تغییرات برنامه مطالعه کنید)

                      دانلود

                      توجه:
                      این برد نیمه صنعتی و خانگی هست...
                      برای صنعتی شدن حتما برد مخصوص خودتون رو بزنید...

                      آی دی کانال تلگرامی مربوط به برد جوجه کشی : electr0o0nic@

                      دیدگاه


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

                        :wow: درست شد :agree:
                        آقا محمد دستت دردنکنه . واقعا ممنون
                        مشخصات من در لینک زیر
                        http://www.eca.ir/forum2/index.php?topic=1721.msg698645#msg698645

                        www.********

                        دیدگاه

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