Форум программистов, компьютерный форум, киберфорум
Электродвигатели
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.52/97: Рейтинг темы: голосов - 97, средняя оценка - 4.52
31 / 30 / 7
Регистрация: 13.12.2010
Сообщений: 338
1

Управление ШД через LPT порт

22.04.2013, 21:41. Просмотров 17551. Ответов 59
Метки нет (Все метки)

Доброго времени суток!
Ничего подобного раньше не делал, поэтому прошу помощи
Задали мне написать программу, которая управляет шаговым двигателем (вращение в одну и другую сторону).
Как понял я - в lpt есть 8 выходов. Будем использовать те, которые обведены на картинке.
Есть в двигателе 4 обмотки (или это не обмотки?). Если по определенной схеме пускать на выходы сигнал (как я понял 5 Вольт) и "убирать" его (0 Вольт), то можно его вращать.
Подскажите пожалуйста, правильно ли я все понял и что стоит ещё учесть.
А для программистов вопрос - какие библиотеки (или драйвера) использовать? Слышал что на c# надо использовать inpout32.dll.
0
Миниатюры
Управление ШД через LPT порт  
Изображения
 
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.04.2013, 21:41
Ответы с готовыми решениями:

Управление компьютером с пульта ДУ через Com порт.
Всем привет. Немного предыстории по данному проекту, так сказать, зачем (ведь в сети полно...

Управление LPT в WinXP
Здравствуете. Никак не могу добиться работы LPT в WinXP. Может кто-то решал подобную задачу и...

Прием данных через LPT-порт
подскажите как это можно выполнять и как написать программу!заранее спассибо

Подать питание на светодиод через LPT-порт
Вот возник такой вопрос. Хотелось бы сделать такую штуковину: нажимаешь на кнопку (подключена к LPT...

59
2573 / 1165 / 152
Регистрация: 28.10.2011
Сообщений: 4,121
Записей в блоге: 6
21.12.2013, 22:54 21
Цитата Сообщение от Alpout Посмотреть сообщение
до 5 кГц
Тогда используйте DOS, т. к. винда не ОС реального времени.
Или собирайте девайс на МК и управляйте им с компа через COM или USB.

Не по теме:

Под виндой даже 100 Гц не выжмите с точным выдерживанием интервалов.

0
0 / 0 / 0
Регистрация: 01.05.2013
Сообщений: 28
21.12.2013, 23:14 22
Есть подсказка использование функции QueryPerformanceCounter. Но не умею как с ней обращаться. все таки ребята создают программу. Есть пример генератор до 600Гц http://valery-us4leh.narod.ru/XpCoding/xp02.html
0
Модератор
8098 / 3035 / 806
Регистрация: 22.02.2013
Сообщений: 4,326
Записей в блоге: 78
21.12.2013, 23:25 23
Цитата Сообщение от Alpout Посмотреть сообщение
Есть подсказка использование функции QueryPerformanceCounter. Но не умею как с ней обращаться. все таки ребята создают программу. Есть пример генератор до 600Гц http://valery-us4leh.narod.ru/XpCoding/xp02.html
Нельзя создать генератор для такой частоты, даже через высокочастотный счетчик. Он будет работать, но не стабильно и загружать систему в зависимости от выполняемых процессов и еще кучи всяких ньюансов. Вы можете генерировать 5кГц на звуковой карте без проблем, либо собирать девайс и на нем генерировать такую частоту.
1
0 / 0 / 0
Регистрация: 01.05.2013
Сообщений: 28
21.12.2013, 23:42 24
The trick, возможно я ошибаюсь...привожу расчеты. Максимальыне реальные обороты шагового двигателя 300 об/мин=5об/сек. За 200 импульсов ШД совершает 1 оборот. Отсюда для 300об/мин нужно подать 1кГц. Может с 5кГц я переборщил, а вот например регулируемый 1кГц как получить? Станки же на лпт портах делают..
0
Модератор
8098 / 3035 / 806
Регистрация: 22.02.2013
Сообщений: 4,326
Записей в блоге: 78
22.12.2013, 00:30 25
Цитата Сообщение от Alpout Посмотреть сообщение
Станки же на лпт портах делают..
В станках стоит контроллер, который управляется через LPT. Не получится у Вас выдержать импульсы точно, где-то будет быстрей, где-то медленней. Если точность не нужна, можно конечно и через высокочастотный сделать счетчик

Добавлено через 34 минуты
Желательно все API объявить в TLB и исключить DoEvents, компилировать со всеми опциями оптимизации, без форм (только Sub Main), также все лишнее убрать из цикла, оставлять только то что нужно (этот код в качестве примера). Только не забывай что для генерации 1 кГц, нужно выдавать 2 кГц в коде, т.к. нужно ножкой "дернуть" туда-сюда.
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
Option Explicit
 
Private Declare Function QueryPerformanceFrequencyAny Lib "kernel32" Alias "QueryPerformanceFrequency" (lpFrequency As Any) As Long
Private Declare Function QueryPerformanceCounterAny Lib "kernel32" Alias "QueryPerformanceCounter" (lpPerformanceCount As Any) As Long
 
Dim i As Long, f As Boolean
 
Private Sub Form_Load()
    Dim SampleRate As Currency
    Dim Freq As Currency
    Dim Ct1 As Currency, Ct2 As Currency
    Dim Num As Currency, i As Long
    Dim Refr As Long
    
    Me.Show
    
    Freq = 2000                         ' Задаем частоту 2 kHz
    QueryPerformanceFrequencyAny SampleRate
    SampleRate = SampleRate * 10000     ' Узнаем частоту счетчика
    Num = SampleRate / Freq / 10000     ' Узнаем сколько тиков нужно чтобы получить период сигнала
    Refr = Freq / 5                     ' Обновление 5 Гц
    
    QueryPerformanceCounterAny Ct1      ' Получаем текущее значение счетчика
    
    Do
        QueryPerformanceCounterAny Ct2  ' Получаем текущее значение счетчика
        If Ct2 - Ct1 >= Num Then        ' Если число тиков больше
            i = i + 1
            ' ---------------------------------------
            ' Заход сюда происходит с нужной частотой
            ' ---------------------------------------
            If i Mod Refr = 0 Then       ' Обновление 
                Me.Caption = i
                DoEvents
            End If
            Ct1 = Ct2 + ((Ct2 - Ct1) - Num)
        End If
    Loop Until f
End Sub
Private Sub Form_Unload(Cancel As Integer)
    f = True
End Sub
0
0 / 0 / 0
Регистрация: 01.05.2013
Сообщений: 28
22.12.2013, 00:37 26
да, именно контроллер по сигналу ШАГ/Направление. запустил Ваш код двигал окошко туда-сюда изменил размеры, чутк подвисает, да?
0
0 / 0 / 0
Регистрация: 01.05.2013
Сообщений: 28
22.12.2013, 00:43 27
Работа с ШД.rar вот давно писал прогу. там только на скорость не смог вписать в пргу. мало подумал Здесь я экспериментировал с лпт портом. Но код смешной. ну я не программист Скажу одно: Шаговый точно отрабатывает свои шаги а вот генератором таки не сумел поиграть.
0
0 / 0 / 0
Регистрация: 01.05.2013
Сообщений: 28
02.01.2014, 22:00 28
The trick, возобновляю тему. недавно переписал Ваш код, доработав с работой по ЛПТ, и проверил. Результат опыта показывает, что большие частоты получил, даже когда повышаю частоту коммутации сигналов в ЛПТ, у меня Шаговик останавливается, значит все Ок, требуемые обороты получаем. НО! Двигатель чуток работает с вибрацией, а это означает, что Импульсы посылаются "грязно!", иначе говоря, неустойчиавя частота сигнала. Потом для сравнения запустил МАЧ3, у нее не ощущается вибрации на разных оборотах, и частота по осциллографу устойчивая. Вопрос: как им удается контролировать частоту столь равномерно? мне тоже такое охото))) у меня есть идея, может написать код и сделать какую нибудь модуль(длл библиотека или осх итд), от кот. будут исходить запросы(пуск, стоп, Fрег) за определенное время? Тут я понимаю, под неравномерностью частоты сигнала в том, что производиться опросы на разные события, что мешает стабильно работать "генератору". Помогите уважаемые программисты, я многое чего могу не знать, но кое-что знаю в программировании.
0
Модератор
8098 / 3035 / 806
Регистрация: 22.02.2013
Сообщений: 4,326
Записей в блоге: 78
02.01.2014, 22:07 29
Если хочешь из VB то повышай приоритет процесса, отключай по максимуму все работающие процессы. Пиши под DOS. Иначе делать девайс, подключаемый к порту. Схема получится очень простая.
0
0 / 0 / 0
Регистрация: 01.05.2013
Сообщений: 28
02.01.2014, 22:26 30
The trick, тут такое дело...например у меня на форме находиться некие кнопки которые не относятся с работой по ЛПТ, но они должны быть в активном режиме, то есть скажем наводим мышь над кнопкой, а кнопка меняет цвет, более того данный процесс не должен нарушать(мешать) работу "генератора импульсов" в ЛПТ. Поэтому, думаю необходимо создать некий девайс, модуль или как назывется...вощем "приборчик" кот. делает запросы по равным интервалам времени(периоду). Есть такая возможность в программировании?
Цитата Сообщение от The trick Посмотреть сообщение
Если хочешь из VB то повышай приоритет процесса, отключай по максимуму все работающие процессы. Пиши под DOS.
а это в единую прогу да? блин так я не умею, тем более под ДОС..есть примеры, я только с VB умею работать.
0
Модератор
8098 / 3035 / 806
Регистрация: 22.02.2013
Сообщений: 4,326
Записей в блоге: 78
02.01.2014, 22:39 31
Собирай на микроконтроллере например. Я делал девайсы на 8-битных AVR контроллерах. Для твоей задачи вполне пойдет распространенная копеечная Attiny2313. Твоя задача там делается элементарно, там есть возможность аппаратного ШИМа, через таймеры, включаешь в режиме CTC и регулируешь частоту. Также куча встроенной переферии типа SPI, USART для обмена с компом. Но придется изучать микроконтроллеры. Если ты и дальше собираешься этим заниматься, то тебе это все равно придеться изучать.
0
10205 / 6587 / 493
Регистрация: 28.12.2010
Сообщений: 21,165
Записей в блоге: 1
02.01.2014, 22:50 32
Дабы предупредить вопросы по данному контексту:
https://www.cyberforum.ru/post5455219.html
https://www.cyberforum.ru/micr... 27802.html
https://www.cyberforum.ru/micr... 21922.html
https://www.cyberforum.ru/micr... 69341.html
Управление яркостью лампы через USB
https://www.cyberforum.ru/micr... 81078.html
Arduino FAQ. Теория и практика
0
0 / 0 / 0
Регистрация: 01.05.2013
Сообщений: 28
02.01.2014, 22:58 33
The trick, я понял Вас. эту мысль я не рассматриваю, а жестко привязываюсь прогрммной реализации, а именно под Виндовс. Так как МАЧ3 удалось такое соорудить, тогда такое возможно замутить, вот стоит вопрос КАК? Такто программировать МК умею, а именно программирую только PIC-и, только на АСМ-е, на С еще не пробывал. AVR пока планирую, но не спешу еще. А знакомиться начал все-таки. Тут к чему это я..я уже прогу написал которая управляет станком, по заданной картинке, а вот не удалось мне подружиться с ЛПТ портом.
0
Модератор
8098 / 3035 / 806
Регистрация: 22.02.2013
Сообщений: 4,326
Записей в блоге: 78
02.01.2014, 23:14 34
Цитата Сообщение от Alpout Посмотреть сообщение
The trick, я понял Вас.
Давай на "ты"
Цитата Сообщение от Alpout Посмотреть сообщение
Так как МАЧ3 удалось такое соорудить, тогда такое возможно замутить, вот стоит вопрос КАК?
Я не могу это сказать так. Если очень хочеться узнать, то можно в отладчике посмотреть как это работает. Также я не уверен, что если будут работать куча процессов, "поедающих" такты ЦП, то генератор будет работать стабильно. Попробуй поставить приоритет TIME_CRITICAL (как-то так) своему процессу, либо в отдельном потоке запустить генерацию. Также пробывать работать с портом через АПИ. Настраивай скорость порта (частота генератора) и записывай в него буфер, так чтобы нужная ножка "дергалась".
А чем тебя не устраивает генерация на звуковой карте? Там стабильно импульсы можно сделать, правда насчет "прямоугольности" не могу сказать. Но это тоже лечится просто.
0
0 / 0 / 0
Регистрация: 01.05.2013
Сообщений: 28
02.01.2014, 23:26 35
Цитата Сообщение от The trick Посмотреть сообщение
приоритет TIME_CRITICAL (как-то так) своему процессу
а можно пример? впервые сталкиваюсь.
Цитата Сообщение от The trick Посмотреть сообщение
с портом через АПИ
а это как? насчет звуковухи приму к сведению, но рассматривать пока не стану. С таким успехом можно через юсб+МК, ведь в звуковуху тоже нужен дополнительный девайс на МК. Нет счас Только ЛПТ!! У меня 3 осный ЧПУ. а значит 6 пинов, как минимум, по сигналу СТЕП/ДИР. ЛПТ по опыту говорю, что он очень устойчив к помехам, особенно когда работаешь с плазменной резкой, а юсб тормозит!! иногда зависает мышь или клаваитура, при поджиге дуги, а лпт стойко и без сбоев переносит помехи и работает как надо.
0
Модератор
8098 / 3035 / 806
Регистрация: 22.02.2013
Сообщений: 4,326
Записей в блоге: 78
02.01.2014, 23:33 36
Цитата Сообщение от Alpout Посмотреть сообщение
а можно пример? впервые сталкиваюсь.
Гугли SetThreadPriority
Цитата Сообщение от Alpout Посмотреть сообщение
а это как?
CreateFile, DeviceIoControl, WriteFileEx и т.д.
Открывай порт, задавай скорость, и асинхронно пиши WriteFileEx в него данные.
1
10205 / 6587 / 493
Регистрация: 28.12.2010
Сообщений: 21,165
Записей в блоге: 1
02.01.2014, 23:36 37
а можно пример? впервые сталкиваюсь.
http://www.cyberguru.ru/win32/... page3.html

ведь в звуковуху тоже нужен дополнительный девайс на МК
необязательно, фильтр + компаратор + силовая часть.
1
0 / 0 / 0
Регистрация: 01.05.2013
Сообщений: 28
02.01.2014, 23:40 38
The trick, ок спасибо, поработаем над этим

Добавлено через 49 секунд
raxp, спсибо, информативная ссылка, про это не знал.
0
0 / 0 / 0
Регистрация: 01.05.2013
Сообщений: 28
12.01.2014, 17:30 39
появилось время для эксперимента решил дальше продолжить начатое. есть некоторые вопросы: почему в модуле перестал возобновляться TextBox и PictureBox? Указываю 2 варианта одинаковой работы. См. исходник. 1 вариант без модуля(рабочий), 2 вариант с модулем(нерабочий)Варианты.rar
0
Модератор
8098 / 3035 / 806
Регистрация: 22.02.2013
Сообщений: 4,326
Записей в блоге: 78
12.01.2014, 17:36 40
Ну тык Way объяви в модуле. Ты неправильно делаешь, у тебя так и не будет работать стабильно.
Цитата Сообщение от The trick Посмотреть сообщение
Открывай порт, задавай скорость, и асинхронно пиши WriteFileEx в него данные.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.01.2014, 17:36

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Организация обмена данными через LPT-порт
разработайте программу определения адреса LPT - порта и вывода информации через LPT - порт, При...

Управление COM- и LPT-портами через API из VB
См. сабж. В Сети много примеров, но они или на Дельфи, или на Си. Пробую перенести в VB - не...

Управление через ИК порт
Уважаемые, интересуюсь таким вопросом. На современных девайсах имеется инфракрасный порт, вопрос...

Управление и контроль через COM-порт
Требуется подключить к компьютеру железку, которая будет иметь: - 1 вход (например, зажигать...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.