Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Возможности СОМ порта  (Прочитано 19020 раз)
0 Пользователей и 2 Гостей смотрят эту тему.
cr3cm8
Новенький

ru
Offline Offline

« : 02-11-2010 19:18 » 

Меня интересует реализация одного технического решения с использованием, возможно, СОМ порта. В информатике и программировании я не силен.
Поэтому хотелось бы спросить людей знающих, насколько возможно написать программу, чтобы она выполняла такую функцию:

    имееются точки с координатами Х и У:
    1(х1, у1); 2(х2,у2); 3(х3, у3) ..... N(xn,yn)

    соответственные перемещения :
        между точками 1 и 2:
            по х = х2 - х1
            по у = у2 - у1
        между точками 2 и 3:
            по х = х3 - х2
            по у = у3 - у2

        причем в первом случае значения перемещений будут положительны,
                    во втором случае отрицательны

программа высчитывает эти перемещения между точками и отсылает на  какие-то выводы( как я предполагаю COM порта ) количество импульсов,  соответствующее этим перемещениям, если перемещение положительно, то одной полярности, если перемещение отрицательно, то по тем же выводам - другой полярности. Если полярность на выводах изменить нельзя, то можно послать эти  отрицательные" импульсы по другим выводам, имея общий "-", т.е. землю.

Импульсы от перемещений по Х отсылаются на одну пару выводов
                 от перемещений по У - на другую пару.

Под парой выводов я подразумеваю + и -, откуда можно запитаться (насколько мне известно, там есть GND и др входы-выходы).

перед отсылкой следующего импульса программа ждет сигнала готовности, принятого всё с того же СОМ порта (хотя это можно и отбросить, если вместо этого будет обеспечено, например, закорачивание клавиши ENTER при управлении из VBasic)

Но все это только немного упорядоченная куча моих мыслей и догадок.

Заранее благодарен за возможный ответ.
Записан
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #1 : 02-11-2010 19:26 » 

Интерфейс RS232C (COMmunication port в терминах PC) на исходящих сигнальных выводах имеет только два состояния - положительное напряжение (0), либо отрицательное (1) - третьего состояния нет. Обычно для настольных компов это ±12 В, а для ноутбуков — ±9 В относительно вывода GND. Токи слабые — единицы-десятки мА.

Для передачи можно использовать линии RTS и DTR — ими можно управлять программно. По линии Tx данные передаются согласно протоколу, но, в принципе, можно ею тоже свободно управлять, переводя ее в режим "передачи нулей" (в исходном состоянии на ней всегда 1 — отрицательное напряжение).
http://en.wikipedia.org/wiki/RS-232
« Последнее редактирование: 02-11-2010 19:29 от RXL » Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Dale
Блюзмен
Команда клуба

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #2 : 02-11-2010 22:08 » 

Рассмотрите еще вариант с использованием порта LPT вместо COM.

Во-первых, на нем более привычные уровни напряжения, совместимые с логикой TTL, в отличие от RS-232, которые еще придется преобразовывать для дальнейшей обработки. Во-вторых, там просто больше сигнальных линий, которые могут пригодиться для дальнейшего развития устройства.

Интерфейс LPT традиционно используется самодельщиками для сопряжения с самыми разными устройствами, от простейших программаторов и дисплейных панелей на жидких кристаллах и до управления шаговыми двигателями в домашних станках с числовым программным управлением. В интернете есть огромная масса примеров готовых устройств с программами к ним.

Но независимо от того, что вы выберете - COM или LPT, имейте в виду, что оба эти интерфейса устарели и больше не поддерживаются производителями компьютеров. Например, у меня в качестве стендового используется не самый новый десктоп, ему минимум три года, но на нем уже нет ни COM, ни LPT; для технологических нужд мне пришлось приобрести отдельную плату 2xCOM+LPT. Так что будьте готовы к тому, что не сможете подключить свое устройство к современному десктопу или ноутбуку.

Если у вас есть серьезные намерения насчет этого устройства, очень рекомендую использовать интерфейс USB. Он наверняка проживет еще не год и не два.
Записан

Всего лишь неделя кодирования с последующей неделей отладки могут сэкономить целый час, потраченный на планирование программы. - Дж. Коплин.

Ходить по воде и разрабатывать программное обеспечение по спецификациям очень просто, когда и то, и другое заморожено. - Edward V. Berard

Любые проблемы в информатике решаются добавлением еще одного уровня косвенности – кроме, разумеется, проблемы переизбытка уровней косвенности. — Дэвид Уилер.
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #3 : 02-11-2010 23:35 » 

Dale, есть USB-COM и USB-LPT девайсы. Если программировать не под DOS, то разницы быть не должно.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Dale
Блюзмен
Команда клуба

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #4 : 02-11-2010 23:50 » 

Конечно, есть, и их вполне можно использовать для данной задачи. Правда, когда я хотел приобрести себе такой девайс, оказалось, что они не в каждом салоне есть в наличии. Я раньше был уверен, что их везде полно, пока реально не понадобилось. Пришлось взять в исполнении PCI.

Выбор, брать ли готовое или паять самому, зависит от того, насколько cr3cm8 дружен с паяльником. Если не очень, лучше купить готовое. Если паяльник не пугает, получится дешевле и компактнее, плюс меньше вероятность, что переходник позаимствуют для других целей.
Записан

Всего лишь неделя кодирования с последующей неделей отладки могут сэкономить целый час, потраченный на планирование программы. - Дж. Коплин.

Ходить по воде и разрабатывать программное обеспечение по спецификациям очень просто, когда и то, и другое заморожено. - Edward V. Berard

Любые проблемы в информатике решаются добавлением еще одного уровня косвенности – кроме, разумеется, проблемы переизбытка уровней косвенности. — Дэвид Уилер.
cr3cm8
Новенький

ru
Offline Offline

« Ответ #5 : 03-11-2010 16:51 » 

... зависит от того, насколько cr3cm8 дружен с паяльником.

С паяльником как раз дружу, в интернете хорошо покопался, в техническом плане проблем у меня быть не должно.
Область применения такого рода схемы - в станках ЧПУ: пайка, точечная сварка, сверление, фрезеровка, вышивание и много чего ещё.

А вот с программной начинкой дела посложнее, мне не совсем всё понятно. То что LPT тут будут более приемлемы, это я усвоил, то что они исчезают, это меня не смущает. На нём имеются выводы PIN 2-9 которые при отсылке на них сигнала выдают питание (при закорачивании на GND - PIN 18-25 ), достаточное для LED-индикатора. Так же есть PIN 10, 11, 12, 13, 15 - с которых возможно принимать импульсы от внешнего прибора или датчика. Вот на эти выводы как раз и надо опираться.

есть интересная программка, но без исходного кода, в ней я нашел все функции по выдаче импульсов на LPT: последовательно на выводы 2, 3, 4, 5 подаются импульсы, задается направление 2-3-4-5 или 5-4-3-2.

вот приблизительно такую программку насколько сложно написать (из вузовского обучения я знаком только с VB) не для 4 выводов, а для 8, т. е. для двух шаговых двигателей и с входным индикатором готовности ?

это я представляю что в графическом представлении будет окошко, откуда будут считываться координаты Х и У




Записан
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #6 : 03-11-2010 20:00 » 

cr3cm8, так в чем вопрос то состоит?
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Sla
Модератор

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #7 : 03-11-2010 21:30 » 

такую программку можно написать и на VB

И при этом безразлично по какому порту будет происходить обмен.

Основная проблема в приемо/передатчике твоего устройства.

Можешь поискать в инете "цветомузыку на lpt порту. и даже спикер.

Если организовывать связь с внешним девайсом и управлять им, то, естественно понадобится писать и и "программный код" своего девайса.


Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
Dale
Блюзмен
Команда клуба

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #8 : 04-11-2010 00:28 » 

вот приблизительно такую программку насколько сложно написать (из вузовского обучения я знаком только с VB) не для 4 выводов, а для 8, т. е. для двух шаговых двигателей и с входным индикатором готовности?

Написать в принципе довольно несложно. Если шаговые двигатели у вас униполярные, то, возможно, пригодится такая конструкция: http://www.rlocman.ru/shem/schematics.html?di=5161 . Там есть и схемы электроники для управления двигателями, и готовая печатная плата, и даже программа.

Кстати, двух шаговых двигателей не маловато будет для такой задачи? Я думаю, потребуется два на привод координатного стола и еще минимум один на вертикальную ось - поднимать/опускать рабочий инструмент.

Правда, лично мне такой подход не по душе. Я сейчас пытаюсь сделать дома аналогичный агрегат - небольшой сверлильно-фрезерно-гравировальный станочек с ЧПУ, привод координатного стола тоже планирую выполнить на униполярных шаговых двигателях, но управление хочу реализовать по другому принципу. Через принтерный порт как-то грубовато получается.
Записан

Всего лишь неделя кодирования с последующей неделей отладки могут сэкономить целый час, потраченный на планирование программы. - Дж. Коплин.

Ходить по воде и разрабатывать программное обеспечение по спецификациям очень просто, когда и то, и другое заморожено. - Edward V. Berard

Любые проблемы в информатике решаются добавлением еще одного уровня косвенности – кроме, разумеется, проблемы переизбытка уровней косвенности. — Дэвид Уилер.
cr3cm8
Новенький

ru
Offline Offline

« Ответ #9 : 05-11-2010 02:12 » 

Спасибо огромное за ссылку, там  схема без сложных микросхем и PIC, которые надо ещё программировать - у меня нет такой технической возможности, к радиосборкам прибегаю не часто, хотя мне это интересно.
....управление хочу реализовать по другому принципу. Через принтерный порт как-то грубовато получается.
А поделитесь идеей, если это не секрет, может через USB? На ноутбуках уже нет LPT, только USB остался.
Сам я уже провожу некоторые эксперименты по выводу сигналов на LED-индикаторы для того, чтобы понять принцип работы и управления будущей установкой.

Кстати, двух шаговых двигателей не маловато будет для такой задачи?
Да, действительно можно и зарезервировать третий движок на будущее, но мне он пока не нужен.

В ходе поисков обнаружил факты, что есть два типа программ работы с LPT портом :
- принцип step & direction через сложные контроллеры
- принцип последовательной подачи импульсов на pin`ы на основе микросхемы 555TM7

Я думаю, что мне уже и самому все ясно становится.
 
Записан
Dale
Блюзмен
Команда клуба

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #10 : 05-11-2010 03:26 » 

А поделитесь идеей, если это не секрет, может через USB? На ноутбуках уже нет LPT, только USB остался.

Да, я об этом упоминал выше. Причем не только на ноутбуках, но и на стационарных компьютерах. Конечно, можно найти старенький системный блок, но если сломается, заменить с каждым годом будет все сложнее. Да и если конструкция получится удачной, наверняка захочется ее тиражировать, тогда еще труднее будет. Лучше уж ориентироваться на современные интерфейсы.

Интерфейс USB довольно сложен для самостоятельной реализации. Но, к счастью, есть готовые решения от шотландской фирмы  FTDI (http://www.ftdichip.com/index.html). Обратите внимание на микросхемы FT232R (http://www.ftdichip.com/Support/Documents/DataSheets/ICs/DS_FT232R.pdf) и FT245R (http://www.ftdichip.com/Support/Documents/DataSheets/ICs/DS_FT245R.pdf). Это преобразователи USB в последовательный и параллельный интерфейсы соответственно, с ними работать очень просто, они не требуют программирования.

Я в своей конструкции планирую поручить управление шаговыми двигателями микроконтроллеру, который будет получать управляющие программы в формате RS274 (Gerber). Передавать программы во время отладки буду через RS232, затем заменю на USB и добавлю чтение файлов с флеш-карт ходовых форматов. Возможно, в перспективе оснащу станок контроллером Ethernet, в принципе для этого есть все необходимое, не хватает лишь свободного времени.

Прямое управление обмотками шагового двитателя из Windows мне не слишком нравится, поскольку Windows - не ОС реального времени, поэтому частота импульсов не будет стабильной, а для фрезеровки и гравирования равномерность движения очень важна. Лучше, если этим займется выделенный процессор.

Да, действительно можно и зарезервировать третий движок на будущее, но мне он пока не нужен.

А как собираетесь поднимать/опускать сам рабочий инструмент? Что-то вроде соленоида, на фиксированную высоту?
« Последнее редактирование: 05-11-2010 03:40 от Dale » Записан

Всего лишь неделя кодирования с последующей неделей отладки могут сэкономить целый час, потраченный на планирование программы. - Дж. Коплин.

Ходить по воде и разрабатывать программное обеспечение по спецификациям очень просто, когда и то, и другое заморожено. - Edward V. Berard

Любые проблемы в информатике решаются добавлением еще одного уровня косвенности – кроме, разумеется, проблемы переизбытка уровней косвенности. — Дэвид Уилер.
Dale
Блюзмен
Команда клуба

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #11 : 05-11-2010 03:39 » 

Кстати, если собираетесь управлять шаговым двигателем через простые ключи, то тут есть еще такая проблема.

Обмотка шагового двигателя - индуктивно-резистивная нагрузка, поэтому после подачи на нее напряжения ток нарастает экспоненциально. Если повышать частоту управляющих импульсов, ток в обмотке не успевает нарастать до номинального значения, поэтому двигатель теряет крутящий момент, может даже пропускать шаги. Если же повысить напряжение питания, тогда ток покоя становится слишком большим и двигатель перегревается. Поэтому готовую схему, на которую я давал ссылку, можно применять только на очень маленьких скоростях перемещения. Для нормальной производительности двигателя нужно более продвинутое решение.
Записан

Всего лишь неделя кодирования с последующей неделей отладки могут сэкономить целый час, потраченный на планирование программы. - Дж. Коплин.

Ходить по воде и разрабатывать программное обеспечение по спецификациям очень просто, когда и то, и другое заморожено. - Edward V. Berard

Любые проблемы в информатике решаются добавлением еще одного уровня косвенности – кроме, разумеется, проблемы переизбытка уровней косвенности. — Дэвид Уилер.
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #12 : 05-11-2010 08:17 » 

Dale, а если применить управление на двух напряжениях? Большее для движения и меньшее для удержания. Для переходных процессов поставить конденсатор.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Dale
Блюзмен
Команда клуба

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #13 : 05-11-2010 11:20 » new

Уменьшенное напряжение для режима удержания частично решит проблему, устранив перегрев при удержании. Но останется такая проблема: если рабочее напряжение повысить, двигатель будет хорошо работать на высоких скоростях, но перегреваться на низких. А низкие скорости необходимы при фрезеровке и гравировании твердых материалов, желательно иметь возможность плавно регулировать скорость подачи.

Можно, конечно, менять напряжение как функцию скорости подачи, но все равно передний фронт импульса тока будет завален по экспоненте, делая старт очередного шага более "вялым". Более простое и правильное решение - стабилизировать ток через обмотку. Тогда в начальный момент импульса на обмотку подается большое напряжение, чтобы ток быстро нарастал, а затем автоматически понижается. Питание обмотки стабильным током улучшает динамику двигателя и одновременно облегчает тепловой режим - ток никогда не превышает номинальный.

Такая возможность реализована в интегральных контроллерах шаговых двигателей, не нужно даже изощряться в схемотехнике. Например, я использую контроллер L297 (http://pdf1.alldatasheet.com/datasheet-pdf/view/22437/STMICROELECTRONICS/L297D.html). В нем ток задается опорным напряжением на соответствующем выводе микросхемы. Причем ток регулируется в импульсном режиме через ШИМ, минимизируя перегрев силовых элементов.

Идея пониженного тока удержания тоже хороша, я планирую ее использовать в своей конструкции. Достаточно будет коммутировать опорное напряжение на L297.
Записан

Всего лишь неделя кодирования с последующей неделей отладки могут сэкономить целый час, потраченный на планирование программы. - Дж. Коплин.

Ходить по воде и разрабатывать программное обеспечение по спецификациям очень просто, когда и то, и другое заморожено. - Edward V. Berard

Любые проблемы в информатике решаются добавлением еще одного уровня косвенности – кроме, разумеется, проблемы переизбытка уровней косвенности. — Дэвид Уилер.
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines