Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
18.01.2014, 20:38
|
|
Заблокирован
Регистрация: 26.12.2013
Сообщений: 379
Сказал спасибо: 66
Сказали Спасибо 61 раз(а) в 23 сообщении(ях)
|
Re: Схема управления биполярным шаговым двигателем
en на плюсе давно, я имею ввиду то что нет регулировки скорости с кнопок, моторчик крутится, но регулировать не получается скорость (время задержки)
|
|
|
|
18.01.2014, 20:43
|
|
Гуру портала
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,835
Сказал спасибо: 919
Сказали Спасибо 4,308 раз(а) в 2,573 сообщении(ях)
|
Re: Схема управления биполярным шаговым двигателем
Сообщение от Арктур
|
При a=10000 один шаг - 10 сек., 1 оборот - 750 сек. или 12.5 мин.
Но даже это вряд ли будет -
delay_ms (ms) разве работает не с константами ?
|
В компиляторах от MicroE да, есть даже функция vdelam_ms, которая работает с переменными, но задержка не точная.
И еще в этих компиляторах не допускается использования задержек в процедурах прерывания. Т.е. как бы минус одна грабля
|
|
|
|
18.01.2014, 20:51
|
|
Заблокирован
Регистрация: 26.12.2013
Сообщений: 379
Сказал спасибо: 66
Сказали Спасибо 61 раз(а) в 23 сообщении(ях)
|
Re: Схема управления биполярным шаговым двигателем
исходный код
Код:
|
{
DDRB = 0b11111111;
PORTB = 0b11111111;
while(1)
{
PORTB=0b00000110;
delay_ms(100);
PORTB=0b00000111;
delay_ms(100);
PORTB=0b00000011;
delay_ms(100);
PORTB=0b00001011;
delay_ms(100);
PORTB=0b00001001;
delay_ms(100);
PORTB=0b00001101;
delay_ms(100);
PORTB=0b00001100;
delay_ms(100);
PORTB=0b00001110;
delay_ms(100);
} |
я после каждой паузы попытался опрашивать 2 кнопки и по их состоянию изменять (a)
Код:
|
if(PIND.0==0)
{a=a-10;}
if(PIND.1==0)
{a=a+10;} |
а оно не изменяется
Последний раз редактировалось WindoЗavr; 18.01.2014 в 20:55.
|
|
|
|
18.01.2014, 21:09
|
|
Заблокирован
Регистрация: 26.12.2013
Сообщений: 379
Сказал спасибо: 66
Сказали Спасибо 61 раз(а) в 23 сообщении(ях)
|
Re: Схема управления биполярным шаговым двигателем
люди, ау
|
|
|
|
18.01.2014, 21:52
|
|
Почётный гражданин KAZUS.RU
Регистрация: 29.12.2012
Адрес: Питер
Сообщений: 982
Сказал спасибо: 131
Сказали Спасибо 230 раз(а) в 157 сообщении(ях)
|
Re: Схема управления биполярным шаговым двигателем
Попробуйте объявить переменную как volatile. Авось компилятор схавает
|
|
|
|
18.01.2014, 22:13
|
|
Почётный гражданин KAZUS.RU
Регистрация: 10.05.2003
Адрес: Москва
Сообщений: 2,530
Сказал спасибо: 737
Сказали Спасибо 1,927 раз(а) в 799 сообщении(ях)
|
Re: Схема управления биполярным шаговым двигателем
а вообще на кнопки реагирует? Не надо ноги на Vdd подтянуть? Какую-нибудь лампочку повесьте для индикации.
__________________
Опыт - это школа, в которой человек узнает, каким дураком он был раньше.
|
|
|
|
18.01.2014, 22:44
|
|
Почётный гражданин KAZUS.RU
Регистрация: 25.05.2010
Адрес: г. Королёв
Сообщений: 8,497
Сказал спасибо: 30
Сказали Спасибо 3,072 раз(а) в 2,013 сообщении(ях)
|
Re: Схема управления биполярным шаговым двигателем
WindoЗavr, делайте задержку таймером в режиме СТС.
Сменой значения компаратора регулируется скорость.
|
|
|
|
18.01.2014, 23:22
|
|
Заблокирован
Регистрация: 26.12.2013
Сообщений: 379
Сказал спасибо: 66
Сказали Спасибо 61 раз(а) в 23 сообщении(ях)
|
Re: Схема управления биполярным шаговым двигателем
а можно по подробнее ?
|
|
|
|
18.01.2014, 23:34
|
|
Почётный гражданин KAZUS.RU
Регистрация: 25.05.2010
Адрес: г. Королёв
Сообщений: 8,497
Сказал спасибо: 30
Сказали Спасибо 3,072 раз(а) в 2,013 сообщении(ях)
|
Re: Схема управления биполярным шаговым двигателем
Могу скинуть прожект на асме (так как Тини 15), но там просто организован авторазгон. На кнопке смена направления.
Ну и так как процесс весьма медленный, а тиня больше ничем не занимается, позволил себе загнать тупой перебор кода прямо в прерывание по компаратору.
Да, том коды для униполярного включения.
В Pro_tn15_step_var.asm переопределить порты и поправить макросы и переопределить константы кодов порта,
а в Pro_tn15_step.asm переписать инит.
AVR-Studio
|
|
|
Сказали "Спасибо" omercury
|
|
|
18.01.2014, 23:52
|
|
Почётный гражданин KAZUS.RU
Регистрация: 19.08.2006
Адрес: Львов
Сообщений: 1,616
Сказал спасибо: 65
Сказали Спасибо 315 раз(а) в 264 сообщении(ях)
|
Re: Схема управления биполярным шаговым двигателем
Сообщение от WindoЗavr
|
исходный код
Код:
|
{
DDRB = 0b11111111;
PORTB = 0b11111111;
while(1)
{
PORTB=0b00000110;
delay_ms(100);
PORTB=0b00000111;
delay_ms(100);
PORTB=0b00000011;
delay_ms(100);
PORTB=0b00001011;
delay_ms(100);
PORTB=0b00001001;
delay_ms(100);
PORTB=0b00001101;
delay_ms(100);
PORTB=0b00001100;
delay_ms(100);
PORTB=0b00001110;
delay_ms(100);
} |
я после каждой паузы попытался опрашивать 2 кнопки и по их состоянию изменять (a)
Код:
|
if(PIND.0==0)
{a=a-10;}
if(PIND.1==0)
{a=a+10;} |
а оно не изменяется
|
Изменяете переменную "a", а в качестве параметра задержки пересылаете в функцию все время 100?
Не пробовали
?
Естественно, соблюдая требуемую типизацию данных...
__________________
С уважением,
Vic / ut1wpr
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 02:23.
|
|