1. Без коррекции. Время нарастания тока: 7121 мкс.

2. С использованием добавочного сопротивления. Время нарастания тока: 870 мкс. Недостатком метода являются большие тепловые потери: 120 Вт для одного двигателя.

3. С использованием корректирующего устройства в виде передаточной функции. Время нарастания тока: 810 мкс. Недостатки метода: высокая загруженность микроконтроллера.

4. С использованием форсирующего импульса напряжения. Время нарастания тока: 296 мкс. Явных недостатков нет.

Из предложенных методов только последний показал удовлетворительные результаты: время нарастания 296 мкс. по сравнению с требуемым значением 780 мкс.

 

Реализация метода форсирующих импульсов в микрошаге ( MATLAB ).

В микрошаговом режиме существуют переходы между уровнями токов, но они меньше чем в полношаговом режиме. Например для выбранного ¼-шагового режима самый большой переход равен 0.39*Inom. Поэтому и форсирующие импульсы будут заметно меньше. Микроконтроллер способен очень быстро извлекать данные из стека (около 2 МГц), поэтому длительность импульсов можно задать с точностью 0.5 мкс.

 

Для каждого такта (а их 16) требуется вычислить длительность импульса. Если это делать в MATLAB потребуется 2 матрицы:

1. Ms(16,4) – амлитудные точки: для каждого такта их 4.

2. Mt(16,4) – временные точки: для каждого такта их также 4.

Освещаем алгоритм вычисления точек:

Ms=ones(16,4);

Mt=ones(16,4);

for i=1:16

Ms(i,1)=1;

Ms(i,2)=1;

Ms(i,3)=Kd*sin((i-1)*pi/8);

Ms(i,4)=Kd*sin((i-1)*pi/8);

if i>1

if Ms(i,3)>Ms(i-1,3)

Ms(i,1)=1;

Ms(i,2)=1;

else

Ms(i,1)=-1;

Ms(i,2)=-1;

end;

else

Ms(i,1)=1;

Ms(i,2)=1;

end;

t1=L*log(1/(1-(sin((i-2)*pi/8)-sin((i-1)*pi/8))*Kd))/(Rd+r)

t1=abs(t1);

Mt(i,1)=(i-1)*Tt+Tvt;

Mt(i,2)=(i-1)*Tt+t1;

Mt(i,3)=(i-1)*Tt+t1+Tvt;

Mt(i,4)=i*Tt;

end;

 

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

Таблица: “точки для форсирующих импульсов”

Ms =

1.0000 1.0000 0 0

1.0000 1.0000 0.0491 0.0491

1.0000 1.0000 0.0907 0.0907

1.0000 1.0000 0.1186 0.1186

1.0000 1.0000 0.1283 0.1283

-1.0000 -1.0000 0.1186 0.1186

-1.0000 -1.0000 0.0907 0.0907

-1.0000 -1.0000 0.0491 0.0491

-1.0000 -1.0000 0.0000 0.0000

-1.0000 -1.0000 -0.0491 -0.0491

-1.0000 -1.0000 -0.0907 -0.0907

-1.0000 -1.0000 -0.1186 -0.1186

-1.0000 -1.0000 -0.1283 -0.1283

1.0000 1.0000 -0.1186 -0.1186

1.0000 1.0000 -0.0907 -0.0907

1.0000 1.0000 -0.0491 -0.0491

Mt =

0.0000 0.0001 0.0001 0.0042

0.0042 0.0043 0.0043 0.0083

0.0083 0.0084 0.0084 0.0125

0.0125 0.0126 0.0126 0.0167

0.0167 0.0167 0.0167 0.0208

0.0208 0.0209 0.0209 0.0250

0.0250 0.0251 0.0251 0.0292

0.0292 0.0293 0.0293 0.0333

0.0333 0.0334 0.0334 0.0375

0.0375 0.0376 0.0376 0.0417

0.0417 0.0418 0.0418 0.0458

0.0458 0.0459 0.0459 0.0500

0.0500 0.0500 0.0500 0.0542

0.0542 0.0542 0.0542 0.0583

0.0583 0.0584 0.0584 0.0625

0.0625 0.0626 0.0626 0.0667

 

В MATLAB используем блок Repeating Sequence Interpolated1. В нем есть специальные поля для массивов имплитудных и отдельно для временных точек. Заносим туда данные из выше выведенной таблицы, и получаем:

Рис. 2.7.11.

 

Это управляющий сигнал для обмотки A, аналогичным образом строиться сигнал для обмотки B с той разницей что он сдвинут по фазе на 90 градусов. Теперь блок микроконтроллера пополнился корректирующим устройством:

 

Рис. 2.7.12.

 

Для анализа данных будем использовать общую модель всей системы, где задействованные все устройства:

Рис. 2.7.12.

 

Сейчас нас интересуют следующие осциллографы: control signal (управляющие сигналы), pwm signal (сигнал ШИМ-а с драйвера) и current (ток в обмотках).

Требуемая скорость по техническому заданию составляет 70 мм/сек, что в переводе примерно равно 300 шагам в секунду. Сравним графики токов с форсированием и без него, на этой скорости. (см. на чертеже). Видно что без форсирования ток отстаёт по фазе на примерно 30 градусов, при этом ошибка может составлять до 50% от требуемой величины. С применением форсирующего импульса ошибка не превышает 5% - что вполне допустимо.

 

2.8 Выводы к исследовательской части.

Обратимся к одноимённому листу А1, где изображены графики отклонений положения ротора по углу и по линейному перемещению. Замер произведён на довольно продолжительном участке времени 0.2 сек, чтобы оценить устоявшуюся ошибку. Фаза разгона не применяется, для оценки возможностей системы. Ротор набирает требуемую скорость вращения буквально за 100 мс, при этом ошибка по углу заметно выше той, которая наблюдается при равномерном вращении ротора. Поочерёдно был сделан замер при полношаговом режиме работы ШД, микрошаговом и микрошаговом с коррекцией. Результаты:

 

1. Полношаговый режим без коррекции: ошибка при постоянной скорости вращения составляет 0.26 мм. Что не удовлетворяет требованиям к системе.

 

2. Микрошаговый режим (дробление шага 1/4) без коррекции: ошибка при постоянной скорости вращения составляет 0.118 мм. Что не удовлетворяет требованиям к системе. Тем не менее удалось избавиться от зоны неустойчивости на низких частотах.

 

3. Микрошаговый режим (дробление шага 1/4) с коррекцией: ошибка при постоянной скорости вращения составляет 0.045 мм. Что удовлетворяет требованиям к системе (точность линейного перемещения 0.1 мм на скорости 70 мм/сек.). В качестве коррекции использовалась: форсирование тока кратковременными импульсами расчётной длительности.

Таким образом благодаря совместному использованию микрошага и форсирования токов в обмотках удалось избавиться от резонанса и повысить точность до требуемой величины.

 

 

3. Конструкторская часть.

 

 

3.1 Построение модуля драйвера.

Требуется менять полярность на обмотках двигателя, и управлять током посредством ШИМ. Для это необходим Н-мост и логика управления. Как вариант можно использовать отдельные силовые ключи и драйвера для их управления. Но схема получится очень сложной, появится множество ошибок при пайке. Поэтому я остановился на интеллектуальном мосте IR3220 компании International Rectifier. Также я рассматривал ещё несколько вариантов такого рода микросхем, но этот драйвер опережает их по всем параметрам. Следует заметить, что данный драйвер предназначен для управления двигателем постоянного тока, но 2 таких драйвера вполне способный полноценно управлять шаговым двигателем (то есть 2-мя обмотками), для этого следует написать соответствующую программу на микроконтроллере.

 

Для работы моста используется микросхема IR3220 (с 2-мя ключами верхнего уровня и логикой управления) и 2 транзистора-компаньона (транзисторы нижнего уровня) IRF7474.

 

Основные параметры из документации:

Рис 3.1

Особенность архитектуры:

 

Блок-схема IR3220 имеет следую­щие особенности:

1) каждая ветвь («стойка» Н-мос-та) независима от другой и имеет собственные схемы защиты;

2) входные сигналы (IN1 и IN2) являются логическими;

3) входные сигналы управляют коммутацией таким образом, чтобы исключить одновременное замыкание ключей верхнего и нижнего уровня одной ветви;

4) управление Н-мостом осущест­вляется с помощью формирователя ШИМ, сигналы которого поступают на драйверы обоих ключей нижнего уровня без учета того, которая из вет­вей Н-моста активирована;

5) работа микросхемы приостанав­ливается, если напряжение питания Vcc уменьшается ниже определенного предела и возобновляется в случае его возрастания, после превышения установленного порога.

 

Реализация указанных принципов обеспечивает надежность ИС без при­менения каких-либо внешних логи­ческих схем управления Н-мостом, а также расширяет ее функциональ­ные возможности.

 

Рис 3.2

 

Ключи верхнего уровня относятся к семейству интеллектуальных сило­вых ключей (intelligence power switches). Они имеют защиту отклю­чающего типа при перегрузке по то­ку, защиту от перегрева и ограниче­ние напряжения между стоком и ис­током (active clamp). Вне зависимости от того, какая ветвь Н-моста активна, оба ключа верхнего уровня участвуют в рассеи­вании энергии в течение периода ШИМ-сигнала. Тепловая защита ини­циирует отключение, как только тем­пература перехода любого из верхних ключей превысит установленный по­рог, независимо от того, которая ветвь является активной.

 

Схема включения которая предлагается из документации (рис 15)

 

Рис 3.3

 

Здесь все резисторы имеющие сопротивление 10 кОм будут заменены на 500 Ом, потому что входы у микросхемы имеют достаточно большое сопротивление. Для защиты от замыканий достаточно, резисторов на 500 Ом, и схема будет меньше подвержена помехам. Вход DG нужен для того чтобы указать драйверу значение 5-ти вольт, а не для питания. Резисторы на 56 Ом нужны для того чтобы сберечь затворы транзисторов от скачков тока. Конденсаторы на 22 мкФ – электролитический – для избавления от скачков тока и керамический на 0.1 мкФ для быстродействия.

В состав микросхемы входит блок, формирующий ШИМ-сигнал. Он со­стоит из генератора напряжения пи­лообразной формы с частотой около 20 кГц и компаратора напряжения. Пилообразный сигнал сравнивается с напряжением на выводе SS, в резуль­тате чего формируется ШИМ-сигнал, который поступает на ключи нижнего уровня. Пилообразный сигнал изме­няется в пределах 1...4 В, а коэффи­циент заполнения1 ШИМ-сигнала (K3) — пропорционально напряже­нию Vss, от 0 (Vss < 1 В) до 100% (Vss > 4 В).

 

 

Общая схема подключения к микроконтроллеру:

 

Рис 3.4

 

Вместо DC Motor у нас обмотка шагового двигателя. Получается для управления этим драйвером нужно 3 ножки контроллера: 2 (In1 и In2) логических для задания направления и остановки, 1 аналоговый (ss) для задания уровня ШИМ в драйвере. См. режимы работы моста:

 

Рис 3.5

 

 

Обоснование выбора резисторов для схемы драйвера.

Смотрите одноименный чертёж принципиальной схемы драйвера. На сигнальных цепях конденсаторы и резисторы используются в корпусах 0402, поскольку занимают минимум места на печатной платы, и имеют относительно высокую допустимую мощность рассеиваемого тепла 0,062 Вт. Рассмотрим все компоненты схемы, и то по каким причинами были выбраны их номиналы:

 

1. Резисторы R1-R4, по 56 Ом, в корпусе 0402, 0,062 Вт. Номинальное сопротивление строго из документации, для того чтобы сберечь затворы транзисторов от скачков тока.

2. Резисторы R6, R8, по 6,2 кОм, в корпусе 0402, 0,062 Вт. Эти резисторы подключаются к входу драйвера DG. Поскольку используется 2 драйвера, значит используем вдвое меньший номинал, по отношению к тому что рекомендуется в документации, чтобы сохранить помехоустойчивость.

3. Резисторы R5, R7, R9, R10 по 270 кОм, в корпусе 0402, 0,062 Вт. Ставятся перед логическими входами драйвера. Поскольку эти входы имеют большое входное сопротивления (порядка 1 мегаома) значение номинала не слишком критично. Выбирается оно из соображения безопасности, если провода сомкнуться, резисторы могут быть выбраны из интервала от 500 до 200 Ом.

4. Резисторы перед входами SS драйвера (эти входы имеют также высокое входное сопротивление) не ставятся, для увеличения быстродействия, поскольку на них подаётся ШИМ от микроконтроллера с частотой 20 кГц.

5. Конденсатор С1, электролитический 47 мкФ, 63в. Ёмкость выбирается в 2 раза выше рекомендуемого, поскольку используется 2 драйвера. Напряжение взято с 2-хкратным запасом в случае перепадов напряжения.

6. Конденсатор С2, керамический 1 мкф, 50 в. Минимальный корпус для такого конденсатора в чип исполнении: 1206. Взят с ёмкостью, в 10 раз превышающую рекомендуемую в документации, на тот случай, если нужно будет увеличивать частоту ШИМ.

Гнездо для платы выбрано стандартного числа жил для данной системы (10 штук). Исполнения: гнездо на плату выбрано из соображения низкой цены и надёжности.

 

Клеммник 305-021-12 современное решение для силовой электроники. Надёжное закрепление единичных проводников толщины от 0.5 мм до 2.0 мм.

Разводка платы драйвера.

Разводку будем осуществлять в программе Sprint-Layout 5.0 поскольку, этот программный продукт открыт для свободного скачивания (бесплатная). К тому же у неё приятный интерфейс, и богатая библиотека современных электронных компонентов. Единственным недостатком можно считать отсутствие автотарасировки, поэтому разводку платы придётся осуществлять вручную.

 

Выбираем сетку 1.27 мм, шаг между выводами у драйвера IR3220 и у транзисторов. Толщина сигнальных дорожек: 0.5 мм. Это оптимальный вариант для данного типа сетки. Толщина силовых дорожек, здесь уместно произвести расчёт в самой трассировочной программе. При клике на дорожке, она выдаёт ток, который она может выдержать. Возьмём номинальный ток 7 ампер по паспарту драйвера, для неё толщина дорожки окажется равной 2,13 мм, что вполне приемленно.

 

В качестве крепления сделаем 2 отверстия для болтов диаметром 3 мм. Распределим также компоненты так, чтобы управляющие сигналы подходили к плате с одной стороны, а клеммы были на другой стороне, а на плате сигнальные и силовые дорожки были как можно дальше друг от друга.

 

Входы платы драйвера для управления драйверами:

1. D1P1 – вход P1, 1-го драйвера.

2. D2P1 – вход P1, 2-го драйвера.

3. D1P2 – вход P2, 1-го драйвера.

4. D2P2 – вход P2, 2-го драйвера.

5. D1Ps – вход ss, 1-го драйвера (сюда подаётся ШИМ с МК).

6. D2Ps – вход ss, 2-го драйвера (сюда подаётся ШИМ с МК).

7. +5v – вход DG обоих драйверов.

8. GND – логическая земля обоих драйверов.

Рис 3.6

 

На рис 3.6 изображён выбранный порядок расположения этих проводников. Поскольку все линии для передачи сигналов между схемами в системе выбраны десятижильными, следовательно получилось 3 провода GND. Эти заземлённые провода ставятся рядом с линиями, по которым передаётся сигнал ШИМ, и подальше от логических информационных линий, чтобы снизить их взаимное электромагнитое влияние.

 

 

3.2 Построение модуля управления.

Для управления 3-мя шаговыми двигателями требуется 12 логических управляющих выводов и 6 каналов ШИМ (3 платы драйвера на каждый двигатель, плата имеет 4 логических входа и 2 аналоговых входа). Кроме этого нужно обрабатывать входные сигналы от концевых переключателей, а их 5 штук. У компьютера есть LPT-порт, с 17-ю контактами, которые можно использовать как логические входы/выходы, но их недостаточно. Поэтому в этом случает нужно использовать микроконтроллер.

 

Используем контроллеры AVR. AVR — семейство восьмибитных микроконтроллеров фирмы Atmel. Год разработки — 1996. Система команд микроконтроллеров AVR весьма развита и насчитывает в различных моделях от 90 до 133 различных инструкций. Большинство команд занимает только 1 ячейку памяти (16 бит). Большинство команд выполняется за 1 такт.

 

Минимальное требуемое количество ножек микроконтроллера. Помимо тех что были подсчитаны раннее (23 ножки для управления драйверами и принятия сигналов с концевиков) прибавим сюда пины для программирования по SPI-интерфейсу ( 4 вывода) и пины для принятия сигналов с компьютера. Предполагается, что для управления шаговым двигателем на более высоком уровне компьютер будет посылать логический импульс по одному проводу (не считая земли) для проворачивания ротора на один шаг, потребуется второй провод для указания направления вращения. Итак 6 пинов для принятия сигналов с компьютера, плюс ещё 2 резервных, если нужно будет послать некую информацию обратно. Назовём разъём LiLn (название будет обоснованно в описании программы), выводы разъёма.

 

Итого, получаем 35 выводов – минимальное число пинов микроконтроллера, которые будут входить в состав портов.

 

Больше всего подходит микроконтроллер ATMega128, по следующим параметрам:

1. Общее число ножек: 64. Число ножек, которые можно использовать в качестве входов/выходов: 54, чего с запасом достаточно (требуется 35).

2. Количество каналов ШИМ, которые можно включить на аппаратном уровне одновременно: 7. (требуется 6).

3. Оптимальная тактовая частота 8 МГц, большинство команд выполняются за 1 такт, значит одна команда выполниться за 0.125 мкс, что приемлемо для нашей математической модели.

 

 

Настройка уровней ШИМ.

При расчёте уровня ШИМ для конкретного тока в обмотке ШД нужно учитывать множество параметров электрической цепи: блок питания – драйвер – ШД, что достаточно сложно. Ток не пропорционален уровню ШИМ, в силу действия очень многих факторов. Есть очень простое решение этой проблемы: внести значение уровня ШИМ в энергонезависимую память микроконтроллера для каждого тока из круговой диаграммы. Используем EEPROM (англ. Electrically Erasable Programmable Read-Only Memory) — электрически стираемое перепрограммируемое ПЗУ (ЭСППЗУ), один из видов энергонезависимой памяти (таких как PROM и EPROM). Память такого типа может стираться и заполняться данными несколько десятков тысяч раз. Для настройки достаточно кнопки и 2-светодиодов (один светодиод для индикации текущего двигателя, другой для текущего тока), а также программы-сценария для структурированное внесения данных.

 

В качестве разъёмов используем для информационных входов/выходов DIP10, в который будет втыкаться вилка со шлейфом. Для питания 5-ю вольтами – клеммник 305-021-12.

 

В итоге, какие разъёмы и для чего следует предусматреть на плате управления:

1. Разъём DIP10 управления 1-м ШД.