Форум программистов, компьютерный форум, киберфорум
Электродвигатели
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.60/132: Рейтинг темы: голосов - 132, средняя оценка - 4.60
33 / 32 / 7
Регистрация: 13.12.2010
Сообщений: 342

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

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

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

Программа на C++ генерирует тактовую частоту на lpt порт
Программа на C++ генерирует тактовую частоту на lpt порт. while(true){Out32(888,1);Out32(888,0);} Этот цикл выполняется 150000 раз в...

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

LPT порт, запись в регистр управления.
Вобщем в регистр данных отправляю байт все как положен записывается и работает. Но вот с регистром управления байда какая то, логику не...

59
Эксперт по электронике
7208 / 3387 / 346
Регистрация: 28.10.2011
Сообщений: 13,327
Записей в блоге: 7
21.12.2013, 22:54
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Alpout Посмотреть сообщение
до 5 кГц
Тогда используйте DOS, т. к. винда не ОС реального времени.
Или собирайте девайс на МК и управляйте им с компа через COM или USB.

Не по теме:

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

0
0 / 0 / 0
Регистрация: 01.05.2013
Сообщений: 29
21.12.2013, 23:14
Есть подсказка использование функции QueryPerformanceCounter. Но не умею как с ней обращаться. все таки ребята создают программу. Есть пример генератор до 600Гц http://valery-us4leh.narod.ru/XpCoding/xp02.html
0
Модератор
10068 / 3913 / 886
Регистрация: 22.02.2013
Сообщений: 5,863
Записей в блоге: 79
21.12.2013, 23:25
Цитата Сообщение от Alpout Посмотреть сообщение
Есть подсказка использование функции QueryPerformanceCounter. Но не умею как с ней обращаться. все таки ребята создают программу. Есть пример генератор до 600Гц http://valery-us4leh.narod.ru/XpCoding/xp02.html
Нельзя создать генератор для такой частоты, даже через высокочастотный счетчик. Он будет работать, но не стабильно и загружать систему в зависимости от выполняемых процессов и еще кучи всяких ньюансов. Вы можете генерировать 5кГц на звуковой карте без проблем, либо собирать девайс и на нем генерировать такую частоту.
1
0 / 0 / 0
Регистрация: 01.05.2013
Сообщений: 29
21.12.2013, 23:42
The trick, возможно я ошибаюсь...привожу расчеты. Максимальыне реальные обороты шагового двигателя 300 об/мин=5об/сек. За 200 импульсов ШД совершает 1 оборот. Отсюда для 300об/мин нужно подать 1кГц. Может с 5кГц я переборщил, а вот например регулируемый 1кГц как получить? Станки же на лпт портах делают..
0
Модератор
10068 / 3913 / 886
Регистрация: 22.02.2013
Сообщений: 5,863
Записей в блоге: 79
22.12.2013, 00:30
Цитата Сообщение от 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
Сообщений: 29
22.12.2013, 00:37
да, именно контроллер по сигналу ШАГ/Направление. запустил Ваш код двигал окошко туда-сюда изменил размеры, чутк подвисает, да?
0
0 / 0 / 0
Регистрация: 01.05.2013
Сообщений: 29
22.12.2013, 00:43
Работа с ШД.rar вот давно писал прогу. там только на скорость не смог вписать в пргу. мало подумал Здесь я экспериментировал с лпт портом. Но код смешной. ну я не программист Скажу одно: Шаговый точно отрабатывает свои шаги а вот генератором таки не сумел поиграть.
0
0 / 0 / 0
Регистрация: 01.05.2013
Сообщений: 29
02.01.2014, 22:00
The trick, возобновляю тему. недавно переписал Ваш код, доработав с работой по ЛПТ, и проверил. Результат опыта показывает, что большие частоты получил, даже когда повышаю частоту коммутации сигналов в ЛПТ, у меня Шаговик останавливается, значит все Ок, требуемые обороты получаем. НО! Двигатель чуток работает с вибрацией, а это означает, что Импульсы посылаются "грязно!", иначе говоря, неустойчиавя частота сигнала. Потом для сравнения запустил МАЧ3, у нее не ощущается вибрации на разных оборотах, и частота по осциллографу устойчивая. Вопрос: как им удается контролировать частоту столь равномерно? мне тоже такое охото))) у меня есть идея, может написать код и сделать какую нибудь модуль(длл библиотека или осх итд), от кот. будут исходить запросы(пуск, стоп, Fрег) за определенное время? Тут я понимаю, под неравномерностью частоты сигнала в том, что производиться опросы на разные события, что мешает стабильно работать "генератору". Помогите уважаемые программисты, я многое чего могу не знать, но кое-что знаю в программировании.
0
Модератор
10068 / 3913 / 886
Регистрация: 22.02.2013
Сообщений: 5,863
Записей в блоге: 79
02.01.2014, 22:07
Если хочешь из VB то повышай приоритет процесса, отключай по максимуму все работающие процессы. Пиши под DOS. Иначе делать девайс, подключаемый к порту. Схема получится очень простая.
0
0 / 0 / 0
Регистрация: 01.05.2013
Сообщений: 29
02.01.2014, 22:26
The trick, тут такое дело...например у меня на форме находиться некие кнопки которые не относятся с работой по ЛПТ, но они должны быть в активном режиме, то есть скажем наводим мышь над кнопкой, а кнопка меняет цвет, более того данный процесс не должен нарушать(мешать) работу "генератора импульсов" в ЛПТ. Поэтому, думаю необходимо создать некий девайс, модуль или как назывется...вощем "приборчик" кот. делает запросы по равным интервалам времени(периоду). Есть такая возможность в программировании?
Цитата Сообщение от The trick Посмотреть сообщение
Если хочешь из VB то повышай приоритет процесса, отключай по максимуму все работающие процессы. Пиши под DOS.
а это в единую прогу да? блин так я не умею, тем более под ДОС..есть примеры, я только с VB умею работать.
0
Модератор
10068 / 3913 / 886
Регистрация: 22.02.2013
Сообщений: 5,863
Записей в блоге: 79
02.01.2014, 22:39
Собирай на микроконтроллере например. Я делал девайсы на 8-битных AVR контроллерах. Для твоей задачи вполне пойдет распространенная копеечная Attiny2313. Твоя задача там делается элементарно, там есть возможность аппаратного ШИМа, через таймеры, включаешь в режиме CTC и регулируешь частоту. Также куча встроенной переферии типа SPI, USART для обмена с компом. Но придется изучать микроконтроллеры. Если ты и дальше собираешься этим заниматься, то тебе это все равно придеться изучать.
0
 Аватар для raxper
10237 / 6615 / 498
Регистрация: 28.12.2010
Сообщений: 21,154
Записей в блоге: 1
02.01.2014, 22:50
Дабы предупредить вопросы по данному контексту:
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
Сообщений: 29
02.01.2014, 22:58
The trick, я понял Вас. эту мысль я не рассматриваю, а жестко привязываюсь прогрммной реализации, а именно под Виндовс. Так как МАЧ3 удалось такое соорудить, тогда такое возможно замутить, вот стоит вопрос КАК? Такто программировать МК умею, а именно программирую только PIC-и, только на АСМ-е, на С еще не пробывал. AVR пока планирую, но не спешу еще. А знакомиться начал все-таки. Тут к чему это я..я уже прогу написал которая управляет станком, по заданной картинке, а вот не удалось мне подружиться с ЛПТ портом.
0
Модератор
10068 / 3913 / 886
Регистрация: 22.02.2013
Сообщений: 5,863
Записей в блоге: 79
02.01.2014, 23:14
Цитата Сообщение от Alpout Посмотреть сообщение
The trick, я понял Вас.
Давай на "ты"
Цитата Сообщение от Alpout Посмотреть сообщение
Так как МАЧ3 удалось такое соорудить, тогда такое возможно замутить, вот стоит вопрос КАК?
Я не могу это сказать так. Если очень хочеться узнать, то можно в отладчике посмотреть как это работает. Также я не уверен, что если будут работать куча процессов, "поедающих" такты ЦП, то генератор будет работать стабильно. Попробуй поставить приоритет TIME_CRITICAL (как-то так) своему процессу, либо в отдельном потоке запустить генерацию. Также пробывать работать с портом через АПИ. Настраивай скорость порта (частота генератора) и записывай в него буфер, так чтобы нужная ножка "дергалась".
А чем тебя не устраивает генерация на звуковой карте? Там стабильно импульсы можно сделать, правда насчет "прямоугольности" не могу сказать. Но это тоже лечится просто.
0
0 / 0 / 0
Регистрация: 01.05.2013
Сообщений: 29
02.01.2014, 23:26
Цитата Сообщение от The trick Посмотреть сообщение
приоритет TIME_CRITICAL (как-то так) своему процессу
а можно пример? впервые сталкиваюсь.
Цитата Сообщение от The trick Посмотреть сообщение
с портом через АПИ
а это как? насчет звуковухи приму к сведению, но рассматривать пока не стану. С таким успехом можно через юсб+МК, ведь в звуковуху тоже нужен дополнительный девайс на МК. Нет счас Только ЛПТ!! У меня 3 осный ЧПУ. а значит 6 пинов, как минимум, по сигналу СТЕП/ДИР. ЛПТ по опыту говорю, что он очень устойчив к помехам, особенно когда работаешь с плазменной резкой, а юсб тормозит!! иногда зависает мышь или клаваитура, при поджиге дуги, а лпт стойко и без сбоев переносит помехи и работает как надо.
0
Модератор
10068 / 3913 / 886
Регистрация: 22.02.2013
Сообщений: 5,863
Записей в блоге: 79
02.01.2014, 23:33
Цитата Сообщение от Alpout Посмотреть сообщение
а можно пример? впервые сталкиваюсь.
Гугли SetThreadPriority
Цитата Сообщение от Alpout Посмотреть сообщение
а это как?
CreateFile, DeviceIoControl, WriteFileEx и т.д.
Открывай порт, задавай скорость, и асинхронно пиши WriteFileEx в него данные.
1
 Аватар для raxper
10237 / 6615 / 498
Регистрация: 28.12.2010
Сообщений: 21,154
Записей в блоге: 1
02.01.2014, 23:36
а можно пример? впервые сталкиваюсь.
http://www.cyberguru.ru/win32/... page3.html

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

Добавлено через 49 секунд
raxp, спсибо, информативная ссылка, про это не знал.
0
0 / 0 / 0
Регистрация: 01.05.2013
Сообщений: 29
12.01.2014, 17:30
появилось время для эксперимента решил дальше продолжить начатое. есть некоторые вопросы: почему в модуле перестал возобновляться TextBox и PictureBox? Указываю 2 варианта одинаковой работы. См. исходник. 1 вариант без модуля(рабочий), 2 вариант с модулем(нерабочий)Варианты.rar
0
Модератор
10068 / 3913 / 886
Регистрация: 22.02.2013
Сообщений: 5,863
Записей в блоге: 79
12.01.2014, 17:36
Ну тык Way объяви в модуле. Ты неправильно делаешь, у тебя так и не будет работать стабильно.
Цитата Сообщение от The trick Посмотреть сообщение
Открывай порт, задавай скорость, и асинхронно пиши WriteFileEx в него данные.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
12.01.2014, 17:36

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

LPT-порт для ввода 8 data bits (+strobe) на STM8S-discovery
Есть железка, которая транслирует состояние 9 фотоэлементов в 9 сигналов для параллельного порта. Это считыватель перфоленты, 8 дорожек...

Вывести в динамике через LPT-порт
дан текст программы: ;ПРИМЕР EXE-ПРОГРАММЫ ;Определение сегмента стека /можно оставлять без изменения/ ;Имя сегмента стека - stacksg ...

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

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


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

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Nekobox - outbounds[0].transport: unknown transport type: raw
damix 01.10.2026
Фикс ошибки Правым кликом по серверу -> отладочная информация -> edit Заменить "net": "raw", на "net": "tcp", Нажать кнопку reload.
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru