Views: 1009
В этой части только итог и версия 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: 944 Часто возникает задача когда необходимо предавать данные между модулями программы. Например, передать данные между файлами, или управлять работой модулей. Для этого создаем заголовочный файл и описываем наши переменные как …
LATINO – открытый проект ch-светомузыкиViews: 1742 Проект построенный на некоторых принципах ch-светомузыка. Проект ознакомительный предназначен, для самостоятельного построения простого и эффективного светосинтезатора. Вывод осуществляется на ВОУ собранной на драйверах HL1606. Для этого была …
Четырех канальный терморегулятор ch-4000Views: 3418 Четыре независимых канала регулирования температуры, одновременно можно подключить 16 датчиков температуры DS18B20 с удалением до трехсот метров. Можно для регулировки выбрать любой датчик, подключенный к устройству. Каждый канал может работать …
ESP8266 применение в проектахViews: 3781 (Актуально только для версий прошивки 1.хх) ESP8266 показала себя как надежное и безотказное устройство для обмена данными с применением WIFI. Я использую ESP8266 исключительно через UART, с применением AT …
MTouch® Модуль Емкостной Библиотеки для MPLAB®X Code Configurator (MCC)Views: 1413 Введение MTouch ® Модуль Емкостной Библиотеки для MPLAB ® X Code Configurator (MCC) позволяет быстро и легко генерировать решение кода на Cи для емкостной сенсорной кнопки, датчика приближения и слайдера.
Проект с использованием MCC часть 06Views: 1465 Изменим схему следующим образом добавим две тактовые кнопки BT1 и BT2. Теперь переключимся на конфигурацию выводов, для этого сделаем двойной клик в окне Ресурсы проекта на Pin Module. …
MPLAB® Code ConfiguratorViews: 1820 MPLAB ® Code конфигуратор (MCC) является свободно распространяемым плагином, это графическая среда программирования, которая генерирует бесшовный, легкий для понимания кода на Cи, чтобы вставить его в свой проект.
ch-светомузыка и AK4113Views: 1513 Пришло время вернуться к светомузыке. На сегодня использование аналогового входа стало непрактичным, на сегодня необходимо использовать S/PDIF и Toslink. С этим надо было как то разобрать, что это …
ESP8266 процедура получение данных даты и времени от серверов точного времени.Views: 6229 Эта функция доступна уже в версии 1.6.1. Для многих приложений, необходимо часы реального времени, если в вашем проекте есть модуль WiFI ESP8266, то легко можно сделать следующим образом. …
Trimax – кодирование и декодирование ИК-командViews: 2472 Первое, что надо понять назначение кнопок клавиш пульта, а также, что за кодирование реализовано в ИК- пульте. Для назначения клавиш обратимся к описанию, а для взлома кодирования воспользуемся …


