ورود به حساب ثبت نام جدید فراموشی کلمه عبور
برای ورود به حساب کاربری خود، نام کاربری و کلمه عبورتان را در زیر وارد کرده و روی «ورود به سایت» کلیک کنید.





اگر فرم ورود برای شما نمایش داده نمیشود، اینجا را کلیک کنید.









اگر فرم ثبت نام برای شما نمایش داده نمی‌شود، اینجا را کلیک کنید.









اگر فرم بازیابی کلمه عبور برای شما نمایش داده نمی‌شود، اینجا را کلیک کنید.






جهت تبلیغ در وب سایت ECA کلیک کنید.

کاربران برچسب زده شده

نمایش نتایج: از 1 به 6 از 6
  1. #1
    2013/12/14
    9
    0

    پروژه کنترل موقعيت و فيدبک سرعت 4 عدد موتور دي سي 10 rpm

    سلام

    من ميخوام 4 عدد موتور دي سي با 4 عدد پره اپتوکانتر رو با يک ميکرو Atmega128 کنترل موقعيت و کنترل سرعت کنم.
    واسه عمليات شمارش پالس هام اومدم از 4 عدد وقفه استفاده کردم . و واسه فيدبک سرعت گرفتن ميخوام فاصله زمانيه بين دو پالس high رو اندازه بگيرم . واسه اين کار از تايمر 0 استفاده کردم و 4 عدد متغير t1,t2,t3,t4 معرفي کردم . تايمر 0 رو روي 10 ميلي ثانيه تنظيم کردم. فرکانس 16mhz
    از تايمر 1و 3 هم بعنوان pwm استفاده شده (10 بيتي).

    مشکلاتي که دارم اينه که اطلاعات نمايشه داده شده t =فاصله زماني بين دو پالس و c =تعداد پالس روي ال سي دي بهم ميريزه .

    سوال_1: ايا ال سيدي رو با اين شرايط ميشه راه اندازي کرد بطوري که بهم نريزه ؟
    سوال_2: آيا با پورت سريال و برنامه هايپر ترمينال سهولت کار بيشتره و شدنيه؟
    سوال_2: در کل راهي که دارم ميرم (استفاده از 4 وقفه -راه اندازي تايمر 0 - راه اندازي تايمر 1و3 واسه pwm) واسه انجام اين پروژه کفايت ميکنه يعني اين راه حل جواب ميده .
    يه نکته ايم که بايد در نظر گرفت اينه که من مدارم چاپ شدست و متاسفانه نميشتونم از واحد کانتر استفاده کنم.(زبان برنامه نويسيمم bascom) کسي ميتونه با اين شرايط راه نمايي کنه کار ما راه بيافته؟
  2. #2
    2011/12/30
    421
    20

    پاسخ : پروژه کنترل موقعيت و فيدبک سرعت 4 عدد موتور دي سي 10 rpm

    نقل قول نوشته اصلی توسط kargadan2
    سلام

    من ميخوام 4 عدد موتور دي سي با 4 عدد پره اپتوکانتر رو با يک ميکرو Atmega128 کنترل موقعيت و کنترل سرعت کنم.
    واسه عمليات شمارش پالس هام اومدم از 4 عدد وقفه استفاده کردم . و واسه فيدبک سرعت گرفتن ميخوام فاصله زمانيه بين دو پالس high رو اندازه بگيرم . واسه اين کار از تايمر 0 استفاده کردم و 4 عدد متغير t1,t2,t3,t4 معرفي کردم . تايمر 0 رو روي 10 ميلي ثانيه تنظيم کردم. فرکانس 16mhz
    از تايمر 1و 3 هم بعنوان pwm استفاده شده (10 بيتي).

    مشکلاتي که دارم اينه که اطلاعات نمايشه داده شده t =فاصله زماني بين دو پالس و c =تعداد پالس روي ال سي دي بهم ميريزه .

    سوال_1: ايا ال سيدي رو با اين شرايط ميشه راه اندازي کرد بطوري که بهم نريزه ؟
    سوال_2: آيا با پورت سريال و برنامه هايپر ترمينال سهولت کار بيشتره و شدنيه؟
    سوال_2: در کل راهي که دارم ميرم (استفاده از 4 وقفه -راه اندازي تايمر 0 - راه اندازي تايمر 1و3 واسه pwm) واسه انجام اين پروژه کفايت ميکنه يعني اين راه حل جواب ميده .
    يه نکته ايم که بايد در نظر گرفت اينه که من مدارم چاپ شدست و متاسفانه نميشتونم از واحد کانتر استفاده کنم.(زبان برنامه نويسيمم bascom) کسي ميتونه با اين شرايط راه نمايي کنه کار ما راه بيافته؟
    1- براي lcd که مشکلي نيست. چون کارتون داخل وقفه هست از lcd مي تونيد راحت استفاده کنيد.
    2-با پورت سريال هم مي تونيد کار کنيد. در مورد اينکه بهتره يا بدتره بايد خودتون نسبت به کارتون بررسي کنيد. و همينطوري نميشه گفت کدوم بهتره اما خوب صد در صد پورت سريال اطلاعات را خيلي بهتر نمايش ميده اما راه اندازيش نسبت به lcd کار سخت تريه و نويز بيشتر تاثير ميذاره روش که البته همه ي اينها به راحتي قابل حله.
    3- اگه سرعت پالس خوردن خيلي بالا نباشه با چهار تا وقفه مشکلي پيش نمياد. فقط بايد مواظب باشيد کدي که داخل وقفه ها مي نويسيد خيلي کوتاه و بهينه باشه تا تداخل وقفه پيش نياد به خصوص در وقفه تايمر 0
  3. #3
    2014/01/07
    328
    5

    پاسخ : پروژه کنترل موقعيت و فيدبک سرعت 4 عدد موتور دي سي 10 rpm

    نقل قول نوشته اصلی توسط kargadan2
    سلام

    من ميخوام 4 عدد موتور دي سي با 4 عدد پره اپتوکانتر رو با يک ميکرو Atmega128 کنترل موقعيت و کنترل سرعت کنم.
    واسه عمليات شمارش پالس هام اومدم از 4 عدد وقفه استفاده کردم . و واسه فيدبک سرعت گرفتن ميخوام فاصله زمانيه بين دو پالس high رو اندازه بگيرم . واسه اين کار از تايمر 0 استفاده کردم و 4 عدد متغير t1,t2,t3,t4 معرفي کردم . تايمر 0 رو روي 10 ميلي ثانيه تنظيم کردم. فرکانس 16mhz
    از تايمر 1و 3 هم بعنوان pwm استفاده شده (10 بيتي).

    مشکلاتي که دارم اينه که اطلاعات نمايشه داده شده t =فاصله زماني بين دو پالس و c =تعداد پالس روي ال سي دي بهم ميريزه .

    سوال_1: ايا ال سيدي رو با اين شرايط ميشه راه اندازي کرد بطوري که بهم نريزه ؟
    سوال_2: آيا با پورت سريال و برنامه هايپر ترمينال سهولت کار بيشتره و شدنيه؟
    سوال_2: در کل راهي که دارم ميرم (استفاده از 4 وقفه -راه اندازي تايمر 0 - راه اندازي تايمر 1و3 واسه pwm) واسه انجام اين پروژه کفايت ميکنه يعني اين راه حل جواب ميده .
    يه نکته ايم که بايد در نظر گرفت اينه که من مدارم چاپ شدست و متاسفانه نميشتونم از واحد کانتر استفاده کنم.(زبان برنامه نويسيمم bascom) کسي ميتونه با اين شرايط راه نمايي کنه کار ما راه بيافته؟
    سلام یه سوال چه طوری می خواهید از تایمر های 1 و 3 هم برای شمارش یعنی کانتر و هم برای PWM یعنی تایمر استفاده کنید ؟ :cry:
    باد می وزد ...
    میتوانی در مقابلش هم دیوار بسازی ، هم آسیاب بادی
    تصمیم با تو است ...
  4. #4
    2013/12/14
    9
    0

    پاسخ : پروژه کنترل موقعيت و فيدبک سرعت 4 عدد موتور دي سي 10 rpm

    تو اين پروژه اصلا از کانتر استفاده نميکنم من فقط از وقفه استفاده کردم و تايمر و pwm
  5. #5
    2013/12/14
    9
    0

    پاسخ : پروژه کنترل موقعيت و فيدبک سرعت 4 عدد موتور دي سي 10 rpm

    يه مشکلي که برخوردم تو فاصله ي زمانيه بين دو پالس هست. من تو اين پروژه نميتونم تايمر رو تو روتين وفقه استوپ يا استارت کنم چون اين تايمر قرار براي هر 4 موتور کار کنه و از متغيرهاي t1 t2 t3 t4 اومدم تايم هاي بين برنامه اصلي و رفتن به روتين وقفه رو اندازه گرفتم . اما تو برنامه هايپر ترمينال که نگاه ميکنم بازم اون مقدار تثبيت شده اي که انتظار دارمو نميبينم . ايا با اين کار اندازه گيريه بين دو پالس شدنيه؟

    نمونه برنامه رو ميذارمماله يک موتوره کسي ميتونه اينو بهينش کنه و دقيق تر در بياره . مرسي



    $regfile "m128def.dat"
    $crystal = 16000000

    '-------------------------------------------------------------------------------
    Config Porta = Output
    Config Portb = Output

    '-------------------------------------------------------------------------------
    Config Lcd = 16 * 2
    Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.2 , Db6 = Portc.1 , Db7 = Portc.0 , E = Portc.4 , Rs = Portc.5
    '-------------------------------------------------------------------------------
    Config Timer3 = Pwm , Pwm = 9 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down , Compare C Pwm = Clear Down , Prescale = 64
    '---------------------------------------------------------------------------------------------------------------------------------
    Config Serialout = Buffered , Size = 200
    Baud = 9600
    '---------------------------------------------------------------------------------------------------------------------------------
    Config Timer0 = Timer , Prescale = 8
    Enable Interrupts
    Enable Timer0
    On Timer0 Timer_0
    '--------------------------------------
    Config Int0 = Rising
    Enable Int0
    On Int0 Counterr
    '-------------------------------------------------------------------------------


    Dim C As Integer
    Dim T1 As Integer
    Dim A As Word
    Dim I As Integer
    '------------------
    Dim P1 As Long
    Dim P2 As Long
    '------------------
    Dim C_t As Byte

    Dim T1_s As Single
    Dim T2_s As Single
    Dim T_s As Single

    Dim V1 As Single
    Dim V2 As Single

    Dim B1 As String * 10
    Dim B2 As String * 10





    '-------------------------------------------------------------------------------
    Cursor Off
    Cls
    '-----------
    Start Timer0
    Timer0 = 56
    I = 1
    C = 1
    P1 = 510
    P2 = 510


    Do

    V1 = P1 * 14.03
    V1 = V1 / 510

    V2 = P2 * 14.03
    V2 = V2 / 510

    If I = 1 Then : Reset Porta.2 : Set Porta.3 : Compare3b = P1 : V2 = 0 : End If
    If I = 2 Then : Set Porta.2 : Reset Porta.3 : Compare3b = P2 : V1 = 0 : End If

    If I = 3 Then

    Set Porta.2
    Set Porta.3

    T1 = 0
    T1_s = 0
    T2_s = 0




    If C = 5 Then : I = 2 : T_s = 1 : End If
    If C = 1 Then : I = 1 : T_s = 1 : End If

    End If



    B1 = Fusing(v1 , "#.&&&quot
    B2 = Fusing(t_s , "#.&&quot


    Print " Time= " ; B2 ; " c=" ; C ; " v1=" ; b1 ; " v2=" ; V2



    Loop

    '******************************************** ***********************************
    Timer_0:



    Stop Timer0
    Incr A
    If A = 100 Then


    Incr T1




    A = 0
    End If
    Timer0 = 56
    Start Timer0
    Return
    '******************************************** ***********************************
    Counterr:

    Incr C_t


    If I = 1 Then : Incr C : End If
    If I = 2 Then : Decr C : End If

    If C = 5 Then : I = 3 : End If
    If C = 1 Then : I = 3 : End If


    If C_t = 1 Then : T_s = T1 : T1 = 0 : C_t = 0 : End If






    Return
    '******************************************** ***********************************





  6. #6
    2011/12/30
    421
    20

    پاسخ : پروژه کنترل موقعيت و فيدبک سرعت 4 عدد موتور دي سي 10 rpm

    سلام
    من بسکام خيلي کار نکردم
    ولي اگه مي خواهيد سرعت را اندازه گيري کنيد به جاي فاصله دو پالس بيايد و تعداد پالس ها را در طي مثلا 10 ميلي ثانيه حساب کنيد. اينطوري فکر کنم راحت تره....
نمایش نتایج: از 1 به 6 از 6

موضوعات مشابه

  1. پاسخ: 41
    آخرين نوشته: 2015/07/09, 13:37
  2. کنترل موقعيت شفت 9 عدد موتور DC "به طور همزمان" !
    توسط sobhan537 در انجمن میکروکنترلرهای AVR
    پاسخ: 3
    آخرين نوشته: 2014/03/15, 23:40
  3. پاسخ: 0
    آخرين نوشته: 2013/10/22, 20:56
  4. کنترل سرعت موتور
    توسط maryam156 در انجمن میکروکنترلرهای AVR
    پاسخ: 1
    آخرين نوشته: 2013/09/10, 21:56
  5. کنترل موقعيت و سرعت موتور DC + سوال در مورد موتور
    توسط HKM2o1o در انجمن سيستم هاي كنترلي
    پاسخ: 0
    آخرين نوشته: 2013/09/05, 20:29

کلمات کلیدی این موضوع

علاقه مندي ها (Bookmarks)

علاقه مندي ها (Bookmarks)

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •