براي كنترل موتور دي سي با 8051 از لينك زير كه با keil c51 نوشتم دانلود كنيد:
http://alitaroosheh.parsaspace.ir/mo...%20control.rar
براي كنترل موتور دي سي با 8051 از لينك زير كه با keil c51 نوشتم دانلود كنيد:
http://alitaroosheh.parsaspace.ir/mo...%20control.rar
سلام.
با تشكر از شما.لطفا در مورد روش تبديل مقدار خوانده شده از 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 كرديد.
ممنون.
در 8051 رجيستر مقدار تايمر صفر th0 و tl0 هستش كه من با اون متغييرها كه گفتيد بهش مقدار ميدمو از اون بكاپ و به شكل الاكلنگي مقدار تايمر براي ايجاد لبه بالا و بعدش لبه پايين رو در ميارم
در واقع هرچي لبه بالا داريم منهاي 100٪ ميشه لبه بايين كه با tbl,tbh,tl,th مقدار دهي ميشه
با تشكر از لطفتون اما اگه ممكنه بيشتر توضيح بديد.در مورد روش ايجاد PWM در برنامتون توضيح بديد.خيلي ممنون.
به قسمت زير برنامه اينتراپت توجه كنيد
متغيير pos در هر بار فراخواني مقدارش تغيير ميكنه و باعث ميشه كه مقدار جديد در تايمر قرار بگيره
يعني يه بار براي لبه بالا و يه بار براي لبه پايين
مقدار adc هم بستگي به موتود داره كه چه تقييراتي روش انجام بشه
سلام.
بله.اين موارد مشكلي نداره من اعداد 6000و250 و عمليات مربوط به تبديل خروجيadc به pwm خروجي رو متوجه نميشم.
لطف كنيد خطوط زير رو توضيح بديد.
=adc*250
tb=60000-t
;tl=t%255;th=t/255
tbl=tb%255;tbh=tb /255
از توجهتون ممنون.
اينجا با توجه به مشخصات موتور من عدد adc رو در 60000 ضرب كردم
بعد چون عدد بزرگتر از يك بايت شد اون رو تقسيم بر 250 كردم كه در t قرارگرفت باقيمونده در tl و جواب تقسيم در th قرار گرفته
چون قرار كه در هر سيكل مقدار تايمر عوض بشه مقدار ف از 60000 كم ميشه و در قرار ميگيره كه به روش بالا به دو بايت تبديل ميشه
توجه كنيد كه مقدار adc به 240 محدود شده كه ضربدر 250 ميشه 60000 كه يعني 100٪ كه از t كم بشه مقدار لبه پايين در مياد
خيلي ممنون.
سلام
خيلي ممنون از برنامه خوبي كه گذاشتين
ميشه توضيح بدين وقتي كه اجرا ميكنيم برنامه را موتور چطوري كار مي كنه ؟؟؟ يعني در حين اجرا چطور به آن وقفه ميديم تا pos تغيير كند و موتور راست گرد يا چب گرد شود؟؟؟
pwm يا مدولاسيون عرض پالس يعني اينكه ارزش داده ها در duty cycle قرار بگيره نه در سطح ولتاژ
پس ما فركانس ثابتي داريم كه براي ارزشهاي بيشتر عرض پالس بيشتر و بلعكس براش صادقه
حالا اگه انتگرال زير سطح اين پالس رو بگيريد مقدار DC بدست مياد كه باعث كم و زياد شدن سرعت موتور ميشه
اين مورد براي توليد صدا هم هست(شنيدم گوشي هاي سوني اريكسون با PWM صدا رو توليد ميكنن)
حالا چون 8051 اين امكان رو نداره به صورت نرم افزاري اون رو انجام ميديم
تايمر رو پيكره بندي ميكنيم و هر بار توي زير برنامه اينتراپت موقعيت پالس رو چك ميكنيم اگه قراره لبه پايين رو ايجاد كنيم مقدار جديد رو بهش ميديد(مثلا اگه عرض پالس 70٪ براي لبه پايين 30٪ رو ايجاد ميكنيم)
در اينتراپت بعدي قاعدتا بايد لبه بالا رو ايجاد كنيم كه متغيير pos اين شرايط رو ايجاد ميكنه(مثل الاكلنگ)