Управление шаговым мотором. Первые шаги.


• О проекте
• Обратная связь
• Полезные ссылки
• Полезные программы
• Друзья сайта


Последние комментарии

Аби: Подключение микроконтроллеров к шине RS-485
написано просто о...

Анатолий: Джойстик для денди на stm32
Автору 100500 рес...




           

Библиотека для AVR





AXLIB Генератор





Помощь сайту


				

Управление шаговым мотором. Первые шаги.

	
	
	

Дата: 15 Февраля 2014. Автор: Алексей

	
	
Не прошло и месяца как мне в ящик кинули уведомление о прибытии посылки из Китая. Быстренько сбегав на почту я принес пакет домой и без замедления вскрыл его. И что я там увидел. Два программатора USBASP V2.0 и три платы силовой части для управления, точнее кручения, шаговым мотором.

Программатор USBASP

Силовая часть для шаговых моторов

Все это добро я купил на ebay и поэтому должен был отписаться продавцу, мол все хорошо или плохо. Ну написать плохо всегда можно, а вот хорошо... Надо проверить. Программаторы сразу заработали. Драйверы встали как надо. Как с ним работать я позже расскажу, а пока о моторе. Три платы силовой части для шаговиков просто так не проверишь. Поэтому мне пришлось полностью собрать схему управления. Мотор я взял от какого-то старого принтера, я его давно выковырял и уже не скажу какой. По моему матричный Epson и подключил его к плате. Сразу скажу зачем я купил платы в сборе, а не сам собрал. Просто микросхема L298N стоит в районе 100 руб, а плата в сборе 150. Ну я и на радостях и заказал 3 штуки. Так, подключение.

Распиновка платы силовой части шагового мотора

Как видно из рисунка на плате справа и слева расположены двойные клеммники. К буквам A и B соответственно нужно подключить одну обмотку мотора, а к буквам C и D другую. Нижний тройной клеммник нужен для питания всего огорода. 12v для питания обмоток мотора, а 5v для цифровой части. Здесь есть небольшой выбор. На плате еще установлена микросхема стабилизатор на 5в 78M05 от ST. Этот стабилизатор можно включить или выключить. Для этих целей есть джампер. Он расположен над тройным клеммником. Если его снять, то стабилизатор отключится и питание для цифровой части нужно будет подавать через тройной клеммник. Правый болт. Если же хочется остановится только на 12вольтах, то джампер нужно поставить и тем самым подать 12 вольт на вход стабилизатора. Для того чтобы быть уверенным в подаче 5 вольт, на схеме расположен светодиод. Он будет гореть только тогда, когда будет подано на схему 5 вольт. Правее от тройного клеммника расположены 4 пина, а по бокам еще два джампера. Левый джампер если установлен, то значит левый силовой канал A и B включен. Снят, отключен. Правый делает тоже самое с каналом C и D. Четыре пина между джампероми - это входы цифровой части. Вот от сюда мы переходим к программной части.

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

Таблица шагов

Тут правда предлагают двигать нолик, но это сути не меняет. Ну давайте программить.


#include  <mega32.h>
#include  <delay.h>

#asm
   .equ __lcd_port=0x12 ;PORTD
#endasm
#include  <lcd_rus.h>

#include  <stdio.h>



void main(void)
{
// Здесь инициализируем два массива левое и правое вращение. Гоняем нашу единицу.
unsigned char left[4]={0x01,0x02,0x04,0x08};
unsigned char right[4]={0x08,0x04,0x02,0x01};
unsigned char i;

PORTA=0x00;
DDRA=0x0F;

PORTB=0x00;
DDRB=0x00;

PORTC=0x00;
DDRC=0x00;

PORTD=0x00;
DDRD=0x00;



lcd_init(16);

lcd_putsf("Управление ДШИ");

while (1)
      {
// Этот цикл будет выполнятся бесконечно, пока нажата кнопка на 1 пине порта С.
      while(PINC.1)
        {
// В этом цикле гоняем единичку по кругу с задержкой 5 мс.
				for(i=0;i<4;i++)
				{
					PORTA = left[i];
					delay_ms(5);
				}
        lcd_gotoxy(0,1);
        lcd_putsf("Вращение Влево  ");
       }
// В этом цикле делаем тоже что и предыдущем за исключением
   того что нужно смотреть на другой пин порта и крутить другой массив.
       
      while(PINC.0)
        {
				for(i=0;i<4;i++)
				{
					PORTA = right[i];
					delay_ms(5);
				} 
        lcd_gotoxy(0,1);
        lcd_putsf("Вращение Вправо ");
       }
// Здесь выводим надпись когда ни одна из кнопок не нажата..  
       
       lcd_gotoxy(0,1);
        lcd_putsf("Мотор Остановлен ");
      };
}


Плата в сборе

На этом можно закончить. Программа получилась довольно простая, но для проверки работы моторов и самой платы вполне. Ниже можно глянуть видеозапись как это работает. Будут вопросы, предложения или поправки, пишите в коментах или на форуме.
JW Player goes here






Чтобы вставить ссылку используйте форму вида[url]http://www.адрес.ru[/url][text]текст ссылки[/text]
Чтобы вставить код используйте форму вида[code]код[/code]

Имя:   





  







Рейтинг@Mail.ru Яндекс.Метрика