السلام عليكم
التحكم الأوتوماتيكي
AUTOMATE
إذا كنت تريد ثني أو طي أو تدوير ....الحديد بأقطار
صغيرة لابأس أن تستخدم محرك triphases or bipbase + Reducteur Mecanique
أما عن الحديد بأقطاركبيرة فهنا يأتي دور Oil Hydrolic
و تتحكم في المحرك 220V أو 380v بrelay أو triac أوthyristor أوIGBT ...إلخ من حيث الإتجاه و السرعة عموما
و عن التحكم commande هنا يكون عن طريق عازل(ضوئي) بتيار منخفض 5v -12v-24v DC و إشارة تحكمه تكون إما عن طريق
- سوتشات كهربائية on off
- أو دارة إلكترونية بسيطة أو منطقية أو رقمية + عازل ضوئي لحماية الدارة
- أو عن طريق الكمبيوتر + عازل ضوئي ; لحماية الجهاز من التيار المرتفع
- أو الميكروكنترولر + عازل ضوئي لحماية uC
- .......إلخ من التقنيات المتاحة حسب حاجة المشروع
أيا كان نوع المشروع أو الميكروكنترولر فأنت تحتاج
أولا إلى خوارزمية
ومن ثم تصمم بها برنامج قوي على حسب لغة البرمجة التي تعمل بها
أي تجمع كل ما تحتاج من Inputs & Outputs
inputs مثل button تحكم أو keypad
و Sensors وهنا لك خياران analog sensor مثل Potensiometer أو numeric sensors
outputs مثل Led ,Lcd, Relay ,PWM,Buzzer,....etc
سوف نختصر و نبسط الفكرة و البرنامج معا
numeric sensor يحتاج إلى interrupts
سنلجأ إلى إستخدام analog sensor و هو بكل بساطة مقاومة متغيرة ذات شكل دائري Potensiometer
على الرابط الصورة
http://id.wikipedia.org/wiki/Potensiometer
سنستخدم في uC الADC
المقاومة المتغيرة تثبت على مركز الدائرة التي تستخرج منها الزوايا
المقاومة المتغيرة Max degree =300 وليس360degree
متغير الدرجة يتم إدخاله عن طريق keypad مباشرة مثلا
و 2 buttons لزيادة أوإنقاص متغير الدرجة ....الخ
و 1 button لبدأ عملية الثني Start
و 1 button لstop
و 1 button لReset
..........
ملاحظة
المقاومة المتغيرة ربما تتلف عند كثرة الإستخدام و لأخذ الإحتياط
نضع قاطعتي نهاية المسار SW Fin de Course عند زاوية البداية 0 و أخرى عند زاوية كبرى 250 degree مثلا
لأن في uC سنضع برنامج بسيط فيه حلقات IF ليتوقف المحرك عند زاوية ADC kbd و من ثم يرجع إلى زاوية 0 و يتوقف
و إن لم يتتحقق الشرط نظرا لتلف قطعة potontiometer لن يتوقف المحرك و سيتسبب لنا في خسائر مادية
حساب درجة الثني مع ADC أوتوماتيكيا :
مثال ب :IF
adc_kbd=var
do
if btn_plus=0 then incr var
if btn_moins=0 then decr var
if start_btn=0 then gosub start
loop
end
start:
do
if adc < adc_kbd then
direction motor left
else
direction motor right
end if
loop until fin_course=0
stop motor
return
أخي الكريم لقد كتبت لك الكود ببساطة و ينقصه الكثير من التفاصيل
ولكن ما يهمك لحل مشكلتك هو هذا الشطرالبسيط من الكود
أنا أتعامل مع uC ATMEL
بلغة برمجة BASCOM_AVR
أردت مساعدتك بطرح فكرتي عليك و تبسيطها
أرجوا الإستفادة و أن تعم الفائدة على الجميع
بالتوفيق