Теперь в нашем онлайн-магазине доступна уникальная книга «BEAM-робототехника. От азов до создания практических устройств», идеально подходящая как для кружков робототехники, так и для самообучения дома. Вы можете приобрести её по привлекательной цене в 699 рублей. Дополнительная информация о книге доступна на нашем сайте. Также в ассортименте нашего онлайн-магазина представлены готовые наборы для сборки роботов, с помощью которых ваш ребенок сможет легко собрать своего первого робота, следуя нашим подробным инструкциям. Перейти в магазин


[ Раскрыть online-чат / Закрыть ] · [ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 2
  • 1
  • 2
  • »
Модератор форума: nightmare, Aleks_Crow, Huntswarrior  
Форум » Мастерская » Электроника » Контроллер биполярного шагового двигателя (*icon-0*)
Контроллер биполярного шагового двигателя
Отправлено 15.04.2012 - 12:481
Участник
30 сообщений
Мужчина
Добрый день всем.собрал плату робот контролера на atmega 8 и UNL2803 на шаговый двигатель с 4 выходами от старого принтера,но есть одно но может что то я упустил или мне программу не правильную записали на atmega 8? может знаюшие и понимаюшие вы посмотрите эту плату и подскажите что я не так сделал и поможете нормальную программу написать к данному девайсу?заранее спасибо


9427912.jpg (170.7 Kb)
Профиль Личное сообщение Дом. страница icq Skype
0
Отправлено 15.04.2012 - 19:222
Начальная группа
1798 сообщений
Мужчина
Питание на плате правильно подведено.
Reset надо подключить через резистор на 4.7 кОм на плюс.
Quote
или мне программу не правильную записали на atmega 8?

Насчёт программы остается только гадать.


Профиль Личное сообщение Дом. страница icq Skype
38
Отправлено 17.04.2012 - 19:243
Участник
30 сообщений
Мужчина
Дорый вечер.на форуме где то видел програму для atmega8 только там вместо 2803 стояли транзисторы,я вот думаю может на подобе этой программы сделать и для этого контролерра?я просто не селен если честно в программах.заранее спасибо


Профиль Личное сообщение Дом. страница icq Skype
0
Отправлено 17.04.2012 - 21:134
Начальная группа
1798 сообщений
Мужчина
Quote
Дорый вечер.на форуме где то видел програму для atmega8 только там вместо 2803 стояли транзисторы,я вот думаю может на подобе этой программы сделать и для этого контролерра?

Можно, одобряю.
Quote
я просто не селен если честно в программах

Ну вы учитесь, будете сильны smile


Профиль Личное сообщение Дом. страница icq Skype
38
Отправлено 18.04.2012 - 16:465
Участник
30 сообщений
Мужчина
да от учения не будет хуже,только будут atmega закрытые в последствии и которую потом придеться открывать другими программаторами которых у меня вообщем то и нет.


Профиль Личное сообщение Дом. страница icq Skype
0
Отправлено 18.04.2012 - 18:186
Начальная группа
1798 сообщений
Мужчина
Ну тогда забейте на это дело, раз фьюзы каждый раз запарываете и ничего с этим поделать не можете.


Профиль Личное сообщение Дом. страница icq Skype
38
Отправлено 18.04.2012 - 18:237
Участник
30 сообщений
Мужчина
я хочу научиться понимать прошивку и сам писать ее для разных девайсов. кому не трудно подскажите что надо заменить и добавить в этой прошивке чтобы она подходила для моего девайса?
Code

#include <avr/io.h>//Подключаем библиотеку ввода/вывода
#define nop() {asm("nop");}//подключаем функция для формирваония задержки

void right (void);//Прототип функции поворота ротора ШД вправо
void left (void);//Прототип поворота влево

int x, j, m=100; //переменные

//Функция задержки
void delay(int t)
{
for (x=0; x<t ;x++)
nop ();

}

//Функция задержки
void delay(int t)
{
for (x=0; x<t ;x++)
nop ();

}

//Функция длинной задержки
void long_delay(int p)
{
for (j=0; j<p; j++)
{
delay(300);
}
}

//Функция поворота ротора вправо
void right (void)
{
PORTD = 0b10001000;//обмотка A
long_delay(m);

PORTD = 0b01000100;//обмотка B
long_delay(m);

PORTD = 0b00100010;//обмотка C
long_delay(m);

PORTD = 0b00010001;//обмотка D
long_delay(m);
}

//Функция поворота ротора влево
void left(void)
{
PORTD = 0b00010001;
long_delay(m);

PORTD = 0b00100010;
long_delay(m);

PORTD = 0b01000100;
long_delay(m);

PORTD = 0b10001000;
long_delay(m);
}

//Главная функция
int main(void)
{
DDRD = 0xFF;//Конфигурирования порта на выход
PORTD = 0x00;//Отключаем подтягивающие резисторы порта

while(1)//вечный цикл
{
left();
.....//тут ставим столько раз функцию,
.....//чтобы ротор шагового двигателя
.....//провернулся на достаточный угол
left();

right();
.....//тут ставим столько раз функцию,
.....//чтобы ротор шагового двигателя
.....//провернулся на достаточный угол
right();
}
}


Раде эксперимента, советую попробовать поставить следующий код в самом конце программы:
Code

m=m+1; //Добавить единицу к переменной
if(m==350)//Если переменная достигла значения 350
{m=1;}//установить переменную равную "1"

right();
///////////////////////////////////////////////
m=m+1; //Добавить единицу к переменной
if(m==350)//Если переменная достигла значения 350
{m=1;}//установить переменную равную "1"
///////////////////////////////////////////////
}
}


Есть же тег code, почему не используем?
Quote
[code][/code]


Профиль Личное сообщение Дом. страница icq Skype
0
Отправлено 18.04.2012 - 20:208
Начальная группа
1798 сообщений
Мужчина
Чем так не подошли встроенные функции задержек из util/delay.h, что пришлось свои городить?
Двигатель с 4-мя выводами это наверное биполярный шаговик? Если так, то для того чтобы им управлять надо 2 Н моста, т.е. надо полярность менять на обмотках, а на базе этой микросхемы Н мост нельзя собрать и управлять таким шаговиком не получится. Можно при помощи драйвера L293D управлять.
Вот по такому алгоритму переключают обмотки у биполярного шаговика:



Четвёртый шаг автор предлагает додумать самостоятельно по аналогии с 3-им.
http://wolfstone.halloweenhost.com/Motors....ro.html


Профиль Личное сообщение Дом. страница icq Skype
38
Отправлено 19.04.2012 - 20:369
Участник
30 сообщений
Мужчина
да у меня биполярный шаговик от старого принтера.я просто закупился именно такими а обмен на другие хозяин не делает.вот и приходиться мучаться.я постараюсь сегодня переделать схему и зашить программу по выше указанному посту.результаты воложу с программой полностью.


Профиль Личное сообщение Дом. страница icq Skype
0
Отправлено 19.04.2012 - 21:0310
Начальная группа
1 сообщений
Мужчина
Доброго времени суток.... это получается что две катушки включены последователно.... (если я правильно понял по картинке) но у мотора 4 выхода.... т.е. можно по два запаралелить???


Профиль Личное сообщение Дом. страница icq Skype
0
Отправлено 19.04.2012 - 21:2611
Начальная группа
1798 сообщений
Мужчина
Там уже внутри катушки подключены последовательно. И на картинке и у шаговика по 4 вывода. Осталось найти где какие, прозвонив мультиметром.
Еще наверное важно знать где начало обмотки, а где конец.


Профиль Личное сообщение Дом. страница icq Skype
38
Отправлено 24.04.2012 - 18:1312
Участник
30 сообщений
Мужчина
чуть подредактировал,это наброски и составляю плату я в первые,так что за ошибки строго не судите. я использовал выводы atmega 8 и L293D кому не трудно подскажите правильно ли я составил плату? заранее спасибо


nightmare, ты - модератор, почему ответил на вопрос и не исправил тег IMAGE?


0294484.jpg (41.5 Kb)
Профиль Личное сообщение Дом. страница icq Skype
0
Отправлено 24.04.2012 - 18:5913
Начальная группа
1798 сообщений
Мужчина
Входы Enable 1,2 соединены вместе, но не подключены к питанию.


Профиль Личное сообщение Дом. страница icq Skype
38
Отправлено 24.04.2012 - 21:3714
Участник
30 сообщений
Мужчина
я правильно вас понял,мне их надо подключить к +5 ???


Профиль Личное сообщение Дом. страница icq Skype
0
Отправлено 24.04.2012 - 21:5015
Участник
30 сообщений
Мужчина
кажеться если вся плата правильно нарисована я думаю может ее в Proteus занести ? и испытать там?


nightmare, ты - модератор, почему ответил на вопрос и не исправил тег IMAGE?


7739411.jpg (30.9 Kb)
Профиль Личное сообщение Дом. страница icq Skype
0
Форум » Мастерская » Электроника » Контроллер биполярного шагового двигателя (*icon-0*)
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск: