[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Форум » Мастерская » Я начинающий » Управление шаговым двигателем с мк
Управление шаговым двигателем с мк
stefanДата: Четверг, 14.04.2011, 23:22 | Сообщение # 1
Группа: Пользователи
Сообщений: 8
Репутация: 0
Статус: Offline
Привет всем.
Подскажите пожайста, как заставить мк ATtiny2313 управлять шаговым движком, вобщем нужно, чтобы движок работал допустим 10 оборотов влево и 10 - вправо и опять 10 влево и так бесконечно.
Заранее спасибо.
KrishДата: Пятница, 15.04.2011, 10:55 | Сообщение # 2
Группа: Пользователи
Сообщений: 184
Репутация: 2
Статус: Offline
Это не трудно, вот посмотри тему, когда то такую штуку собрал, работает:
http://www.bezkz.su/publ/12-1-0-172


LacOS
stefanДата: Суббота, 16.04.2011, 01:38 | Сообщение # 3
Группа: Пользователи
Сообщений: 8
Репутация: 0
Статус: Offline
да. Ну там управление с компа, а мне нужно чтобы именно мк управлял, пытался найти в инете, именно такого не нашол, везде упрвление или с компа или с мк но нужно нажимать кнопки. я хочу чтобы шаговый движок работал на автомате.
MysteryStДата: Суббота, 16.04.2011, 14:10 | Сообщение # 4
Язык программированя: Verilog, C/C++
Группа: Проверенные
Сообщений: 8
Репутация: 0
Статус: Offline
напрямую с мк управлять не получится, т.к. обмотки движка будут потреблять высокие токи (по сравнению с допустимыми токами линий порта). Потребуется драйвер. Это может быть несколько транзисторных ключей, существуют специальные микросхемы, которые содержат в себе такие ключи. Пример микросхем: L293 - на токи до 1А, L298 - на токи до 2А. Применяя ключи на транзисторах (чаще полевых), можно построть драйвер, рассчитанный на большие токи. Смотрите готовую схему (их много) и выбираете под свой двигатель.
Обмотки двигателя подключаются к выводам мк через эти ключи. Для обеспечения вращения двигателя необходимо подавать лог. единицы (или нули, там по схеме как) на эти выводы в определенной последовательности. Например, если у двигателя 2 обмотки (А и B), обзовем выводы как А, А', B, B'. Если подавать единички в такой последовательности: A, B, A', B', вал двигателя будет поворачиваться. Если подавать в обратной последовательности, вращение будет происходить в другую сторону.
Для того, чтобы вращение было более или менее постоянным, можно использовать цикл. А для того, чтоб направление сменялось тоже цикл можно сделать.

примерно алгоритм
while(1)
{
for (int i=0; i<1000; i++) // задали в не совсем явном виде кол-во оборотов
{ A, B, A', B' }
for (int i=0; i<1000; i++)
{ B', A', B, A }
}


Работаем быстро, качественно, недорого. Выбирайте любые 2.

Сообщение отредактировал MysterySt - Суббота, 16.04.2011, 15:35
SpaceДата: Суббота, 16.04.2011, 17:09 | Сообщение # 5
Администратор
Язык программированя: BascomAVR
Группа: Администраторы
Сообщений: 327
Репутация: 8
Статус: Offline
Поищи на робозон. Там было несколько плат для управления шаговым. Ток мк там PIC.

stefanДата: Суббота, 16.04.2011, 17:11 | Сообщение # 6
Группа: Пользователи
Сообщений: 8
Репутация: 0
Статус: Offline
ясно. но это код походу на ассемблере,

Quote (MysterySt)
while(1)
{
for (int i=0; i<1000; i++) // задали в не совсем явном виде кол-во оборотов
{ A, B, A', B' }
for (int i=0; i<1000; i++)
{ B', A', B, A }
}

а можно на бейсике для Bascom-AVR, там я хоть немного соображаю

SpaceДата: Суббота, 16.04.2011, 17:12 | Сообщение # 7
Администратор
Язык программированя: BascomAVR
Группа: Администраторы
Сообщений: 327
Репутация: 8
Статус: Offline
вообще это на си. На баскоме к сожалению не встречал кодов.

MysteryStДата: Суббота, 16.04.2011, 21:20 | Сообщение # 8
Язык программированя: Verilog, C/C++
Группа: Проверенные
Сообщений: 8
Репутация: 0
Статус: Offline
Ну,{ A, B, A', B' } это просто последовательность управляющих сигналов так нарисовал.
Так вот, если конкретезировать, то.
Пусть на PORTC.1 подключен вывод A, на PORTC.2 A', PORTC.3 B, PORTC.4 B'
Тогда реальный код выглядит так (на сишнике)
Code
while (1) // раскрываю запись  {A, B, A', B' }.  
{PORTC.1 =1 ;   // если так оставить, будет только в одну сторону крутиться
delay_ms(10);
PORTC.1 =0 ;
PORTC.3 =1 ;
delay_ms(10);
PORTC.3 =0 ;
PORTC.2 =1 ;
delay_ms(10);
PORTC.2 =0 ;
PORTC.4 =1 ;
delay_ms(10);
PORTC.4 =0 ;
}

Это самое простое, что можно придумать.
Я думаю, идея дожна быть понятна. А как ее реализовать на другом языке программирования, это уж сами думайте.

Добавлено (16.04.2011, 21:20)
---------------------------------------------
Тут, кстати, от синтаксиса С только цикл while и операция присваивания. че такое delay_ms(10), должно быть интуитивно понятно.
Разбирайтесь)


Работаем быстро, качественно, недорого. Выбирайте любые 2.

Сообщение отредактировал MysterySt - Суббота, 16.04.2011, 21:13
stefanДата: Понедельник, 18.04.2011, 02:08 | Сообщение # 9
Группа: Пользователи
Сообщений: 8
Репутация: 0
Статус: Offline
идею понял, буду пробывать. Всем огромное спасибо.
SpaceДата: Среда, 20.04.2011, 11:13 | Сообщение # 10
Администратор
Язык программированя: BascomAVR
Группа: Администраторы
Сообщений: 327
Репутация: 8
Статус: Offline
Stefan, вот держи, наткнулся случайно. Там как раз управление шаговым без пк. Прога в BascomAVR

stefanДата: Воскресенье, 24.04.2011, 01:22 | Сообщение # 11
Группа: Пользователи
Сообщений: 8
Репутация: 0
Статус: Offline
Space спасибо. Это впринципе что надо.
Форум » Мастерская » Я начинающий » Управление шаговым двигателем с мк
  • Страница 1 из 1
  • 1
Поиск: