Униполярный шаговый двигатель – часть 2

Views: 1053


В этой части только итог и версия 2.0 универсальной, которая позволяет управлять шаговым двигателем во всех трех режимах и 3.0 специальной библиотеки только для одного полушагового режима.

В этих библиотеках приметен метод когда данные управления шаговым двигателем собраны в массивы и в зависимости от требуемого режима используется тот или иной массив данных.

Последний режим который бы хотелось рассмотреть это полушаговый режим. В этом режиме потребление максимальное, но и мощность которую способен отдать ШД на вал также максимальна, но в нем можно использовать максимальную скорость вращения двигателем которая в предыдущих режимах недостижима. В суммарном значении из-за скорости работы общее потребление энергии может быть значительно ниже. По этой причине его рекомендуется применять на практике.

Из сканирования работы фаз шагового двигателя видно, то цикл управления фазы “как-бы” разбит на 3 части, при этом постоянно напряжение подается на один или два полюса. Это обеспечивать в такой схемотехники максимальный вращающийся момент.

Визуально управление ШД можно представить так:

Функция работы шагового двигателя для версии 2 будет выглядеть так:

void TMR2_ISR(void)
{
uint8_t maska;
static uint8_t stepp;
//------------------------------------------------------------------------------
    maska = (uint8_t)(LATC&0xF0);           // загрузить текущее значение регистра и очистить биты для шагового
    if(!steps)
    {
        LATC = maska;                       //
        PIE4bits.TMR2IE = 0;
    }
    else
    {
        if(uprlfaz==2) 
        {
            if(direction)
            {
                LATC = (uint8_t)(one_and_two_phase[stepp--]|maska);    // загрузить текущее значение для управления шаговым двигателем
                if(stepp==255)stepp=7;
            }
            else
            {
                LATC = (uint8_t)(one_and_two_phase[stepp++]|maska);    // загрузить текущее значение для управления шаговым двигателем
                if(stepp>7)stepp=0;
            }
        }
        else if(uprlfaz==1)
        {
            if(direction)
            {
                LATC = (uint8_t)(two_phase[stepp--]|maska);    // загрузить текущее значение для управления шаговым двигателем
                if(stepp==255)stepp=3;
            }
            else
            {
                LATC = (uint8_t)(two_phase[stepp++]|maska);    // загрузить текущее значение для управления шаговым двигателем
                if(stepp>3)stepp=0;
            }
        }
        else
        {
            if(direction)
            {
                LATC = (uint8_t)(one_phase[stepp--]|maska);    // загрузить текущее значение для управления шаговым двигателем
                if(stepp==255)stepp=3;
            }
            else
            {
                LATC = (uint8_t)(one_phase[stepp++]|maska);    // загрузить текущее значение для управления шаговым двигателем
                if(stepp>3)stepp=0;
            }
        }
//------------------------------------------------------------------------------
        steps--;                            // уменьшить шаг 
    }
//------------------------------------------------------------------------------
    // clear the TMR2 interrupt flag
    PIR4bits.TMR2IF = 0;

    if(TMR2_InterruptHandler)
    {
        TMR2_InterruptHandler();
    }
}

 


Файлы для загрузки V2.0

Значок

Униполярный шаговый двигатель - часть 2 (v2.0) 601.69 KB 54 downloads

* Revision history: v 2.0 * работает совместно с таймером...

Для компактности и эффективности все таки стоит отказаться от универсальности и использовать только алгоритм который нужен в конкретном изделии.


Компактная версия библиотеки V3.0 – в которой используется только пошаговый режим в этом режиме есть преимущество не только в мощности, но и в скорости управления режим работы. А чем выше скорость тем тише работает двигатель (ниже вибрационный шум) и естественно падает суммарная потребляемая мощность.

Файлы для загрузки V3.0

Значок

Униполярный шаговый двигатель - часть 2 (v3.0) 598.64 KB 75 downloads

* Библиотека управления шаговым двигателем *...


Это может быть интересно


  • Просто о структурах и объединениях в СиПросто о структурах и объединениях в Си
    Views: 2391 Какие задачи нам позволяют решать структуры и объединения? Для разработчика встроенных систем эффективность и компактность кода всегда на первом месте. Если программировании на Ассемблере ты сам определяешь как …
  • Дифференциальный терморегуляторДифференциальный терморегулятор
    Views: 4161 Дифференциальный терморегулятор ch-3020 Назначение. Ch-c3020 представляет собой дифференциальный терморегулятор. Основное назначение солнечные системы горячего водоснабжения, а также вентиляционные системы управление притоком свежего воздуха. Контроллер позволяет работать пяти режимах. …
  • Проект с использованием MCC часть 05Проект с использованием MCC часть 05
    Views: 2232 Эту часть назовем так как избавься от delay, там где а это реально не надо. Для это нам потребуется научиться использовать прерывания и работать с таймерами. Что такое …
  • Регулятор влажности ch-3800Регулятор влажности ch-3800
    Views: 1564   И еще один проект на плате ch-c3xxx –  универсальный регулятор влажности ch-3800. Регулятор позволяет работать как в режиме индикатора влажности, так и в режиме регулятора. Рабочий диапазон …
  • OLED RET012864E/REX012864JOLED RET012864E/REX012864J
    Views: 1606 RET012864E/REX012864J ОЛЕД индикатор производитель Raystar-Optronics приобретался в http://www.microchip.ua/ к сожалению никакой информации на сайте поставщика нет. Поэтому решил работу с этой версией индикатора на драйвере SSD1305 предоставить на своем сайте. Так как …
  • Analog-to-Digital Converter with Computation Technical BriefAnalog-to-Digital Converter with Computation Technical Brief
    Views: 1512 Аналого-цифровой преобразователь с вычислительным модулем. ВВЕДЕНИЕ Аналого-цифровой преобразователь (ADC) с вычислительным модулем (ADC2) в 8-разрядном микроконтроллере Microchip имеет встроенные вычислительные функции, которые обеспечивают функции пост-обработки, такие как передискретизация, …
  • Проект с использованием MCC часть 12-2Проект с использованием MCC часть 12-2
    Views: 1225 Настало время для изучения шины I2C. Изучать будем на примере работы с индикатором RET012864E. Что изменили со старой схемы: В прошлой теме я затупил и не добавил подтягивающие резисторы …
  • LCD индикаторы на драйвере ML1001LCD индикаторы на драйвере ML1001
    Views: 2060  ML1001 – статический LCD GOG (чип в стекле) драйвер для 40-сегментного LCD в позолоченном противоударном исполнении. На них можно каскадно строить цельные из 80 или 120 сегментов LCD индикаторы. …
  • REFERENCE CLOCK OUTPUT MODULEREFERENCE CLOCK OUTPUT MODULE
    Views: 609 REFERENCE CLOCK OUTPUT MODULE Модуль формирования опорного тактового сигнала Модуль опорного тактового сигнала обеспечивает возможность посылать сигнал синхронизации на тактовый опорный выходной контакт или контакты (CLKR) в зависимости от …
  • Гаджеты для домашней автоматики – Датчик приближенияГаджеты для домашней автоматики – Датчик приближения
    Views: 2215 Управление светодиодным освещением – Датчик приближения. Данный гаджет предназначен для управления внутренним освещением мебели. Датчик позволяет определить закрытие или открытие дверцы или ящика и при этом включать или …



 

Поделись этим!

Catcatcat

catcatcat

Development of embedded systems based on Microchip microcontrollers.

Продолжайте читать

НазадДалее