Ethernet контроллер для LinuxCNC (STM32, FPGA)
- MX_Master
 - Мастер
 - Сообщения: 7488
 - Зарегистрирован: 27 июн 2015, 19:45
 - Репутация: 3113
 - Настоящее имя: Михаил
 - Откуда: Алматы
 - Контактная информация:
 
							
						Ethernet контроллер для LinuxCNC (STM32, FPGA)
		
													
							
						
			
			
			
			На горизонте замаячила идея о контроллере для LinuxCNC полностью с нуля. Схема, плата, все дела.
В качестве мозга я выбрал многолапый STM32F429IGT6 (180 МГц). На борту есть вся необходимая периферия для высокочастотного вывода шагов и подсчёта импульсов. Аналоговое управление организовать тоже можно.
На АЛИ есть парочка Ethernet контроллеров для Mach3. Самый бюджетный из них - NVEM. Официальный сайт контроллера - https://www.nvcnc.net/nvem.html. Но китайцы такие китайцы. Умельцы из другой провинции сделали копию этого контроллера и поставили ценник ещё ниже. На фотках показан оригинальный контроллер и его клон. По схемотехнике практически то же самое.
Ну так вот. В обоих контроллерах в качестве мозга работает STM32F207 (120 МГц). И это не может не радовать. Короче говоря, на базе этого контроллера можно попробовать забабахать контроллер для LinuxCNC.
Прошивка контроллера уже в процессе. Драйвер для LinuxCNC должен быть простейший. Вощем, будем пробовать. После нового года закажу клон с АЛИ на тесты. О дальнейших событиях буду сообщать дополнительно.
			
			
													В качестве мозга я выбрал многолапый STM32F429IGT6 (180 МГц). На борту есть вся необходимая периферия для высокочастотного вывода шагов и подсчёта импульсов. Аналоговое управление организовать тоже можно.
На АЛИ есть парочка Ethernet контроллеров для Mach3. Самый бюджетный из них - NVEM. Официальный сайт контроллера - https://www.nvcnc.net/nvem.html. Но китайцы такие китайцы. Умельцы из другой провинции сделали копию этого контроллера и поставили ценник ещё ниже. На фотках показан оригинальный контроллер и его клон. По схемотехнике практически то же самое.
Ну так вот. В обоих контроллерах в качестве мозга работает STM32F207 (120 МГц). И это не может не радовать. Короче говоря, на базе этого контроллера можно попробовать забабахать контроллер для LinuxCNC.
Прошивка контроллера уже в процессе. Драйвер для LinuxCNC должен быть простейший. Вощем, будем пробовать. После нового года закажу клон с АЛИ на тесты. О дальнейших событиях буду сообщать дополнительно.
					Последний раз редактировалось MX_Master 09 мар 2021, 10:03, всего редактировалось 22 раза.
									
			
									
						- 
				AAN
 - Мастер
 - Сообщения: 313
 - Зарегистрирован: 14 апр 2015, 10:28
 - Репутация: 39
 - Настоящее имя: Антон
 - Откуда: Томск
 - Контактная информация:
 
Re: Плата развязки для LinuxCNC (Ethernet + STM32)
Если делать на STM32, то реальное время легче сделать на Micropython - у него ШИМ, управление сервами и ногами - из коробки есть.
			
			
									
									
						- selenur
 - Почётный участник

 - Сообщения: 4605
 - Зарегистрирован: 21 авг 2013, 19:44
 - Репутация: 1622
 - Настоящее имя: Сергей
 - Откуда: Новый Уренгой
 - Контактная информация:
 
Re: Плата развязки для LinuxCNC (Ethernet + STM32)
Я с ассемблера на Си при программировании микроконтролеров, с огромным недоверием переходил, т.к. Все равно добавляются некоторые вещи которые бывают излишние в некоторых критичных моментах. А что там питон добавляет интересно? И отладка там работает?
			
			
									
									Мой сайт: http://selenur.ru
Исходники моих программ: https://github.com/selenur
Instagram https://www.instagram.com/zheigurov/
						Исходники моих программ: https://github.com/selenur
Instagram https://www.instagram.com/zheigurov/
- 
				AAN
 - Мастер
 - Сообщения: 313
 - Зарегистрирован: 14 апр 2015, 10:28
 - Репутация: 39
 - Настоящее имя: Антон
 - Откуда: Томск
 - Контактная информация:
 
Re: Плата развязки для LinuxCNC (Ethernet + STM32)
Узкие моменты любой высокоуровневый язык добавляет, спасение - в огромных ресурсах той же STM32, благо питоновский код может лежать и на SD-карточке. На pyboard плате, которой я игрался, встроенный ST-программатор, или как это грамотно называется, в-общем, три способа отладки кода:selenur писал(а):Я с ассемблера на Си при программировании микроконтролеров, с огромным недоверием переходил, т.к. Все равно добавляются некоторые вещи которые бывают излишние в некоторых критичных моментах. А что там питон добавляет интересно? И отладка там работает?
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)
Идея вроде хорошая, может вместо или вместе с ШИМ -> 0-10V, DAC -> 0-10V задействовать и RS485 организовать?MX_Master писал(а):В ходе работы над драйверами к Orange Pi (H3) появилась мысль запилить более бюджетный аналог MESA 7i92.
В качестве проца должен полностью подойди STM32F407VET6. За физику Ethernet будет отвечать недорогая кроха LAN8720. На платке дополнительно можно разместить какую-ньть кроху (конвертер) ШИМ -> 0-10V. Всё. Платка должна получиться очень мелкая, но мощная. Остальное можно будет реализовать доп. платками, которые продаются на АлиЭкспрессах.
Смысл идеи - берём абсолютно любую материнку (или ARM платку) и превращаем её в довольно мощное ЧПУ незадорого.
Внутри МК должны быть реализованы хотя бы 3 молуля - stepgen, gpio, encoder. Драйвер LinuxCNC для всего этого будет только один.
Вот хочу узнать мнение пользователей LinuxCNC. Если есть вопросы, советы и рекомендации, буду рад.
Смотрю на такую плату 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
 - Мастер
 - Сообщения: 7488
 - Зарегистрирован: 27 июн 2015, 19:45
 - Репутация: 3113
 - Настоящее имя: Михаил
 - Откуда: Алматы
 - Контактная информация:
 
Re: Плата развязки для LinuxCNC (Ethernet + STM32)
Конвертер USB-RS485 стоит недорого. Ну и для популярных частотников уже есть драйвера в LinuxCNC. Так что микруха RS485 будет на плате развязки лишней.sergx99 писал(а):Идея вроде хорошая, может вместо или вместе с ШИМ -> 0-10V, DAC -> 0-10V задействовать и RS485 организовать?
STM32F407VET6 выбран с целью удешевления. Повторять Месу.. зачем?
Кстати, подскажите кто в танке хороший способ линейного умножения напряжения с МК выхода ЦАП (0-3.3V -> 0-10V)
- Serg
 - Мастер
 - Сообщения: 21923
 - Зарегистрирован: 17 апр 2012, 14:58
 - Репутация: 5183
 - Заслуга: c781c134843e0c1a3de9
 - Настоящее имя: Сергей
 - Откуда: Москва
 - Контактная информация:
 
Re: Плата развязки для LinuxCNC (Ethernet + STM32)
Любой Rail-to-rail c питанием +12/-12. При однополярном питании можно получить 0.2-10В. Для 0-10В нужно будет отрицательное питание, хотя-бы 2-3 вольта.MX_Master писал(а):Кстати, подскажите кто в танке хороший способ линейного умножения напряжения с МК выхода ЦАП (0-3.3V -> 0-10V)
+12 и -3 можно получить с помощью транзистора, дросселя и выпрямителя (DC-DC), раскачать всё это можно ногой МК с ШИМ.
P.S. Я не в танке!
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
						- 
				sergx99
 - Новичок
 - Сообщения: 35
 - Зарегистрирован: 27 фев 2016, 17:03
 - Репутация: 7
 - Настоящее имя: Сергей
 - Контактная информация:
 
Re: Плата развязки для LinuxCNC (Ethernet + STM32)
Цены в элитане:MX_Master писал(а):Конвертер USB-RS485 стоит недорого. Ну и для популярных частотников уже есть драйвера в LinuxCNC. Так что микруха RS485 будет на плате развязки лишней.sergx99 писал(а):Идея вроде хорошая, может вместо или вместе с ШИМ -> 0-10V, DAC -> 0-10V задействовать и 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) не подскажу
- 
				sergx99
 - Новичок
 - Сообщения: 35
 - Зарегистрирован: 27 фев 2016, 17:03
 - Репутация: 7
 - Настоящее имя: Сергей
 - Контактная информация:
 
Re: Плата развязки для LinuxCNC (Ethernet + STM32)
На дешевой LM358 (Vol 20mv) вроде 0.02 - 10В при однополярном питании можно получить.UAVpilot писал(а):Любой Rail-to-rail c питанием +12/-12. При однополярном питании можно получить 0.2-10В. Для 0-10В нужно будет отрицательноеMX_Master писал(а):Кстати, подскажите кто в танке хороший способ линейного умножения напряжения с МК выхода ЦАП (0-3.3V -> 0-10V)
- MX_Master
 - Мастер
 - Сообщения: 7488
 - Зарегистрирован: 27 июн 2015, 19:45
 - Репутация: 3113
 - Настоящее имя: Михаил
 - Откуда: Алматы
 - Контактная информация:
 
Re: Плата развязки для LinuxCNC (Ethernet + STM32)
Я, кстати, не против плисин. Но чтобы выйти на тот же уровень знаний мне понадобится ещё с пол года свободных вечеров. Это довольно много.
			
			
									
									
						- Сергей Саныч
 - Мастер
 - Сообщения: 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)
А как меса это делает без двухполярного?Сергей Саныч писал(а):Если ориентироваться на управление сервоприводами (-10..0..10В), тогда да, надо организовывать двухполярное питание.
" Linux CNC  - наше всё"
						- Serg
 - Мастер
 - Сообщения: 21923
 - Зарегистрирован: 17 апр 2012, 14:58
 - Репутация: 5183
 - Заслуга: c781c134843e0c1a3de9
 - Настоящее имя: Сергей
 - Откуда: Москва
 - Контактная информация:
 
Re: Плата развязки для LinuxCNC (Ethernet + STM32)
Так-же как и все: у неё на борту два маленьких DC-DC - на +16V и на -12V.Dmaster писал(а):А как меса это делает без двухполярного?
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
						- MX_Master
 - Мастер
 - Сообщения: 7488
 - Зарегистрирован: 27 июн 2015, 19:45
 - Репутация: 3113
 - Настоящее имя: Михаил
 - Откуда: Алматы
 - Контактная информация:
 
Re: Плата развязки для LinuxCNC (Ethernet + STM32)
Поприкидывал цены. Себестоимость всей комплектухи (включая плату) получается на уровне 15$ в кол-ве от 10 шт. Много это или мало, пока неясно.
			
			
									
									
						- 
				alex1816
 - Мастер
 - Сообщения: 224
 - Зарегистрирован: 03 фев 2017, 01:06
 - Репутация: 35
 - Настоящее имя: Александр
 - Откуда: Украина
 - Контактная информация:
 
Re: Плата развязки для LinuxCNC (Ethernet + STM32)
Как эта ерунда работает?AAN писал(а):На pyboard плате, которой я игрался, встроенный ST-программатор, или как это грамотно называется, в-общем, три способа отладки кода:
1. Присоединил я платку по USB-шнурку и через PyTTY в терминале ввожу команды,
Получается, что эта плата загружает в стм32 какой-то свой загрузчик и типа ОС с поддержкой например Pyton и тп?
Или pyboard компилирует код в бинарный? В общем ничего не понял пока
- MX_Master
 - Мастер
 - Сообщения: 7488
 - Зарегистрирован: 27 июн 2015, 19:45
 - Репутация: 3113
 - Настоящее имя: Михаил
 - Откуда: Алматы
 - Контактная информация:
 
Re: Плата развязки для LinuxCNC (Ethernet + STM32)
Кстати, под Мач3 никто плагины не писал? Можно эту же платку юзать с Мач3, написав ещё одну прошивку.
			
			
									
									
						- Serg
 - Мастер
 - Сообщения: 21923
 - Зарегистрирован: 17 апр 2012, 14:58
 - Репутация: 5183
 - Заслуга: c781c134843e0c1a3de9
 - Настоящее имя: Сергей
 - Откуда: Москва
 - Контактная информация:
 
Re: Плата развязки для LinuxCNC (Ethernet + STM32)
Пиши уже под Mach4. 
P.S. Один чувак начал писать плагин под Mach3 для плат Mesa. У него даже как-то работала 7i43. Но итоговый результат оказался плачевным - ему понравился LinuxCNC и она забил на Mach3.
			
			
									
									P.S. Один чувак начал писать плагин под Mach3 для плат Mesa. У него даже как-то работала 7i43. Но итоговый результат оказался плачевным - ему понравился LinuxCNC и она забил на Mach3.
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
						- MX_Master
 - Мастер
 - Сообщения: 7488
 - Зарегистрирован: 27 июн 2015, 19:45
 - Репутация: 3113
 - Настоящее имя: Михаил
 - Откуда: Алматы
 - Контактная информация:
 
Re: Плата развязки для LinuxCNC (Ethernet + STM32)
Я точно не знаю, но, вроде, разработчики Мач4 далеко не всем дают доступ к инструментам разработки плагинов к Мач4. Там, вроде, драйвер должен быть как-то подписан, иначе он с Мач4 не будет работать. Или ситуация поменялась?
			
			
									
									
						- verser
 - Мастер
 - Сообщения: 1903
 - Зарегистрирован: 21 июл 2013, 22:28
 - Репутация: 1282
 - Настоящее имя: Сергей
 - Откуда: Тбилиси
 - Контактная информация:
 
Re: Плата развязки для LinuxCNC (Ethernet + STM32)
Цена комплектухи ничто, по сравнению с объемами программирования для доведения прошивки до конкурирующего с mesa уровня.MX_Master писал(а):Поприкидывал цены. Себестоимость всей комплектухи (включая плату) получается на уровне 15$ в кол-ве от 10 шт. Много это или мало, пока неясно.
На одном энтузиазме тема вряд ли подъемная.
- 
				AAN
 - Мастер
 - Сообщения: 313
 - Зарегистрирован: 14 апр 2015, 10:28
 - Репутация: 39
 - Настоящее имя: Антон
 - Откуда: Томск
 - Контактная информация:
 
Re: Плата развязки для LinuxCNC (Ethernet + STM32)
Компиляция не происходит. На плату уже прошит интерпретатор, которому всё равно, откуда исполнять команды программы- из внутренней памяти, с флешки, с ПК. Гибкость.alex1816 писал(а):Получается, что эта плата загружает в стм32 какой-то свой загрузчик и типа ОС с поддержкой например Pyton и тп?
Или pyboard компилирует код в бинарный? В общем ничего не понял пока