Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.142.173.166] |
|
Страницы: (3) [1] 2 3 все ( Перейти к последнему сообщению ) |
Сообщ.
#1
,
|
|
|
Не так давно мне в руки попали два униполярных шаговых двиготеля:
1. EM-200 / 28X31G / STH-39D018 (5 проводов) 2. EM-201 (6 проводов, на плате надпись TH-1) Чел, который мне их отдал, вытащил их из принтера EPSON Stylus 300. Мне стало интерестно, как можно осуществить управление ими с компа(я пишу на С++). и вообще принципиальная схема включения. Help плиз, люди добрые! Буду блогадарен любой помощи, особо за ссылки на литературу. |
Сообщ.
#2
,
|
|
|
Вероятно, какаято программа на компе будет выдавать информацию о направлении, скорости и количестве шагов, на контроллер по управлению двигателем. Контроллер будет генерировать соответствующую последовательность импульсов тока на обмотки двигатель.
|
Сообщ.
#3
,
|
|
|
Цитата Максим Гайгальник @ Вероятно, какаято программа на компе будет выдавать информацию о направлении, скорости и количестве шагов, на контроллер по управлению двигателем. Контроллер будет генерировать соответствующую последовательность импульсов тока на обмотки двигатель. для этого достаточно 8255 и 8253..если обслуживать прерывания и на шину прям исашную втыкать - то ышо пару мелких...хотя МК может оказаться и дешевше... по поводу конкретного схемного решения - нуна даташиты на указанные движки и от этого потом и плясать...в принцепе ничего сложного не должно быть...хотя наверное всё же на МК будет просче и быстрее...Как правило на шаговики заводят обратную связь по току и при превышении тока, идушего через драйвер шаговика, отсекают напряжение...Хотя обычно это для большого тока заморачиваются...тут надо смотреть в доки для начала... с уважением (круглый) |
Сообщ.
#4
,
|
|
|
Для управления шаговыми движками нужен специальный драйвер управления(в исполнении одной микросхемы), или проще говоря кучка ключевых транзисторов для управления обмотками.
Схемки "как, куда и что" можно надыбать здесь http://stepmotor.ru/articles/ispolz.php |
Сообщ.
#5
,
|
|
|
Цитата kolobok0 @ для этого достаточно 8255 и 8253..если обслуживать прерывания и на шину прям исашную втыкать - то ышо пару мелких...хотя МК может оказаться и дешевше... по поводу конкретного схемного решения - нуна даташиты на указанные движки и от этого потом и плясать... Вопрос к kolobok0: расскажи что такое 8255 и 8253, а также даташиты? Добавлено Как узнать какой длительности должен быть импульс, чтобы произошел один шаг? И как осуществляется ревеосирование? |
Сообщ.
#6
,
|
|
|
Цитата ][oTT@6bl4 @ Как узнать какой длительности должен быть импульс, чтобы произошел один шаг? И как осуществляется ревеосирование? Вы вышеприведенную ссылку смотрели? Или вам всю статью сюда скопировать 8255 = Programmable Peripheral Interface (PPI) или по русски 40-ножечная микросхема у которой есть три порта, каждый по 8 бит. Каждый порт и комбинацию портов можно программно изменять режимы(ввод-вывод) работы 8253 = Programmable Interval Timers (PITs), - програмируемый таймер даташит = Техническая документация на изделие, как пример приатачен даташит на 8253 Прикреплённый файл8253.zip (112.93 Кбайт, скачиваний: 318) |
Сообщ.
#7
,
|
|
|
Цитата AlexJ @ Для управления шаговыми движками нужен специальный драйвер управления(в исполнении одной микросхемы), или проще говоря кучка ключевых транзисторов для управления обмотками. Я делал на простых 315-ых... проще найти, проще менять если сожжёшь. Цитата ][oTT@6bl4 @ 1. EM-200 / 28X31G / STH-39D018 (5 проводов) 2. EM-201 (6 проводов, на плате надпись TH-1) бери тестер, прозванивай все возможные комбинации концов и думай, как там обмотки раскиданы. Цитата ][oTT@6bl4 @ можно на его плате посмотреть чего там на эти моторы идёт.Чел, который мне их отдал, вытащил их из принтера EPSON Stylus 300. в общем случае, шаговый мотор работает под воздействием импульсов, поочерёдно подаваемых на его обмотки в определённой последовательности, реверс осуществляется изменением направления последовательности. напрмиер, для двигателей ДШР последовательность выглядит так(три цифры, для 1й,2й,3й обмоток(фаз) соответственно):(110 011 101) (110 011 101), реверс: (011 110 101) (011 110 101)... графии были бы нагляднее, но сорри, рисовать лень. ребят, нафих ему прпям в шину фтыкать? человеку интересно мотор покрутить, а не контроллер паять... управлять ШД можно и непосредственно с компа... ЛПТ порт позволяет без проблем выврдить не менее восьми сигналов уровня ТТЛ - хватит на два мотора и ещё останется (хотя, Я БЫ поставил оптронную развязку. И НЕ ЗАБУДЬ, что параллельно любым электромагнитам(в т.ч. и электромоторам), ели включаешь их транзистором, НЕОБХОДИМО ставить диоды (для данных моторов - на ампер достаточно) обратной полярностью (анодом к "земле", катодом к "плюсовому" выводу мотора) - это для защиты трындистора от импульса ЭДС самоиндукции.) ВНИМАНИЕ! чтобы под WinNT корректно, без левых кривых и костыльных дров работать с ЛПТ-портом, в разъёме твоего устройства необходимо распаять перемычки: 1-13, 10-16, 11-17, 12-20. Это необходимо, чтобы виндозный драйвер порта считал твою железку исправным принтером и не рапортовал о её неисправности. выводы шины данных - 2...9, "земля" - 18...25 |
Сообщ.
#8
,
|
|
|
Цитата AlexJ @ 8255 = Programmable Peripheral Interface (PPI) или по русски 40-ножечная микросхема По русски КР580ВВ55. Цитата AlexJ @ 8253 = Programmable Interval Timers (PITs), - програмируемый таймер КР580ВИ53. |
Сообщ.
#9
,
|
|
|
Цитата ][oTT@6bl4 @ Цитата kolobok0 @ для этого достаточно 8255 и 8253..если обслуживать прерывания и на шину прям исашную втыкать - то ышо пару мелких...хотя МК может оказаться и дешевше... по поводу конкретного схемного решения - нуна даташиты на указанные движки и от этого потом и плясать... Вопрос к kolobok0: расскажи что такое 8255 и 8253, а также даташиты? Добавлено Как узнать какой длительности должен быть импульс, чтобы произошел один шаг? И как осуществляется ревеосирование? На Ваш вопрос уже прозвучали ответы... Со своей стороны решил запостить ссылку на досаточно исчерпывающую статью Редико. Думаю эту фамилию многие знают http://radiotech.by.ru/Shematic_PCB/Avtomatika/step_motor.htm с уважением (круглый) |
Сообщ.
#10
,
|
|
|
Цитата ][oTT@6bl4 @ Как узнать какой длительности должен быть импульс, чтобы произошел один шаг? больше - не меньше многие ШД могут стоять на режиме удержания (т.е. подав импульс на обмотки, не снимаешь с них напряжения, пока не понадобится сделать следующий шаг)... Необходимая длительность импульса зависит от нагрузки на мотор, чем больше нагрузка, тем длинее нужен импульс. определить можно экспериментально, начни с 0.1сек (это ОЧЕНЬ много, зато наверняка хватит) и уменьшай, пока не появятся сбои (пропуски шагов). Цитата ][oTT@6bl4 @ см. мой пост выше.И как осуществляется ревеосирование? Цитата medved_68 @ Эээ... А зачем она ему? для управления мотором такая заморочка наф не нужна, хватит простой схемки "только выходы" на одном регистре...По русски КР580ВВ55. два-три корпуса мелкой логики на селектор адреса, с выхода селектора на CS регистра, и будет вам щщастье, раз уж охота лезть в шину. Цитата medved_68 @ а таймер в данном случае ИМХО вообще нафиг не нужен. НАМНОГО проще это реализовать на уровне драйвера.КР580ВИ53. Цитата kolobok0 @ ему не станочный привод вертеть, а просто мотрчиком поиграть! уж если делать что-то реальное на таком моторчике, то достаточно будет просто на его питание стабилизатор с защитой по току Как правило на шаговики заводят обратную связь по току и при превышении тока, идушего через драйвер шаговика, отсекают напряжение.. зы. И всё же, я НАСТОЯТЕЛЬНО рекомендую автору для начала разобраться с мотором (определить обмотки, убедиться в исправности моторчика, поочерёдно тыкая в обмотки импульсами "вручную"), а потом подключить его К ЛПТ-ПОРТУ (три оптрона развязки, три ключевых транзистора (чёнить типа 814/815 подойдёт - дёшево и сердито).) если захочется - эту схему потом можно вместо ЛПТ подключить к выходу регистра на самодельную платку... Кстати, в современных компах ужЕ нет ИСА-шины, а в PCI тыкаться намного сложнее... ззы. а можно и в ком-порт, там как раз три выхода - Tx, DTR, RTS. (программная реализация управления этими выходами в нужном режиме обсуждалась не раз). так даже прикольнее - если заюзать USB2COM - переходник, например м/с PL2303 - получится контроллер, подключаемый к юсб |
Сообщ.
#11
,
|
|
|
Цитата ][oTT@6bl4 @ Как узнать какой длительности должен быть импульс, чтобы произошел один шаг? Конечно лучше всего найти доки на конкретный двигатель. У него есть еще много других интересных параметров. Вот советский двигатель ШДР-711 Исследования вполне можно начинать с диапазона 1[mc] - 20 [mc] |
Сообщ.
#12
,
|
|
|
внесу свой вклад: вот Сайт Армавирского Электротехнического Завода, линк на раздел "шаговые двигатели."
Обратите внимание на: Цитата Режим работы: S1-продолжительный при частоте отработки шагов не выше максимальной приемистости или фиксированной стоянке под током (Это из даташита на ДШР39). Из этого мы видим, что избыточная скорость отработки шагов может привести к перегреву двигателя... следовательно, НЕ РЕКОММЕНДУЕТСЯ разгонять двигатель до скорости, превышающей номинальную. (для данной модели это означает, что длительность шагового интервала не должна быть менее 1.4мс, а длительность импульса не должна быть менее 2.8мс. следовательно, максимальная частота вращения данного двигателя (для рассчёта использованы данные из даташита) составляет ровно 3.5 оборота в секунду, т.е. примерно 17об/мин.) зы. а вот схема включения ДШР39 и временнЫе диаграммы его работы. Высока вероятность, что тот моторчик, что с 6ю выводами, окажется аналогичным. |
Сообщ.
#13
,
|
|
|
Я управлял шаговыми двигателями четрыехпроводными ДШ-200 напрямую с компьютера при разработке программы управления тепловым объектом на основе нечеткой логики. Для прямого досутпа к LPT-порту в WindowsXP использовал библиотеку inpout32.dll
/* прототипы для функций DLL : */ typedef short _stdcall (*inpfuncPtr)(short PortAddr); typedef void _stdcall (*oupfuncPtr)(short PortAddr, short datum); /* объявление указателей */ HINSTANCE hLib; inpfuncPtr inp32; oupfuncPtr out32; __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { hLib = LoadLibrary("inpout32.dll"); // загружаем библиотеку /* проверяем правильность загрузки*/ if (hLib == NULL) return ; inp32 = (inpfuncPtr) GetProcAddress(hLib, "Inp32"); if (inp32 == NULL) return ; out32 = (oupfuncPtr) GetProcAddress(hLib, "Out32"); if (out32 == NULL) return ; } // вращаем двигатель в одну сторону void TForm1::CloseRotate() { RegPort=1; for(l=0;l<=3;l++) { out32(0x378,RegPort); // записываем 1 Sleep(25); // формируем выдержку времени RegPort=RegPort<<1; // сдвигаем на разряд влево } } // и в другую void TForm1::OpenRotate() { RegPort=8; for(l=0;l<=3;l++) { out32(0x378,RegPort); // записываем 8; Sleep(25); // формируем выдержку времени RegPort=RegPort>>1; // сдвигаем на разряд вправо } } |
Сообщ.
#14
,
|
|
|
Цитата AntiAspirant @ Для прямого досутпа к LPT-порту в WindowsXP использовал библиотеку inpout32.dll задолбали ламерюги, неумеющие пользоваться портом принтера... после монтажа в разъём перемычек, указанных мной выше, (1-13, 10-16, 11-17, 12-20), работа с портом без проблем осуществляется через стандартные API. Я бы ещё понял, если бы требовалось более восьми линий и управляющие линии применялись бы в нестандартном режиме, но для вывода восьми байтов следует использовать штатные средства. |
Сообщ.
#15
,
|
|
|
to, Змей.
Что следует использовать штатные средства - громко сказано,и про ламерюг тоже. На 9 этаж подниматься удобнее на лифте все же, чем карабкаться по вбитым в стену костылям. Дело вкуса, кому что больше нравится использовать, ты поделился опытом, я тоже поделился опытом, и не стоит горячиться с теримином тут "ламерюги". |