Ethernet контроллер для LinuxCNC (STM32, FPGA)

Обсуждение установки, настройки и использования LinuxCNC. Вопросы по Gкоду.
Аватара пользователя
MX_Master
Мастер
Сообщения: 7482
Зарегистрирован: 27 июн 2015, 19:45
Репутация: 3103
Настоящее имя: Михаил
Откуда: Алматы
Контактная информация:

Ethernet контроллер для LinuxCNC (STM32, FPGA)

Сообщение MX_Master »

На горизонте замаячила идея о контроллере для LinuxCNC полностью с нуля. Схема, плата, все дела.

В качестве мозга я выбрал многолапый STM32F429IGT6 (180 МГц). На борту есть вся необходимая периферия для высокочастотного вывода шагов и подсчёта импульсов. Аналоговое управление организовать тоже можно.

На АЛИ есть парочка Ethernet контроллеров для Mach3. Самый бюджетный из них - NVEM. Официальный сайт контроллера - https://www.nvcnc.net/nvem.html. Но китайцы такие китайцы. Умельцы из другой провинции сделали копию этого контроллера и поставили ценник ещё ниже. На фотках показан оригинальный контроллер и его клон. По схемотехнике практически то же самое.

Ну так вот. В обоих контроллерах в качестве мозга работает STM32F207 (120 МГц). И это не может не радовать. Короче говоря, на базе этого контроллера можно попробовать забабахать контроллер для LinuxCNC.

Прошивка контроллера уже в процессе. Драйвер для LinuxCNC должен быть простейший. Вощем, будем пробовать. После нового года закажу клон с АЛИ на тесты. О дальнейших событиях буду сообщать дополнительно.
Последний раз редактировалось MX_Master 09 мар 2021, 10:03, всего редактировалось 22 раза.
AAN
Мастер
Сообщения: 305
Зарегистрирован: 14 апр 2015, 10:28
Репутация: 38
Настоящее имя: Антон
Откуда: Томск
Контактная информация:

Re: Плата развязки для LinuxCNC (Ethernet + STM32)

Сообщение AAN »

Если делать на STM32, то реальное время легче сделать на Micropython - у него ШИМ, управление сервами и ногами - из коробки есть.
Аватара пользователя
selenur
Почётный участник
Почётный участник
Сообщения: 4605
Зарегистрирован: 21 авг 2013, 19:44
Репутация: 1622
Настоящее имя: Сергей
Откуда: Новый Уренгой
Контактная информация:

Re: Плата развязки для LinuxCNC (Ethernet + STM32)

Сообщение selenur »

Я с ассемблера на Си при программировании микроконтролеров, с огромным недоверием переходил, т.к. Все равно добавляются некоторые вещи которые бывают излишние в некоторых критичных моментах. А что там питон добавляет интересно? И отладка там работает?
Мой сайт: http://selenur.ru
Исходники моих программ: https://github.com/selenur
Instagram https://www.instagram.com/zheigurov/
AAN
Мастер
Сообщения: 305
Зарегистрирован: 14 апр 2015, 10:28
Репутация: 38
Настоящее имя: Антон
Откуда: Томск
Контактная информация:

Re: Плата развязки для LinuxCNC (Ethernet + STM32)

Сообщение AAN »

selenur писал(а):Я с ассемблера на Си при программировании микроконтролеров, с огромным недоверием переходил, т.к. Все равно добавляются некоторые вещи которые бывают излишние в некоторых критичных моментах. А что там питон добавляет интересно? И отладка там работает?
Узкие моменты любой высокоуровневый язык добавляет, спасение - в огромных ресурсах той же STM32, благо питоновский код может лежать и на SD-карточке. На pyboard плате, которой я игрался, встроенный ST-программатор, или как это грамотно называется, в-общем, три способа отладки кода:
1. Присоединил я платку по USB-шнурку и через PyTTY в терминале ввожу команды, например, 2**100000 (мой любимый тест мощи числогрыза), микроконтроллер оперативно выдал мне целое число на несколько экранов, также я помигал всеми четырьмя светодиодами, считал состояние кнопки.
2. Запихивал код на эмулятор: https://micropython.org/unicorn/ работает, но у меня уже в тот момент на руках были платы и прикольнее было с ними играться.
3. Залил код на МК (Windows работает с памятью МК как с обычной флешкой) - воткнул, перезаписал файлы *.py , перезагрузил МК- всё работает, если нужно отладить код - добавляем индикацию светодиодами, пишем протоколы в файлы, выдаём на стандартный экран https://store.micropython.org/product/LCD160CRv1.0H (я купил парочку, но пока не тестил). Я просто не в курсе, может ещё какие-то хитрые способы отладки существуют, в Python-е обычно всё работает более-менее сразу, он под это создан.

Плюсы Python-а. Написал я постпроцессор для LinuxCNC, когда понадобилось немного изменить логику, другой человек сделал это за 20минут, причём Питона-то он и не знал - простота и наглядность - великая вещь.
Платформ дофига им поддерживается - https://github.com/micropython/micropyt ... ds-Summary
Есть и поддкржка ПЛИС http://www.pynq.io/
sergx99
Новичок
Сообщения: 35
Зарегистрирован: 27 фев 2016, 17:03
Репутация: 7
Настоящее имя: Сергей
Контактная информация:

Re: Плата развязки для LinuxCNC (Ethernet + STM32)

Сообщение sergx99 »

MX_Master писал(а):В ходе работы над драйверами к Orange Pi (H3) появилась мысль запилить более бюджетный аналог MESA 7i92.

В качестве проца должен полностью подойди STM32F407VET6. За физику Ethernet будет отвечать недорогая кроха LAN8720. На платке дополнительно можно разместить какую-ньть кроху (конвертер) ШИМ -> 0-10V. Всё. Платка должна получиться очень мелкая, но мощная. Остальное можно будет реализовать доп. платками, которые продаются на АлиЭкспрессах.

Смысл идеи - берём абсолютно любую материнку (или ARM платку) и превращаем её в довольно мощное ЧПУ незадорого.

Внутри МК должны быть реализованы хотя бы 3 молуля - stepgen, gpio, encoder. Драйвер LinuxCNC для всего этого будет только один.

Вот хочу узнать мнение пользователей LinuxCNC. Если есть вопросы, советы и рекомендации, буду рад.
Идея вроде хорошая, может вместо или вместе с ШИМ -> 0-10V, DAC -> 0-10V задействовать и RS485 организовать?
Смотрю на такую плату TE-STM32F407
Есть Ethernet, UART(COM) 2шт, CAN 2шт, USB OTG, SPI, ADC, DAC, GPIO...
Минусы, - нет RS485, питание +7,5 … 9,0В.
Совсем дешево, не выходит.
И такую NUCLEO-F767ZI плата дешевле, ног больше, еще и FPU double-precision and single-precision.

И с другой стороны, на алиэкспрессе
плата c XC6SLX9-TQ144 от 18$
плата c Lan8720 от 2$, посмотрел, негодится.
плат с KSZ8851 готовых у китайцев не увидел.
есть с ENC28J60, w5500 надо смотреть подробнее.
ведь можно получить почти настоящую MESA, а не возиться с таймерами STM32.
Аватара пользователя
MX_Master
Мастер
Сообщения: 7482
Зарегистрирован: 27 июн 2015, 19:45
Репутация: 3103
Настоящее имя: Михаил
Откуда: Алматы
Контактная информация:

Re: Плата развязки для LinuxCNC (Ethernet + STM32)

Сообщение MX_Master »

sergx99 писал(а):Идея вроде хорошая, может вместо или вместе с ШИМ -> 0-10V, DAC -> 0-10V задействовать и RS485 организовать?
Конвертер USB-RS485 стоит недорого. Ну и для популярных частотников уже есть драйвера в LinuxCNC. Так что микруха RS485 будет на плате развязки лишней.

STM32F407VET6 выбран с целью удешевления. Повторять Месу.. зачем?

Кстати, подскажите кто в танке хороший способ линейного умножения напряжения с МК выхода ЦАП (0-3.3V -> 0-10V)
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5182
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: Плата развязки для LinuxCNC (Ethernet + STM32)

Сообщение Serg »

MX_Master писал(а):Кстати, подскажите кто в танке хороший способ линейного умножения напряжения с МК выхода ЦАП (0-3.3V -> 0-10V)
Любой Rail-to-rail c питанием +12/-12. При однополярном питании можно получить 0.2-10В. Для 0-10В нужно будет отрицательное питание, хотя-бы 2-3 вольта.
+12 и -3 можно получить с помощью транзистора, дросселя и выпрямителя (DC-DC), раскачать всё это можно ногой МК с ШИМ.

P.S. Я не в танке! :)
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
sergx99
Новичок
Сообщения: 35
Зарегистрирован: 27 фев 2016, 17:03
Репутация: 7
Настоящее имя: Сергей
Контактная информация:

Re: Плата развязки для LinuxCNC (Ethernet + STM32)

Сообщение sergx99 »

MX_Master писал(а):
sergx99 писал(а):Идея вроде хорошая, может вместо или вместе с ШИМ -> 0-10V, DAC -> 0-10V задействовать и RS485 организовать?
Конвертер USB-RS485 стоит недорого. Ну и для популярных частотников уже есть драйвера в LinuxCNC. Так что микруха RS485 будет на плате развязки лишней.

STM32F407VET6 выбран с целью удешевления. Повторять Месу.. зачем?

Кстати, подскажите кто в танке хороший способ линейного умножения напряжения с МК выхода ЦАП (0-3.3V -> 0-10V)
Цены в элитане:
STM32F407VET6 -> 318,00 p от 10 шт
XC6SLX9-2TQG144C -> 311,00 p от 10 шт
Цены aliexpress:
STM32F407VET6 -> $4.78
XC6SLX9-2TQG144C -> $4.20
Одна FPGA чуть дешевле, с памятью выйдет немного дороже.
Кроме как ОУ для ЦАП (0-3.3V -> 0-10V) не подскажу :( питание от 12V требуется
sergx99
Новичок
Сообщения: 35
Зарегистрирован: 27 фев 2016, 17:03
Репутация: 7
Настоящее имя: Сергей
Контактная информация:

Re: Плата развязки для LinuxCNC (Ethernet + STM32)

Сообщение sergx99 »

UAVpilot писал(а):
MX_Master писал(а):Кстати, подскажите кто в танке хороший способ линейного умножения напряжения с МК выхода ЦАП (0-3.3V -> 0-10V)
Любой Rail-to-rail c питанием +12/-12. При однополярном питании можно получить 0.2-10В. Для 0-10В нужно будет отрицательное
На дешевой LM358 (Vol 20mv) вроде 0.02 - 10В при однополярном питании можно получить.
Аватара пользователя
MX_Master
Мастер
Сообщения: 7482
Зарегистрирован: 27 июн 2015, 19:45
Репутация: 3103
Настоящее имя: Михаил
Откуда: Алматы
Контактная информация:

Re: Плата развязки для LinuxCNC (Ethernet + STM32)

Сообщение MX_Master »

Я, кстати, не против плисин. Но чтобы выйти на тот же уровень знаний мне понадобится ещё с пол года свободных вечеров. Это довольно много.
Аватара пользователя
Сергей Саныч
Мастер
Сообщения: 9116
Зарегистрирован: 30 май 2012, 14:20
Репутация: 2858
Откуда: Тюмень
Контактная информация:

Re: Плата развязки для LinuxCNC (Ethernet + STM32)

Сообщение Сергей Саныч »

Если использовать аналоговое управление только для частотника, то с задачей справится практически любой ОУ, даже не обязательно rail-to-rail, потому что в инверторах диапазон входных напряжений обычно можно задавать (к примеру, не 0..10, а 2..9 вольт). Выход питания 12В, как правило, у частотников тоже имеется. Если ориентироваться на управление сервоприводами (-10..0..10В), тогда да, надо организовывать двухполярное питание.
Чудес не бывает. Бывают фокусы.
Аватара пользователя
Dmaster
Мастер
Сообщения: 1271
Зарегистрирован: 15 июл 2011, 13:36
Репутация: 476
Контактная информация:

Re: Плата развязки для LinuxCNC (Ethernet + STM32)

Сообщение Dmaster »

Сергей Саныч писал(а):Если ориентироваться на управление сервоприводами (-10..0..10В), тогда да, надо организовывать двухполярное питание.
А как меса это делает без двухполярного?
" Linux CNC - наше всё"
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5182
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: Плата развязки для LinuxCNC (Ethernet + STM32)

Сообщение Serg »

Dmaster писал(а):А как меса это делает без двухполярного?
Так-же как и все: у неё на борту два маленьких DC-DC - на +16V и на -12V.
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Аватара пользователя
MX_Master
Мастер
Сообщения: 7482
Зарегистрирован: 27 июн 2015, 19:45
Репутация: 3103
Настоящее имя: Михаил
Откуда: Алматы
Контактная информация:

Re: Плата развязки для LinuxCNC (Ethernet + STM32)

Сообщение MX_Master »

Поприкидывал цены. Себестоимость всей комплектухи (включая плату) получается на уровне 15$ в кол-ве от 10 шт. Много это или мало, пока неясно.
alex1816
Мастер
Сообщения: 224
Зарегистрирован: 03 фев 2017, 01:06
Репутация: 35
Настоящее имя: Александр
Откуда: Украина
Контактная информация:

Re: Плата развязки для LinuxCNC (Ethernet + STM32)

Сообщение alex1816 »

AAN писал(а):На pyboard плате, которой я игрался, встроенный ST-программатор, или как это грамотно называется, в-общем, три способа отладки кода:
1. Присоединил я платку по USB-шнурку и через PyTTY в терминале ввожу команды,
Как эта ерунда работает?
Получается, что эта плата загружает в стм32 какой-то свой загрузчик и типа ОС с поддержкой например Pyton и тп?
Или pyboard компилирует код в бинарный? В общем ничего не понял пока :)
Аватара пользователя
MX_Master
Мастер
Сообщения: 7482
Зарегистрирован: 27 июн 2015, 19:45
Репутация: 3103
Настоящее имя: Михаил
Откуда: Алматы
Контактная информация:

Re: Плата развязки для LinuxCNC (Ethernet + STM32)

Сообщение MX_Master »

Кстати, под Мач3 никто плагины не писал? Можно эту же платку юзать с Мач3, написав ещё одну прошивку.
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5182
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: Плата развязки для LinuxCNC (Ethernet + STM32)

Сообщение Serg »

Пиши уже под Mach4. :)

P.S. Один чувак начал писать плагин под Mach3 для плат Mesa. У него даже как-то работала 7i43. Но итоговый результат оказался плачевным - ему понравился LinuxCNC и она забил на Mach3. :)
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Аватара пользователя
MX_Master
Мастер
Сообщения: 7482
Зарегистрирован: 27 июн 2015, 19:45
Репутация: 3103
Настоящее имя: Михаил
Откуда: Алматы
Контактная информация:

Re: Плата развязки для LinuxCNC (Ethernet + STM32)

Сообщение MX_Master »

Я точно не знаю, но, вроде, разработчики Мач4 далеко не всем дают доступ к инструментам разработки плагинов к Мач4. Там, вроде, драйвер должен быть как-то подписан, иначе он с Мач4 не будет работать. Или ситуация поменялась?
Аватара пользователя
verser
Мастер
Сообщения: 1897
Зарегистрирован: 21 июл 2013, 22:28
Репутация: 1282
Настоящее имя: Сергей
Откуда: Тбилиси
Контактная информация:

Re: Плата развязки для LinuxCNC (Ethernet + STM32)

Сообщение verser »

MX_Master писал(а):Поприкидывал цены. Себестоимость всей комплектухи (включая плату) получается на уровне 15$ в кол-ве от 10 шт. Много это или мало, пока неясно.
Цена комплектухи ничто, по сравнению с объемами программирования для доведения прошивки до конкурирующего с mesa уровня.
На одном энтузиазме тема вряд ли подъемная.
AAN
Мастер
Сообщения: 305
Зарегистрирован: 14 апр 2015, 10:28
Репутация: 38
Настоящее имя: Антон
Откуда: Томск
Контактная информация:

Re: Плата развязки для LinuxCNC (Ethernet + STM32)

Сообщение AAN »

alex1816 писал(а):Получается, что эта плата загружает в стм32 какой-то свой загрузчик и типа ОС с поддержкой например Pyton и тп?
Или pyboard компилирует код в бинарный? В общем ничего не понял пока :)
Компиляция не происходит. На плату уже прошит интерпретатор, которому всё равно, откуда исполнять команды программы- из внутренней памяти, с флешки, с ПК. Гибкость.
Ответить

Вернуться в «LinuxCNC»