Самодельный станок ЧПУ на ардуино с DC моторами + энкодеры.
-
- Новичок
- Сообщения: 10
- Зарегистрирован: 24 мар 2017, 15:51
- Репутация: 3
- Настоящее имя: Иван
- Контактная информация:
Самодельный станок ЧПУ на ардуино с DC моторами + энкодеры.
Всем доброго времени суток.
Наконец то закончен первый станочек из фанеры..
т.к. тратиться на шаговые двигатели не охото, было решено взять моторы постоянного тока из старых струйных принтеров. От туда же и направляющие и энкодеры..
Фото: Пришлось заказать на Ebay линейные подшипники внутренним диаметром 8 мм. (примерно 300 руб. 10 шт.) и подшипники качения внутренним диаметром 6 мм (также примерно 300 руб. за 10 штук).
Так же куплены две шпильки М6 длиной 1 м. (около 100 р. за метр.)
В качестве электроники выбрал ардуино мега (куплено в Ebay за 400 руб) + Плата расширения для управления моторами Motorhield v 1. (Цена 100 р.)
Фото:
Код для ардуины был взят с сайта: http://www.ecnc.ru, немного переделан для работы с моторами DC. С этого же сайта была взята и управляющая программа на ПК.
Видео работы станочка (Youtube): https://www.youtube.com/watch?v=j5dMaj5l2gk&t=21s
И гравировка самодельной фрезой из сверла: https://www.youtube.com/watch?v=3l74Qfh ... e=youtu.be
Еще фото: ...
Всё работает. Но конечно жесткость станка хромает.
Так же имеется вопрос: Может кто знает как научить ардуино обрабатывать G-код.?
Наконец то закончен первый станочек из фанеры..
т.к. тратиться на шаговые двигатели не охото, было решено взять моторы постоянного тока из старых струйных принтеров. От туда же и направляющие и энкодеры..
Фото: Пришлось заказать на Ebay линейные подшипники внутренним диаметром 8 мм. (примерно 300 руб. 10 шт.) и подшипники качения внутренним диаметром 6 мм (также примерно 300 руб. за 10 штук).
Так же куплены две шпильки М6 длиной 1 м. (около 100 р. за метр.)
В качестве электроники выбрал ардуино мега (куплено в Ebay за 400 руб) + Плата расширения для управления моторами Motorhield v 1. (Цена 100 р.)
Фото:
Код для ардуины был взят с сайта: http://www.ecnc.ru, немного переделан для работы с моторами DC. С этого же сайта была взята и управляющая программа на ПК.
Видео работы станочка (Youtube): https://www.youtube.com/watch?v=j5dMaj5l2gk&t=21s
И гравировка самодельной фрезой из сверла: https://www.youtube.com/watch?v=3l74Qfh ... e=youtu.be
Еще фото: ...
Всё работает. Но конечно жесткость станка хромает.
Так же имеется вопрос: Может кто знает как научить ардуино обрабатывать G-код.?
- odekolon
- Мастер
- Сообщения: 1103
- Зарегистрирован: 05 ноя 2014, 14:53
- Репутация: 360
- Настоящее имя: Борис
- Контактная информация:
Re: Самодельный станок ЧПУ на ардуино с DC моторами + энкоде
Как говориться "из говна и палок"!
Ни в коей мере не осуждаю, и не насмехаюсь.
Все начинается с малого.
легкое удивление вызвает, как на ардуине умудрились сервопетлю с энкодерами, по постоянному току сделать, если не сложно, киньте ссылочку на источник, просто из любопытства.
Ни в коей мере не осуждаю, и не насмехаюсь.
Все начинается с малого.
легкое удивление вызвает, как на ардуине умудрились сервопетлю с энкодерами, по постоянному току сделать, если не сложно, киньте ссылочку на источник, просто из любопытства.
"Капиталистом стать можно лишь тогда, когда обогатишь свою память знанием всех тех богатств, которые выработало человечество"
-
- Новичок
- Сообщения: 10
- Зарегистрирован: 24 мар 2017, 15:51
- Репутация: 3
- Настоящее имя: Иван
- Контактная информация:
Re: Самодельный станок ЧПУ на ардуино с DC моторами + энкоде
Совершенно верно!odekolon писал(а):Как говориться "из говна и палок"!
Задача стояла построить, чтоб работало! И, работает!
Над этим долго голову ломал. Было прочитано довольно много инфы, и в итоге получилось.odekolon писал(а):как на ардуине умудрились сервопетлю с энкодерами, по постоянному току сделать
Сигналы с энкодеров идут на внешние прерывания ардуины (У Mega прерываний 6, потому и была выбрана именно она).
Код ардуины для работы с энкодероми и моторами получился такой:
Код: Выделить всё
void setup() {
motor1.setSpeed(255);
motor2.setSpeed(255);
motor3.setSpeed(255);
int i;
Serial.begin(9600);
attachInterrupt(3, blink1, CHANGE);
attachInterrupt(2, blink2, CHANGE);
attachInterrupt(4, blink3, CHANGE);
delayTime=4; //задержка между шагами 3 мс (2 мс - время реакции ШД на подачу напряжения)
}
void moveBackward(int sm)
{
if (sm == 0)
{
while (P1 < 1){
motor1.run(FORWARD);
}
motor1.run(RELEASE);
P1 = 0;
}
else if (sm == 1)
{
while (P2 < 1){
motor2.run(FORWARD);
}
motor2.run(RELEASE);
P2 = 0;
}
else if (sm == 2)
{
while (P3 < 1){
motor3.run(FORWARD);
}
motor3.run(RELEASE);
motor3.run(BACKWARD);
delay(5);
motor3.run(RELEASE);
P3 = 0;
}
}
void moveForward(int sm)
{
if (sm == 0)
{
while (P1 < 1){
motor1.run(BACKWARD);
}
motor1.run(RELEASE);
P1 = 0;
}
else if (sm == 1)
{
while (P2 < 1){
motor2.run(BACKWARD);
}
motor2.run(RELEASE);
P2 = 0;
}
else if (sm == 2)
{
while (P3 < 1){
motor3.run(BACKWARD);
}
motor3.run(RELEASE);
motor3.run(FORWARD);
delay(5);
motor3.run(RELEASE);
P3 = 0;
}
}
Код: Выделить всё
#include <AFMotor.h>
int motorPins[3][4] = {{2, 3, 4, 5},{7, 8, 6, 9},{10, 11, 12, 13}};
int count;
int count2[3] = {0,0,0};
int delayTime;
int val = 0;
int rot=0;
int incomingByte = 0;
int sign=1;
int P1,P2,P3, s = 0;
AF_DCMotor motor1(3, MOTOR12_64KHZ);
AF_DCMotor motor2(2, MOTOR12_64KHZ);
AF_DCMotor motor3(4, MOTOR12_64KHZ);
void blink1()
{
P1++;
}
void blink2()
{
P2++;
}
void blink3()
{
P3++;
}
//Процедура настройки прошивки
void setup() {
motor1.setSpeed(255);
motor2.setSpeed(255);
motor3.setSpeed(255);
int i;
Serial.begin(9600);
attachInterrupt(3, blink1, CHANGE);
attachInterrupt(2, blink2, CHANGE);
attachInterrupt(4, blink3, CHANGE);
delayTime=4; //задержка между шагами 3 мс (2 мс - время реакции ШД на подачу напряжения)
}
void moveBackward(int sm)
{
if (sm == 0)
{
while (P1 < 1){
motor1.run(FORWARD);
}
motor1.run(RELEASE);
P1 = 0;
}
else if (sm == 1)
{
while (P2 < 1){
motor2.run(FORWARD);
}
motor2.run(RELEASE);
P2 = 0;
}
else if (sm == 2)
{
while (P3 < 1){
motor3.run(FORWARD);
}
motor3.run(RELEASE);
motor3.run(BACKWARD);
delay(5);
motor3.run(RELEASE);
P3 = 0;
}
}
void moveForward(int sm)
{
if (sm == 0)
{
while (P1 < 1){
motor1.run(BACKWARD);
}
motor1.run(RELEASE);
P1 = 0;
}
else if (sm == 1)
{
while (P2 < 1){
motor2.run(BACKWARD);
}
motor2.run(RELEASE);
P2 = 0;
}
else if (sm == 2)
{
while (P3 < 1){
motor3.run(BACKWARD);
}
motor3.run(RELEASE);
motor3.run(FORWARD);
delay(5);
motor3.run(RELEASE);
P3 = 0;
}
}
//Одновременный поворот двигателей 0, 1, 2 на x, y, z шагов соответственно
void MoveSM(long x, long y, long z) {
long c[3], c2[3];
double c1[3], d[3];
long m, i;
boolean flg;
c[0] = x;
c[1] = y;
c[2] = z;
m = 1;
for (i=0; i<3; i++) {
if (m < abs(c[i])) m = abs(c[i]);
}
for (i=0; i<3; i++) {
c1[i] = 0;
d[i] = 1.0 * c[i] / m;
c2[i] = 0;
}
flg = false;
for (i=0; i<3; i++) {
if (abs(c1[i]) < abs(c[i])) flg=true;
}
while (flg) {
flg=false;
for (i=0; i<3; i++) {
if (abs(c1[i]) < abs(c[i]))
c1[i] += d[i];
if (abs(c1[i]) - abs(c2[i]) >= 0.5) {
if (c[i]>0) {
c2[i]++;
moveForward(i);
} else {
c2[i]--;
moveBackward(i);
}
}
if (abs(c1[i]) < abs(c[i])) flg=true;
}
delay(delayTime);
}
}
//Основной цикл
void loop() {
if (Serial.available() > 0) { //Пришла команда
long c[4]={0,0,0,0};
int i;
sign=1;
i=0;
incomingByte = Serial.read();
while (incomingByte!=';') { //Читаем входящую строку, признак конца строки знак "точка с запятой"
if (c[i]==0) {
if (incomingByte=='-')
sign=-1;
}
if (incomingByte==',') {
c[i]*=sign;
sign=1;
i++;
} else if (incomingByte>='0' && incomingByte<='9') {
c[i]=c[i]*10+incomingByte-'0';
}
while (Serial.available() == 0) {
delay(2);
}
incomingByte = Serial.read();
}
c[i]*=sign;
MoveSM(c[0],c[1],c[2]); //Вращаем двигатели на заданное число шагов
Serial.println("OK"); //Отправляем компьютеру сообщение "OK", значит можно высылать новую команду
}
else
delay(100); //Если ничего не пришло, ждём 1/10 секуды.
}
- odekolon
- Мастер
- Сообщения: 1103
- Зарегистрирован: 05 ноя 2014, 14:53
- Репутация: 360
- Настоящее имя: Борис
- Контактная информация:
Re: Самодельный станок ЧПУ на ардуино с DC моторами + энкоде
наверное можно попытаться ваш код, привитнить к GRBL, но наверное будет трудновато....Wikly писал(а): Так же имеется вопрос: Может кто знает как научить ардуино обрабатывать G-код.?
поскольку ваша система регулирования получилось "вещь в себе" наверное проще будет поискать на помойках шаговые движки от принтеров и все-таки пойти по традиционному пути.
А самопальная сервосистема таит в себе множество поводных камней... аппаратных и программных.
"Капиталистом стать можно лишь тогда, когда обогатишь свою память знанием всех тех богатств, которые выработало человечество"
-
- Новичок
- Сообщения: 10
- Зарегистрирован: 24 мар 2017, 15:51
- Репутация: 3
- Настоящее имя: Иван
- Контактная информация:
Re: Самодельный станок ЧПУ на ардуино с DC моторами + энкоде
Смотрел в эту сторону. Сейчас с ним разбираюсь. Возможно удастся привинтить.odekolon писал(а):можно попытаться ваш код, привитнить к GRBL,
Ну пока работает довольно не плохо.. Но еще тестирую.odekolon писал(а):А самопальная сервосистема таит в себе множество поводных камней... аппаратных и программных.
- AndyBig
- Мастер
- Сообщения: 3971
- Зарегистрирован: 07 мар 2014, 04:01
- Репутация: 1121
- Откуда: юг России
- Контактная информация:
Re: Самодельный станок ЧПУ на ардуино с DC моторами + энкоде
Высшая степень дипломатичностиWikly писал(а):Но конечно жесткость станка хромает.
-
- Новичок
- Сообщения: 10
- Зарегистрирован: 24 мар 2017, 15:51
- Репутация: 3
- Настоящее имя: Иван
- Контактная информация:
Re: Самодельный станок ЧПУ на ардуино с DC моторами + энкоде
Нашел неплохой сайт, по ардуино и серво... http://www.homofaciens.de/technics-mach ... -v2_en.htm Возможно по нему перекодирую Ардуину. Управляющая программа там из под линукса...
-
- Новичок
- Сообщения: 10
- Зарегистрирован: 24 мар 2017, 15:51
- Репутация: 3
- Настоящее имя: Иван
- Контактная информация:
Re: Самодельный станок ЧПУ на ардуино с DC моторами + энкоде
Подскажите знающие люди, если на шпильки (ну или на моторы) прикрутить механические энкодеры типа таких:
Как они себя ведут? могут ли пропускать сигналы (шаги)?
как раз имеется три штуки. Как они себя ведут? могут ли пропускать сигналы (шаги)?
-
- Почётный участник
- Сообщения: 2393
- Зарегистрирован: 17 июл 2015, 10:25
- Репутация: 302
- Настоящее имя: Константин
- Откуда: Балаково (Саратовская обл.)
- Контактная информация:
Re: Самодельный станок ЧПУ на ардуино с DC моторами + энкоде
Работать будут, но износятся очень быстро.
- Сергей Саныч
- Мастер
- Сообщения: 9116
- Зарегистрирован: 30 май 2012, 14:20
- Репутация: 2857
- Откуда: Тюмень
- Контактная информация:
Re: Самодельный станок ЧПУ на ардуино с DC моторами + энкоде
На высокой скорости (выше 3-5 об/сек) у таких энкодеров появляется серьезный дребезг. И, да, надолго их не хватит. Ресурс около 30000 оборотов.
Чудес не бывает. Бывают фокусы.
-
- Новичок
- Сообщения: 10
- Зарегистрирован: 24 мар 2017, 15:51
- Репутация: 3
- Настоящее имя: Иван
- Контактная информация:
Re: Самодельный станок ЧПУ на ардуино с DC моторами + энкоде
Понятно, в принципе так и думал. Буду искать оптические. Спасибо за подсказку.
- odekolon
- Мастер
- Сообщения: 1103
- Зарегистрирован: 05 ноя 2014, 14:53
- Репутация: 360
- Настоящее имя: Борис
- Контактная информация:
Re: Самодельный станок ЧПУ на ардуино с DC моторами + энкоде
To Wikly:
Дружеский совет: чем проходить тернистый путь который давным-давно прошли прошли производители сервоприводов, чтоб получить уникальную конструкцию, может стоит заняться чем-нибудь более полезным для себя и для комьюнити? Интересных задач полно, к примеру сделать готовую сборку linuxCNC на малине.
Нет, творчество ради творчества, штука полезная, каждый инженер испытывает потребность "херней позаниматься" но слишком углубляться не стоит.
Хотя если поставить задачу "Квазиполноценный сервопривод постоянного тока на ардуине" , может и есть смысл позаниматься...
Но тогда вместо кривого станка, придется сначала создать испытательный стенд с энкодером, динамометром и т.п., а потом уже городить свой сервопривод.
Если хотите просто на станке деревяшки поточить, купите китайкий набор GRBL + шаговики - и пилите себе на здоровье.
Дружеский совет: чем проходить тернистый путь который давным-давно прошли прошли производители сервоприводов, чтоб получить уникальную конструкцию, может стоит заняться чем-нибудь более полезным для себя и для комьюнити? Интересных задач полно, к примеру сделать готовую сборку linuxCNC на малине.
Нет, творчество ради творчества, штука полезная, каждый инженер испытывает потребность "херней позаниматься" но слишком углубляться не стоит.
Хотя если поставить задачу "Квазиполноценный сервопривод постоянного тока на ардуине" , может и есть смысл позаниматься...
Но тогда вместо кривого станка, придется сначала создать испытательный стенд с энкодером, динамометром и т.п., а потом уже городить свой сервопривод.
Если хотите просто на станке деревяшки поточить, купите китайкий набор GRBL + шаговики - и пилите себе на здоровье.
"Капиталистом стать можно лишь тогда, когда обогатишь свою память знанием всех тех богатств, которые выработало человечество"
- ScrewDriver
- Мастер
- Сообщения: 1942
- Зарегистрирован: 06 сен 2016, 01:44
- Репутация: 498
- Настоящее имя: Василий
- Откуда: Москва
- Контактная информация:
Re: Самодельный станок ЧПУ на ардуино с DC моторами + энкоде
Все уже придумано и разработано давно:
https://hackaday.io/project/11224-mechaduino
Это серва на ардуинке. В качестве датчика используется редкоземельный магнит и датчик магнитного поля.
перепелить на механический энкодер я думаю не составит труда, при желании.
https://hackaday.io/project/11224-mechaduino
Это серва на ардуинке. В качестве датчика используется редкоземельный магнит и датчик магнитного поля.
перепелить на механический энкодер я думаю не составит труда, при желании.
Промышленная автоматика, ПЛК, приводы, SCADA системы
Мой Ютуб канал.
Мой Ютуб канал.
- odekolon
- Мастер
- Сообщения: 1103
- Зарегистрирован: 05 ноя 2014, 14:53
- Репутация: 360
- Настоящее имя: Борис
- Контактная информация:
Re: Самодельный станок ЧПУ на ардуино с DC моторами + энкоде
Ух! Удивил!ScrewDriver писал(а):Все уже придумано и разработано давно:
https://hackaday.io/project/11224-mechaduino
Это серва на ардуинке. В качестве датчика используется редкоземельный магнит и датчик магнитного поля.
перепелить на механический энкодер я думаю не составит труда, при желании.
правда это не движок постоянного тока, но все равно интересно!
Кто б из форумчан доплилил бы проект до оптики, драйвер можно поядреней прикрутить и готов гибридный привод хоуммэйд
"Капиталистом стать можно лишь тогда, когда обогатишь свою память знанием всех тех богатств, которые выработало человечество"
- ScrewDriver
- Мастер
- Сообщения: 1942
- Зарегистрирован: 06 сен 2016, 01:44
- Репутация: 498
- Настоящее имя: Василий
- Откуда: Москва
- Контактная информация:
Re: Самодельный станок ЧПУ на ардуино с DC моторами + энкоде
А зачем? оптика капризная, готовые энкодеры стоят дорого.odekolon писал(а):Кто б из форумчан доплилил бы проект до оптики
на магнитике - имхо самое то. Единственно там он специфичный довольно - заказывать из америки или искать в китае.
Промышленная автоматика, ПЛК, приводы, SCADA системы
Мой Ютуб канал.
Мой Ютуб канал.
- odekolon
- Мастер
- Сообщения: 1103
- Зарегистрирован: 05 ноя 2014, 14:53
- Репутация: 360
- Настоящее имя: Борис
- Контактная информация:
Re: Самодельный станок ЧПУ на ардуино с DC моторами + энкоде
может быть, хотя у нас как-то получается оптику по случаю по дешевке брать.
Мне кажется этот разговор нужно перевести в отдельную тему. Может кто реально сделает...
Мне кажется этот разговор нужно перевести в отдельную тему. Может кто реально сделает...
"Капиталистом стать можно лишь тогда, когда обогатишь свою память знанием всех тех богатств, которые выработало человечество"
-
- Мастер
- Сообщения: 224
- Зарегистрирован: 03 фев 2017, 01:06
- Репутация: 35
- Настоящее имя: Александр
- Откуда: Украина
- Контактная информация:
Re: Самодельный станок ЧПУ на ардуино с DC моторами + энкоде
Хорошая тарадайка получилась:)
Молодец.
Правда для работы c энкодерами наверное лучше было бы использовать не мегу, а что-то из серии STM32.
Там и частоты побольше, и есть специальный режим портов для работы с энкодерами.
Самые простенькие по конфигурации стоят около 2,5$.
За такие деньги можно и каждому энкодеру к примеру отдельный сопроцессор сделать, а основным процессором считывать готовые числа(к примеру по квадратной шине).
Работать с STM32 очень просто, конфигурация настраивается мышкой в CubeMX.
Молодец.
Правда для работы c энкодерами наверное лучше было бы использовать не мегу, а что-то из серии STM32.
Там и частоты побольше, и есть специальный режим портов для работы с энкодерами.
Самые простенькие по конфигурации стоят около 2,5$.
За такие деньги можно и каждому энкодеру к примеру отдельный сопроцессор сделать, а основным процессором считывать готовые числа(к примеру по квадратной шине).
Работать с STM32 очень просто, конфигурация настраивается мышкой в CubeMX.
-
- Новичок
- Сообщения: 10
- Зарегистрирован: 24 мар 2017, 15:51
- Репутация: 3
- Настоящее имя: Иван
- Контактная информация:
Re: Самодельный станок ЧПУ на ардуино с DC моторами + энкоде
C STM32 никогда не сталкивался, а несколько Дунь уже в наличии были (Нано, Уно, Мега).alex1816 писал(а):Хорошая тарадайка получилась:)
Молодец.
Правда для работы c энкодерами наверное лучше было бы использовать не мегу, а что-то из серии STM32.
Там и частоты побольше, и есть специальный режим портов для работы с энкодерами.
Самые простенькие по конфигурации стоят около 2,5$.
За такие деньги можно и каждому энкодеру к примеру отдельный сопроцессор сделать, а основным процессором считывать готовые числа(к примеру по квадратной шине).
Работать с STM32 очень просто, конфигурация настраивается мышкой в CubeMX.
Спасибо за инфу, поглядим, что такое эта STM32...
-
- Мастер
- Сообщения: 224
- Зарегистрирован: 03 фев 2017, 01:06
- Репутация: 35
- Настоящее имя: Александр
- Откуда: Украина
- Контактная информация:
Re: Самодельный станок ЧПУ на ардуино с DC моторами + энкоде
Думаю не пожалеете.Wikly писал(а):поглядим, что такое эта STM32...
Разобраться с ним очень просто, конфигурация через CubeMX(бесплатна с офф сайта), потом программирование на С. То есть код на С думаю не тяжело перенесется с меги, уно и тп. В процессе программирования конфигурацию можно загружать в куб и перенестраивать(или добавлять) ноги.
Все очень удобно и просто.
Я с нуля(ну немного навыки на С) сделал самоделку с клавиатурой, экраном, энкодером(у меня правда абсолютный), управление мотором и тп.
Использовал одну из самых простых отладочных плат ценой чуть больше 2еув http://www.ebay.com/itm/STM32F103C8T6-A ... SwygJXhGtV.
Кроме того прямо CubeMX может установить в чип FreeRTOS (realtime OS).
Там уже надо программировать с учетом семафоров и тп.
Я с этим пока не занимался, но может пригодится.
А если учесть, что это ядро ARM Cortex-M3 , 32бит процессор, и частоты процессора посерьезнее - думаю не пожалеете.
- odekolon
- Мастер
- Сообщения: 1103
- Зарегистрирован: 05 ноя 2014, 14:53
- Репутация: 360
- Настоящее имя: Борис
- Контактная информация:
Re: Самодельный станок ЧПУ на ардуино с DC моторами + энкоде
O ! а я как раз позавчера такую заказал (чисто поиграться)alex1816 писал(а):Думаю не пожалеете.Wikly писал(а):поглядим, что такое эта STM32...
alex1816 пожалуйста, заведите тему в разделе "электроника", дайте ссылки на софт, напишите про грабли на которые наступали.
Обчество вам спасибо скажет и репутации добавит
"Капиталистом стать можно лишь тогда, когда обогатишь свою память знанием всех тех богатств, которые выработало человечество"