Как стать автором
Обновить

Простая реализация схемы шагового двигателя на мк

Программирование микроконтроллеров
И так, данный пост нацелен на новичков в электронике а так же на новичков в программировании и освоении мк и разработке радиоэлектронных устройств.
Данная разработка представляет простейшее включение МК такого как PIC16F84A для управления шаговым двигателем. Для сборки такого устройства нам потребуется:
  • Контроллер — PIC16F84A
  • Шаговый двигатель
  • Паяльник
  • Рассыпуха
  • Свободное время
  • Желание сделать что либо
  • Немного мозга
Наша схема питается от стабилизированного источника питания +5 вольт. Однако силовая часть, может питаться от напряжения > напряжения МК < напряжения, что держат ваши транзисторы.

В качестве силовых странзисторов мы возьмем КТ815. В данном случае они идиально подходят для нашей задачи.

И так, собираем наш девайс по схеме(з.ы. если не видите схемы — значит сервер лежит. и скоро все наладится):



Предположим, все это у нас уже собрано, теперь осталось запрограммировать наш контроллер простенькой программой для того чтоб наш ротор крутился.

list p=16F84A
#include <p16F84A.inc>
; _CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC
;***базовые значения
del EQU 0xFF ;константа длительности задержки
count EQU 0x0C ;переменная подпрограммы задержки
ORG 0x00
;***начальная инициализация
clrf PORTA ;очистить порт А
clrf PORTB ;и порт В
bsf STATUS,RP0 ;включили банк 1
movlw INIT_A
movwf PORTA ;настроили порт А
movlw INIT_B
movwf PORTB ;настроили порт В
bcf OPTION_REG,7 ;включили встроенную нагрузку
bcf STATUS,RP0 ;включили банк 0
clrw
movwf PORTB
main
movlw b'01010000
movwf PORTB
call delay
;-------Вставляем сюда задержек, столько - сколько надо, или модифицируем подпрограмму на более длинную задержку
call delay
movlw b'01100000
movwf PORTB
call delay
;-------Вставляем сюда задержек, столько - сколько надо, или модифицируем подпрограмму на более длинную задержку
call delay
movlw b'10100000
movwf PORTB
call delay
;-------Вставляем сюда задержек, столько - сколько надо, или модифицируем подпрограмму на более длинную задержку
call delay
movlw b'10010000
movwf PORTB
call delay
;-------Вставляем сюда задержек, столько - сколько надо, или модифицируем подпрограмму на более длинную задержку
goto main
;***подпрограмма формирования задержки между шагами
delay movlw del
movwf count
loop decfsz count,f
goto loop
return
END


Вы вероятно заметили, что на схеме присутствуют кнопки, это на всякий пожарный — для расширения функциональности. программу можно дописать для них, а так же не забудте включить внутренюю нагрузку на порт B

Компилируем в HEX файл этот код в программе MPLAB IDE. и шьем программатором или отладчиком(который по совместительству программатор).

UPD: Спрограмматор в данном случае использовался такой: клон оригинального ICD2 от фирмы Olimex. Стоит порядка 2.5к Включает в себя функции программатора и отладчика(афигительная вещь).
Отлично работает в связке MPLAB+ICD2 а так же PikLab+ICD2 под Linux

UPD2:
После сборки всего этого, и включения питания, ваш ротор двигателя должен начать вращаться в какую либо сторону.

Важнейшей частью программы, являются значения регистра W который затем передает значение на порт ввода/вывода. Там где еденичка, там будет +5 вольт на выходе.

Самый левый бит — самый старший, самый правый — самый младший. Так заведено и это закон. :)
Эти значения регистра, определяют каким образом будут подано напряжение на карушки двигателя.

movlw b'01010000 ;1й шаг
movlw b'01100000 ;2й шаг
movlw b'10100000 ;3й шаг
movlw b'10010000 ;4й шаг


Если Вы напутаете с подключением двигателя, то он у вас может «дергаться туда-сюда» и поэтому надо смотреть именно в эту сторону прошивки, или менять контакты подключения.

— Если у вас вообще не работает — значит нужно проверить напряжение сброса контроллера. оно должно равляться +5 вольтам.
— Если там есть напряжение сброса, то нужно проверить питание процессора.
— Еще одной частой неполадкой может являться то что контроллер просто не отконфигурировали! не забывайте — это важно.
— Если у вас по прежнему схема не работает, то надо убедиться что кварцевый резонатор дает импульсы при включенном напряжении. Проверить можно с помощью осцилографа а так же мультиметра. Контакты OSC

Двигатель для этой схемы дыл взят из 5" дисковода, от старых компьтеров. этот движок там передвигал головку для считывания информации с магнитного диска. Имеет 5 контактов.

Вот собственно и все. :)
Теги:программированиемикроконтроллерыpicasm
Хабы: Программирование микроконтроллеров
Всего голосов 69: ↑61 и ↓8 +53
Просмотры26.4K

Похожие публикации

Лучшие публикации за сутки