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

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

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

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


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


Пульт управление драйвером шагового двигателя

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

1

Доброго времени суток. Мне потребовалось сделать пульт для управления шаговым двигателем. Шаговый двигатель а также драйвер к ниму купили. Задча такая надо с клавиатуры вводить количество шагов и чтоб он их сделал. А также пару кнопок для того чтоп запомнить даные.  Вобщем я не силён в програмировании только начал изучать. На сегодня до мк атмега8 прикрутил клавиатуру 4х4 а также дисплей 16х2. Всё собрал на макетке. В протеусе испытал немного работает. Код чтобы формировать количество шагов и направления немогу понять как написать.  Помогите пожалуста. Завтра выкладу то что у меня получилось.
Понимаю чтоили в подпрограме надо както дергать одну ногу мк заданое количество раз, а на вторую ногу подавать или 1 или 0 зависимо от направления. Как дёргать не могу придумать. Также пытался переделать код из сайта где управление из компа и на шаговик. Ничего не получилось. Немогу понять как из дисплея взять цифру и отправит её в переменную.  Извините за не очень грамотноё написание я самоучка,  и електронике нигде не учился. Моя специализация биология и ландшафтный дизайн.

0

2

За основу я взял проект из сайтаМатрична клавиатура до него пробою прикрутить код из другого проекта даного автора Управление шаговім по уарту  а также немного код брал и просматривал из Stepper motor Control with Atmega16. Сегодня к вечеру код уставлю.

0

3

схему то конечную выложите, никто по кускам: ссылок, слов - собирать информацию не будет (да и нюансы все неизвестны)

0

4

выкладывайте схему, алгоритм и код

0

5

Спасиба что отозвались. С празниками вас.
http://sf.uploads.ru/t/toXsp.jpg
планирую по такой схеме подклюсить. На клавитуру повесить ещё резисторы. И обвьязать. Источник питания 5 вольт китайский стабилизированый на дх брал. У меня основная проблема не могу понять как выводить на ногу заданое количество импульсов.  Понимаю что както надо дергать ногой и и щетать количество ипульсов и сравнивать их но как сделать не могу понять вобще. Извините за ламерские вопросы Баском изучаю гдето с неделю. Ранше готовые конструкции с нета собирал шил. Радиоелектроникой занимаюсь не долго всего пару лет и то как хоби.  Я по специализации ландшафтник. И ботаник.

Вопрос к знающим баском под линукс есть а то под вине только у меня он работает.

Код:
$regfile = "m8def.dat"
$crystal = 1000000

'конф дисплея
Config Lcdpin = Pin , Rs = Portc.0 , E = Portc.1 , Db4 = Portc.2 , Db5 = Portc.3 , Db6 = Portc.4 , Db7 = Portc.5
Config Lcd = 16 * 2
Cursor Off
Cls

'настройка клавиатуры
Config Kbd = Portd , Debounce = 20 , Delay = 100


'переменные
Dim A As Byte , B As Byte , Key As Byte , C As Byte , D As Byte , E As Byte
Dim S As Byte                                               '
Dim G As Word
Dim N As Word                                               '
Dim Char As String * 5                                      '
S = 1

Cls
Cursor Off

B = 0
D = 1

'рабоота приривания
Config Int0 = Low Level
Config Int1 = Low Level


                                      'порт на приревание
Config Portd.2 = Output                                     'порт на кнопку
Config Portd.6 = Output
Config Portd.7 = Output

'розрешение преривания
Enable Interrupts
Enable Int0

'назначение преривания
On Int0 Knopka1

Q:
Locate 1 , 1
Lcd "Direction:"
Locate 2 , 1
Lcd "Dir:"
Do
'************Read Keyboard
A = Getkbd()
If A > 15 Then
   Goto Q
Else
   Key = Lookup(a , Dta)
     If Key <= 9 Then
           B = B * 10
           B = B + Key
'*************Direction
          If D = 0 Then Lcd B
                   Waitms 270
               Elseif Key = 10 Then
                   Locate 1 , 11
                   Lcd "Left"
                   C = 1
                   D = 0
                   B = 0




               Elseif Key = 11 Then
                  Locate 1 , 11
                  Lcd "Right"
                  C = 2
                  D = 0
                  B = 0
'****************reset
               Elseif Key = 13 Then
                  Cls
                  D = 1
                  B = 0
                  Portd.0 = 0
                  Portd.1 = 0
                  Waitms 50
                  Goto Q
'****************Enter key
               Elseif Key = 14 Then
                   If D = 0 Then
                       Select Case S
                         Case 1 : Gosub R
                          Case 2 : Gosub T
                       End Select

                   End If
         End If

End If

Wait 1

Loop

End

Dta:
Data 7 , 8 , 9 , 10 , 4 , 5 , 6 , 11 , 1 , 2 , 3 , 12 , 13 , 0 , 14 , 15

R:

Do
N = 20
Incr S                                                      '

 If S = 3 Then
  S = 0
 End If

Select Case S                                               '

Case 1 : Portd = &B01000000
Case 2 : Portd = &B00100000


End Select

Waitus 1000                                                 '

Incr G                                                      '

  Loop Until G = N                                          '

'
A = 0
N = 0
Return

T:
Do
Portd = &B00001001 : Waitms B
Portd = &B00001000 : Waitms B
Portd = &B00001100 : Waitms B
Portd = &B00000100 : Waitms B
Portd = &B00000110 : Waitms B
Portd = &B00000010 : Waitms B
Portd = &B00000011 : Waitms B
Portd = &B00000001 : Waitms B




Loop
Knopka1:
Goto Q
Return

Отредактировано gyra83 (2015-01-08 19:46:57)

0

6

схема и алгоритм где?... :)
без оных желающих телепатически определись что конкретно вы хотели - нет

0

7

Спасиба за то что пытаетесь помочь. Я понимаю что не телепаты. Потому поправил сообщения. На планшете не было их.

0

8

Доюрого времени суток. В общем частично розобрался как выдать сигналы но теперь другая проблема. Не могу понять как цифры которые вывел на дисплей передать в подпрограму. Извините за ламерский вопрос только учю Баском.

0

9

Может взглянуть под другим углом и количество шагов (введенное число) не искать на дисплее, а считывать с клавиатуры? Создать массив, например, из 3 байтов (или скольки-значное количество шагов вам требуется?). Опросить клавиатуру, определить нажатую цифру, занести её в первый индекс массива. При следующем опросе клавиатуры нажатую цифру (если нажата) занести во второй индекс и т.д. до нажатия Enter. По нажатию Enter посчитать набранное число, передать в подпрограмму, выполнить её. Далее обнулить массив и всё заново.

Кстати, протеусовская клавиатура у меня почему-то не хотела нормально опрашиваться, пока не заменил модель на кнопки.

Ну и нехорошо давать схему, которая не сходится с кодом. Порты клавиатуры разные. Сигналы на ШД выдаете в том числе и на пин, который и как INT0 используете.

0

10

Спасиба. буду смотреть в этом направлении. Код новый выложу и схему. Сичас  проверяю всё в апаратном варианте так как Протеус под Линуксом не смог сдружить с атмегой 8, с 16 нормально работает. С празниками.

0


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