Differences

This shows you the differences between two versions of the page.

Link to this comparison view

ru:examples:motor:stepper [2010/12/26 19:54] – создано eduardtlmkru:examples:motor:stepper [Unknown date] (current) – removed - external edit (Unknown date) 127.0.0.1
Line 1: Line 1:
-====== Шаговый двигатель ====== 
  
-//Необходимые знания: [HW] [[et:hardware:homelab:motor]], [AVR] [[et:avr:io]], \\ [LIB] [[et:software:homelab:library:module:motor]], [LIB] [[et:software:homelab:library:delay]]// 
- 
-===== Теория ===== 
- 
-[{{  :examples:motor:stepper:stepper.jpg?220|Шаговый двигатель}}] 
- 
-Шаговые двигатели широко применяются в приложениях, требующих точность. В отличие от двигателя постоянного тока у шагового двигателя отсутствуют щетки и коммутатор - для этого там несколько отдельных обмоток, которые коммутируются внешней электроникой (драйвером). Вращение ротора происходит за счет коммутации обмоток шаг за шагом, без обратной связи. Здесь проявляется и один недостаток шаговых двигателей - в случае механической перегрузки, когда ротор не двигается, шаги начинают путаться и движение становится неточным. По виду обмоток, шаговые двигатели разделяются на два типа: униполярные и биполярные шаговые двигатели. По строению их делят еще на три вида: 
- 
-  * С переменным магнитным сопротивлением (высокая точность, низкий крутящий момент, низкая цена) 
-  * С постоянным магнитом (низкая точность, высокий крутящий момент, низкая цена) 
-  * Гибридный (высокая точность, высокий крутящий момент, высокая цена) 
- 
-У шаговых двигателей с переменным магнитным сопротивлением зубчатые обмотки и зубчатый ротор из железа. Максимальная сила тяги возникает при перекрытии зубьев обоих сторон. В шаговых двигателях с постоянным магнитом, как следует из названия, есть постоянный магнит, который ориентируется в зависимости от полярности обмотки. В гибридных используются обе технологии. 
- 
-Независимо от модели шагового двигателя для создания одного полного оборота вала (360 градусов) требуется сотня коммутационных шагов. Для обеспечения стабильного и плавного движения используют подходящую управляющую электронику, которая управляет двигателем в соответствии с его параметрами (инертность ротора, крутящий момент, резонанс и т.д.). Вдобавок в управляющей электронике можно применять различные методы коммутации. Коммутацию последовательно по одной обмотке называют полным шагом, но если коммутируется поочередно одна и две обмотки, то это называется полушагом. Используют так же синусоидальные микрошаги, что дает особую точность и плавность управления. 
- 
-~~PB~~ 
- 
-**Униполярный шаговый двигатель** 
- 
-[{{  :examples:motor:stepper:motor_stepper_unipolar.png?250|Обмотки униполярного шагового двигателя}}] 
- 
-Униполярный шаговый двигатель имеет пять или шесть проводов. В соответствии со схемой привода запускается разом только одна четвертая обмоток. Линии //Vcc// обычно соединяются с положительным питающим напряжением двигателя. Концы обмоток 1a, 1b, 2a, и 2b соединяются при коммутации через транзисторы только с землей, в связи, с чем их управляющая электроника довольно простая. 
- 
-**Биполярный шаговый двигатель** 
- 
-[{{  :examples:motor:stepper:motor_stepper_bipolar.png?250|Обмотки биполярного шагового двигателя}}] 
- 
-Биполярный шаговый двигатель отличается от униполярного шагового двигателя тем, что полярность обмоток изменяется во время коммутации. Разом активируется половина обмоток, что обеспечивает в сравнении с униполярными шаговыми двигателями большую эффективность. У биполярных шаговых двигателей четыре провода, которые все соединяются отдельно полумостом. При коммутации полумосты прикладывают к концам обмоток положительное или отрицательное напряжение. Униполярные шаговые двигатели можно запускать и с помощью биполярного драйвера: для этого нужно соединить только линии обмоток 1a, 1b, 2a и 2b (//Vcc// остается не соединенным). 
- 
-Необходимые коммутации полного шага и полушага шаговых двигателей с обоими видами обмоток отображает следующая таблица. Так как в случае драйвера униполярного шагового двигателя происходит только отпирание транзисторов, то эти шаги представлены логическими числами 0 и 1. Управление биполярным шаговым двигателем может потребовать больше сигналов, и его шаги представлены выходной полярностью драйвера. 
- 
-^ ^   Униполярный   ^^^^   Биполярный   ^^^^ 
-^ Шаг ^ 1A ^ 2A ^ 1B ^ 2B ^ 1A ^ 2A ^ 1B ^ 2B ^ 
-^   Полный шаг   ^^^^^^^^^ 
-| 1 ^ 1 | 0 | 0 | 0 ^ + | - | - | - | 
-| 2 | 0 ^ 1 | 0 | 0 | - ^ + | - | - | 
-| 3 | 0 | 0 ^ 1 | 0 | - | - ^ + | - | 
-| 4 | 0 | 0 | 0 ^ 1 | - | - | - ^ + | 
-^   Полушаг   ^^^^^^^^^ 
-| 1 ^ 1 | 0 | 0 | 0 ^ + | - | - | - | 
-| 2 ^ 1 ^ 1 | 0 | 0 ^ + ^ + | - | - | 
-| 3 | 0 ^ 1 | 0 | 0 | - ^ + | - | - | 
-| 4 | 0 ^ 1 ^ 1 | 0 | - ^ + ^ + | - | 
-| 5 | 0 | 0 ^ 1 | 0 | - | - ^ + | - | 
-| 6 | 0 | 0 ^ 1 ^ 1 | - | - ^ + ^ + | 
-| 7 | 0 | 0 | 0 ^ 1 | - | - | - ^ + | 
-| 8 ^ 1 | 0 | 0 ^ 1 ^ + | - | - ^ + | 
- 
-===== Практика ===== 
- 
-Цель упражнения запустить биполярный шаговый двигатель, вместо чего можно использовать по приведенному выше методу и униполярный двигатель. На плате модуля «Двигателя» имеются два драйвера L293D, которые управляются четырьмя входными выводами микроконтроллера. Каждый вывод обозначает один конец полярности обмотки. Напряжение конца обмотки положительное, если вывод высокий, и отрицательное, если вывод низкий. Концам 1A, 1B, 2A и 2B соответствуют выводы микроконтроллера PB0, PB1, PB2 и PB3. 
- 
-Для управления биполярным шаговым двигателем в библиотеке Домашней Лаборатории есть функция //bipolar_init//, которая настраивает выводы выходом и функция //bipolar_halfstep//, которая совершает вращение на определенное количество полушагов. Коммутация происходит по таблице полушагов, но используются более сложные битовые операции. 
- 
-<code c> 
-// 
-// Подготовка управления биполярного шагового двигателя 
-// 
-void bipolar_init(void) 
-{ 
- DDRB |= 0x0F; 
- PORTB &= 0xF0; 
-} 
- 
-// 
-// Передвижение биполярного шагового двигателя полушагами 
-// 
-void bipolar_halfstep(signed char dir, 
- unsigned short num_steps, unsigned char speed) 
-{ 
- unsigned short i; 
- unsigned char pattern, state1 = 0, state2 = 1; 
- 
- // Утверждение направления +- 1 
- dir = ((dir < 0) ? -1 : +1); 
- 
- // Осуществление полушагов 
- for (i = 0; i < num_steps; i++) 
- {  
- state1 += dir; 
- state2 += dir; 
- 
- // Создание шаблона 
- pattern = (1 << ((state1 % 8) >> 1)) | 
-           (1 << ((state2 % 8) >> 1)); 
-  
- // Обозначение выхода 
- PORTB = (PORTB & 0xF0) | (pattern & 0x0F); 
- 
- // Создание паузы для ожидания выполнения шага 
- sw_delay_ms(speed); 
- } 
- 
- // Остановка двигателя 
- PORTB &= 0xF0; 
-} 
-</code> 
- 
-Использование функций демонстрирует пример программы, которая поворачивает двигатель попеременно в одну и другую сторону на 200 полушагов. Скорость вращения двигателя определяет длинна паузы, создаваемая между шагами. Если паузу настроить слишком маленькой, то двигатель не успевает осуществлять вращение в связи с инертностью ротора и вал не двигается. 
- 
-<code c> 
-// 
-// Тест-программа биполярного шагового двигателя 
-// модуля «Двигатели» Домашней Лаборатории 
-// 
-#include <homelab/module/motors.h> 
- 
-// 
-// Основная программа 
-// 
-int main(void) 
-{ 
- // Настройка двигателя 
- bipolar_init(); 
-  
- // Бесконечный цикл 
- while (true) 
- { 
- // Вращение в одну сторону 200 полушагов со скоростью 30 мс/шаг 
- bipolar_halfstep(+1, 200, 30); 
- 
- // Вращение в другую сторону 200 полушагов со скоростью 30 мс/шаг 
- bipolar_halfstep(-1, 200, 30); 
- } 
-} 
-</code> 
ru/examples/motor/stepper.1293386045.txt.gz · Last modified: (external edit)
CC Attribution-Share Alike 4.0 International
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0