Шукати в цьому блозі

понеділок, 16 липня 2012 р.

Multi-functional Stepper Motor Controller ( Unipolar and Bipolar ) on FPGA/CPLDs


Використані матеріали:


 Download project file for Altera Max+plusII (or Quartus) -> stepper_motor_con.rar

Переваги крокових двигунів точність управління, програмне управління двигуна, а також відсутність щіток, робить крокові двигуни зручними у використанні для різних спеціалізованих пристроїв: принтери, сканери, плотери, дисководи FDD, роботи, верстати з ЧПУ і інші високоточні пристрої.
          Серед великої кількості різноманітних схем та коду на Verilog та AHDL для керування кроковими двигунами які я зміг найти в інтернеті було чимало хороших але в більшості з низ відсутня простота розуміння, деякі з них перекочували в FPGA/CPLD із старих журналів і схем розроблених на 74 серії мікросхем такий собі максимальний мінімалізм присутній для схем того часу. Тому я вирів розробити схему яка б було інтуїтивно зрозуміла по схемі та по логіці роботи і також щоб схему можна було модифікувати під тип крокового двигуна.
         Для початку розглянемо типи двигунів. Крокові двигунів діляться на два основних найбільш використовуваних типи, це однополярні (unipolar) та двополярні (bipolar) крокові двигуни. В [2] показано логіку формування вхідних сигналів для однополярних двигунів. Кожна із цих методик має свої переваги і недоліки в плані функціонування та легкості реалізації. Найкращим варіантом для однополярного двигуна є методика microstepping (мікрокрокова) але й і найскладніша в плані реалізації. Більш детальніше про методики для однополярних двигунів можна почитати в [3]. Таку кількість методик можна також пояснити з погляду конструктиву однополярного двигуна в порівнянні із двополярним (біполярним), струм через обмотку якого прямує в одному напрямку, в біполярному двигуні струм через обмотку має прямувати і в зворотньому напрямку. В даному пості я не буду розглядати підсилючий каскад(Driver, H-bridge) і який з них краще вибрати, підібрати відповідний по струму і напрузі можна із вже існуючих схем.
       Схема контроллера буде мати наступний вигляд як на рис.1. По суті це простий автомат Мура із трьома основними елементами схеми це лічильник (counter_8), мультиплексор ( mux_stepper), та елемент таблиця вихідних бітових комбінацій (bit_const_half_step,  bit_const_full_step для однополярного(unipolar) двигуна і bit_const_bipolar_2coil для біполярного (bipolar) двигуна ). Всі керуючі сигнали для двигуна зведенні до керування лічильника. На вхід clk лічильника поступає із генератора імпульсів частоту якого можна вирахувати по вже існуючих методиках і яка буде залежити від RPM двигуна тобто максимальної кількості оборотів двигуна за хвилину. По приходу кактових імпульсів лічильник буде лічити по модулю 8, тобто перебирати по черзі адреси мультиплексора який в свою чергу буде видавати на вихід схеми відповідні фазові комбінації для двигуна. 


  Рис. 1 Схема контроллера крокового двигуна.

           В такий спосіб дуже легко настроїти схему під певний тип двигуна замінивши в схемі тільки один елемент таблиці бітових комбінацій рис.2 . 



Рис.2 Таблиці бітових комбінацій.
Результати симуляції схеми для однополярного(unipolar) крокового двигуна наведені на рис.3. 

Рис.3    Результати симуляції для однополярного (unipolar) двигуна.
      Увага!!!! Для правильного підключення до обмоток двигуна потрібно використовувати наступну таблицю!!!!!
  
Output from CPLD

Unipolar coil

Bipolar coil

stepper_out[3]
A
1a
stepper_out[2]
B
1b
stepper_out[1]
C
2a
stepper_out[0]
D
2b


Результати синтезу в CPLD серії MAX3000:
 Chip/                          Input     Output    Bidir                     Shareable
POF Device                Pins       Pins        Pins      LCs         Expanders      % Utilized
stepper_gdf

EPM3032ALC44-4     4         4             0           7                 0                21 %

User Pins:                     4         4             0