Показать сообщение отдельно
Старый 29.01.2017, 19:25   #4
Phantom
Элита
 
Аватар для Phantom
 
Регистрация: 14.06.2008
Адрес: Украина, Киев
Сообщений: 2,273
Написано 754 полезных сообщений
(для 1,833 пользователей)
Ответ: Как заставить шаговый двигатель шагать

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

Пробовал ещё управлять восемью состояниями:

int main(void) {
  
  
PORTC &= ~((<< 0) | (<< 1) | (<< 2) | (<< 3));
  
DDRC |= ((<< 0) | (<< 1) | (<< 2) | (<< 3));
  
  while (
1) {
    
PORTC &= ~(<< 0);
    
_delay_ms(2);
    
PORTC |= (<< 2);
    
_delay_ms(2);
    
PORTC &= ~(<< 1);
    
_delay_ms(2);
    
PORTC |= (<< 3);
    
_delay_ms(2);
    
PORTC &= ~(<< 2);
    
_delay_ms(2);
    
PORTC |= (<< 0);
    
_delay_ms(2);
    
PORTC &= ~(<< 3);
    
_delay_ms(2);
    
PORTC |= (<< 1);
    
_delay_ms(2);
  }


Вот то же самое на картинке:



Так вообще мягонько так идёт, аж насмотреться и наслушаться не могу!

Транзисторы взяты с материнки: P0903BDG. Чо-то глянул сейчас даташит, а там параметр Gate Threshold Voltage максимум 3V. Что он означает? Что на гейт нельзя подавать больше трёх вольт? Или, что от трёх вольт он гарантировано открывается? Я их всегда пятью вольтами открывал, пока ни один не сгорел. У меня почему-то в голове отложилось, что его пятью вольтами открывать надо, а сейчас смотрю и не понимаю.
(Offline)
 
Ответить с цитированием
Эти 2 пользователя(ей) сказали Спасибо Phantom за это полезное сообщение:
Артем Валерьевич (01.02.2017), mr.DIMAS (29.01.2017)