Tag Archives: ای

۸ دلیل که به یک طراحی وب سایت حرفه ای نیازمندید



<![CDATA[

اگر شما در حال حاضر وب سایت دارید ولی پیشرفته نیست، آن را بازسازی و دوباره طراحی کنید تا کار شما را با تصویری حرفه‌ای نشان بدهد و اعتماد بیشتری کسب کند. برای کسب و کارهای خانگی، مخصوصاً مفید است چون شما ویترین که محصولات و خدمات خود را نشان بدهید ندارید.

]]>


درایور دو موتور پله ای با میکروکنترلر PIC


سخت افزار و نرم افزار به کار رفته در کنترل دو موتور پله ای را که برای روبوت های با درایور دیفرانسیلی , مناسب می باشند را شرح می دهد.


بازدید :


زمان تقریبی مطالعه :


تاریخ :

مرکز یادگیری تبیان – محبوبه همت

درایور دو موتور پله ای با میکروکنترلر pic

مقدمه:
این مقاله سخت افزار و نرم افزار به کار رفته در کنترل دو موتور پله ای را که برای روبوت های با درایور دیفرانسیلی، مناسب می باشند را شرح می دهد. این مدار دو کلمه دو بیتی را می پذیرد تا به هر یک از موتورها فرامین حرکت به جلو، عقب، تثبیت موقعیت و سکون را دهد. همچنین هرگاه یک پله(گام) شکل گرفت (طی شد)، یک سیگنال خروجی ایجاد می کند.این مدار طرحی مناسب می باشد که با آن می توان تحریک سیم پیچ، سرعت موتور، شکل “کلمه کنترل ” وسایر پارامترهای موتورهای تک قطبی و دو قطبی مبتنی بر میکروکنترلر را اصلاح کرد. نرم افزار آن نیز، به زبان های C و Assembly تهیه شده است.

مدار سخت افزار
مدار مذکور شامل سه آی سی است:
PIC16F84 وهمچنین دو درایور پل  H،L293D برای موتورهای پله ای دوقطبی(شکل پایین) یا دو ULN2803 برای موتور پله ای های تک قطبی. سوای منابع تغذیه، قطعات مدار تنها به: نوسانساز ۴MHz، یک مقاومت بالاکش ۱۰ کیلو اهم و چند کانکتور محدود می شود. در این طرح یک بسته ۶ تایی از باتری های ۱٫۲ ولتی،که اختلاف پتانسیل ۷٫۲ ولت تولید می کنند به طور خطی تنظیم(رگوله) می شوند تا تغذیه منطقی ۵ ولتی را تامین نمایند. افت ولتاژ ترانزیستورهای دوقطبی درایور، به ولتاژ ۷٫۲ ولت اجازه نمی دهد موتور را بیش از توان آن درایو کند.

” کلمه کنترل” به دو کلمه کنترل ۲ بیتی شکسته شده است:
دوبیت با ارزش تر که بیتهای ۲و۳ از PORTA هستند، موتور سمت چپ را کنترل نموده و دو بیت کم ارزش تر یعنی بیت های ۰،۱ از PORTA موتور سمت راست را کنترل می کنند. برای این مقادیر: ۰۰،۰۱،۱۰،۱۱، کلمه کنترل به موتورها به ترتیب فرامین:جلو،عقب، تثبیت موقعیت و سکون را می دهد. این ترتیب را می توان به سادگی عوض کرد(نرم افزار پایین را ببینید)

بنا به مدار طراحی شده, امکان کنترل سرعت موتور فراهم شده است.بخصوص این که به پالس های کنترلی متناوب برای پیشبرد موتورها نیازی نیست. به علاوه هنگامی که یک گام(پله) طی شد، مداریک سیگنال خروجی در بیت ۴ از PORTA تولید می کند.کنترل کننده اصلی می تواند این سیگنال را بازبینی کند تا هنگامی که کلمه کنترل بایستی تغییر کند را مشخص کند.
به عنوان مثال برای اینکه فاصله معینی به جلو حرکت نماید، پردازنده اصلی، تعداد گام های لازم برای دستیابی به این هدف را محاسبه نموده و به این ترتیب فرمان رو به جلو را به موتور صادر می کند. وقتی که تعداد گام های لازم طی شد، کلمه کنترل می تواند به وضعیت ایست تغییر کند یا مجددا حرکت نماید. در اکثر پردازنده ها عمل شمردن گام ها(پله ها) را می توان به یک فعالیت در پس زمینه موکول کرد تا این امر در هر زمان وبدون دخالت کاربر صورت گیرد.

نرم افزار
دو نسخه از نرم افزار موجود است.این یکی در C2C که نسخه ای خاص از زبان C است و دیگری در زبان اسمبلی که با کمک چند ماکرو ساختارهای برنامه نویسی سطح بالا ایجاد می کند.
برنامه اصلی به سادگی و به تناوب،PORTA را جهت یافتن تغییر در کلمه کنترل می خواند. این فرایند هر از چند گاهی هنگامی که موتور به یک تحریک جدید نیاز داشته باشد توسط وقفه TMR0 متوقف می شود.چون تحریک موتور دوره ای است، کنترل موتور در پس زمینه اجرا می شود.

نرم افزار موجود به ما اجازه تغییرات ساده ای در تحریک سیم پیچی موتور، کلمه کنترل و سرعت موتور را می دهد. بدین ترتیب می توان به سادگی جدول تحریک را از لحاظ اندازه و محتوی برای نیم پله اصلاح کرد.کلمات کنترل تنها یک شمارش(از صفر تا چهار) هستند.بنابراین می توانیم ترتیب آنها را انتخاب کرده و در صورت لزوم، عوض نمود.با تغییر مقدار اولیه TMR0 می توان سرعت را در مبنای دو تغییر داد. تغییرات بهتر با ایجاد تغییر در مقدار اولیه TMR0 به دست می آیند.

این خطوط شبه کد نرم افزار هستند:
Constants
EXCITATION_TABLE_SIZE = 4   // number of excitations in sequence     
TMR0_CNT_UP           = ۱۰۰ // ۲۵۶ – duration (motor speed)
// Motor states
RIGHT_FORWARD  = ۰          // These can be re-ordered
RIGHT_BACKWARD = 1
RIGHT_HOLD     = ۲
RIGHT_IDLE     = ۳
LEFT_FORWARD   = ۰           // Above states shifted 2 bits left (multiplied by 4)
LEFT_BACKWARD  = ۴      
LEFT_HOLD      = ۸ 
LEFT_IDLE      = ۱۲
GlobalVariables
leftExcitationCntr          // current left motor excitation number
rightExcitationCntr         // current right motor excitation number
motorState                   // ۴ bit function word for both motors
excitations[] = {11000000b, // Excitation table – if the table is changed in size,
                 ۰۱۱۰۰۰۰۰b, // then the EXCITATION_TABLE_SIZE constant
                 ۰۰۱۱۰۰۰۰b, // must be changed
                 ۱۰۰۱۰۰۰۰b}
Functions
motorISR // Motor Interrupt Service Routine
   // Modifies global variables leftExcitationCntr and rightExcitationCntr as a function of motorState. 
   // It uses these counters as indices to read the motor excitation from the table and outputs it to PORTB.
   LocalVariables leftExcitation, rightExcitation
   if (motorState is RIGHT_FORWARD)
      if (rightExcitationCntr = EXCITATION_TABLE_SIZE-1)
         rightExcitationCntr = 0
      else
         increment rightExcitationCntr
      rightExcitation = excitations[rightExcitationCntr]
   else if (motorState is RIGHT_BACKWARD)
      if (rightExcitationCntr = 0)
         rightExcitationCntr = EXCITATION_TABLE_SIZE-1
      else
         decrement rightExcitationCntr
      rightExcitation = excitations[rightExcitationCntr]      
   else if (motorState is RIGHT_HOLD)
      rightExcitation = excitations[rightExcitationCntr]
   else // RIGHT_IDLE
      rightExcitation = 0
   shift rightExcitation 4 bits right
   if (motorState is LEFT_FORWARD)
      if (leftExcitationCntr = EXCITATION_TABLE_SIZE-1)
         leftExcitationCntr = 0
      else
         increment leftExcitationCntr
      leftExcitation = excitations[leftExcitationCntr]       
   else if (motorState is LEFT_BACKWARD)
      if (leftExcitationCntr = 0)
         leftExcitationCntr = EXCITATION_TABLE_SIZE-1
      else
         decrement leftExcitationCntr
      leftExcitation = excitations[leftExcitationCntr]           
   else if (motorState is LEFT_HOLD)
      leftExcitation = excitations[leftExcitationCntr]     
   else
      leftExcitation = 0
   PORTB = leftExcitation + rightExcitation
end motorISR
interrupt  // Main interrupt service routine gets control when TMR0 overflows
   if (TMR0 overflowed causing an interrupt)
      bit 4 of PORTA = 1         // signal motor step on
      call motorISR              // call motor interrupt service routine
      bit 4 of PORTA = 0         // signal motor step off
      TMR0 = TMR0_CNT_UP;        // reset TMR0 to proper count
end interrupt
main
   set TMR0 prescaler = 64     // divides clock by value set
   bit 4 of PORTA = 0           // signal motor step off
   leftExcitationCntr  = ۰
   rightExcitationCntr = 0
   TMR0 =  TMR0_CNT_UP;
   enable TMR0 interrupts
   while (1)                    // continuously update motorState (and wait
      motorState = PORTA        //   for a TMR0 interrupt)
end main
جمع بندی:
یک درایور معمولی موتور پله ای (هر چند ناقص) که مبتنی بر میکروکنترلر بود، طراحی شده و با موفقیت ساخته شد.از آنجا که تنها ۱۲۴ تا از ۱۰۲۴ کلمه حافظه PIC16F84 استفاده شد(در زبان اسمبلی)، می توان خواصی نظیر افزایش سرعت و کاهش سرعت را نیز به آن اضافه نمود.همه ۱۳ خط ورودی/خروجی در طرح حاضر استفاده شدند، بنابراین سیگنال های کنترلی خارجی اضافه بر این, به یک ارتقا در میکروکنترلرPIC شما نیازمندند.با PIC16F876 که دارای امکاناتی همچون “مدولاسیون پهنای پالس  ” و تبدیل آنالوگ به دیجیتال است، ممکن است بتوانید درایو برشگر طراحی نمایید. 

مطالب مرتبط:
اختلاف پتانسیل الکتریکی
اختلاف پتانسیل (نورون ها)
مدار متوالی و مدار موازی
منبع: roboeq


پروژه کنترل موتور پله ای توسط کامپیوتر


موقعیت دقیق موتور توسط برنامه ای که به زبان ویژوآل بیسیک نوشته شده است…


بازدید :


زمان تقریبی مطالعه :


تاریخ :

مرکز یادگیری تبیان – محبوبه همت
 

 پروژه کنترل موتور پله ای توسط کامپیوتر

موقعیت دقیق موتور توسط برنامه ای که به زبان ویژوآل بیسیک نوشته شده با ارسال پالس های دیجیتال (۰و۱) به پایه های ۱و۲ آیسی ULN2803 برای موتور اول و پایه های ۵ و ۶ همان آیسی برای موتور دوم کنترل می شود موتور پلدر این پروژه دو عدد موتور پله ای به صورت مجزا از طریق دو پورت سریال کامپیوتردر حالت دو بیتی راه اندازی می شود.ه ای که در این پروژه استفاده شده چهار قطبی می باشد.

وسایل مورد نیاز
ابزار مورد نیاز :
۱-کامپیوتر
۲-برد بورد
۳-سیم تلفنی
۴-منبع تغذیه یا باطری ۱۲VDC(منظور از DC همان ولتاژ ثابت است)
۵-هویه
۶-سیم لحیم
۷-فایلهای DLL

قطعات مورد نیاز :
۱-دو عدد موتور پله ای
۲-دو سوکت RS232
IC ULN2803-3

روش کار
میزان ولتاژ قابل تحمل آیسیULN2803 تا حدود ۵۰ولت می باشد.پایه های ۱ تا ۸ این آیسی ورودی وپایه های ۱۸ تا ۱۱ خروجی هستند.پایه ۱۰ تغذیه و پایه ۹ منفی آیسی است.میزان جریان قابل تحمل این آیسی حدود ۵۰۰ میلی آمپر است. اگر به شکل این آیسی نگاه کنید متوجه یک نیم دایره کوچک در وسط یکی از عرض های آن می شوید اگر این نیم دایره را پیدا کردید سمت چپ آن شروع پایه های آیسی از ۱ می شود.

 در هنگام شروع به کار با منبع تغذیه در صورتیکه منبع تغذیه هر دو حالتAC, DC (منظور از AC همان ولتاژ متغیر است مثل برق شهر) داشته باشد حتما آنرا روی حالت DC قرار دهید و کلید تنظیم مربوط به ولتاژ را تا حدی بچرخانید که صفحه نمایش ۱۲vرا نمایش دهد.خروجی مثبت ومنفی منبع تغذیه یا باطری ۱۲vDCرا مطابق شکل انتهای صفحه بر روی برد بورد قرار دهید

البته فعلا آنرا خاموش کنید.
پایه ۹ آیسی را به قطب منفی که از باطری یا منبع تغذیه آورده اید وصل کنید و پایه ۱۰ آیسی را به قطب مثبتی که از باطری یا منبع تغذیه آمده است وصل کنید.

 پروژه کنترل موتور پله ای توسط کامپیوتر

روش اتصال سیم های سوکت RS232
اگر به دو عدد سوکت RS232 که تهیه کرده اید به خوبی نگاه کنید متوجه یک سری شماره از ۱ تا ۹ روی آن می شوید این شماره ها در واقع همان شماره پین های مربوط به ارسال و دریافت هستند در این پروژه ما به ۳ پین احتیاج داریم پین های ۴و۵و۷ پین ۴ DTR پین ۵ GND پین ۷ RTS پین ۵ در واقع زمین ما در ارسال ودریافت استانداردRS232 است که می بایست به قطب منفی که از منبع تغذیه یا باطری به روی برد بورد آورده ایم وصل کنید.برای اتصال این پین ها بر روی برد بورد پیچ های مربوط به این سوکت ها را باز کرده واز سیم های تلفنی که در اختیار دارید حدود سه تکه ۳۰سانتی متری بسته به فاصله کامپیوتر تا میز کار ببرید.حال با استفاده از هویه و سیم قلعی که تهیه کرده اید این سیم ها را به پین های سوکت RS232 وصل کنید در هنگام لحیم کردن به شماره پین ها دقت کنید و برای اینکه بعدا مشکلی پیش نیاید بهتر است برای هر پین یک سیم رنگی مجزا در نظر بگیرید.حال DTR را که پین ۴ است و آنرا به یک تکه سیم لحیم کرده اید به پایه شماره ۱ آیسی و RTS را که پین ۷ می باشد و آنرا نیز لحیم کرده اید به پایه ۲ آیسی بر روی برد بورد قرار دهید.ضمننا همانطور که گفته شد حتما پین ۵ را نیز لحیم کرده و به منفی روی برد بورد وصل کنید.
از پایه ۱۸ آیسی که خروجی پایه ۱ آیسی است به پایه ۳ آیسی و از پایه ۱۷ آیسی که خروجی پایه ۲ آیسی است به پایه ۴ آیسی وصل کنید.

نحوه اتصال موتور پله ای بر روی بورد
حال به سراغ موتور پله ای می رویم به سیم های رنگی که از موتور پله ای بیرون آمده نگاه کنید هر کدام از این سیم های رنگی به سر یک قطب موتور پله ای اتصال دارد.و این سیم ها را در اصطلاح سیم ها پالس می نامیم ویک سیم در واقع گراند یا مشترک هم سیم ها است.در هنگام خرید موتور پله ای از فروشنده رنگ سیم گراند یا مشترک را سوال کنید.این سیم در این پروژه می بایست به قطب مثبت برد بورد وصل شود.در حالتیکه چرخش موتور تمام شده وکارتان را انجام داده اید می بایست اتصال این سیم را با قطب مثبت برد بورد قطع کنید وگرنه این ولتاژ روی موتور می ماند وچون موتور حرکتی ندارد به شدت گرم می شود.به غیر از سیم مشترک که به قطب مثبت وصل کرده اید بقیه سیم  ها را به ترتیب به پایه های ۱۸و۱۷و۱۶و۱۵ آیسی وصل کنید.

برای اینکه موتور پله دوم را نیز راه اندازی کنید سیم مشترک این موتور پله را نیز مانند موتور پله اول به مثبت برد بورد وصل کنید.وسوکت RS232 دومی را که سه عدد سیم مانند سوکت اولی به آن لحیم کرده اید پین ۴ یا DTR را به پایه ۵ آیسی و پین ۷ یا RTS را به پایه ۶ آیسی وصل کنید . از پایه ۱۴ آیسی که خروجی پایه ۵ در این آیسی است به پایه ۷ آیسی و از پایه ۱۳ که خروجی پایه ۶ است به پایه ۷ آیسی وصل کنید سیم های دیگر موتور پله ای که سیمهای پالس نامیده می شود به پایه های ۱۴و۱۳و۱۲و۱۱ وصل کنید.

حال ۲ عدد سوکت RS232 را یکی به COM1,دیگری را به COM2 وصل کنید.وبه همان ترتیبی که گفته شد روی بورد قرار دهید.
حال بعد از انجام مراحل فوق دو برنامه زیر را اجرا کنید وقبل از اینکه شروع را بزنید منبع تغذیه را روشن کنید.می بایست اتصال منبع تغذیه با برد بورد قطع باشد. پس از تنظیم ولتاژ بر روی ۱۲v dc همانطور که گفته شدآن را به برد بورد اتصال دهید.

نرم افزارهای لازم فایل های DLL
فایل های VB
برای اجرا کردن این این برنامه می بایست یک سری فایل DLL را در دایرکتوری SYSTEM ویندوز کپی کنید.

مطالب مرتبط:
نوسان الکتریکی
خودتان لرزه نگار بسازید
پاد نیرومحركه تولید شده توسط موتور

منبع: roboeq