Страница 1 из 70

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

Добавлено: 11 мар 2018, 10:08
MX_Master
На горизонте замаячила идея о контроллере для LinuxCNC полностью с нуля. Схема, плата, все дела.

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

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

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

Прошивка контроллера уже в процессе. Драйвер для LinuxCNC должен быть простейший. Вощем, будем пробовать. После нового года закажу клон с АЛИ на тесты. О дальнейших событиях буду сообщать дополнительно.

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

Добавлено: 11 мар 2018, 11:46
AAN
Если делать на STM32, то реальное время легче сделать на Micropython - у него ШИМ, управление сервами и ногами - из коробки есть.

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

Добавлено: 11 мар 2018, 12:04
selenur
Я с ассемблера на Си при программировании микроконтролеров, с огромным недоверием переходил, т.к. Все равно добавляются некоторые вещи которые бывают излишние в некоторых критичных моментах. А что там питон добавляет интересно? И отладка там работает?

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

Добавлено: 11 мар 2018, 18:53
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/

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

Добавлено: 11 мар 2018, 20:44
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.

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

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

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

Кстати, подскажите кто в танке хороший способ линейного умножения напряжения с МК выхода ЦАП (0-3.3V -> 0-10V)

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

Добавлено: 12 мар 2018, 03:25
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. Я не в танке! :)

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

Добавлено: 12 мар 2018, 03:28
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 требуется

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

Добавлено: 12 мар 2018, 03:39
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В при однополярном питании можно получить.

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

Добавлено: 12 мар 2018, 07:14
MX_Master
Я, кстати, не против плисин. Но чтобы выйти на тот же уровень знаний мне понадобится ещё с пол года свободных вечеров. Это довольно много.

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

Добавлено: 12 мар 2018, 08:33
Сергей Саныч
Если использовать аналоговое управление только для частотника, то с задачей справится практически любой ОУ, даже не обязательно rail-to-rail, потому что в инверторах диапазон входных напряжений обычно можно задавать (к примеру, не 0..10, а 2..9 вольт). Выход питания 12В, как правило, у частотников тоже имеется. Если ориентироваться на управление сервоприводами (-10..0..10В), тогда да, надо организовывать двухполярное питание.

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

Добавлено: 12 мар 2018, 18:25
Dmaster
Сергей Саныч писал(а):Если ориентироваться на управление сервоприводами (-10..0..10В), тогда да, надо организовывать двухполярное питание.
А как меса это делает без двухполярного?

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

Добавлено: 12 мар 2018, 18:54
Serg
Dmaster писал(а):А как меса это делает без двухполярного?
Так-же как и все: у неё на борту два маленьких DC-DC - на +16V и на -12V.

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

Добавлено: 13 мар 2018, 10:59
MX_Master
Поприкидывал цены. Себестоимость всей комплектухи (включая плату) получается на уровне 15$ в кол-ве от 10 шт. Много это или мало, пока неясно.

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

Добавлено: 14 мар 2018, 14:03
alex1816
AAN писал(а):На pyboard плате, которой я игрался, встроенный ST-программатор, или как это грамотно называется, в-общем, три способа отладки кода:
1. Присоединил я платку по USB-шнурку и через PyTTY в терминале ввожу команды,
Как эта ерунда работает?
Получается, что эта плата загружает в стм32 какой-то свой загрузчик и типа ОС с поддержкой например Pyton и тп?
Или pyboard компилирует код в бинарный? В общем ничего не понял пока :)

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

Добавлено: 14 мар 2018, 18:21
MX_Master
Кстати, под Мач3 никто плагины не писал? Можно эту же платку юзать с Мач3, написав ещё одну прошивку.

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

Добавлено: 14 мар 2018, 18:26
Serg
Пиши уже под Mach4. :)

P.S. Один чувак начал писать плагин под Mach3 для плат Mesa. У него даже как-то работала 7i43. Но итоговый результат оказался плачевным - ему понравился LinuxCNC и она забил на Mach3. :)

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

Добавлено: 14 мар 2018, 18:37
MX_Master
Я точно не знаю, но, вроде, разработчики Мач4 далеко не всем дают доступ к инструментам разработки плагинов к Мач4. Там, вроде, драйвер должен быть как-то подписан, иначе он с Мач4 не будет работать. Или ситуация поменялась?

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

Добавлено: 14 мар 2018, 18:50
verser
MX_Master писал(а):Поприкидывал цены. Себестоимость всей комплектухи (включая плату) получается на уровне 15$ в кол-ве от 10 шт. Много это или мало, пока неясно.
Цена комплектухи ничто, по сравнению с объемами программирования для доведения прошивки до конкурирующего с mesa уровня.
На одном энтузиазме тема вряд ли подъемная.

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

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