Labaratoriya mashg’uloti
Mavzu: Servo dvigatellarni boshqarishda Python dan foydalanish
Biz foydalanuvchiga qiymatni darajalarda kiritish va servo yaratish imkonini beruvchi test kodini yozamiz unga o'ting. Biz allaqachon robot uchun foydalanayotgan kutubxonada PWM moduli mavjud. Biz o'zimizni boshlaymiz PWM modulini import qilish va u bilan ishlash uchun ob'ektni yaratish orqali test kodini. Bizga e'tibor bering Bu erda manzilni ko'rsatish kerak - bu biz motorlar uchun ishlatadigan I2C qurilmasi va bir xil manzilga ega. Ushbu kod servo_type_position.pyfile faylida joylashgan:
from Raspi_MotorHAT.Raspi_PWM_Servo_Driver import PWM
import atexit
pwm = PWM(0x6f)
# This sets the timebase for it all
pwm_frequency = 60
pwm.setPWMFreq(pwm_frequency)
E'tibor bering, bizda yana atexitain bor, shuning uchun biz kontroller signal berishni to'xtatganiga ishonch hosil qilishimiz mumkin motor. Servo 50 Gts yoki 60 Gts chastotalarda ishlaydi. Biz PWM chastotasini o'rnatdik va keyinchalik hisob-kitoblarda foydalanish uchun ushbu qiymatni saqlang.
Keyinchalik, servoni harakatlantirish uchun zarur bo'lgan matematikani o'rnatamiz. Ba'zi kontrollerlarda siz buni qilmaysiz .Lekin bu kengashda biz buni o'zimiz sozlashimiz kerak.
Servo motorni harakatlantirish uchun siz impulslarni yuborishingiz kerak. Ko'pgina servolar uchun motorni -90 ga aylantiradi markazdan daraja 1 ms pulsni talab qiladi, markazda ushlab turish uchun puls kerak 1,5 ms va uni 90 gradusga aylantirish uchun 2 ms puls talab qilinadi. Biz 1 da davrni topishimiz kerak .
Biz foydalanayotgan chip o'z impulslarini vaqt, sikl bo'yicha belgilaydi; pulsni yoqadiva, har bir tsiklda, pulsni o'chiradi. Ushbu zarba vaqtlari 0 dan 4095 gacha (12 bit) bosqichlarda.Bu erda 4095 - davr oxiri. Shunday qilib, biz servo harakatini hisoblashimiz kerak. Bu barcha matematikani bajarish uchun convert_degrees_to_pwmfunktsiyasini aniqlang, chunki ruxsat berish yoqimli kompyuter buni qiladi. Ba'zi hisob-kitoblar faqat bir marta amalga oshirilishi kerak, shuning uchun biz ularni yuqoridan tortib olamiz
Eslatma Men buning uchun tavsiflovchi o'zgaruvchi nomlaridan foydalanaman.
S yoki p har millisekundda qadamlar_per_ms-dan ancha kam degan ma'noni anglatadi. .0 qiymatlari hisob-kitoblarning o'nli kasrlarini saqlashiga ishonch hosil qiling, aks holda Python ularning barchasini qisqartiradi butun sonlar juda erta. Biz deflect atamasi markazdan qanchalik uzoqda (har ikki tomonga) degan ma'noni anglatadi. servo aylanadi:
Biz atexitni import qildik, shuning uchun biz servo to'xtatilganligiga ishonch hosil qilishimiz mumkin, ya'ni qidirishga harakat qilmaymiz yoki kodimiz to'xtaganda, pozitsiyani ushlab turing. Keling, buni hozir sozlaylik. pwm.setPWM qachon o'rnatiladi pulsning boshlanishi va oxiri. PWM ni 4096 ga o'rnatish orqali bu o'rnatadigan qo'shimcha bitni o'rnatadi pinni to'liq o'chirish; impulslar yo'q servo bo'shashadi degani. Buni atexit bilan ro'yxatdan o'tkazishimiz mumkin.
Do'stlaringiz bilan baham: |