Перейти к содержанию
    

Простенький ЧПУ контроллер

В продолжение темы про защиту открытого бинарника прошивки ...

Уже давно хочу сделать простенький вариант ЧПУ контроллера. Чтоб можно было и с готовыми ЧПУ системам (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

Schematic_MX32_2021-08-18.thumb.png.465d4bd74d786b105d6d9350c612d873.png

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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. Не понятно, что будет вставляться в сокеты, обозначенные на скрине.

image.thumb.png.d2ae8051d847b6b0f4d6cd86fd8654a9.png

24 minutes ago, MX_Master said:

Уже давно хочу сделать простенький вариант ЧПУ контроллера.

Может быть проще купить что-то готовое на али, и переписать прошивку. Это в плане железа.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Странная какая-то схема: ноги наугад раскиданы что ли? Я вот делаю нечто подобное (трехкоординатная подвижка для небольшой CMOS-камеры). И мне для трех двигателей с трудом всех таймеров STM32F072CBT6 хватило: один таймер генерирует ШИМ для ноги STEP драйвера ШД, второй таймер забирает сигнал с инкрементного энкодера.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

4 hours ago, haker_fox said:

Может быть проще купить что-то готовое на али, и переписать прошивку.

Не проще: там обычно трассировка через одно место сделана, а не как положено. Так что, только свое с нуля разрабатывать! Почему-то у китайцев не принято на двигатели вешать энкодеры, т.е. им вообще наплевать: застрял вал, не застрял. Тяп-ляп - и в продакшн! И STEP-импульсы они ногодрыгом генерируют, а не таймером.

В общем, идеальный показатель того, как делать нельзя.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Про косяки рисования понял. Про защиту понял. Вечером посижу над этим в редакторе, потом покажу результат. 

В непонятные сокеты втыкаются двухпиновые перемычки. Надо этот момент наглядно отразить в схеме. Если перемычки нет, то можно подключать на вход сигналы до 24V. Если перемычка есть, то только до 5V.

Готовые китайские платы я бы с удовольствием покупал. Но у китайцев никогда не получается развести входы/выходы так, чтоб хотя бы что-то нормально попало на аппаратные таймеры. Китайцы предпочитают выводить и считать сигналы программно. А это мне не подходит. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

7 часов назад, MX_Master сказал:

Уже давно хочу сделать простенький вариант ЧПУ контроллера. Чтоб можно было и с готовыми ЧПУ системам (Mach3, LinuxCNC, ...) юзать.

Если только круче вот этой системы: https://purelogic.ru/catalog/elektronika/kontrollery_chpu/

Иначе что-то делать смыла никакого.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

7 часов назад, haker_fox сказал:

1. Рисуйте линии от ножки до ножки. Очень непросто читать схему, где все пины висят фактически в воздухе, и приходится мысленно строить связи от метки до метки, а иногда и до нескольких меток

Это не всегда удачное решение. Часто в паутине таких линий запутаться проще, чем мысленно строить связи. Когда линий много и они идут вместе гораздо более читаемо выглядят шины. Причем отдельные шины для каждой логически связанной группы сигналов, а не одна глобальная шина на весь лист (в этом случае от нее пользы тоже нет). Примерно так:

image.thumb.png.5406649ba4000de866f8e127a0a4912b.png

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

13 часов назад, Eddy_Em сказал:

один таймер генерирует ШИМ для ноги STEP драйвера ШД

Зачем генерировать шаги ШИМом??

13 часов назад, Eddy_Em сказал:

И STEP-импульсы они ногодрыгом генерируют, а не таймером.

В общем, идеальный показатель того, как делать нельзя.

А представляете, на старых ЧПУшках не было столько таймеров и там ногодрыгом все делалось, разве, что для энкодеров ставили спец. счетчики, и нормально было вполне)) Поэтому, когда сам разводил схему контроллера когда-то давно, предпочел использовать таймеры МК именно для работы с энкодерами, а не ШД..

Изменено пользователем mantech

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

19 часов назад, MX_Master сказал:

Уже давно хочу сделать простенький вариант ЧПУ контроллера. Чтоб можно было и с готовыми ЧПУ системам (Mach3, LinuxCNC, ...) юзать. И, при желании, со своим вариантом ЧПУ связку сделать.

Не из праздного любопытства, зачем изобретать велосипед? Вроде у MESA открыты исходники, повторяй, да расширяй систему. Оптимальность кода не вызывает никаких сомнений, видно, разрабатывали далеко не глупые люди. Сделать что-то свое, тем более на микроконтроллере, близкое по надежности и стабильности, очень сложно. По цене тоже не вижу выигрыша.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2 hours ago, mantech said:

Зачем генерировать шаги ШИМом??

Потому что других вариантов нет, чтобы надежно получить постоянную скорость!!!111

2 hours ago, mantech said:

ногодрыгом все делалось

Это называется "гланды через задницу удалять". Оно вроде работает, а на деле — нет!

Даже в убогих восьмибитках конструкция вида "for(int i=0; i<N;++i);" будет зависеть от того, сработало прерывание в этот момент, или нет! А в ARM'ах с их конвейером, вообще нельзя так делать.

Для фрезеров же крайне важно, чтобы движение бура было равномерным, иначе даже несчастной 50-микронной точности не добьешься!!!111

Изменено пользователем Eddy_Em

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

14 hours ago, Сергей Борщ said:

Это не всегда удачное решение. Часто в паутине таких линий запутаться проще, чем мысленно строить связи.

На схеме автора мне показалось загрузки линиями не будет. Естественно я подразумевал, что количество линий должно быть разумным, в т.ч. нужны и шины. На предприятии у меня именно так и рисуем)

4 hours ago, mantech said:

Зачем генерировать шаги ШИМом??

Кстати, косвенный плюс от "ногодрыга" в том, что если МК "зависнет", то движки, скорее всего встанут, что более безопано. В случае таймеров они могут продолжать работать, пока не упрутся в концевик, если он есть, конечно.

 

2 hours ago, rloc said:

тем более на микроконтроллере

А чем плох микроконтроллер? И на чём можно делать надёжные и стабильные системы?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

4 hours ago, Eddy_Em said:

фрезеров

Пожалуйста... фрезерный станок! Не токарь... а токарный станок)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

3 часа назад, haker_fox сказал:

А чем плох микроконтроллер? И на чём можно делать надёжные и стабильные системы?

У автора в качестве примера были указаны контроллеры, применяемые в LinuxCNC и Mach3. Это системы, где расчетом траектории занимается хост-машина, а на контроллер возлагаются логические задачи. Для меня, вполне очевидным видится применение FPGA из самых простых и доступных серий.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

5 hours ago, Eddy_Em said:

Потому что других вариантов нет, чтобы надежно получить постоянную скорость!!!111

Это называется "гланды через задницу удалять". Оно вроде работает, а на деле — нет!

Даже в убогих восьмибитках конструкция вида "for(int i=0; i<N;++i);" будет зависеть от того, сработало прерывание в этот момент, или нет! А в ARM'ах с их конвейером, вообще нельзя так делать.

Для фрезеров же крайне важно, чтобы движение бура было равномерным, иначе даже несчастной 50-микронной точности не добьешься!!!111

 

Вы почему-то исходите из соображений, что шпиндель ЧПУ должен "летать" на пределах скоростных возможностей шаговых двигателей и остальной механики. На самом деле фрезеровка это достаточно медленный процесс. Скорость подачи определяется из технологических соображений (материал, глубина фрезеровки, диаметр фрезы, скорость вращения шпинделя и т.д.). Поэтому  ногодрыг может быть вполне допустим, если прерывания добавляют небольшой джиттер.  Я уже писал, что мой хоббийный ЧПУ нормально работает на древнем РС (Sempron 1.66ГГц) под Вин ХР через LPT порт. Точность 20мкм обеспечивает.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

30 minutes ago, rloc said:

FPGA из самых простых и доступных серий.

Гм... и снова не понимаю. Чем микроконтроллер с ядром Cortex-M4(F) для расчёта траекторий и управления двигателями? У этой микроархитектуры есть расширения для ЦОС. Если программировать умеючи, то можно решить поставленную задачу, я думаю.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...