Activity
Вот что я накопал
2.а там прошивки в комплекте не было случаем?
будет - как платы придут сяду писать
Вот ServoSch11.zip
Мужики, вы опять полезли не в те дебри, надо сначала разрвботать грамотный алгоритм управления сервом, а потом уже задумываться над его реализацией…
www.engin.umich.edu/group/ctm/…/PID2.html для начала
В качестве специализированного контроллера целесообразно использовать IBM PC под РТ ОС,
Ну вот мыло мочало - начни сначала. Уже более 10 лет пользую IBM PC и не помню чтобы к нему моторы напрямую подключались.
Итого - хобби CNC - ОДИН IBM PC под ОС WIN XP на нем разрабытваем на нем и пилим. Одна проблемма - на LPT более 45 килостепов в секунду не выжать - а это не много при 2000 отсчетах на оборот.
Плюс неравномерность выдачи импульсов - WIN да и PC не RTOS 😃
Засдушаем мэтра какие порты у него есть в PC дома?
buslik,
…Команду отправить можно, но при отправке команд перемещения короткими отрезками, скорость движения машины, ограниченная RS-232, будет никакой. В байтах посчитайте, подтверждение приёма данных и разгон-торможение учтите, вообще протокол побитно распишите, такие предложения и отпадут.
USB
комманды вида - количество импульсов задержка между импульсами
Уже лучше?
На мой взгляд внешний контроллер типа DeskCNC упрощает работу любого софта под Win32. Контроллеру легче держать времянку это не OS со своими делами и 5ms замерзаниями при обращении к диску.
Вопрос только в том что на сегодняшний день нет открытых стандартов для работы по RS232 или USB
В mach есть в настройках USB - но это только digital I/O насколько я понял.
А как бы было хорошо отправить команду типа
destination 5000
accel 50000
decel 50000
speed 3000
и получить ответ когда она выполнена.
Всем привет!
Вот всё таки решился открыть новый топик на тему UHU.
А может wiki будет удобнее?
Да вот только указанный контроллер работает только со своим софтом и стоит 350 енотов.
Хотелось бы открытого стандарта.
Практически любой современный МК переварит довольно высокую частоту входа с енкодеров. Но есть ньюансы, например дребезг и некоторые тонкости при смене направления. Оптимально и абсолютно правильно на выходе енкодеров ставить фильтр из кучки 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 вычислить
Понятно, я так и думал 😃
не расстраивайся - книг по этому делу как грязи.
И тем не менее практика - критерий истины. Буду собирать все на макетке и смотреть что получается.
Ну не укладывается у меня в голове как это все можно сделать не задавая профиля в PID контроллере а давая ему шаги на входе.
Совершенно согласен.
Давайте уже наконец отделим мух от котлет.
Как я уже писал и никто это не опроверг каждый шаг увеличивает позицию - соответственно и ошибку текушей позиции - вот это и увеличивает ШИМ. Для шага назад - та же цепочка.
Что произойдет при достижении позиции зависит от коэффициентов - их можно установить так что мы и не доедем даже 😃 (читайте здеся ww1.microchip.com/downloads/en/…/00964A.pdf)
Вопрос это какие защиты надо делать и на какие максимальные частоты импульсов из LPT расчитывать (мне кажется 100к максимум) ?
Как удобнее всего сделать установку параметров? как отобразить процессы? Дабы человек без осциллографа имел возможность понять что происходит в системе.
Согласен с AZi
давайте уже ближе к теме.
PIC18Fxx31 создан для привода - PWM - 6 каналов
Encoder Interface - и прочее
Давайте от него отрываться.
Теперь по принципу работы - так как на входе у нас step
то каждый импульс увеличивает ошибку PID регулятора - и он в свою очередь пытается ее исправить меняя PWM.
Кончились импульсы и ошибка стала = 0. приехали.
Таким образом от PC зависит как мы разгонялись, ехали и тормозили.
Задача PIC’а успевать достигнуть отсчета до следующего импульса.
Но ведь он на что-то опирался когда так высказывался - я думаю он пояснит.
Давайте ближе к теме мужики.
Раз степы идут через LPT давайте плясать от него - сколько степов на одну секунду приходться?
но если присмотреться - то и по последовательному не только параметры меняет но и двигает
Здесь elm-chan.org/works/smc/report_e.html
все доступно - и как останавливается и что между.
Не у одного меня такие вопросы
Спасибо парни - уморили. 😂
наверху у дешевых драйверов органичение на PWM из-за отсутствия накачки, другими словами он должен переключаться в 0 чтобы кондер зарядить 12 вольтами.
Снизу же ограничений быть не должно.
Так как — ВНИМАНИЕ — если ось горизонтальна и не движется - стоит на месте (и мы не давим на портал плечем) PWM ==== 0000,0000 то есть все ключи разомкнуты. (Исключение - дешевые драйвера - им надо закоротить на низ дабы подзарядить кондеры верхних плечей)
Для вертикальных осей есть тормоз - электромеханический 😃
Интересует как раз то, что универсально и хоббийно.
Програмы типа NINOS или MATCH3. Но только чтобы они были заточены под сервоприводы. И посылали бы более умные комманды чем импульсы на каждый отсчет энкодера. Или может драйвера какие под них.
У меня достаточно большой опыт в промышленном станкостроении, а вот когда влез в хоббийное волосы дыбом встали - до сих пор не могу понять как это работает.
Протоколов великое множество.
Хоть бы и SECS от SEMI 😃)))
Я думал что есть готовое. Но если его нет - то буду делать шаг-направление. Не писать же все свое.
Хотя я подумываю насчет LinuxCNC там вроде как свои драйвера можно прилеплять.
Делаю свой сервоконтроллер
встал вопрос - какие бывают программы по управлению?
Посмотрел у UHU и Gecko - step и dir
Но ведь это не серьезно. Как мне кажется проще сказать на сколько шагов надо уехать и с какой скоростью (ускорением)?
Есть ли такие программы и где их можно увидеть?
ЗЫ двигатель PITTMAN 48vdc с 500 энкодером.