Администрация форума не несёт ответственности за достоверность информации и оставляет за собой право редактировать или в особых случаях даже удалять посты без предупреждения. Спасибо за понимание.

Программирование ATMEL в BASCOM.

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » Программирование ATMEL в BASCOM. » Вопросы - ответы » Непонятки с шаговым двигателем и оптическому датчику


Непонятки с шаговым двигателем и оптическому датчику

Сообщений 1 страница 2 из 2

1

Столкнулся с проблемой.
Есть шаговик, есть драйвер на 8825 от POLOLU, есть оптический датчик положения вала двигателя. На вал посажен диск с прорезью. Необходимо сделать качели так называемые.
Доходит до прорези, двигатель меняет направление.
Использую в режиме микрошага 1/8
Проблема, в том что доходит до прорези и встает и ни туды и ни сюды.
Вроде бы тривиальная задача, но что то не то
Вот код

Код:
'Stepper motor ruler

$regfile = "m16def.dat"                                     ' specify the used micro
$crystal = 16000000                                         ' used crystal frequency
$baud = 19200                                               ' use baud rate
$hwstack = 32                                               ' default use 32 for the hardware stack
$swstack = 10                                               ' default use 10 for the SW stack
$framesize = 40                                             ' default use 40 for the frame space

Config Lcdpin = Pin , Rs = Portb.0 , E = Portb.2 , Db4 = Portb.4 , Db5 = Portb.5 , Db6 = Portb.6 , Db7 = Postb.7
Config Lcd = 20 * 4

 Config Portc.3 = Output                                    'Direction
 Portc.3 = 0

 Config Portc.4 = Output                                    'Stepping pulse
 Stepp Alias Portc.4

 'opto sense
Config Pinc.2 = Input                                       'Signal from opto 0-close 1-open
Portc.2 = 0

Cursor Off

Cls
Lcd "test"

Step3:

Gosub Step1

If Pinc.2 = 1 Then
 Toggle Portc.3                                             'Change direction
 End If

Goto Step3

End

Step1:                                                      'Pulse for step
Set Stepp
Waitus 330
Reset Stepp
Return

Отредактировано Geolog (2014-11-10 11:33:55)

0

2

Да, стало значительно лучше, вообщем имеется некоторая инерция. Иногда все-равно подзависает. Будем бороться дальше за чистоту работы

П.С. Собственно разобрался. Почитал даташит по DRV8825. Мелькнула мысля что перед изменением направления надо посылать импульс для шага. Попробовал, теперь все работает как часы.
код видоизменился

Код:
If Pinc.2 = 1 Then
Gosub Step1
Toggle Portc.3
Gosub Step1
Bitwait Pinc.2 , Reset
End If

Отредактировано Geolog (2014-11-10 18:59:05)

0


Вы здесь » Программирование ATMEL в BASCOM. » Вопросы - ответы » Непонятки с шаговым двигателем и оптическому датчику