ПредишенСледващото

Реализирал съм до този момент за една и съща ос, тъй като машини механика в проекта. Тези контролери се наричат ​​стъпка / реж. И са най-евтиният начин да се контролира машината. защото подобна машина, но със собствените си казват "мозък" е скъпо. Това устройство е линк синхронизация между компютъра и водача да управлява стъпковия мотор. Така стъпка - стъпка, реж - посока. Разбира се на компютъра трябва да е настроен да блокира предварително spetsializirovannnoe софтуер. Благословението на морето.
Снимката по-долу е моята версия на реализацията на това устройство, нещо, което сте добавили I, но основите са едни и същи. Естествено, такова устройство претендира да база субстрат, като за нормална работа на машината е необходимо повече или по-малко честен обратна връзка.

Така че контролерът е посредник устройство между капитана и изпълнение на механизма. Когато устройството за позициониране и компютърна програма, която се използва за извършване - двигателя. Контролерът получава сигнал от компютъра. процеси и контрол на водача.
Номерата на фигурата:
1. Изходна Controller - шофьор.
2. Вход компютър - контролер.
3. Шофьорът на изход - изпълняващата устройството.
в съединение програмен интерфейс 4..
5. Вход шофьор - контролер.

Дизайнът на контролера е необходимо първо да се определят параметрите на бъдещето на машината, т.е. изберете подходящите стъпкови двигатели или функции подобни. устройството използвайки.
Това, което трябва да осъзнаем:
1. Трябва да прочетете ръководството и темпото. За избирателната стъпка е да персонализирате прекъсването на входящия сигнал. За да се вземе някаква посока ПИН за четене еластаза получени. Прекъсваме определяне видяхме в бутона статия Свържете се с AVR. Стъпка №12.
2. Настройте PWM, в последния запис (стъпка №14).
3. Задайте минималното възможно закъснение между стъпките, валът може да provarachivatsya.
4. Изпишете стъпка алгоритъм. Ето няколко теории. Този алгоритъм зависи от двигателя, избран от нас. I хибриден еднополюсен. Какво искаш да кажеш хибрид, което означава, че той съчетава едновременно променливите и постоянните магнити. Една от стъпките на двигателя композира или 3.6 (4) стълбове градуса. или 1.8 - 0.9 градуса (8 стълбове). Т.е. стъпка зависи от броя на полюсите на статора. Имам 6-ти проводници, т.е. 4-полюсен, ъгълът на въртене на 3.6. Как става това? По-долу е анимация работата на стъпков двигател. (Взети от Wikipedia).

ротор статор и мотор има зъби в определени позиции на острие на ротора са разположени точно срещу зъбите на статора, и между някои от зъбите на статора. роторни зъби осигуряват минимално съпротивление на магнитната верига на определени позиции на ротора, който подобрява статична и динамична въртящ момент. Когато захранването се прилага към роторната намотка захранвани поправки зъби срещу поле, и това е предвидено по стъпка.
За да се намали стъпките и uvelechenie дискретен характер на революцията, ние можем да осигурим програма половин стъпка.
По-долу е таблицата с истината за режима на степер и polushagovogo.

Пълен режим стъпка

Режим Етаж стъпка

Какво е polushagovy режим - когато всеки втори етап само една фаза е под напрежение, а в други случаи две енергия. В резултат на ротора ъглово изместване на половин ъгъл на наклон. В допълнение към намаляване на метода на крачка размер контрол частично позволява да се отървете от феномена резонанс.

В програмата си, разбрах режим пълен стъпка. Ами използва част от програмите на предходните членове, които пишем програмата.
/ * Както винаги, започнете с капачки, ни sdes да се свърже три основни библиотека: входно-изходния сигнал и прекъсва * /
# определят F_CPU 10000000UL // 10 MHz
#include
#include
#include
летливи Int pwm_x, x_sleep; // подкрепа променливата е
# определят п 15; // минималната допустима забавяне
/ * Прекъсване на входния сигнал * /
СИГНАЛ (SIG_INTERRUPT0) // прекъсване обработка
<
x_sleep = 0;
pwm_x = 0;
OCR1A = 255; // 5с разгледани в предишния пост №14.
/ * Прочетете пинов държавата и определя посоката * /
ако (bit_is_clear (PINC, 4)) // когато Бит 4 е 0
<
/ * След това трябва да предписва алгоритъм за движение на моторни темпото. * /
PORTA | = _BV (PA0);
PORTA =

_BV (РА1);
PORTA =

_BV (PA2);
PORTA =

_BV (PA3);
_delay_ms (N); / * Забавяне се характеризира със скоростта на въртене на вала, ненужно. твърде бързо отваряне ключов двигател просто ще "издърпвам" не трябва да се справи provarachivatsya * /
PORTA =

_BV (PA0);
PORTA | = _BV (РА1);
PORTA =

_BV (PA2);
PORTA =

_BV (PA3);
_delay_ms (N);

_BV (PA0);
PORTA =

_BV (РА1);
PORTA | = _BV (PA2);
PORTA =

_BV (PA3);
_delay_ms (N);

_BV (PA0);
PORTA =

_BV (РА1);
PORTA =

_BV (PA2);
PORTA | = _BV (PA3);
_delay_ms (N);

pwm_x = 1;
x_sleep = 0;
>
иначе, ако (bit_is_set (PINC, 4)) // Когато Бит 4 е 1
PORTA =

_BV (PA0);
PORTA =

_BV (РА1);
PORTA =

_BV (PA2);
PORTA | = _BV (PA3);
_delay_ms (N);

_BV (PA0);
PORTA =

_BV (РА1);
PORTA | = _BV (PA2);
PORTA =

_BV (PA3);
_delay_ms (N);

_BV (PA0);
PORTA | = _BV (РА1);
PORTA =

_BV (PA2);
PORTA =

_BV (PA3);
_delay_ms (N);

PORTA | = _BV (PA0);
PORTA =

_BV (РА1);
PORTA =

_BV (PA2);
PORTA =

_delay_ms (N);
pwm_x = 1; // променлива да се определи оста на активиране
x_sleep = 0;
>
>

вътр главния (свободен) // в началото на създаването на програмата
DDRB = 0xfb; // ВХОД PB2
DDRD = 0xf3; // пристанищни щифтове Pd2 и PD3 - входове
DDRC = 0x8f; // заключения PC4,5,6 пристанищни - Входове
DDRA = 0xff; // всички изхода на изхода 1, 0 -Log
ПОРТА = 0x00;
// направят първоначалните настройки за външно прекъсване, докато за INT0
GICR = 0 х 40;
MCUCR = 0 х 02; // на падане ръба
SEI (); // Прекъсване Enable световен мащаб по време на програмата
// зададете настройките за PWM брояч регистър
TCCR1A = (1< TCCR1B = (1<

/ * OCR1A на този регистър се сравняват с броене регистър, изисква постоянна PWM. т.е. Молим OSR1A малко 255. като преброяване модул 255 ето * /
докато (1)
<
// безкраен цикъл
ако (pwm_x == 1)
// глобален регистър, който определя по учредяване ос
<
/ * Loop да влезе в режим на заспиване * /
докато ((PIND2! = 0) (x_sleep <= 750 )) /*если на пине по шагам ноль, больше 750 мс, то переводим двигатель в удержание с 20% ШИМом*/
_delay_ms (1);
x_sleep ++; // глобален регистър, който определя режима на сън
pwm_x = 0;
OCR1A = 50;
>
>
още
<
OCR1A = 50;
pwm_x = 0; / * Тази променлива, ако е необходимо се използват няколко оси * /
>
>
> // затваряне скоба на основната програма

Свързани статии

Подкрепете проекта - споделете линка, благодаря!