Контроллер биполярного шагового двигателя
|
|
Участник
30 сообщений
Мужчина
|
Добрый день всем.собрал плату робот контролера на atmega 8 и UNL2803 на шаговый двигатель с 4 выходами от старого принтера,но есть одно но может что то я упустил или мне программу не правильную записали на atmega 8? может знаюшие и понимаюшие вы посмотрите эту плату и подскажите что я не так сделал и поможете нормальную программу написать к данному девайсу?заранее спасибо
9427912.jpg
(170.7 Kb)
|
|
|
|
|
Начальная группа
1798 сообщений
Мужчина
|
Питание на плате правильно подведено. Reset надо подключить через резистор на 4.7 кОм на плюс. Quote или мне программу не правильную записали на atmega 8? Насчёт программы остается только гадать.
|
|
|
|
|
Участник
30 сообщений
Мужчина
|
Дорый вечер.на форуме где то видел програму для atmega8 только там вместо 2803 стояли транзисторы,я вот думаю может на подобе этой программы сделать и для этого контролерра?я просто не селен если честно в программах.заранее спасибо
|
|
|
|
|
Начальная группа
1798 сообщений
Мужчина
|
Quote Дорый вечер.на форуме где то видел програму для atmega8 только там вместо 2803 стояли транзисторы,я вот думаю может на подобе этой программы сделать и для этого контролерра? Можно, одобряю. Quote я просто не селен если честно в программах Ну вы учитесь, будете сильны
|
|
|
|
|
Участник
30 сообщений
Мужчина
|
да от учения не будет хуже,только будут atmega закрытые в последствии и которую потом придеться открывать другими программаторами которых у меня вообщем то и нет.
|
|
|
|
|
Начальная группа
1798 сообщений
Мужчина
|
Ну тогда забейте на это дело, раз фьюзы каждый раз запарываете и ничего с этим поделать не можете.
|
|
|
|
|
Участник
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, почему не используем?
|
|
|
|
|
Начальная группа
1798 сообщений
Мужчина
|
Чем так не подошли встроенные функции задержек из util/delay.h, что пришлось свои городить? Двигатель с 4-мя выводами это наверное биполярный шаговик? Если так, то для того чтобы им управлять надо 2 Н моста, т.е. надо полярность менять на обмотках, а на базе этой микросхемы Н мост нельзя собрать и управлять таким шаговиком не получится. Можно при помощи драйвера L293D управлять. Вот по такому алгоритму переключают обмотки у биполярного шаговика: Четвёртый шаг автор предлагает додумать самостоятельно по аналогии с 3-им. http://wolfstone.halloweenhost.com/Motors....ro.html
|
|
|
|
|
Участник
30 сообщений
Мужчина
|
да у меня биполярный шаговик от старого принтера.я просто закупился именно такими а обмен на другие хозяин не делает.вот и приходиться мучаться.я постараюсь сегодня переделать схему и зашить программу по выше указанному посту.результаты воложу с программой полностью.
|
|
|
|
|
Начальная группа
1 сообщений
Мужчина
|
Доброго времени суток.... это получается что две катушки включены последователно.... (если я правильно понял по картинке) но у мотора 4 выхода.... т.е. можно по два запаралелить???
|
|
|
|
|
Начальная группа
1798 сообщений
Мужчина
|
Там уже внутри катушки подключены последовательно. И на картинке и у шаговика по 4 вывода. Осталось найти где какие, прозвонив мультиметром. Еще наверное важно знать где начало обмотки, а где конец.
|
|
|
|
|
Участник
30 сообщений
Мужчина
|
чуть подредактировал,это наброски и составляю плату я в первые,так что за ошибки строго не судите. я использовал выводы atmega 8 и L293D кому не трудно подскажите правильно ли я составил плату? заранее спасибо
nightmare, ты - модератор, почему ответил на вопрос и не исправил тег IMAGE?
0294484.jpg
(41.5 Kb)
|
|
|
|
|
Начальная группа
1798 сообщений
Мужчина
|
Входы Enable 1,2 соединены вместе, но не подключены к питанию.
|
|
|
|
|
Участник
30 сообщений
Мужчина
|
я правильно вас понял,мне их надо подключить к +5 ???
|
|
|
|
|
Участник
30 сообщений
Мужчина
|
кажеться если вся плата правильно нарисована я думаю может ее в Proteus занести ? и испытать там?
nightmare, ты - модератор, почему ответил на вопрос и не исправил тег IMAGE?
7739411.jpg
(30.9 Kb)
|
|
|
|
|