MX_Master 0 Posted August 18, 2021 · Report post В продолжение темы про защиту открытого бинарника прошивки ... Уже давно хочу сделать простенький вариант ЧПУ контроллера. Чтоб можно было и с готовыми ЧПУ системам (Mach3, LinuxCNC, ...) юзать. И, при желании, со своим вариантом ЧПУ связку сделать. Одна только проблема - в электронике не силён. Все варианты схем и разводки платы буду выкладывать прямо здесь. Опытных людей здесь много. Поэтому, если не трудно, посмотрите, что у меня получилось и обязательно дайте пинка где что исправить. Проект рисовал в easyeda, чтоб было удобно расшарить и, в последствии, заказать изготовление плат (с монтажом или без). Что требуется от контроллера: Быстрая коммуникация c ПК по сети (Ethernet 10/100) Достаточное кол-во цифровых входов/выходов (с переключаемыми уровнями 5..24V) для управления шаговыми (и серво) драйверами, лазерными модулями, энкодерами, концевиками, индуктивными датчиками и т.п. Как минимум один порт RS485 для управления частотниками (VFD) https://oshwlab.com/MX_Master/MX32 Schematic_MX32_2021-08-18.pdf Schematic_MX32_2021-08-18.svg Quote Ответить с цитированием Share this post Link to post Share on other sites
haker_fox 0 Posted August 18, 2021 · Report post 24 minutes ago, MX_Master said: Проект рисовал в easyeda Пока такие замечания: 1. Рисуйте линии от ножки до ножки. Очень непросто читать схему, где все пины висят фактически в воздухе, и приходится мысленно строить связи от метки до метки, а иногда и до нескольких меток. 2. Метки делайте одного цвета, например чёрные. 3. Между цифровым значением и обозначением единицы измерения ставьте пробел. Т.е. не 470К, а 470 K. А ещё лучше 470 кОм. 4. Рисуйте порты питания. Т.е. не просто GND или +3V3, а общепринятый символ общего провода и стрелочка вверх для питания. 5. Обозначения пишите рядом с компонентами, а то для резисторов пишите внутри, например. 6. Лучше подписывать назначение каждого разъёма, а не просто писать над ними сверху "Цифровые выходы". Потому что Вам понятно, а мне, например, приходится просматривать столбец этих выходов, и убеждаться, что это точно выход. По функционалу: 1. Нет защит цифровых входов от перенапряжения, статики. Здесь можно посмотреть эту тему. 2. Нет защит цифровых выходов от элементарного КЗ или подачи на этот выход напряжения. Посмотреть можно верхнюю тему, и поискать по форуму. 3. Нет защиты RS-485 от статики, перегрузки по напряжению и т.п. 4. Нет ни одного предохранителя ни где. Схема выглядит какой-то ненадёжной без этого) 5. Не понятно, что будет вставляться в сокеты, обозначенные на скрине. 24 minutes ago, MX_Master said: Уже давно хочу сделать простенький вариант ЧПУ контроллера. Может быть проще купить что-то готовое на али, и переписать прошивку. Это в плане железа. Quote Ответить с цитированием Share this post Link to post Share on other sites
Eddy_Em 0 Posted August 18, 2021 · Report post Странная какая-то схема: ноги наугад раскиданы что ли? Я вот делаю нечто подобное (трехкоординатная подвижка для небольшой CMOS-камеры). И мне для трех двигателей с трудом всех таймеров STM32F072CBT6 хватило: один таймер генерирует ШИМ для ноги STEP драйвера ШД, второй таймер забирает сигнал с инкрементного энкодера. Quote Ответить с цитированием Share this post Link to post Share on other sites
Eddy_Em 0 Posted August 18, 2021 · Report post 4 hours ago, haker_fox said: Может быть проще купить что-то готовое на али, и переписать прошивку. Не проще: там обычно трассировка через одно место сделана, а не как положено. Так что, только свое с нуля разрабатывать! Почему-то у китайцев не принято на двигатели вешать энкодеры, т.е. им вообще наплевать: застрял вал, не застрял. Тяп-ляп - и в продакшн! И STEP-импульсы они ногодрыгом генерируют, а не таймером. В общем, идеальный показатель того, как делать нельзя. Quote Ответить с цитированием Share this post Link to post Share on other sites
MX_Master 0 Posted August 18, 2021 · Report post Про косяки рисования понял. Про защиту понял. Вечером посижу над этим в редакторе, потом покажу результат. В непонятные сокеты втыкаются двухпиновые перемычки. Надо этот момент наглядно отразить в схеме. Если перемычки нет, то можно подключать на вход сигналы до 24V. Если перемычка есть, то только до 5V. Готовые китайские платы я бы с удовольствием покупал. Но у китайцев никогда не получается развести входы/выходы так, чтоб хотя бы что-то нормально попало на аппаратные таймеры. Китайцы предпочитают выводить и считать сигналы программно. А это мне не подходит. Quote Ответить с цитированием Share this post Link to post Share on other sites
Vasily_ 0 Posted August 18, 2021 · Report post 7 часов назад, MX_Master сказал: Уже давно хочу сделать простенький вариант ЧПУ контроллера. Чтоб можно было и с готовыми ЧПУ системам (Mach3, LinuxCNC, ...) юзать. Если только круче вот этой системы: https://purelogic.ru/catalog/elektronika/kontrollery_chpu/ Иначе что-то делать смыла никакого. Quote Ответить с цитированием Share this post Link to post Share on other sites
Сергей Борщ 0 Posted August 18, 2021 · Report post 7 часов назад, haker_fox сказал: 1. Рисуйте линии от ножки до ножки. Очень непросто читать схему, где все пины висят фактически в воздухе, и приходится мысленно строить связи от метки до метки, а иногда и до нескольких меток Это не всегда удачное решение. Часто в паутине таких линий запутаться проще, чем мысленно строить связи. Когда линий много и они идут вместе гораздо более читаемо выглядят шины. Причем отдельные шины для каждой логически связанной группы сигналов, а не одна глобальная шина на весь лист (в этом случае от нее пользы тоже нет). Примерно так: Quote Ответить с цитированием Share this post Link to post Share on other sites
mantech 0 Posted August 18, 2021 (edited) · Report post 13 часов назад, Eddy_Em сказал: один таймер генерирует ШИМ для ноги STEP драйвера ШД Зачем генерировать шаги ШИМом?? 13 часов назад, Eddy_Em сказал: И STEP-импульсы они ногодрыгом генерируют, а не таймером. В общем, идеальный показатель того, как делать нельзя. А представляете, на старых ЧПУшках не было столько таймеров и там ногодрыгом все делалось, разве, что для энкодеров ставили спец. счетчики, и нормально было вполне)) Поэтому, когда сам разводил схему контроллера когда-то давно, предпочел использовать таймеры МК именно для работы с энкодерами, а не ШД.. Edited August 18, 2021 by mantech Quote Ответить с цитированием Share this post Link to post Share on other sites
rloc 0 Posted August 18, 2021 · Report post 19 часов назад, MX_Master сказал: Уже давно хочу сделать простенький вариант ЧПУ контроллера. Чтоб можно было и с готовыми ЧПУ системам (Mach3, LinuxCNC, ...) юзать. И, при желании, со своим вариантом ЧПУ связку сделать. Не из праздного любопытства, зачем изобретать велосипед? Вроде у MESA открыты исходники, повторяй, да расширяй систему. Оптимальность кода не вызывает никаких сомнений, видно, разрабатывали далеко не глупые люди. Сделать что-то свое, тем более на микроконтроллере, близкое по надежности и стабильности, очень сложно. По цене тоже не вижу выигрыша. Quote Ответить с цитированием Share this post Link to post Share on other sites
Eddy_Em 0 Posted August 18, 2021 (edited) · Report post 2 hours ago, mantech said: Зачем генерировать шаги ШИМом?? Потому что других вариантов нет, чтобы надежно получить постоянную скорость!!!111 2 hours ago, mantech said: ногодрыгом все делалось Это называется "гланды через задницу удалять". Оно вроде работает, а на деле — нет! Даже в убогих восьмибитках конструкция вида "for(int i=0; i<N;++i);" будет зависеть от того, сработало прерывание в этот момент, или нет! А в ARM'ах с их конвейером, вообще нельзя так делать. Для фрезеров же крайне важно, чтобы движение бура было равномерным, иначе даже несчастной 50-микронной точности не добьешься!!!111 Edited August 18, 2021 by Eddy_Em Quote Ответить с цитированием Share this post Link to post Share on other sites
haker_fox 0 Posted August 19, 2021 · Report post 14 hours ago, Сергей Борщ said: Это не всегда удачное решение. Часто в паутине таких линий запутаться проще, чем мысленно строить связи. На схеме автора мне показалось загрузки линиями не будет. Естественно я подразумевал, что количество линий должно быть разумным, в т.ч. нужны и шины. На предприятии у меня именно так и рисуем) 4 hours ago, mantech said: Зачем генерировать шаги ШИМом?? Кстати, косвенный плюс от "ногодрыга" в том, что если МК "зависнет", то движки, скорее всего встанут, что более безопано. В случае таймеров они могут продолжать работать, пока не упрутся в концевик, если он есть, конечно. 2 hours ago, rloc said: тем более на микроконтроллере А чем плох микроконтроллер? И на чём можно делать надёжные и стабильные системы? Quote Ответить с цитированием Share this post Link to post Share on other sites
haker_fox 0 Posted August 19, 2021 · Report post 4 hours ago, Eddy_Em said: фрезеров Пожалуйста... фрезерный станок! Не токарь... а токарный станок) Quote Ответить с цитированием Share this post Link to post Share on other sites
rloc 0 Posted August 19, 2021 · Report post 3 часа назад, haker_fox сказал: А чем плох микроконтроллер? И на чём можно делать надёжные и стабильные системы? У автора в качестве примера были указаны контроллеры, применяемые в LinuxCNC и Mach3. Это системы, где расчетом траектории занимается хост-машина, а на контроллер возлагаются логические задачи. Для меня, вполне очевидным видится применение FPGA из самых простых и доступных серий. Quote Ответить с цитированием Share this post Link to post Share on other sites
MDD 0 Posted August 19, 2021 · Report post 5 hours ago, Eddy_Em said: Потому что других вариантов нет, чтобы надежно получить постоянную скорость!!!111 Это называется "гланды через задницу удалять". Оно вроде работает, а на деле — нет! Даже в убогих восьмибитках конструкция вида "for(int i=0; i<N;++i);" будет зависеть от того, сработало прерывание в этот момент, или нет! А в ARM'ах с их конвейером, вообще нельзя так делать. Для фрезеров же крайне важно, чтобы движение бура было равномерным, иначе даже несчастной 50-микронной точности не добьешься!!!111 Вы почему-то исходите из соображений, что шпиндель ЧПУ должен "летать" на пределах скоростных возможностей шаговых двигателей и остальной механики. На самом деле фрезеровка это достаточно медленный процесс. Скорость подачи определяется из технологических соображений (материал, глубина фрезеровки, диаметр фрезы, скорость вращения шпинделя и т.д.). Поэтому ногодрыг может быть вполне допустим, если прерывания добавляют небольшой джиттер. Я уже писал, что мой хоббийный ЧПУ нормально работает на древнем РС (Sempron 1.66ГГц) под Вин ХР через LPT порт. Точность 20мкм обеспечивает. Quote Ответить с цитированием Share this post Link to post Share on other sites
haker_fox 0 Posted August 19, 2021 · Report post 30 minutes ago, rloc said: FPGA из самых простых и доступных серий. Гм... и снова не понимаю. Чем микроконтроллер с ядром Cortex-M4(F) для расчёта траекторий и управления двигателями? У этой микроархитектуры есть расширения для ЦОС. Если программировать умеючи, то можно решить поставленную задачу, я думаю. Quote Ответить с цитированием Share this post Link to post Share on other sites