PDA

توجه ! این یک نسخه آرشیو شده میباشد و در این حالت شما عکسی را مشاهده نمیکنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : كنترل موتور DC با پتانسيومتر و 8051



alitaroosheh
30-01-2008, 22:54
براي كنترل موتور دي سي با 8051 از لينك زير كه با keil c51 نوشتم دانلود كنيد:

You can see links before reply

naali
12-02-2008, 16:52
سلام.
با تشكر از شما.لطفا در مورد روش تبديل مقدار خوانده شده از ADC به PWM خروجي در برنامه توضيح بديد.
نقش متغيرهاي tl,th,tbl,tbh رو لطفا توضيح بديد و در مورد خطوط زير:
;t=adc*250
tb=60000-t
;tl=t%255;th=t/255
tbl=tb%255;tbh=tb/255

روش بسيار جالبيه كه اگه لطف كنيد كمي توضيح بديد 8051 رو هم مثل AVR داراي خروجي PWM كرديد.

ممنون.

alitaroosheh
12-02-2008, 23:23
در 8051 رجيستر مقدار تايمر صفر th0 و tl0 هستش كه من با اون متغييرها كه گفتيد بهش مقدار ميدمو از اون بكاپ و به شكل الاكلنگي مقدار تايمر براي ايجاد لبه بالا و بعدش لبه پايين رو در ميارم
در واقع هرچي لبه بالا داريم منهاي 100٪ ميشه لبه بايين كه با tbl,tbh,tl,th مقدار دهي ميشه

naali
13-02-2008, 01:06
با تشكر از لطفتون اما اگه ممكنه بيشتر توضيح بديد.در مورد روش ايجاد PWM در برنامتون توضيح بديد.خيلي ممنون.

alitaroosheh
13-02-2008, 11:59
به قسمت زير برنامه اينتراپت توجه كنيد
متغيير pos در هر بار فراخواني مقدارش تغيير ميكنه و باعث ميشه كه مقدار جديد در تايمر قرار بگيره
يعني يه بار براي لبه بالا و يه بار براي لبه پايين
مقدار adc هم بستگي به موتود داره كه چه تقييراتي روش انجام بشه

naali
14-02-2008, 00:54
سلام.
بله.اين موارد مشكلي نداره من اعداد 6000و250 و عمليات مربوط به تبديل خروجيadc به pwm خروجي رو متوجه نميشم.
لطف كنيد خطوط زير رو توضيح بديد.
=adc*250
tb=60000-t
;tl=t%255;th=t/255
tbl=tb%255;tbh=tb /255

از توجهتون ممنون.

alitaroosheh
15-02-2008, 01:28
اينجا با توجه به مشخصات موتور من عدد adc رو در 60000 ضرب كردم
بعد چون عدد بزرگتر از يك بايت شد اون رو تقسيم بر 250 كردم كه در t قرارگرفت باقيمونده در tl و جواب تقسيم در th قرار گرفته
چون قرار كه در هر سيكل مقدار تايمر عوض بشه مقدار ف از 60000 كم ميشه و در قرار ميگيره كه به روش بالا به دو بايت تبديل ميشه
توجه كنيد كه مقدار adc به 240 محدود شده كه ضربدر 250 ميشه 60000 كه يعني 100٪ كه از t كم بشه مقدار لبه پايين در مياد

naali
16-02-2008, 00:35
خيلي ممنون.

sam
24-06-2008, 20:36
سلام
خيلي ممنون از برنامه خوبي كه گذاشتين
ميشه توضيح بدين وقتي كه اجرا ميكنيم برنامه را موتور چطوري كار مي كنه ؟؟؟ يعني در حين اجرا چطور به آن وقفه ميديم تا pos تغيير كند و موتور راست گرد يا چب گرد شود؟؟؟

alitaroosheh
25-06-2008, 13:49
pwm يا مدولاسيون عرض پالس يعني اينكه ارزش داده ها در duty cycle قرار بگيره نه در سطح ولتاژ

پس ما فركانس ثابتي داريم كه براي ارزشهاي بيشتر عرض پالس بيشتر و بلعكس براش صادقه

حالا اگه انتگرال زير سطح اين پالس رو بگيريد مقدار DC بدست مياد كه باعث كم و زياد شدن سرعت موتور ميشه

اين مورد براي توليد صدا هم هست(شنيدم گوشي هاي سوني اريكسون با PWM صدا رو توليد ميكنن)

حالا چون 8051 اين امكان رو نداره به صورت نرم افزاري اون رو انجام ميديم
تايمر رو پيكره بندي ميكنيم و هر بار توي زير برنامه اينتراپت موقعيت پالس رو چك ميكنيم اگه قراره لبه پايين رو ايجاد كنيم مقدار جديد رو بهش ميديد(مثلا اگه عرض پالس 70٪ براي لبه پايين 30٪ رو ايجاد ميكنيم)

در اينتراپت بعدي قاعدتا بايد لبه بالا رو ايجاد كنيم كه متغيير pos اين شرايط رو ايجاد ميكنه(مثل الاكلنگ)