LinuxCNC + Orange Pi (allwincnc)
-
- Новичок
- Сообщения: 13
- Зарегистрирован: 14 фев 2020, 20:36
- Репутация: 0
- Настоящее имя: Вася
- Контактная информация:
Re: LinuxCNC + Orange Pi (allwincnc)
Всем хорошего времени суток
подскажите как сделать обратную связь шпинделя через arisc?
есть драйвет ws55-220 у него EN-старт стоп, DIR - направление, SV 0-10в обороты, и есть вывод оборотов - вот хотелось бы их считать и засунуть в pyVCP, там два бара: первый заданные и второй истинные, вооот и как бы нам через arisc получить частоту? и вкинуть ее в pyvcp скажем spindle-speed-current может нативная переменная есть какая-то...
точнее как их заводить то? через arisc.pwm -fb какойто или arisc.encoder.N.vel-rpm??
подскажите как сделать обратную связь шпинделя через arisc?
есть драйвет ws55-220 у него EN-старт стоп, DIR - направление, SV 0-10в обороты, и есть вывод оборотов - вот хотелось бы их считать и засунуть в pyVCP, там два бара: первый заданные и второй истинные, вооот и как бы нам через arisc получить частоту? и вкинуть ее в pyvcp скажем spindle-speed-current может нативная переменная есть какая-то...
точнее как их заводить то? через arisc.pwm -fb какойто или arisc.encoder.N.vel-rpm??
-
- Новичок
- Сообщения: 13
- Зарегистрирован: 14 фев 2020, 20:36
- Репутация: 0
- Настоящее имя: Вася
- Контактная информация:
Re: LinuxCNC + Orange Pi (allwincnc)
ну походу вот так например
кто подскажет есть ли нативная возможность контроля скорости заданной к актуальной? упоролся я в карягу
Код: Выделить всё
setp arisc.encoder.0.enable 1
setp arisc.encoder.0.index-enable 1
setp arisc.encoder.0.A-port 0 # PA
setp arisc.encoder.0.A-pin 18
net spindle.0.actual-speed arisc.encoder.0.vel-rpm
- MX_Master
- Мастер
- Сообщения: 7475
- Зарегистрирован: 27 июн 2015, 19:45
- Репутация: 3099
- Настоящее имя: Михаил
- Откуда: Алматы
- Контактная информация:
Re: LinuxCNC + Orange Pi (allwincnc)
На мой первый взгляд можно сделать так (все пины и номера каналов даны только для примера, важные места выделены цветом)xenon-alien писал(а): ↑13 июл 2022, 19:56 Всем привет.
С домашним положением разобрался. (нужно было закомментировать офсет датчика, что бы сразу всё обнуляло)
За одно и механические микрики поставил на микро-токарный и всё настроил. (кому интересно - смотрим)
А теперь у меня завтык с настройкой шпинделя по степ/дир и ШИМ данного проекта.
Что я уже не подключал и к чему попало, но так и не понял, как реализовать вручную...
И по позиции пробовал и по скорости, но так и не получилось.
И обороты в сек. и в минуту прописывал - и ничего...
Что-то натыкал, и там где задается частота ШИМ 100Гц, тогда чуток вращается, но ни на что не реагирует кроме как вкл/выкл шпинделя с заданной частотой.
Видимо не дорос ещё вручную это прописывать.
Кому не сложно, то подскажите что, да как, а то "стоп машина - нет бензина" в плане настройки.
Боюсь даже представить, как потом энкодер заводить, но то уже потом.
Буду благодарен за любые наброски настройки.
На всякий случай, что бы не искать описание ШИМ данного проекта и раздел шпинделя "мошэн"
Ну и то что натворил, правда уже многое по удалял...
config.hal
loadrt [KINS]KINEMATICS
loadrt [EMCMOT]EMCMOT base_period_nsec=[EMCMOT]BASE_PERIOD servo_period_nsec=[EMCMOT]SERVO_PERIOD num_joints=[KINS]JOINTS
loadrt arisc pwm="v" out="PC4"
addf arisc.gpio.read servo-thread
addf arisc.pwm.read servo-thread
addf motion-command-handler servo-thread
addf motion-controller servo-thread
addf arisc.gpio.write servo-thread
addf arisc.pwm.write servo-thread
setp arisc.pwm.0.dc-cmd 0.5 # 50%
setp arisc.pwm.0.dc-max-t 5000 # ns
setp arisc.pwm.0.dir-hold 50000 # ns
setp arisc.pwm.0.dir-setup 50000 # ns
setp arisc.pwm.0.pwm-port 0 # PA port
setp arisc.pwm.0.pwm-pin 14 # PA14 pin
setp arisc.pwm.0.dir-port 3 # PD port
setp arisc.pwm.0.dir-pin 14 # PD14 pin
setp arisc.pwm.0.vel-scale 12800 # (24000 RPM) / (60s) * (32 microsteps)
net s-rpm spindle.0.speed-out arisc.pwm.0.vel-cmd
net s-en spindle.0.on arisc.pwm.0.enable arisc.gpio.PC4-out
loadrt [EMCMOT]EMCMOT base_period_nsec=[EMCMOT]BASE_PERIOD servo_period_nsec=[EMCMOT]SERVO_PERIOD num_joints=[KINS]JOINTS
loadrt arisc pwm="v" out="PC4"
addf arisc.gpio.read servo-thread
addf arisc.pwm.read servo-thread
addf motion-command-handler servo-thread
addf motion-controller servo-thread
addf arisc.gpio.write servo-thread
addf arisc.pwm.write servo-thread
setp arisc.pwm.0.dc-cmd 0.5 # 50%
setp arisc.pwm.0.dc-max-t 5000 # ns
setp arisc.pwm.0.dir-hold 50000 # ns
setp arisc.pwm.0.dir-setup 50000 # ns
setp arisc.pwm.0.pwm-port 0 # PA port
setp arisc.pwm.0.pwm-pin 14 # PA14 pin
setp arisc.pwm.0.dir-port 3 # PD port
setp arisc.pwm.0.dir-pin 14 # PD14 pin
setp arisc.pwm.0.vel-scale 12800 # (24000 RPM) / (60s) * (32 microsteps)
net s-rpm spindle.0.speed-out arisc.pwm.0.vel-cmd
net s-en spindle.0.on arisc.pwm.0.enable arisc.gpio.PC4-out
- xenon-alien
- Почётный участник
- Сообщения: 4510
- Зарегистрирован: 01 янв 2013, 13:13
- Репутация: 920
- Настоящее имя: Daniel
- Откуда: Закарпатская обл. Украина
- Контактная информация:
Re: LinuxCNC + Orange Pi (allwincnc)
Заработало! Благодарю!
Провтыкал в параметрах pwm="v"
И по идее тут нюанс.
Осталось разобраться с ускорением и торможением, а то на 100 оборотах ШД уже пищит, пропускает шаги, и не крутится...
Провтыкал в параметрах pwm="v"
И по идее тут нюанс.
Нужно задавать импульсы на оборот. Т.е. если пробовать на ШД то 200 шагов на 4 микрошага = 1600 (в твоем примере 200*32=6400).
Осталось разобраться с ускорением и торможением, а то на 100 оборотах ШД уже пищит, пропускает шаги, и не крутится...
- MX_Master
- Мастер
- Сообщения: 7475
- Зарегистрирован: 27 июн 2015, 19:45
- Репутация: 3099
- Настоящее имя: Михаил
- Откуда: Алматы
- Контактная информация:
Re: LinuxCNC + Orange Pi (allwincnc)
Ускорений в модуле pwm никаких нет. Это не его работа. Нужен сторонний компонент.
- xenon-alien
- Почётный участник
- Сообщения: 4510
- Зарегистрирован: 01 янв 2013, 13:13
- Репутация: 920
- Настоящее имя: Daniel
- Откуда: Закарпатская обл. Украина
- Контактная информация:
Re: LinuxCNC + Orange Pi (allwincnc)
А как тогда работает это при позиционировании осей? Макс скорость и макс ускорение же прописывается в ini файле.
А с этим можно попробовать - 5. Spindle Soft Start ?
- MX_Master
- Мастер
- Сообщения: 7475
- Зарегистрирован: 27 июн 2015, 19:45
- Репутация: 3099
- Настоящее имя: Михаил
- Откуда: Алматы
- Контактная информация:
Re: LinuxCNC + Orange Pi (allwincnc)
Разгон для осей лежит на плечах планировщика, а разгон шпинделя (PWM->0-10V) контролирует частотник.xenon-alien писал(а): ↑ А как тогда работает это при позиционировании осей? Макс скорость и макс ускорение же прописывается в ini файле.
А попробуйxenon-alien писал(а): ↑ А с этим можно попробовать - 5. Spindle Soft Start ?
- xenon-alien
- Почётный участник
- Сообщения: 4510
- Зарегистрирован: 01 янв 2013, 13:13
- Репутация: 920
- Настоящее имя: Daniel
- Откуда: Закарпатская обл. Украина
- Контактная информация:
Re: LinuxCNC + Orange Pi (allwincnc)
Получилось!MX_Master писал(а): ↑31 июл 2022, 13:09А попробуйxenon-alien писал(а): ↑ А с этим можно попробовать - 5. Spindle Soft Start ?
Теперь можно и к обратной связи приступать - настройки энкодера для шпинделя. (нарезание резьб)
- xenon-alien
- Почётный участник
- Сообщения: 4510
- Зарегистрирован: 01 янв 2013, 13:13
- Репутация: 920
- Настоящее имя: Daniel
- Откуда: Закарпатская обл. Украина
- Контактная информация:
Re: LinuxCNC + Orange Pi (allwincnc)
На данный момент так выглядит конфигурация.
Не пойму, как обороты согласовать. Подглядел, как в месе конфигуратор это сделал, но у меня чего-то не получается...
Или наводки, или ещё энкодер труп, или ещё чего...
Может кто глянуть?
А то я это ещё на коленке собираю. (а серву подключать придется наверное через понижайки уровней)
Энкодер подключен к питанию апельсинки 3,3в и напрямую в плату. Канал АВ видится, а индекс нет.
Может просто на 3,3 вольтах работает не корректно, или переполюсовка что-то не дожарила...
По идее энкодер видится, но он на 5в 1800ppr (китайский омрон e6b2-cwz1x, правда в месе полярность питания перепутал, и не знаю на сколько он жив) Счетчик считает туда и обратно, но с оборотами косяк.
Не пойму, как обороты согласовать. Подглядел, как в месе конфигуратор это сделал, но у меня чего-то не получается...
Или наводки, или ещё энкодер труп, или ещё чего...
Может кто глянуть?
А то я это ещё на коленке собираю. (а серву подключать придется наверное через понижайки уровней)
Энкодер подключен к питанию апельсинки 3,3в и напрямую в плату. Канал АВ видится, а индекс нет.
Может просто на 3,3 вольтах работает не корректно, или переполюсовка что-то не дожарила...
- MX_Master
- Мастер
- Сообщения: 7475
- Зарегистрирован: 27 июн 2015, 19:45
- Репутация: 3099
- Настоящее имя: Михаил
- Откуда: Алматы
- Контактная информация:
Re: LinuxCNC + Orange Pi (allwincnc)
Я не эксперт, но энкодеру минимум 4.8V надо. Сигнал с Z метки можно и мультиметром проверить. И ещё, некоторые пины на гребёнке апельсина могут работать не так, как положено. Можно сменить пин для Z метки.
-
- Новичок
- Сообщения: 33
- Зарегистрирован: 15 мар 2013, 12:16
- Репутация: 3
- Настоящее имя: Василий
- Откуда: Калуга
- Контактная информация:
Re: LinuxCNC + Orange Pi (allwincnc)
в китайском энкодере, том что мне попался (судя по всему брат-близнец этого), выход на обычных npn транзисторах дискретных, у меня он с нового состояния одну фазу не давал (был просто непропай), пришлось чинить. разбирается элементарно, ремонтопригоден...
- xenon-alien
- Почётный участник
- Сообщения: 4510
- Зарегистрирован: 01 янв 2013, 13:13
- Репутация: 920
- Настоящее имя: Daniel
- Откуда: Закарпатская обл. Украина
- Контактная информация:
Re: LinuxCNC + Orange Pi (allwincnc)
Тут у меня ошибка...xenon-alien писал(а): ↑ Т.е. если пробовать на ШД то 200 шагов на 4 микрошага = 1600
С таким параметром получается 1об./сек при значении 1 об./мин...
А я то думаю, чего же я энкодер не могу подключить и согласовать с вращением шпинделя.
- xenon-alien
- Почётный участник
- Сообщения: 4510
- Зарегистрирован: 01 янв 2013, 13:13
- Репутация: 920
- Настоящее имя: Daniel
- Откуда: Закарпатская обл. Украина
- Контактная информация:
Re: LinuxCNC + Orange Pi (allwincnc)
Сегодня добил, что бы выводились значения корректно.
Ну и готовность на нужных оборотах тоже.
Но не пойму, чего нужен такой огромный SCALE в 60 000 000 "попугаев" что бы получить реальные обороты на выходе?
(на плате меса это ровно 60 сек и получаем об/в минуту)
Но и то с натягом, потому что с таким множителем точность/кратность получается в 25 об/минуту...
Следующее, что может показать это 250 об/мин, или же 200. (в зависимости от програмного скругления может быть на пару единиц точнее)
Это я чего-то накосячил, или драйвер чего-то не так считает...?
А я то думаю, чего оно у меня не получается...
Вот тут написано, что это секунды и минуты, но их значение в HalShow ну очень маленькое...
Можно ли это как-то исправить?
Код: Выделить всё
arisc.encoder.N.vel (float, out) real velocity feedback (in movement units/second).
arisc.encoder.N.vel-rpm (float, out) real velocity feedback (in revolutions/minute).
- MX_Master
- Мастер
- Сообщения: 7475
- Зарегистрирован: 27 июн 2015, 19:45
- Репутация: 3099
- Настоящее имя: Михаил
- Откуда: Алматы
- Контактная информация:
Re: LinuxCNC + Orange Pi (allwincnc)
Можно, я разрешаю. Наводка - https://github.com/allwincnc/linuxcnc/b ... #L955-L981xenon-alien писал(а): ↑ Можно ли это как-то исправить?
ЗЫ поддержка проекта - всё
- xenon-alien
- Почётный участник
- Сообщения: 4510
- Зарегистрирован: 01 янв 2013, 13:13
- Репутация: 920
- Настоящее имя: Daniel
- Откуда: Закарпатская обл. Украина
- Контактная информация:
Re: LinuxCNC + Orange Pi (allwincnc)
Благодарю!MX_Master писал(а): ↑ Можно, я разрешаю. Наводка - https://github.com/allwincnc/linuxcnc/b ... #L955-L981
Получается, что в драйвере самом что-то не так?
В папке installer, который давно качал гитхаба, нашел подобный файл, но он прилично отличается... Ладно, скачаю новый и куда его потом запихнуть, а то что-то не найду его в файловой системе.
Где искать, и что править на что?
Нули убрать лишние с 1000000000, что бы получилась 1000?
Потом сохранить и проверить?
Я помню.
- xenon-alien
- Почётный участник
- Сообщения: 4510
- Зарегистрирован: 01 янв 2013, 13:13
- Репутация: 920
- Настоящее имя: Daniel
- Откуда: Закарпатская обл. Украина
- Контактная информация:
Re: LinuxCNC + Orange Pi (allwincnc)
Скачал заново, "исправил" на 1000xenon-alien писал(а): ↑ Нули убрать лишние с 1000000000, что бы получилась 1000?
Потом сохранить и проверить?
Запустил терминал и install_drv.sh - успех.
Проверяю - ничего не изменилось.
А где хранится оригинальный файл, может туда всё закосипастить? (я про уже установленный - в какой папке он хранится)
- MX_Master
- Мастер
- Сообщения: 7475
- Зарегистрирован: 27 июн 2015, 19:45
- Репутация: 3099
- Настоящее имя: Михаил
- Откуда: Алматы
- Контактная информация:
Re: LinuxCNC + Orange Pi (allwincnc)
Любой RT компонент собирается и устанавливается командой
sudo halcompile --install Исходник
Все необходимые заголовки (.h) должны лежать рядом с исходником.
sudo halcompile --install Исходник
Все необходимые заголовки (.h) должны лежать рядом с исходником.
-
- Мастер
- Сообщения: 1245
- Зарегистрирован: 07 фев 2020, 21:00
- Репутация: 160
- Настоящее имя: Дмитрий
- Контактная информация:
Re: LinuxCNC + Orange Pi (allwincnc)
Михаил , а этот конфиг у тебя самого сейчас работает ? Я всё ни как не решусь перейти на ариск , как на GPIO настроил , оно работает тьфу-тьфу нормально , а запросы у меня не большие . Но может когда и попробую , SD карта с рабочим образом имеется .
Гражданином Непала может быть любой гражданин,зачатый НЕпалкой и НЕпальцем.
- MX_Master
- Мастер
- Сообщения: 7475
- Зарегистрирован: 27 июн 2015, 19:45
- Репутация: 3099
- Настоящее имя: Михаил
- Откуда: Алматы
- Контактная информация:
Re: LinuxCNC + Orange Pi (allwincnc)
Да, у меня станок на OPi PC робит, с arisc драйвером. Как доделаю свой контроллер на STM32, перейду на него. И всех желающих потяну за собой. Ну а чуть позже полностью освобожусь от LinuxCNC. Ибо планировщик только на 3 оси мне категорически не подходит
-
- Мастер
- Сообщения: 1245
- Зарегистрирован: 07 фев 2020, 21:00
- Репутация: 160
- Настоящее имя: Дмитрий
- Контактная информация:
Re: LinuxCNC + Orange Pi (allwincnc)
Жаль , конечно , но меня устраивает то что есть . Спасибо тебе за проделанный труд ! И тема рекордсмен по просмотрам и ответам !
Гражданином Непала может быть любой гражданин,зачатый НЕпалкой и НЕпальцем.