Activity

Управление станком через rs232 , контроллер на pic16F877
Художник:

В качестве специализированного контроллера целесообразно использовать IBM PC под РТ ОС,

Ну вот мыло мочало - начни сначала. Уже более 10 лет пользую IBM PC и не помню чтобы к нему моторы напрямую подключались.

Итого - хобби CNC - ОДИН IBM PC под ОС WIN XP на нем разрабытваем на нем и пилим. Одна проблемма - на LPT более 45 килостепов в секунду не выжать - а это не много при 2000 отсчетах на оборот.
Плюс неравномерность выдачи импульсов - WIN да и PC не RTOS 😃

Засдушаем мэтра какие порты у него есть в PC дома?

Управление станком через rs232 , контроллер на pic16F877
Художник:

buslik,

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

USB
комманды вида - количество импульсов задержка между импульсами

Уже лучше?

Управление станком через rs232 , контроллер на pic16F877

На мой взгляд внешний контроллер типа DeskCNC упрощает работу любого софта под Win32. Контроллеру легче держать времянку это не OS со своими делами и 5ms замерзаниями при обращении к диску.

Вопрос только в том что на сегодняшний день нет открытых стандартов для работы по RS232 или USB

В mach есть в настройках USB - но это только digital I/O насколько я понял.

А как бы было хорошо отправить команду типа
destination 5000
accel 50000
decel 50000
speed 3000

и получить ответ когда она выполнена.

Сервопривод..
maxvovk:

Практически любой современный МК переварит довольно высокую частоту входа с енкодеров. Но есть ньюансы, например дребезг и некоторые тонкости при смене направления. Оптимально и абсолютно правильно на выходе енкодеров ставить фильтр из кучки D-триггеров, чем длиннее, тем лучше.

Эх, что такое довольно высокая частота? Давайте уже поконкретней.

PIC: 625 kHz это 18750 rpm при 2000 отсчетов на оборот. это по контроллеру. (контроллер имеет спец модуль энкодера с фильтрацией см. datasheet)

По LPT прозвучала цифра 35k степов в секунду. Это 1050 rpm.

PID укладывается в 20 uSec начну эксперименты с 5000 PID в секунду.

PWM 10 bit - думаю всего это достаточно.

Я работал с CPLD и с FPGA и с DSP – но считаю что для хобби станка должен быть другой подход.
Корпуса DIP, доставабельные микрухи и прочее, тогда их будут повторять и совершенствовать.
Мало того, мне проще так делать прототипы, думаю другим то-же.

Итого step/dir интерфейс и последовательный порт для установки параметров. Думаю даже отдельная плата с USB и далее I2C на остальные контроллеры.

Согласные могут отойти от стены 😃

PS не надо про BGA на коленке.

Сервопривод..

Что касается импульсов с энкодера PIC18fxx31 переваривает 625000 импульсов энкодера в секунду. Боюсь это максимум для LPT и MACH.

Так что умное управление пока оставим в покое. (Я подозреваю что выход энкодера при ±10В уходит в стойку а не в драйвер)

Скоро нарисую схему - положу на рассмотрение.

Сервопривод..

Вот

error = genPos - currPos; // error is desired-current position
pwmSet = pGain * error + // standard PID equation
iGain * eInteg +
dGain * (error - ePrev); // derivative is current-previous
eInteg += error; // integral is simply a summation over time
ePrev = error; // save previous for derivative

на pic18f2331 занимает 118 циклов
все по два байта со знаком pwmSet - четыре

ну так что 30000 раз в секунду можно PID вычислить

Сервопривод..
AZi:

Понятно, я так и думал 😃

не расстраивайся - книг по этому делу как грязи.

И тем не менее практика - критерий истины. Буду собирать все на макетке и смотреть что получается.

Ну не укладывается у меня в голове как это все можно сделать не задавая профиля в PID контроллере а давая ему шаги на входе.

Сервопривод..

Совершенно согласен.

Давайте уже наконец отделим мух от котлет.

Как я уже писал и никто это не опроверг каждый шаг увеличивает позицию - соответственно и ошибку текушей позиции - вот это и увеличивает ШИМ. Для шага назад - та же цепочка.

Что произойдет при достижении позиции зависит от коэффициентов - их можно установить так что мы и не доедем даже 😃 (читайте здеся ww1.microchip.com/downloads/en/…/00964A.pdf)

Вопрос это какие защиты надо делать и на какие максимальные частоты импульсов из LPT расчитывать (мне кажется 100к максимум) ?

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

Сервопривод..

Согласен с AZi

давайте уже ближе к теме.

PIC18Fxx31 создан для привода - PWM - 6 каналов
Encoder Interface - и прочее

Давайте от него отрываться.

Теперь по принципу работы - так как на входе у нас step
то каждый импульс увеличивает ошибку PID регулятора - и он в свою очередь пытается ее исправить меняя PWM.

Кончились импульсы и ошибка стала = 0. приехали.

Таким образом от PC зависит как мы разгонялись, ехали и тормозили.

Задача PIC’а успевать достигнуть отсчета до следующего импульса.

Сервопривод..

Спасибо парни - уморили. 😂

наверху у дешевых драйверов органичение на PWM из-за отсутствия накачки, другими словами он должен переключаться в 0 чтобы кондер зарядить 12 вольтами.

Снизу же ограничений быть не должно.

Так как — ВНИМАНИЕ — если ось горизонтальна и не движется - стоит на месте (и мы не давим на портал плечем) PWM ==== 0000,0000 то есть все ключи разомкнуты. (Исключение - дешевые драйвера - им надо закоротить на низ дабы подзарядить кондеры верхних плечей)

Для вертикальных осей есть тормоз - электромеханический 😃

Варианты управления серводвигателем

Интересует как раз то, что универсально и хоббийно.

Програмы типа NINOS или MATCH3. Но только чтобы они были заточены под сервоприводы. И посылали бы более умные комманды чем импульсы на каждый отсчет энкодера. Или может драйвера какие под них.

У меня достаточно большой опыт в промышленном станкостроении, а вот когда влез в хоббийное волосы дыбом встали - до сих пор не могу понять как это работает.

Варианты управления серводвигателем

Протоколов великое множество.

Хоть бы и SECS от SEMI 😃)))

Я думал что есть готовое. Но если его нет - то буду делать шаг-направление. Не писать же все свое.

Хотя я подумываю насчет LinuxCNC там вроде как свои драйвера можно прилеплять.

Варианты управления серводвигателем

Делаю свой сервоконтроллер

встал вопрос - какие бывают программы по управлению?

Посмотрел у UHU и Gecko - step и dir

Но ведь это не серьезно. Как мне кажется проще сказать на сколько шагов надо уехать и с какой скоростью (ускорением)?

Есть ли такие программы и где их можно увидеть?

ЗЫ двигатель PITTMAN 48vdc с 500 энкодером.