ОПЫТНО-ЭКСПЕРИМЕНТАЛЬНАЯ ЧАСТЬ, Разработка структурно-функциональной схемы стенда управления шаговым двигателем, Возможные неполадки в работе шагового двигателя - Разработка стенда управления шаговым двигателем

Разработка структурно-функциональной схемы стенда управления шаговым двигателем

Постановка задачи

Предметом изучения и объектом управления был выбран униполярный шаговый двигатель, так как именно такой тип двигателя наиболее часто используется в принтерах, сканерах, плоттерах, станках с числовым управлением и в других цифровых устройствах, где требуется точность перемещения и позиционирования.

Ориентировочно, проект стенда должен содержать следующие блоки:

    - Блок А -- блок отработки навыков переключения обмоток униполярного шагового двигателя; - Блок Б -- блок отработки навыков разработки программных модулей для управления различными режимами шагового двигателя.

Структурно-функциональная схема блока отработки навыков переключения обмоток униполярного шагового двигателя -- Блока А

Очевидно, что Блок А должен быть примитивно-простым, но позволяющим получить простейшие навыки управления обмотками униполярного шагового двигателя. В связи с этим, самым простым решением является ручное управление с помощью контактных переключателей, например, с помощью кнопок или реле. Для этого, в среде электронного проектирования Isis Proteus, было проведено исследование1 модели MOTOR-STEPPER из библиотеки Isis Proteus. Библиотечные характеристики этого устройства приведены на рисунке 26.

библиотечные характеристики примитива isis proteus motor-stepper -- униполярного шагового двигателя

Рисунок 26 -- Библиотечные характеристики примитива Isis Proteus MOTOR-STEPPER -- униполярного шагового двигателя

Модель Блока А приведена на рисунке 27.

модель блока а, блока ручного управления

Рисунок 27 -- Модель Блока А, блока ручного управления

В качестве источников импульсов выбраны библиотечные примитивы примитивы Isis Proteus -- логические ноль (меньше 2,5 В) и единица (5 В) -- LOGICSTATE

Основные положения при разработке модели, основанные на анализе теоретической части:

    - При запитывании одной из половины обмоток происходит фиксирование вала двигателя в определенном положении. Если снять напряжение с этой обмотки и запитать другую, ротор повернется и зафиксируется в другом положении. Таким образом, если запитывать обмотки в определенной последовательности можно добиться вращения вала двигателя; - Одним из распространенных методов коммутации обмоток является метод с перекрытием или метод полушаговой последовательности, при котором двигатель делает шаг в половину основного (в данном случае при шаге 900, половиной шага будет значение 450); - Источником питания для модели выбран примитив внешнего источника питания Isis Proteus POWER (для ручного управления скорость вращения вала не имеет значения)

Результаты моделирования (результаты исследования 1) представлены в таблице 1 .

Таблица 1 -- Результаты моделирования ручного управления шаговым двигателем в прямом направлении

Скриншоты состояний

Наименования обмоток, на которые подан ток

Переключатель(состояние, биты)

Начальное состояние

(все реле -- разомкнуты)

2a

1000

2a2b

1100

2b

0100

2b1b

0110

1b

0010

1b1a

0011

1a

0001

* При моделировании угол примет значение 360, а затем обнулится

1a2a

1001

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

Центральным узлом такого блока должен быть, очевидно, микроконтроллер, выбор которого предполагает наличие таких характеристик, как стоимость и достаточное количество выводов. В линейке микроконтроллеров AVR фирмы ATMEL таким микроконтроллером является восьмиразрядный микроконтроллер Attiny2313, основные характеристики которого представлены в приложении А [стр. 12, 4]. Для управления униполярным шаговым двигателем необходимо количество выводов, равное четырем, поэтому недорогой и простой в управлении микроконтроллер Attiny2313 подходит по всем характеристикам.

модель блока б (первый вариант)

Рисунок 28 -- Модель Блока Б (первый вариант)

Чтобы удостовериться в правильности первого исследования, проведенного по блоку ручного управления, необходимо было провести исследование на тех же битовых значениях сигналов относительно обмоток шагового двигателя (исследование 2) применительно к микроконтроллеру Attiny2313, выбранному в качестве управляющего блока. Исходные значения битов представлены в таблице 3 (в прямом направлении) и в таблице 4 (в обратном направлении):

Таблица 3 -- Исходные значения битов для моделирования полушагового режима в прямом направлении

Значение угла поворота

Наименования обмоток, на которые подан ток

Битовые значения (для микроконтроллера)

7

6

5

4

3

2

1

0

450

2a

0

0

0

0

1

0

0

0

900

2a2b

0

0

0

0

1

1

0

0

1350

2b

0

0

0

0

0

1

0

0

1800

2b1b

0

0

0

0

0

1

1

0

2250

1b

0

0

0

0

0

0

1

0

2700

1b1a

0

0

0

0

0

0

1

1

3150

1a

0

0

0

0

0

0

0

1

360000

1a2a

0

0

0

0

1

0

0

1

Таблица 4 -- Исходные значения битов для моделирования полушагового режима в обратном направлении

Значение угла поворота

Наименования обмоток, на которые подан ток

Битовые значения (для микроконтроллера)

7

6

5

4

3

2

1

0

-450

1a

0

0

0

0

0

0

0

1

-900

1a1b

0

0

0

0

0

0

1

1

-1350

1b

0

0

0

0

0

0

1

0

-1800

1b2b

0

0

0

0

0

1

1

0

-2250

2b

0

0

0

0

0

1

0

0

-2700

2b2a

0

0

0

0

1

1

0

0

-3150

2a

0

0

0

0

1

0

0

0

-360000

2a1a

0

0

0

0

1

0

0

1

Но, при первом же запуске программы (листинг 1), угол поворота шагового двигателя показал значение -1350 (рисунок 29), вместо значения угла поворота +450. Анализ ситуации показал отсутствие цепи электрического тока (логическая 1 (5v) - ток микроконтроллера направлен навстречу току двигателя, электрическая цепь отсутствует)

модель блока б - блока управления шаговым двигателем микроконтроллером

Рисунок 29 - Модель Блока Б - блока управления шаговым двигателем микроконтроллером

Листинг 1 - Программа управления обмоткой 2а шагового двигателя микроконтроллером

This program was produced by the

CodeWizardAVR V2.05.1b Evaluation

Automatic Program Generator

© Copyright 1998-2011 Pavel Haiduc, HP InfoTech s. r.l.

Project : issled2

Version : 1

Date : 19.06.2015

Author : Freeware, for evaluation and non-commercial use only

Company : xrom

Comments:

Shagmk

Chip type : ATtiny2313A

AVR Core Clock frequency: 4,000000 MHz

Memory model : Tiny

External RAM size : 0

Data Stack size : 32

#include <tiny2313a. h>

#include <delay. h>

// Declare your global variables here

Void main(void)

{

// Declare your local variables here

// Crystal Oscillator division factor: 1

#pragma optsize-

CLKPR=0x80;

CLKPR=0x00;

#ifdef _OPTIMIZE_SIZE_

#pragma optsize+

#endif

// Input/Output Ports initialization

// Port A initialization

// Func2=In Func1=In Func0=In

// State2=T State1=T State0=T

PORTA=0x00;

DDRA=0x00;

// Port B initialization

// Func7=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out Func0=Out

// State7=1 State6=1 State5=1 State4=1 State3=1 State2=1 State1=1 State0=1

PORTB=0xFF;

DDRB=0xFF;

// Port D initialization

// Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In

// State6=P State5=P State4=P State3=P State2=P State1=P State0=P

PORTD=0x7F;

DDRD=0x00;

While (1)

{

PORTB=0b00001000;

Delay_ms(1500);

}

}

Чтобы создать электрическую цепь, необходимо в 3 бит (4-й пин микроконтроллера) записать 0 (рисунок 30, листинг 2).

модель блока б - блока управления шаговым двигателем микроконтроллером

Рисунок 30 - Модель Блока Б - блока управления шаговым двигателем микроконтроллером

Листинг 2 - Программа управления обмоткой 2а шагового двигателя микроконтроллером

This program was produced by the

CodeWizardAVR V2.05.1b Evaluation

Automatic Program Generator

© Copyright 1998-2011 Pavel Haiduc, HP InfoTech s. r.l.

Project : issled2

Version : 1

Date : 19.06.2015

Author : Freeware, for evaluation and non-commercial use only

Company : xrom

Comments:

Shagmk

Chip type : ATtiny2313A

AVR Core Clock frequency: 4,000000 MHz

Memory model : Tiny

External RAM size : 0

Data Stack size : 32

#include <tiny2313a. h>

#include <delay. h>

// Declare your global variables here

Void main(void)

{

// Declare your local variables here

// Crystal Oscillator division factor: 1

#pragma optsize-

CLKPR=0x80;

CLKPR=0x00;

#ifdef _OPTIMIZE_SIZE_

#pragma optsize+

#endif

// Input/Output Ports initialization

// Port A initialization

// Func2=In Func1=In Func0=In

// State2=T State1=T State0=T

PORTA=0x00;

DDRA=0x00;

// Port B initialization

// Func7=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out Func0=Out

// State7=1 State6=1 State5=1 State4=1 State3=1 State2=1 State1=1 State0=1

PORTB=0xFF;

DDRB=0xFF;

// Port D initialization

// Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In

// State6=P State5=P State4=P State3=P State2=P State1=P State0=P

PORTD=0x7F;

DDRD=0x00;

While (1)

{

PORTB=0b00000111;

Delay_ms(1500);

Полученный результат виртуальной модели удовлетворяет условиям позиционирования угла поворота шагового двигателя: +450. Поэтому таблицы временных битовых комбинаций в прямом направлении (+, Таблица 5, листинг 3) и в обратном (-, Таблица 6, листинг 4) примут следующий вид:

Таблица 5 -- Измененные исходные значения битов для моделирования полушагового режима в обратном (+) направлении

Значение угла поворота

Наименования обмоток, на которые подан ток

Битовые значения (для микроконтроллера)

7

6

5

4

3

2

1

0

450

2a

0

0

0

0

0

1

1

1

900

2a2b

0

0

0

0

0

0

1

1

1350

2b

0

0

0

0

1

0

1

1

1800

2b1b

0

0

0

0

1

0

0

1

2250

1b

0

0

0

0

1

1

0

1

2700

1b1a

0

0

0

0

1

1

0

0

3150

1a

0

0

0

0

1

1

1

0

360000

1a2a

0

0

0

0

0

1

1

0

This program was produced by the

CodeWizardAVR V2.05.1b Evaluation

Automatic Program Generator

© Copyright 1998-2011 Pavel Haiduc, HP InfoTech s. r.l.

Project : issled2

Version : 1

Date : 19.06.2015

Author : Freeware, for evaluation and non-commercial use only

Company : xrom

Comments:

Shagmk

Chip type : ATtiny2313A

AVR Core Clock frequency: 4,000000 MHz

Memory model : Tiny

External RAM size : 0

Data Stack size : 32

#include <tiny2313a. h>

#include <delay. h>

// Declare your global variables here

Void main(void)

{

// Declare your local variables here

// Crystal Oscillator division factor: 1

#pragma optsize-

CLKPR=0x80;

CLKPR=0x00;

#ifdef _OPTIMIZE_SIZE_

#pragma optsize+

#endif

// Input/Output Ports initialization

// Port A initialization

// Func2=In Func1=In Func0=In

// State2=T State1=T State0=T

PORTA=0x00;

DDRA=0x00;

// Port B initialization

// Func7=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out Func0=Out

// State7=1 State6=1 State5=1 State4=1 State3=1 State2=1 State1=1 State0=1

PORTB=0xFF;

DDRB=0xFF;

// Port D initialization

// Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In

// State6=P State5=P State4=P State3=P State2=P State1=P State0=P

PORTD=0x7F;

DDRD=0x00;

While (1)

{

PORTB=0b00000111;//45 grad

Delay_ms(1500);

PORTB=0b00000011;//90 grad

Delay_ms(1500);

PORTB=0b00001011;//135 grad

Delay_ms(1500);

PORTB=0b00001001;//180 grad

Delay_ms(1500);

PORTB=0b00001101; //225 grad

Delay_ms(1500);

PORTB=0b00001100;//270 grad

Delay_ms(1500);

PORTB=0b00001110;//315 grad

Delay_ms(1500);

PORTB=0b00000110;//360 --> 00 grad

Delay_ms(1500);

}

}

Таблица 6 -- Измененные исходные значения битов для моделирования полушагового режима в обратном (-) направлении

Значение угла поворота

Наименования обмоток, на которые подан ток

Битовые значения (для микроконтроллера)

7

6

5

4

3

2

1

0

-450

1a

0

0

0

0

1

1

1

0

-900

1a1b

0

0

0

0

1

1

0

0

-1350

1b

0

0

0

0

1

1

0

1

-1800

1b2b

0

0

0

0

1

0

0

1

-2250

2b

0

0

0

0

1

0

1

1

-2700

2b2a

0

0

0

0

0

0

1

1

-3150

2a

0

0

0

0

0

1

1

1

-360000

2a1a

0

0

0

0

0

1

1

0

This program was produced by the

CodeWizardAVR V2.05.1b Evaluation

Automatic Program Generator

Project : issled2

Version : 1

Date : 19.06.2015

Author : Freeware, for evaluation and non-commercial use only

Company : xrom

Comments:

Shagmk

Chip type : ATtiny2313A

AVR Core Clock frequency: 4,000000 MHz

Memory model : Tiny

External RAM size : 0

Data Stack size : 32

#include <tiny2313a. h>

#include <delay. h>

// Declare your global variables here

Void main(void)

{

// Declare your local variables here

// Crystal Oscillator division factor: 1

#pragma optsize-

CLKPR=0x80;

CLKPR=0x00;

#ifdef _OPTIMIZE_SIZE_

#pragma optsize+

#endif

// Input/Output Ports initialization

// Port A initialization

// Func2=In Func1=In Func0=In

// State2=T State1=T State0=T

PORTA=0x00;

DDRA=0x00;

// Port B initialization

// Func7=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out Func0=Out

// State7=1 State6=1 State5=1 State4=1 State3=1 State2=1 State1=1 State0=1

PORTB=0xFF;

DDRB=0xFF;

// Port D initialization

// Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In

// State6=P State5=P State4=P State3=P State2=P State1=P State0=P

PORTD=0x7F;

DDRD=0x00;

While (1)

{

PORTB=0b00011110;//-45 grad

Delay_ms(1500);

PORTB=0b00001100;//-90 grad

Delay_ms(1500);

PORTB=0b00001101;//-135 grad

Delay_ms(1500);

PORTB=0b00001001;//-180 grad

Delay_ms(1500);

PORTB=0b00001011; //-225 grad

Delay_ms(1500);

PORTB=0b00000011;//-270 grad

Delay_ms(1500);

PORTB=0b00000111;//-315 grad

Delay_ms(1500);

PORTB=0b00000110;//-360 --> 00 grad

Delay_ms(1500);

}

}

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

Вывод: большую нагрузку нельзя "напрямую" подключать к микроконтроллеру. В этом случае, нагрузку к микроконтроллеру необходимо подключать через транзистор, используя его как ключ [5].

Исходя из этого, и подобрав сопротивления, модель Блока Б принимает вид, представленный на рисунке 31:

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

Рисунок 31 - Модель Блока Б - блока управления шаговым двигателем микроконтроллером на транзисторных ключах

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

Рисунок 32 - Модель Блока Б - блока управления шаговым двигателем микроконтроллером на транзисторных ключах с кнопками управления

Окончательный вариант Блока Б с добавлением кнопок для управления шаговым двигателем в прямом (+) и обратном (-) направлении представлен на рисунке 32. Программный код управления представлен листингом 5. При этом битовые значения сигналов на соответствующих пинах микроконтроллера соответствуют значениям из таблицы 3 (для прямого (+) направления) и значениям из таблицы 4 (для обратного (-) направления), так как для работы транзистора на базу должно быть подано напряжение (в данном случае 5 В, то есть логическая единица)

This program was produced by the

CodeWizardAVR V2.05.1b Evaluation

Automatic Program Generator

© Copyright 1998-2011 Pavel Haiduc, HP InfoTech s. r.l.

Http://www. hpinfotech. com

Project : issled3

Version : 1

Date : 20.06.2015

Author : XROMOLUK

Company : XROM

Comments:

Upravl shag dvig

Chip type : ATtiny2313A

AVR Core Clock frequency: 4,000000 MHz

Memory model : Tiny

External RAM size : 0

Data Stack size : 32

#include <tiny2313a. h>

#include <delay. h>

// Declare your global variables here

Void main(void)

{

// Declare your local variables here

// Crystal Oscillator division factor: 1

#pragma optsize-

CLKPR=0x80;

CLKPR=0x00;

#ifdef _OPTIMIZE_SIZE_

#pragma optsize+

#endif

// Input/Output Ports initialization

// Port A initialization

// Func2=In Func1=In Func0=In

// State2=T State1=T State0=T

PORTA=0x00;

DDRA=0x00;

// Port B initialization

// Func7=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out Func0=Out

// State7=1 State6=1 State5=1 State4=1 State3=1 State2=1 State1=1 State0=1

PORTB=0xFF;

DDRB=0xFF;

// Port D initialization

// Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In

// State6=P State5=P State4=P State3=P State2=P State1=P State0=P

PORTD=0x7F;

DDRD=0x00;

While (1)

{if(PIND.0==0)

{

PORTB=0b00001000;

Delay_ms(1500);

PORTB=0b00001100;

Delay_ms(1500);

PORTB=0b00000100;

Delay_ms(1500);

PORTB=0b00000110;

Delay_ms(1500);

PORTB=0b00000010;

Delay_ms(1500);

PORTB=0b00000011;

Delay_ms(1500);

PORTB=0b00000001;

Delay_ms(1500);

PORTB=0b00001001;

Delay_ms(1500);

}

If(PIND.1==0)

{

PORTB=0b00000001;

Delay_ms(1500);

PORTB=0b00000011;

Delay_ms(1500);

PORTB=0b00000010;

Delay_ms(1500);

PORTB=0b00000110;

Delay_ms(1500);

PORTB=0b00000100;

Delay_ms(1500);

PORTB=0b00001100;

Delay_ms(1500);

PORTB=0b00001000;

Delay_ms(1500);

PORTB=0b00001001;

Delay_ms(1500);

}

}

}

Общая структурно-функциональная схема стенда управления шаговым двигателем с добавлением кнопки полного шага в прямом направлении представлена на рисунке 33. Окончательный вариант программы для Блока Б представлен на листинге 6.

проект стенда управления шаговым двигателем

Рисунок 33 -- Проект стенда управления шаговым двигателем

This program was produced by the

CodeWizardAVR V2.05.1b Evaluation

Automatic Program Generator

© Copyright 1998-2011 Pavel Haiduc, HP InfoTech s. r.l.

Project : issled3

Version : 1

Date : 20.06.2015

Author : XROMOLUK

Company : XROM

Comments:

Upravl shag dvig

Chip type : ATtiny2313A

AVR Core Clock frequency: 4,000000 MHz

Memory model : Tiny

External RAM size : 0

Data Stack size : 32

#include <tiny2313a. h>

#include <delay. h>

// Declare your global variables here

Void main(void)

{

// Declare your local variables here

// Crystal Oscillator division factor: 1

#pragma optsize-

CLKPR=0x80;

CLKPR=0x00;

#ifdef _OPTIMIZE_SIZE_

#pragma optsize+

#endif

// Input/Output Ports initialization

// Port A initialization

// Func2=In Func1=In Func0=In

// State2=T State1=T State0=T

PORTA=0x00;

DDRA=0x00;

// Port B initialization

// Func7=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out Func0=Out

// State7=1 State6=1 State5=1 State4=1 State3=1 State2=1 State1=1 State0=1

PORTB=0xFF;

DDRB=0xFF;

// Port D initialization

// Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In

// State6=P State5=P State4=P State3=P State2=P State1=P State0=P

PORTD=0x7F;

DDRD=0x00;

While (1)

{if(PIND.0==0)

{

PORTB=0b00001000;

Delay_ms(1500);

PORTB=0b00001100;

Delay_ms(1500);

PORTB=0b00000100;

Delay_ms(1500);

PORTB=0b00000110;

Delay_ms(1500);

PORTB=0b00000010;

Delay_ms(1500);

PORTB=0b00000011;

Delay_ms(1500);

PORTB=0b00000001;

Delay_ms(1500);

PORTB=0b00001001;

Delay_ms(1500);

}

If(PIND.1==0)

{

PORTB=0b00000001;

Delay_ms(1500);

PORTB=0b00000011;

Delay_ms(1500);

PORTB=0b00000010;

Delay_ms(1500);

PORTB=0b00000110;

Delay_ms(1500);

PORTB=0b00000100;

Delay_ms(1500);

PORTB=0b00001100;

Delay_ms(1500);

PORTB=0b00001000;

Delay_ms(1500);

PORTB=0b00001001;

Delay_ms(1500);

}

If(PIND.2==0)

{

PORTB=0b00001100;

Delay_ms(1500);

PORTB=0b00000110;

Delay_ms(1500);

PORTB=0b00000011;

Delay_ms(1500);

PORTB=0b00001001;

Delay_ms(1500);

}

}

}

Возможные неполадки в работе шагового двигателя

Вид неполадки

Причина

Рекомендации по устранению

Пропуск шагов

Некачественный блок управления двигателем (подделка драйвера)

Заменить драйвер

Неверные настройки драйвера

Неверно выбранное напря-жение питания и тока. Проверить нас-тройки повторно и отредактировать при необходимости

Двигатель перегружен

Нагрузка на двигатель слишком велика. Снизить скорость или поставить двигатель побольше

Бракованный двигатель

Прозвонить обмотки, проверить их сопротивление(должно совпадать с паспортным).

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

Заменить двигатель при необходимости.

Неточноережимов

Дребезг на контактах управляющих сигналов

Проверить пайку и изоляцию. При необходимости перепаять и заменить изоляцию

Проблемы с генерацией сигналов

Заменить драйвер

Похожие статьи




ОПЫТНО-ЭКСПЕРИМЕНТАЛЬНАЯ ЧАСТЬ, Разработка структурно-функциональной схемы стенда управления шаговым двигателем, Возможные неполадки в работе шагового двигателя - Разработка стенда управления шаговым двигателем

Предыдущая | Следующая