Mündəricat:
Video: STM32 Cihazlı RC Servoları üçün Yüksək Çözünürlüklü PWM Siqnal Nəsli: 3 Addım
2024 Müəllif: John Day | [email protected]. Son dəyişdirildi: 2024-01-30 07:45
Hal -hazırda, SX1280 RF çipinə əsaslanan bir RC ötürücü/qəbuledici qururam. Layihənin məqsədlərindən biri, çubuqlardan servolara qədər 12 bitlik servo qətnamə istəyimdir. Qismən müasir rəqəmsal servoların 12 bit qətnaməyə malik olması səbəbindən ikincisi də yüksək səviyyəli bir ötürücü 12 bit istifadə edir. STM32 cihazlarında yüksək qətnaməli PWM siqnalları necə yarada biləcəyimi araşdırırdım. Hazırda prototip üçün qara həb (STM32F103C8T8) istifadə edirəm.
Addım 1: Parça siyahısı
Avadanlıq
- Hər hansı bir STM32F103 inkişaf lövhəsi (mavi həb, qara həb və s.)
- Güc mənbəyi olaraq USB güc bankı
- STM32 proqramçısı (Segger j-links, ST-LINK/V2 və ya sadəcə st-link klonu)
Proqram təminatı
- STM32CubeMX
- STM32 üçün Atollic TrueSTUDIO
- Github -dan layihə mənbəyi
Addım 2: Aşkar Həll
Yəqin ki, ən asan həll STM32F103-də TIM1-3 kimi PWM siqnalları yarada bilən taymerlərdən birini istifadə etməkdir. Müasir bir rəqəmsal servo üçün çərçivə sürəti 5 ms -ə qədər enə bilər, ancaq köhnə bir analog servo üçün 20 ms və ya 50 Hz olmalıdır. Beləliklə, ən pis vəziyyət ssenarisi olaraq bunu yaradaq. 72 MHz saat və 16 bit timer sayğacının qətnaməsi ilə, 20 ms çərçivə sürətini əhatə etmək üçün taymerin prescalerini minimum 23 olaraq təyin etməliyik. 24 seçdim, çünki 20 ms ərzində sayğacı tam olaraq 60000 olaraq təyin etməliyəm. Ekran görüntülərində CubeMX quruluşunu və yaradılan 1 və 1.5 ms PWM siqnallarını görə bilərsiniz. Təəssüf ki, 1 ms üçün taymer sayğacının 3000 -ə təyin edilməsi lazımdır ki, bu da bizə yalnız 11 bit qətnamə verəcəkdir. Pis deyil, amma hədəf 12 bit idi, gəlin başqa bir şey sınayaq.
Əlbəttə ki, STM32L476 kimi 32 bitlik sayğacı olan bir mikro nəzarətçi seçsəm, bu qətnamə daha yüksək ola bilər və problem həll ediləcəkdir.
Ancaq burada STM32F103 -də belə qətnaməni daha da artıracaq alternativ bir həll təklif etmək istərdim.
Addım 3: Yüksək Çözünürlük üçün Cascading Timers
Əvvəlki həlldəki əsas problem, kadr sürətinin (20 ms) əslində yaradılan PWM siqnalına (1 ilə 2 ms arasında) nisbətən yüksək olmasıdır, buna görə də gözlədiyimiz zaman qalan 18 ms üçün bəzi dəyərli bitləri israf edirik. növbəti çərçivə. Sinxronizasiya üçün taymer bağlantısı xüsusiyyətindən istifadə edərək kaskad taymerləri ilə həll edilə bilər.
Fikir budur ki, çərçivə sürətini (20 ms) yaratmaq üçün TIM1 -i master olaraq və PWM siqnallarının kölə olaraq öhdəsindən gəlmək üçün TIM2, TIM3 -dən istifadə edəcəyəm. Usta qulları işə saldıqda yalnız bir puls rejimində PWM siqnalı yaradır. Buna görə də bu taymerlərdə cəmi 2 ms -i əhatə etməliyəm. Xoşbəxtlikdən, bu sayğacları aparat içərisində kaskad edə bilərsiniz, beləliklə bu sinxronizasiyanın prosessorun müdaxiləsinə ehtiyacı yoxdur və çox dəqiqdir, titrəmə ps bölgəsindədir. Ekran görüntülərində CubeMX quruluşunu görə bilərsiniz.
Gördüyünüz kimi prescalar olaraq 3 seçdim, buna görə 2 ms üçün taymer sayacında 48000 təyin etməliyəm. Bu bizə 1 ms üçün 24000 verir ki, bu da 14 bitlik qətnamə üçün ehtiyacımız olan şeydir. Tadaaaa…
Zəhmət olmasa son nəticə üçün girişdəki osiloskop ekran görüntülərinə baxın. Kanal 3 (bənövşəyi), bir nəbz yaratmağa kömək edəcək əsas zamanlayıcının kəsilməsidir. Kanal 1 və 4 (sarı və yaşıl şüa) fərqli taymerlərin yaratdığı əsl PWM siqnallarıdır. Qeyd edək ki, onlar sinxronlaşdırılır, lakin PWM 2 rejiminə görə arxa kənarlarda sinxronlaşdırılır. Bu problem deyil, çünki xüsusi servo üçün PWM dərəcəsi hələ də düzgündür.
Bu həllin digər faydası, kadr sürətini dəyişdirmək yalnız TIM1 -də dövrü dəyişdirmək deməkdir. Müasir rəqəmsal servolar üçün 200-300 Hz-ə qədər enə bilərsiniz, ancaq incə tənzimləmək istəyirsinizsə servo təlimatına müraciət edin.
Tövsiyə:
İnteraktiv Globe Peluş və Nəsli kəsilməkdə olan heyvanlar kitabı: 14 addım
İnteraktiv Globe Peluşu və Nəsli kəsilməkdə olan heyvanlar kitabı: Rəqəmsal Hazırlıq və Öyrənmə dərsimdə, son layihə, sinifdə öyrəndiyimiz texnologiyalardan birini istifadə edərək bir məhsul hazırlamağı mənə tapşırdı. Ancaq bu layihə üçün texnologiyanı bundan əvvəl etdiyimizdən daha irəli aparmalı olduq
Yüksək Çözünürlüklü Web Kamera: 9 Addım (Şəkillərlə birlikdə)
Yüksək Çözünürlüklü Veb Kamera: Bir neçə ildir ki, RPi əsaslı veb -kamera (PiCam modulu ilə) istifadə edirdim. İstehsal olunan görüntülər qaydasındadı, amma sonra keyfiyyətdən artıq razı qalmadığım anlar oldu. Yüksək qətnaməli bir veb kamera hazırlamaq qərarına gəldim. Aşağıdakı hissələr
Pier9: nəsli kəsilməkdə olan heyvanlar üçün Eurion Zərgərlik: 7 addım (şəkillərlə)
Pier9: Nəsli kəsilməkdə olan Heyvanlar üçün Eurion Zərgərlik: Bu zərgərlikdəki bənzərsiz nümunə, nəsli kəsilməkdə olan heyvanların imiclərinə müəllif hüquqları iddiaları tətbiq etməyə kömək edir. Bu model Eurion Constellation olaraq bilinir, ən çox pul saxtakarlığının qarşısını almaq üçün istifadə olunur və ətrafdakı əksər kağız valyutalarda tapıla bilər
Yolunuza xidmət etmək üçün servoları sındırmaq: 9 addım
Yolunuza xidmət etmək üçün servoları sındırmaq: servolar robot texnikasında ən faydalı mühərriklərdən biridir. Böyük bir torka, kiçik ölçüyə, inteqrasiya edilmiş H körpüsünə, PWM nəzarətinə və s. RC sistemləri, Arduino və bir çox başqa yollarla istifadə edilə bilər. Ancaq bəzən onları işə salmaq həqiqətən də çətin ola bilər
Təlimat verilənlərindən Yüksək Çözünürlüklü Şəkilləri necə əldə etmək olar: 4 addım
Təlimat verənlərdən Yüksək Çözünürlüklü Şəkilləri necə əldə etmək olar: Həqiqətən bu təlimatlı şəkildən zövq aldınız və yüksək qətnamə nüsxəsini saxlamaq istədinizmi? Bu böyük kiçik xüsusiyyət asanlıqla göz ardı edilir