Самопал ЧПУ для stm32f407

Mach, популярные и не очень CAD, CAM. Обсуждение и разработка программ для управления станками.
Аватара пользователя
Крафтер
Мастер
Сообщения: 211
Зарегистрирован: 27 мар 2015, 22:25
Репутация: 61
Настоящее имя: Андрей
Откуда: Ростов-на-Дону
Контактная информация:

Самопал ЧПУ для stm32f407

Сообщение Крафтер »

Как уже говорил, переписал на праздники свою систему под более популярный контроллер и за одно поправил пачку багов.
Начало можно почитать здесь http://www.cnc-club.ru/forum/viewtopic.php?f=16&t=7628

Сам пользуюсь, в принципе хватает. Если у кого-то есть желание попробовать, в архиве лежит exe, к нему надо подкинуть dll из другого архива. Не закидывал в общий архив, потому что эти dll будут дублироваться для следующих версий (если конечно они будут ) ).
Прошивка в архиве f407_bin, её можно залить через flash loader demonstrator.
Плату брал здесь https://ru.aliexpress.com/item/STM32F40 ... 32138.html
Разводка платы есть здесь http://wiki.stm32duino.com/index.php?ti ... _sch-1.pdf
Разводка ножек есть в исходниках в .ioc файле.
Ну и здесь напишу: (step dir) (PD12 PD10) (PD13 PD11) (PD14 PG2) (PD15 PG3) (PG4 PG6)
В конфиге можно задать, какой оси какая группа соответствует.
Кто захочет собрать из исходников, для компиляции exe нужна библиотека glm.

Немного подробносте насчет микроконтроллера.
(для просмотра содержимого нажмите на ссылку)
1) У него есть область памяти под названием CCM, к которой есть доступ только со стороны процессора. Из-за этого время доступа процессора сокращается до 0 тактов, и во-вторых, процессор не мешает работать DMA. Отмапить на эту память можно что угодно, но я отмапил только стек, потому что к статическим переменным обращается DMA.

2) Если не включить кэш процессора, работать будет раза в 2-3 медленнее.
FLASH->ACR |= FLASH_ACR_PRFTEN | FLASH_ACR_DCEN | FLASH_ACR_ICEN;

3) Работа с USART. Если работать через прерывания, то надо не забывать про FPU. Если не отключить сохранение его состояния, на каждое прерывание будет тратиться примерно 60 тактов
//отключает сохранение 32 регистров FPU при возникновении прерывания
FPU->FPCCR &= ~(FPU_FPCCR_ASPEN_Msk | FPU_FPCCR_LSPEN_Msk);
Но лучше вообще отказаться от прерываний. Вместо этого через DMA посылать байты в буфер и потом обрабатывать их в главном цикле.

4) Генерация шагов опять сделана через DMA. Надеялся, что здесь куча таймеров и можно включить их каскадно, но нет, на 6 осей каскадов не набралось. И даже выдачи сигнала на произвольные ножки с помощью BSRR не получилось. Все из-за того, что DMA1 не умеет посылать из памяти в память.

5) Опять наступил на граблю с пролетом таймера мимо максимума. На этот раз из-за того что CNT обновляется сразу, а ARR не сразу, поэтому даже если задать CNT < ARR, может оказаться, что он больше старого значения ARR. Лечится принудительным обновлением.
tim->EGR = TIM_EGR_UG; //переносим значения из shadow регистров

6) printf("%f") может приводить к падениям, если использовать урезанную библиотеку(nano specs и всё такое)

7) Не совсем про контроллер. usart на pl2303 оказался глючным, и если выключить программу, она не выключалась, пока не выдернешь переходник из ноута, или ждать пока отлипнет. А вот ft232 работает как надо.
Список изменений:
Немного доделано ручное передвижение. Если зажать шифт, станок двигается на максимальной скорости.
Переписан протокол связи с устройством, теперь пакеты шлются окном для ускорения посылки, упрощена разметка пакетов, отложенная обработка очереди usart.
Немного правок по чтению окружностей.
Правка циклов сверления.
Поддержка выходных файлов "как для mach3".
Правки прерывания обработки.
Правка расчета ускорения в разных случаях.
Проект переведен на coocox.
Проект переведен на stm32f407.
Улучшена диагностика ошибок.

Исполняемый файл.
CraftTool.zip
(110.65 КБ) 651 скачивание
Библиотеки к нему.
Qt_dll.zip
(14.75 МБ) 678 скачиваний
Прошивка контроллера.
f407_bin.zip
(125.13 КБ) 601 скачивание
Исходники.
CNC_818b5c2.zip
(927.76 КБ) 809 скачиваний
Последний раз редактировалось Крафтер 08 май 2019, 22:27, всего редактировалось 3 раза.
Аватара пользователя
Крафтер
Мастер
Сообщения: 211
Зарегистрирован: 27 мар 2015, 22:25
Репутация: 61
Настоящее имя: Андрей
Откуда: Ростов-на-Дону
Контактная информация:

Re: Самопал ЧПУ для stm32f407

Сообщение Крафтер »

Пример работы интерпретатора. В 23 часа ночи пилил шестерню, никто не жаловался ).
https://www.youtube.com/watch?v=zaDvRMYGTKI
Дисковые фрезы рулят, ими обработка идет тише.
https://www.youtube.com/watch?v=BD0VGrR9daU
Здесь осмелел, попробовал быструю выборку паза сделать.
https://www.youtube.com/watch?v=KT3JajpdTeg
Это пример, насколько точно можно обработать деталь, хотя есть и элемент везения ) .
https://www.youtube.com/watch?v=1Fab14cTPrk
Посмотрите, какая красивая стружечка.
https://www.youtube.com/watch?v=dWZPO_6CsOo
Это в 20 часов пилил шайбу из стали.
https://www.youtube.com/watch?v=vj2VBh55pZs

И можно на видосах заметить, как зажимы были сначала деревянными, потом алюминиевыми, потом стальными. :)
Аватара пользователя
Крафтер
Мастер
Сообщения: 211
Зарегистрирован: 27 мар 2015, 22:25
Репутация: 61
Настоящее имя: Андрей
Откуда: Ростов-на-Дону
Контактная информация:

Re: Самопал ЧПУ для stm32f407

Сообщение Крафтер »

Мелкую фрезу отгибает, поэтому сложно попасть в размер. Но если пилить вертикально (плунжерное фрезерование), тогда сразу хорошо снимает, и поверхность приличная выходит. Если предварительно дырки насверлить, то потом можно фрезой потолще по окружности отрезать. Шестерня была нужна для ремня HTD-5М, там по расчетам на 60 зубов длина окружности должна быть 300 мм, а по факту от силы 295.
DSC05408.JPG (12187 просмотров) <a class='original' href='./download/file.php?id=154177&sid=37f3b87770702c9696cbb0f362efd0ee&mode=view' target=_blank>Загрузить оригинал (6.21 МБ)</a>
А это немного темного прошлого станка :hehehe: . Сначала станок был деревянный и даже при обработке дерева сильно гудел. Поэтому сразу начал пилить на нем алюминиевый.
https://www.youtube.com/watch?v=VoSUR46fmlo
https://www.youtube.com/watch?v=i064hUvKp-4

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

Пробовал вырезать кабель-канал из тонкой фанеры, потом склеил канцелярским клеем. Вроде работоспособно, но места занимает много и трение большое. Проще купить и не тратить время.
https://www.youtube.com/watch?v=3WZqsjN-8CM

Еще была проблема с тем, что моторы питались от компьютерного блока питания 12 вольт. Когда станок гонял на максималке, освещение станка тухло, и конечно же моторы пропускали шаги. Странно, что мне не было это очевидно, думал, проблема в контроллере. Так вот, потом станок начал постоянно проглючивать на одной программе, нашел там конкретную команду, и оказалось, что это G0 с движением одновременно по всем осям, причем пропускало не при всяком угле наклона. Купил светодиодный БП на 24 вольта, поставил, и все, никаких глюков. Плюс скорость выросла в 2 раза, до 3000 мм/мин.
Аватара пользователя
Крафтер
Мастер
Сообщения: 211
Зарегистрирован: 27 мар 2015, 22:25
Репутация: 61
Настоящее имя: Андрей
Откуда: Ростов-на-Дону
Контактная информация:

Re: Самопал ЧПУ для stm32f407

Сообщение Крафтер »

Пробовал фрезеровать платы... не пошло. Если плата неровная, то фреза в одном месте прорезает на половину толщины, в другом не достаёт. Если взять конус с маленьким углом, тогда может хотя бы ширина дорожек будет меньше плавать. А вот сверлит красиво.
DSC05381.JPG (12175 просмотров) <a class='original' href='./download/file.php?id=154181&sid=37f3b87770702c9696cbb0f362efd0ee&mode=view' target=_blank>Загрузить оригинал (3.57 МБ)</a>
DSC05382.JPG (12175 просмотров) <a class='original' href='./download/file.php?id=154182&sid=37f3b87770702c9696cbb0f362efd0ee&mode=view' target=_blank>Загрузить оригинал (4.55 МБ)</a>
С ЛУТом масштаб не совпадает, видимо бумага от нагрева немного сжимается. Хорошо бы сделать корректировку положений дырок по камере.
NikolayUa24
Мастер
Сообщения: 1407
Зарегистрирован: 31 июл 2013, 20:05
Репутация: 256
Настоящее имя: Николай
Контактная информация:

Re: Самопал ЧПУ для stm32f407

Сообщение NikolayUa24 »

Крафтер писал(а):Проект переведен на stm32f407.
Китайцы выпускают на stm32f407 автономный контролер 6 осей частота 2МГЦ экран 3.5 дюйма.
Страдания ведут человека к совершенству.
Аватара пользователя
MX_Master
Мастер
Сообщения: 7465
Зарегистрирован: 27 июн 2015, 19:45
Репутация: 3088
Настоящее имя: Михаил
Откуда: Алматы
Контактная информация:

Re: Самопал ЧПУ для stm32f407

Сообщение MX_Master »

NikolayUa24 писал(а):Китайцы выпускают на stm32f407 автономный контролер 6 осей частота 2МГЦ экран 3.5 дюйма.
Где посмотреть сие чудо техники?
NikolayUa24
Мастер
Сообщения: 1407
Зарегистрирован: 31 июл 2013, 20:05
Репутация: 256
Настоящее имя: Николай
Контактная информация:

Re: Самопал ЧПУ для stm32f407

Сообщение NikolayUa24 »

MX_Master писал(а):
NikolayUa24 писал(а):Китайцы выпускают на stm32f407 автономный контролер 6 осей частота 2МГЦ экран 3.5 дюйма.
Где посмотреть сие чудо техники?
Посмотреть фото плат ?
Страдания ведут человека к совершенству.
Аватара пользователя
xenon-alien
Почётный участник
Почётный участник
Сообщения: 4506
Зарегистрирован: 01 янв 2013, 13:13
Репутация: 920
Настоящее имя: Daniel
Откуда: Закарпатская обл. Украина
Контактная информация:

Re: Самопал ЧПУ для stm32f407

Сообщение xenon-alien »

NikolayUa24 писал(а):
MX_Master писал(а):
NikolayUa24 писал(а):Китайцы выпускают на stm32f407 автономный контролер 6 осей частота 2МГЦ экран 3.5 дюйма.
Где посмотреть сие чудо техники?
Посмотреть фото плат ?
Ссылку на продукт можно...?
Аватара пользователя
Крафтер
Мастер
Сообщения: 211
Зарегистрирован: 27 мар 2015, 22:25
Репутация: 61
Настоящее имя: Андрей
Откуда: Ростов-на-Дону
Контактная информация:

Re: Самопал ЧПУ для stm32f407

Сообщение Крафтер »

Про автономные контроллеры я знаю, здесь можно и без китайцев обойтись. Где-то на просторах нашего интернета выкладывали исходный код. Мне надо было именно с ноутбука сидеть, и не хотелось ловить глюки с пропуском шагов.
bberkhin
Новичок
Сообщения: 7
Зарегистрирован: 21 янв 2019, 13:48
Репутация: 3
Настоящее имя: Борис
Контактная информация:

Re: Самопал ЧПУ для stm32f407

Сообщение bberkhin »

Круто. А не было мысли взять парсер GCod-а из LinuxCNC или GRBL ? И почему мультипоточность на WinAPI сделали, а не средствами QT - было бы мультиплатформенно сразу?
Аватара пользователя
Крафтер
Мастер
Сообщения: 211
Зарегистрирован: 27 мар 2015, 22:25
Репутация: 61
Настоящее имя: Андрей
Откуда: Ростов-на-Дону
Контактная информация:

Re: Самопал ЧПУ для stm32f407

Сообщение Крафтер »

bberkhin писал(а):Круто. А не было мысли взять парсер GCod-а из LinuxCNC или GRBL ? И почему мультипоточность на WinAPI сделали, а не средствами QT - было бы мультиплатформенно сразу?
Взять открытый парсер лицензия не позволяет, а свой может отполирую и барыжить буду :D . Потоки хорошо бы на std::thread и std::recursive_mutex переделать, но не принципиально.

PS. Ой, только доперло, что я не на работе и кто-то всё же посмотрел мой код :shock: . Как оцениваешь архитектуру?
bberkhin
Новичок
Сообщения: 7
Зарегистрирован: 21 янв 2019, 13:48
Репутация: 3
Настоящее имя: Борис
Контактная информация:

Re: Самопал ЧПУ для stm32f407

Сообщение bberkhin »

Взять открытый парсер лицензия не позволяет, а свой может отполирую и барыжить буду
Понятно, да это правильно и дальновидно ;)
PS. Ой, только доперло, что я не на работе и кто-то всё же посмотрел мой код :shock: . Как оцениваешь архитектуру?
Ну как сказать,я неделю проковырялся с кодом KMotion - там прямо кровь из глаз, не помню чтобы видел что-то хуже, удивительно, что он вообще работает. После этого твой ( на ты норм?) показался образцом. Там есть архитектура, хороший с++. комментарии в конце концов...

Главное что не понравилось: ты попытался запихать в интерпретатор все логику работу системы, класс перегружен и плохо расширяем ( все ИМХО конечно)
Я бы в интерпретаторе оставил только собственно парсинг g codа, а выполнение вынес в отдельный интерфейс. И если нужно выполнять на устройстве подсовывал бы реализацию работы с портом ( через планировщик траекторий), а если симуляцию (отрисовку) то соответсвующую реализацию симулятора, если одновременно то суперпозицию этих двух.
Ну и еще по мелочи - сам парсер плохо расширяем. Если делать, например, поддержку вызова подпрограмм и переменных то будут трудности.

Вот примерно что у меня получилось на базе твоего кода. Открыл его и как-то незаметно стал править :)
Вложения
Gcode.zip
(9.65 КБ) 530 скачиваний
Аватара пользователя
Крафтер
Мастер
Сообщения: 211
Зарегистрирован: 27 мар 2015, 22:25
Репутация: 61
Настоящее имя: Андрей
Откуда: Ростов-на-Дону
Контактная информация:

Re: Самопал ЧПУ для stm32f407

Сообщение Крафтер »

Здесь все на ты, так что пожалуйста :) .
KMotion - это оно https://github.com/parhansson/KMotionX/ ... 274ngc.cpp ? Одна только read_x чего стоит. Её вообще не должно было быть.

GCodeInterpreter уже предназначен для предварительного выполнения команд (перевод в команды движения). А для парсинга есть Parser. Хотя надо подумать, может действительно конвейер переставить. Чтобы не GCodeInterpreter вызывал парсинг, а наоборот, парсер вызывал интерпретатор. Если вытащить execute_file и execute_line в Parser, возможно получится то что нужно. Выполнение вынесено в отдельный интерфейс IRemoteDevice, и то думаю его выпилить. То есть изначально была идея, что если хочешь катать принтер, подключаешь одну реализацию, хочешь токарный - другую. Посылка на удаленное устройство засунута внутрь конкретной реализации CRemoteDevice.
И твой код надо глянуть )
stefan63
Новичок
Сообщения: 5
Зарегистрирован: 11 фев 2019, 10:22
Репутация: 2
Контактная информация:

Re: Самопал ЧПУ для stm32f407

Сообщение stefan63 »

Не захотел Craft Tool запуститься, захотел Qt plugin "windows".
Пошел инсталировать Qt ...захотел 40 ГБ, и отказался.
Аватара пользователя
Крафтер
Мастер
Сообщения: 211
Зарегистрирован: 27 мар 2015, 22:25
Репутация: 61
Настоящее имя: Андрей
Откуда: Ростов-на-Дону
Контактная информация:

Re: Самопал ЧПУ для stm32f407

Сообщение Крафтер »

Добавил еще библиотеку в QT_dll.zip, должно починиться.
vladumur
Мастер
Сообщения: 278
Зарегистрирован: 07 авг 2014, 16:44
Репутация: 37
Откуда: Россия, Красноярский край
Контактная информация:

Re: Самопал ЧПУ для stm32f407

Сообщение vladumur »

Не увидел нигде, опторазвязку или какую либо защиту входов, выходов не использовали?
Можно фото вашего электронного контролера со всей его обвязкой как есть (на станке)?
Аватара пользователя
daemon78
Мастер
Сообщения: 1693
Зарегистрирован: 02 окт 2018, 15:02
Репутация: 103
Настоящее имя: Владимир
Откуда: Москва
Контактная информация:

Re: Самопал ЧПУ для stm32f407

Сообщение daemon78 »

Крафтер писал(а):А это немного темного прошлого станка . Сначала станок был деревянный и даже при обработке дерева сильно гудел. Поэтому сразу начал пилить на нем алюминиевый.
А что за режим на втором видео? Визуально кажется, что подача где то в районе 250мм/мин?
Аватара пользователя
Крафтер
Мастер
Сообщения: 211
Зарегистрирован: 27 мар 2015, 22:25
Репутация: 61
Настоящее имя: Андрей
Откуда: Ростов-на-Дону
Контактная информация:

Re: Самопал ЧПУ для stm32f407

Сообщение Крафтер »

vladumur писал(а):Не увидел нигде, опторазвязку или какую либо защиту входов, выходов не использовали?
Можно фото вашего электронного контролера со всей его обвязкой как есть (на станке)?
В первом сообщении ссылка на плату, там есть фото. Нет там никакой защиты, голые выводы микроконтроллера. Хотел плату опторазвязки спаять, но она слишком длинная получилась, переходные отверстия разъехались и в общем пришлось обойтись без нее :thinking: . И так работает, поэтому забил. Полный комплект - это usb-uart переходник, контроллер, БП и драйверы шаговиков. Драйверы тоже самоделка, там входы к микроконтроллеру идут.
daemon78 писал(а):А что за режим на втором видео? Визуально кажется, что подача где то в районе 250мм/мин?
Если речь про фанерный станок, возможно, там еще руками рулил, боялся программы запускать. Так что подачу не посчитать )
Механник
Новичок
Сообщения: 12
Зарегистрирован: 29 окт 2017, 11:21
Репутация: 2
Настоящее имя: Александр
Контактная информация:

Re: Самопал ЧПУ для stm32f407

Сообщение Механник »

Здравствуйте, очень заинтересовал Ваш проект, немогу найти где прописываются параметры станка (кол-во шагов , рабочие размеры стола и тд) нашол пока только пины , не могли бы Вы подсказать где искать эти настройки. до этого тока с ардуино сталкивался, собрал 3д принтер, еше заинтересовал Ваш проект для шд , он с энкодерами? заранее спасибо за ответ
Аватара пользователя
Крафтер
Мастер
Сообщения: 211
Зарегистрирован: 27 мар 2015, 22:25
Репутация: 61
Настоящее имя: Андрей
Откуда: Ростов-на-Дону
Контактная информация:

Re: Самопал ЧПУ для stm32f407

Сообщение Крафтер »

Всё что может быть отрегулировано, прописано в config.cfg с комментариями. Если там чего-то нет, значит поменять можно, только пересобрав проект. Вот насобирается у меня месяц отпуска и тогда... :) . Сейчас дочерчиваю 4 ось, так что придётся впиливать её поддержку в свою прогу.

Проект для шд без энкодеров. Там стоит заменить контроллер на stm32f030f4p6. Предыдущих купил пачку по сотне и думал что хитрый пятачок, а эти в чипидип вообще по полтинничку :thinking: .
Ответить

Вернуться в «Windows / Mach»