вним завданням програми є формування імпульсних послідовностей для 4-х обмоток двигуна. Оскільки для цих послідовностей тимчасові співвідношення є критичними, формування виконується в обробнику переривання таймера 0. Можна сказати, основну роботу програма робить саме в цьому обробнику. Блок-схема обробника наведена на рис. 31. br/>В
Рис. 31. Блок-схема обробника переривання таймера 0.
Безсумнівно, було б зручніше використовувати таймер 1, так як він 16-розрядний і здатний викликати періодичні переривання по збігу з автоматичним обнуленням. Однак він зайнятий формуванням за допомогою ШІМ опорного напруги для компараторів. Тому доводиться перезавантажувати таймер 0 у перериванні, що вимагає деякої коригування завантажується величини і викликає деякий джіттер, який, проте, на практиці не заважає. В якості основної тимчасової бази обраний інтервал 25мкс, який і формується таймером. З такою дискретністю можуть формуватися тимчасові послідовності фаз, такий же період має і ШІМ стабілізації струму у фазах двигуна. Для формування періоду повторення кроків використовується програмний 16-розрядний таймер STCNT. На відміну від таймера 0, його завантажувальна величина не є константою, так як саме вона визначає швидкість обертання двигуна. Таким чином, перемикання фаз відбувається тільки при переповненні програмного таймера. Послідовність чергування фаз задана таблично. У пам'яті програм мікроконтролера є три різних таблиці: для полношагового режиму без перекриття фаз, полношагового з перекриттям і для полушагового режиму. Усі таблиці мають однакову довжину 8 байт. Потрібна таблиця на початку роботи завантажується в ОЗУ, що дозволяє найбільш просто переходити між різними режимами роботи двигуна. Вибірка значень з таблиці відбувається за допомогою покажчика PHASE, тому перемикання напрямку обертання двигуна теж здійснюється дуже просто: для обертання вперед потрібно інкрементіровать покажчик, а для обертання назад - декрементіровать. Сама В«ГоловнаВ» змінна в програмі - це 24-бітна знакова мінлива VC, яка містить значення поточної швидкості. Знак цієї змінної визначає напрямок обертання, а значення - частоту проходження кроків. Нульове значення цієї змінної говорить про те, що двигун зупинений. Програма в цьому випадку вимикає струм всіх фаз, хоча в багатьох додатках в цій ситуації потрібно залишити включеними поточні фази і лише дещо зменшити їх струм, забезпечивши цим утримання положення двигуна. При необхідності така зміна логіки роботи програми зробити дуже просто. Таким чином, у разі переповнення програмного таймера STCNT відбувається аналіз значення змінної VC, у разі позитивного значення покажчик PHASE инкрементируется, а в випадку негативного - декрементируется. Потім з таблиці вибирається чергова комбінація фаз, яка виводиться в порт. У разі нульового значення VC покажчик PHASE не змінюється, і в порт виводяться всі нульові значення. p> Величина T, якій слід завантажувати таймер STCNT, однозначно пов'язана зі значенням змінної VC. Однак переклад частоти в період займає досить багато часу, тому ці обчислення проводяться в основній програмі, і не на кожному кроці, а набагато рідше. Взагалі, ці обчислення потрібно періодично робити тільки під час розгону або гальмування. В інших випадках швидкість, і, відповідно, період повторення кроків, не змінюються. Для здійснення шим-стабілізації струму фази повинні періодично включатися, а потім, при досягненні струмом заданого рівня, вимикатися. Періодичне включення виробляється у перериванні таймера 0, для чого навіть у разі відсутності переповнення програмного таймера STCNT в порт виводиться поточна комбінація фаз. Відбувається це з періодом 25мкс (що відповідає частоті ШІМ 40кГц). Вимиканням фаз управляють компаратори, виходи яких підключені до входів переривання INT0 і INT1. Переривання дозволені після того, як струм фаз включається, і забороняються відразу після перемикання компараторів. Це виключає їх повторну обробку. У обробниках переривань відбувається тільки відключення відповідних фаз (рис. 32).
В
Рис. 32. Блок-схема обробника переривань INT0 і INT1. p> Процеси, що відбуваються при шим-стабілізації струму, показані на рис. 33. Особливо слід відзначити, що струм в датчику струму має переривчастий характер навіть у тому випадку, якщо струм обмотки не переривається. Це пов'язано тим, що під час спаду струму його шлях не проходить через датчик струму (а проходить через діод).
В
Рис. 33. Процес Шим-стабілізації струму. br/>
Потрібно сказати, що аналогова частина системи шим-стабілізації струму фаз двигуна є досить В«ПримхливоїВ». Справа в тому, що сигнал, що знімається з датчика струму, містить велику кількість перешкод. Перешкоди виникають в основному в моменти комутації обмоток двигуна, причому як В«своєїВ», так і В«чужийВ» фази. Для правильної роботи схеми потрібно коректна розводка друкованої плати, особливо це стосується земляних провідників. Можливо, ...