مقدمه
- استپر موتور یک موتور DC بدون جاروبک (براشلس) میباشد که زاویهی چرخش کامل ۳۶۰ درجه را به تعدادی گام مساوی تقسیم میکند.
- موتور با اعمال دنباله مشخصی از سیگنالهای کنترلی میچرخد. با تغییر نرخ سیگنال کنترلی اعمال شونده، میتوان سرعت چرخش را تغییر داد.
- برای کسب اطلاعات بیشتر درباره استپر موتور، چرخه کنترلی و نحوهی استفاده از آن، به مطلب استپر موتور در بخش موتورهای الکتریکی و راه اندازی موتورها رجوع کنید.
- میتوان از GPIOهای رزبریپای برای کنترل چرخش استپر موتور بهره گرفت. میتوان دنبالهای از سیگنالهای کنترلی را روی پینهای GPIO رزبریپای ایجاد کرد. برای راهنمایی بیشتر درباره GPIO رزبریپای، به مطلب دسترسی به GPIO رزبریپای رجوع کنید.
دیاگرام اتصالات
مثال
میخواهیم یک استپر موتور را متناوباً در جهت عقربههای ساعت و عکس عقربههای ساعت بچرخانیم.
- در اینجا، از یک استپر موتور شش سیمه تک قطبی استفاده میکنیم. تنها چهارسیم برای کنترل این استپر موتور نیاز است. دو سیم تپ وسط استپر موتور به تغذیه ۵ ولت وصل میشوند.
- درایور ULN2003 برای درایو کردن استپر موتور تک قطبه استفاده میشود.
- ارتباط بین استپر موتور و رزبریپای را با زبان پایتون برقرار میکنیم. در این برنامه برای انتخاب جهت چرخش موتور (در جهت عقربههای ساعت یا در خلاف جهت آن)، از کیبورد به عنوان ورودی استفاده کردهایم.
نکته: برای پیدا کردن هسته سیم پیچی و سر تپها، مقاومت بین دو سر را اندازهگیری کنید. از سر وسط، باید مقاومتی برابر با نصف مقاومت بین دو انتهای سیم پیچ داشته باشیم.
برنامه پایتون
''' Stepper Motor interfacing with Raspberry Pi http:///www.electronicwings.com ''' import RPi.GPIO as GPIO from time import sleep import sys #assign GPIO pins for motor motor_channel = (29,31,33,35) GPIO.setwarnings(False) GPIO.setmode(GPIO.BOARD) #for defining more than 1 GPIO channel as input/output use GPIO.setup(motor_channel, GPIO.OUT) motor_direction = input('select motor direction a=anticlockwise, c=clockwise: ') while True: try: if(motor_direction == 'c'): print('motor running clockwise\n') GPIO.output(motor_channel, (GPIO.HIGH,GPIO.LOW,GPIO.LOW,GPIO.HIGH)) sleep(0.02) GPIO.output(motor_channel, (GPIO.HIGH,GPIO.HIGH,GPIO.LOW,GPIO.LOW)) sleep(0.02) GPIO.output(motor_channel, (GPIO.LOW,GPIO.HIGH,GPIO.HIGH,GPIO.LOW)) sleep(0.02) GPIO.output(motor_channel, (GPIO.LOW,GPIO.LOW,GPIO.HIGH,GPIO.HIGH)) sleep(0.02) elif(motor_direction == 'a'): print('motor running anti-clockwise\n') GPIO.output(motor_channel, (GPIO.HIGH,GPIO.LOW,GPIO.LOW,GPIO.HIGH)) sleep(0.02) GPIO.output(motor_channel, (GPIO.LOW,GPIO.LOW,GPIO.HIGH,GPIO.HIGH)) sleep(0.02) GPIO.output(motor_channel, (GPIO.LOW,GPIO.HIGH,GPIO.HIGH,GPIO.LOW)) sleep(0.02) GPIO.output(motor_channel, (GPIO.HIGH,GPIO.HIGH,GPIO.LOW,GPIO.LOW)) sleep(0.02) #press ctrl+c for keyboard interrupt except KeyboardInterrupt: #query for setting motor direction or exit motor_direction = input('select motor direction a=anticlockwise, c=clockwise or q=exit: ') #check for exit if(motor_direction == 'q'): print('motor stopped') sys.exit(0)
- منبع: ترجمه از سایت electronicwings.com
اگر علاقمند هستین توصیه میکنیم آموزش پایتون برای مبتدیان: فراگیری برنامهنویسی پایتون با مثال را هم مطالعه کنید. همچنین نظر خودتان را در کامنتها ⇓ بنویسید.
اگر این نوشته برایتان مفید بود لطفا کامنت بنویسید.