اطلاعیه

Collapse
No announcement yet.

نات کردن یک ولتاژ برای درایور موتور

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

    نات کردن یک ولتاژ برای درایور موتور

    سلام
    من میخوام 2 تا موتور رو با یک میکرو ( سری avr ) کنترل کنم ! فقط میخوام بگم موتور اول بچرخه , بعد واسته و موتور دوم بچرخه , بعد واسته و ان میلی ثانیه بعد , مثلا , موتور دوم معکوس بزنه بعد موتور سوم معکوس بزنه !
    یعنی فق میخوام موتور رو روشن و خاموش کنم در دو جهت , چون زیاد جریان نمیکشه میخوام از l293d استفاده کنم ! اما نمیخوام 4 تا از پین های میکروم استفاده شه ( 2 تا پیم برای موتور اول و 2 تای دیگه برای موتور دوم ) , بعد یکم فکر کردم , گفتم بیام از 4 تا این پوت ها این درایور , 2 تا شون ( یکی از هر موتور ) به میکرو وصل کنم بعد یک ناتی چیزی بزارم و خروجیشو بدم به اون اینپوت دیگه ( یعنی سر دیگه ی موتور ) !! در کل منظورم اینه که , من 2 تا خروجی میکرو دارم ! میخوام با این کار , وقتی اولین خروجی میکرو رو 1 کردم , موتور راست بچرخه و وقتی 0 کردم موتور چپ بچرخه ! بعد این طوری 2 تا پین صرفه جویی کردم ( برای جای دیگه استفاده کنم ! آیا میشه همچین کاری؟
    از چ آی سی ( نات یا هر چی دیگه ک این کارو انجام بده ) و با چه شماره ایش استفاده کنم ؟
    آی سی هست که فقط 2 تا ( مثلا نات ) داشته باشه ؟ ( چون فقط 2 تا نات یا هر گیتی میخوام که خروجی میکرو رو معکوس کننه بده به پایه اون وریش !
    راستی پایه های درایور موتور با 0 و 1 منظقی کار میکنه یعنی همون زمین و 5 ولت ! جریان زیادی هم فکر نکنم بکشه !


    فکر کنم یکم مبهم توضیح دادم :biggrin:

    ممنون
    « با هر دستی بدی , با همان دست پس خواهی گرفت »
    این جمله رو فراموش نکن

    #2
    پاسخ : نات کردن یک ولتاژ برای درایور موتور

    از برنامه pwn استفاده کن و داخلش به نام wait بزاری و جلوش میکرو , میلی , ثانیه بزاری
    $regfile = "m16def.dat"
    $crystal = 1000000
    '-------------------------------lcd---------------------------------------------
    'rs=pinb.6,e=pinb.0,db4=pinb.2,db5=pinb.3,db6 =pinb.4,db7=pinb.5
    Config Lcd = 16 * 2
    Config Lcdpin = Pin , Rs = Pinb.0 , E = Pinb.1 , Db4 = Pinb.2 , Db5 = Pinb.3 , Db6 = Pinb.4 , Db7 = Pinb.5

    '-------------------------------key board---------------------------------------
    Config Kbd = Portc
    'Use the following code to disable JTAG
    Mcusr = &H80
    Mcusr = &H80
    '--------------------------------pwm--------------------------------------------
    Config Timer1 = Pwm , Pwm = 10 , Compare A Pwm = Clear Up , Compare B Pwm = Clear Down , Prescale = 1
    Start Timer1
    '--------------------------------dim-------------------------------------------
    'a,b for keyboard, c for chek , d for pwm, tanzim for setdama
    Dim A As Word , B As Word , C As Word , D As Word , Tanzim As Byte , E As Byte
    Dim Lop As Byte
    Dim Dama As Byte , Lm35 As Word , Motor As Word
    '--------------------------------adc-------------------------------------------
    Config Adc = Single , Prescaler = Auto , Reference = Avcc
    Start Adc
    '--------------------------------main------------------------------------------
    Config Pind.4 = Output
    Config Pind.5 = Output
    '------------------------------------------------------------------------------
    A = 0
    B = 0
    Cursor Off
    Cls
    Locate 1 , 5
    Lcd "Hello"
    Wait 2
    Cls

    Main:
    Locate 1 , 1
    Lcd "Intern number "
    Locate 2 , 1
    Lcd " "
    Compare1a = 1
    Compare1b = 1

    Rool:


    A = Getkbd()
    If A = 16 Then Goto Rool

    A = A + 1
    Select Case A :

    Case 1 To 3:

    Case 4:
    Cls
    Lcd "f1"
    Goto Rool

    Case 5 To 7 :
    A = A - 1


    Case 8:
    Cls
    Lcd "f2"
    Goto Rool


    Case 9 To 11:
    A = A - 2


    Case 12:
    Cls
    Lcd "f3"
    Goto Rool


    Case 13:
    Cls
    Lcd "start"
    Wait 1
    Goto Lm35

    Case 14:
    A = 0

    Case 15:
    B = 0
    A = 0
    Cls
    Goto Main

    Case 16:
    Cls
    Lcd "f4"
    Goto Rool


    End Select


    Tanzim3:
    B = B * 10
    A = A + B
    B = A

    Cls
    Locate 1 , 1
    Lcd B ; " "
    Locate 2 , 1
    Lcd "push start set"



    Lop:
    Lop = Getkbd()
    If Lop <> 16 Then Goto Lop
    Goto Rool

    '-------------------------------------------------------------------------------

    Lm35:

    Lm35 = Getadc(0)
    Waitms 10
    Lm35 = Lm35 / 2

    A = Getkbd()
    A = A + 1
    If A = 15 Then Goto Stops

    Locate 1 , 1
    Lcd "TEMPERATURE= " ; Lm35 ; "c "

    If Lm35 =< B Then
    Compare1a = 1
    Compare1b = 1
    Motor = 0
    Locate 2 , 1
    Lcd "Set=" ; B ; " pwm=" ; Motor ; " "
    Goto Lm35
    End If


    If Lm35 > B Then
    D = Lm35 - B
    Gosub Motor1
    End If

    Goto Lm35



    Motor1:

    Motor = D * 100
    Motor = Motor + 50

    If Motor > 1022 Then
    Motor = 1023
    Locate 2 , 1
    Lcd "Set=" ; B ; " pwm=fast "
    End If

    If Motor =< 1022 Then
    Locate 2 , 1
    Lcd "Set=" ; B ; " pwm=" ; Motor ; " "
    End If

    Compare1a = Motor
    Compare1b = Motor

    Return




    Stops:
    A = 0
    B = 0
    Goto Main

    باید براش پرش بزاری

    دیدگاه


      #3
      پاسخ : نات کردن یک ولتاژ برای درایور موتور

      درود ،میخواید 1ای که میکرو میده رو نات کنید؟اگه خروجی میکرو رو به مثلا درایور uln2003 بدید خود درایور در خروجی صفر بهتون میده
      در روزگاري که لبخند ادم ها بخاطر شکست توست برخيز تا بگيرند.........

      دیدگاه

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