Страница 1 из 3

Современный тулчейн на arduino для управления 1-2 ШД

Добавлено: 18 фев 2016, 16:01
SVP
Тут родилось несколько задач, где надо что-то двигать. Не слишком точно, но иногда по странной логике.
И автономно. Т.е. скажем нажал одну кнопку, ШД сделал 3 оборота вперед, нажал вторую, три назад,
нажал обе - что-то еще.

Хочу попробовать собрать 2-3 "платформы" состоящих из какого-нибудь дешевого и простого МК,
шагового двигателя, драйвера и БП. Шаговиков давно не использовал, но полагаю в пределах 2А подобрать
можно легко, они где-то даже валяются в дому.

Хочется чего-то готового в плане железа и компактного.
Свою печатку разводить ради 2-3 агрегатов смысла не вижу.

Посмотрел, для arduino вроде бы понаворотили дофига шилдов, сходу пожалуй и не разобраться.
Есть у кого-нибудь положительный опыт ?
Бывают ли для arduino nano шилды для работы с ШД с готовыми и сколь-нибудь рабочими библиотеками ?
Хочется "проект выходного дня", а не "2 недели разбирательств где тут налажали до меня".

Или лучше брать что-нибудь более древнее, с бОльшим кол-вом выводой и здоровыми шилдами итп ?

ЗЫ. Хотя подумал... там поди в среднем для драйверов этих мелких по 3-4 ножки используется,
в шилде как таковом смысл есть только в плане того, что его так проще внутрь устройства закрепить :).
Вопрос в сторону мелких драйверов для попсовых ШД смещается

Re: Современный тулчейн на arduino для управления 1-2 ШД

Добавлено: 18 фев 2016, 17:50
Morroc
Готовых шилдов именно для nano и на 2А не видел. На L293 и подобных видел. Библиотеки есть (AccelStepper например).
Компактней будет nano + какой нибудь компактный драйвер на подходящий ток, но закреплять будет не так удобно - это да :)

Re: Современный тулчейн на arduino для управления 1-2 ШД

Добавлено: 18 фев 2016, 17:58
SVP
Вот подобрать бы "какой нибудь компактный драйвер на подходящий ток"... нормальный.
Сходу нашлись какие-то от репрапов, типа StepStick DRV8825, но опыта с ними нету.
Ставить серьезный промышленный вроде тоже смысла никакого.

Re: Современный тулчейн на arduino для управления 1-2 ШД

Добавлено: 18 фев 2016, 18:25
yurayerz
Я себе запилил контроллер на Ардуине, но не Нано, а Про Мини, с драйверами на DRV8825. Тащемта, достаточно компактно получилось.
Нестандартную логику работы не пробовал (ниахото :hehehe: ), проще залить в него grbl (как интерпретатор Г-кода), а второй ардуиной уже сделать нестандартную логику генерацией г-кода при нажатии на кнопки. На фотке, где красная рамочка - место для ардуины (вверху в середине сама ардуина про мини). Кстате, драйвера DRV8825вполне себе до 2.5А в обмотке и до 45В тащат!

Re: Современный тулчейн на arduino для управления 1-2 ШД

Добавлено: 18 фев 2016, 18:32
SVP
yurayerz писал(а):проще залить в него grbl (как интерпретатор Г-кода), а второй ардуиной уже сделать нестандартную логику генерацией г-кода при нажатии на кнопки
А к grbl своего поведения не дописать ?
2 штуки - это перебор. Логика простейшая.

Re: Современный тулчейн на arduino для управления 1-2 ШД

Добавлено: 18 фев 2016, 18:35
yurayerz
Не, грбл тупо принимает по последовательному интерфейсу г-коды, и выдает степ/диры. Унутрь лезть, разбираться - дело пропащее, времени жалко. При копеешной стоимости ~100-150р ардуин и стиков - чо их экономить?
Размер этой платы - 75х130мм, стандартный гайнтовский корпус.

Просто мой путь в ЧПУ начался с того, что я хотел всего лишь прикрутить автоподачу к проксоновскому координатному столику. :thinking: Оказалось, проще прикрутить полноценный грбл-контроллер! :hehehe:

Re: Современный тулчейн на arduino для управления 1-2 ШД

Добавлено: 18 фев 2016, 18:39
SVP
yurayerz писал(а):Не, грбл тупо принимает по последовательному интерфейсу г-коды, и выдает степ/диры. Унутрь лезть, разбираться - дело пропащее, времени жалко. При копеешной стоимости ~100-150р ардуин и стиков - чо их экономить?
Проводами лишними не хочется всё опутывать...
Но мысль ясна в целом.
А исходники на "грбл" есть в принципе ?

Re: Современный тулчейн на arduino для управления 1-2 ШД

Добавлено: 18 фев 2016, 18:42
yurayerz
да, исходники есть - https://github.com/grbl/grbl

Кстати, китайцы подобные контроллеры клепают к своим микролазерным станкам - http://ru.aliexpress.com/item/arduino-U ... 86082f80d4

Только цена ИМХО неадекватная. И напряжение до 12В (видимо, кондеры на низкое напряжение). Свой-то блок я 24В питаю.

Re: Современный тулчейн на arduino для управления 1-2 ШД

Добавлено: 18 фев 2016, 18:49
AndyBig
Бл...ин! Я все правильно понимаю? Для того, чтобы сгенерировать 400 (или сколько требуется) импульсов на одном выходе (STEP) и выставить единицу или ноль на другом (DIR) - надо подключать вторую ардуину и извращаться с G-кодом???? Вы меня простите, но это как покупать киловаттный ветряк для того, чтобы брать его с собой на пикники и питать там от него карманный радиоприемник :)
Ну или другое расхожее выражение - "Забивать микроскопом гвозди" :)

Re: Современный тулчейн на arduino для управления 1-2 ШД

Добавлено: 18 фев 2016, 18:51
yurayerz
Не-не-не! Это щас кажется, что вот она - простая логика! А потом захочется еще кнопочек, еще возможностей! И пилить заново?
А тут поставил универсальное решение - и развивай его до посинения!
Нужен же результат, а не процесс?

И да, если одновременно только одной осью управлять - можно на ардуине и акселстеппере скетчик по-быстрому слепить. А если двумя-тремя осями - тут уже совсем другая математика (алгоритм Брезенхема, прерывания и прочая...)

Re: Современный тулчейн на arduino для управления 1-2 ШД

Добавлено: 18 фев 2016, 18:58
AndyBig
Это не универсальное решение, это очень громоздкое, медленнодействующее и неоправданно сложное решение :) Проект выходного дня? Да генерацию заданного количества импульсов по нажатию кнопки можно написать за один вечер, в перерыве между ужином и любимым фильмом :) Даже без ардуины, на голом Си.

Re: Современный тулчейн на arduino для управления 1-2 ШД

Добавлено: 18 фев 2016, 19:05
yurayerz
Да я ж не возражаю! Каждый точит, как он хочет! ТС просил совета - я предложил свое решение.
Вы можете предложить своё!
А критиковать художника каждый может... :tongue: :hehehe:

Re: Современный тулчейн на arduino для управления 1-2 ШД

Добавлено: 18 фев 2016, 19:08
AndyBig
Тут только одно решение - любая плата ардуины. И все :) Даже библиотек никаких не нужно.

Re: Современный тулчейн на arduino для управления 1-2 ШД

Добавлено: 19 фев 2016, 00:47
Morroc
А мне кажется нормальный подход если нужно не с кодом и своими багами подолбаться, а запустить >1 шд параллельно. Ну не получится быстрее сесть и написать свое (разве что всю жизнь именно этим и занимаешься).

Re: Современный тулчейн на arduino для управления 1-2 ШД

Добавлено: 19 фев 2016, 01:08
pup
всё зависит от квалификации вопрошающего. ну и вообще разобраться в этом самом grbl может оказаться посложнее, чем написать скрипт для ардуины.
по теме я бы взял какую-нибудь нану за 200 рублей и тот самый драйвер, что упомянали выше. имхо проще спаять проводками и закрепить на сопли в каком-нибудь простеньком корпусе. примеров использования этих драйверо - пруд пруди, выбирай любой. но вот если надо рулить одноременно кучей - у меня есть сомнения, что ардуина будет исправно работать. не попробуешь - не поймешь.

Re: Современный тулчейн на arduino для управления 1-2 ШД

Добавлено: 19 фев 2016, 01:42
AndyBig
Morroc писал(а):Ну не получится быстрее сесть и написать свое (разве что всю жизнь именно этим и занимаешься).
Свое что? Вывод на ножку попеременно нуля и единицы с заданными задержками? Ну да, для этого надо всю жизнь изучать программирование и электронику :))
Вот Вам простейший вариант, написанный тут же в форме ответа за ужасающее время (минут 5-7):

Код: Выделить всё

// кнопка "Влево" на 0 выводе порта B, при нажатии на нее ШД делает 1000 шагов в одну сторону
// кнопка "Вправо" на 1 выводе порта B, при нажатии на нее ШД делает 768 шагов в другую сторону
// выход DIR на 2 выводе порта B
// выход STEP на 3 выводе порта B

#define DELAY_COUNT 800

volatile unsigned int delay_val = 1;

// настраиваем порты
PORTB = 0;
DDRB = (1<<3 | 1<<4);

int main()
{
	while(1)
	{
		if (PINB0 == 1) // нажата "Влево"
		{
			PORTB2 = 0;
			for (int j = 1000; j > 0; j--)
			{
				PORTB3 = 1;
				for (int i = DELAY_COUNT; i > 0; i--)
					delay_val = i * 1123;
				PORTB3 = 0;
				for (int i = DELAY_COUNT; i > 0; i--)
					delay_val = i * 1123;
			}
		}
		if (PINB1 == 1) // нажата "Вправо"
		{
			PORTB2 = 1;
			for (int j = 768; j > 0; j--)
			{
				PORTB3 = 1;
				for (int i = DELAY_COUNT; i > 0; i--)
					delay_val = i * 1123;
				PORTB3 = 0;
				for (int i = DELAY_COUNT; i > 0; i--)
					delay_val = i * 1123;
			}
		}
	}
}
Блин, ну для чего тут два микроконтроллера, генерация G-кода, а потом его интерпретация и разбор?
Еще час-полтора нужно для того, чтобы сделать простую фильтрацию дребезга контактов кнопок и линейные разгон/торможение ШД. Ну еще час-полтора, чтобы причесать код, сделать нормальные задержки через прерывания от таймера и добавить еще десяток кнопок с хитровыделанными движениями ШД (типа "оборот вперед, останов, пол-оборота назад, останов и пять с четвертью оборотов вперед").

Re: Современный тулчейн на arduino для управления 1-2 ШД

Добавлено: 19 фев 2016, 01:57
Maxekb77
Из драйверов готовых ну те же репраповские а4988 drv8825 таскают нема17 нормально , шилды к ним вроде на ебее есть и на 2 и на 3 оси.
Дисплей с кнопочками вроде в продаже есть.
Код уже выше приведен примерный, с тз занятие на вечер ничего там сложного нет.
Надоест можно будет и грбл прошить с ним поигратся

Re: Современный тулчейн на arduino для управления 1-2 ШД

Добавлено: 19 фев 2016, 02:17
Morroc
AndyBig писал(а): Свое что? Вывод на ножку попеременно нуля и единицы с заданными задержками? Ну да, для этого надо всю жизнь изучать программирование и электронику :))
Такой код не проблема, а как захочется несколькими шд шевелить одновременно, да еще и дисплей прилепить - становится уже заметно сложнее (недавно ведь была тема про дергающийся шд). Черный ящик, принимающий G код, проблему решает - генератор G кода можно тяп ляп написать и все равно шд будут бегать нормально :) Мк копеечные, жалко что ли ?

Re: Современный тулчейн на arduino для управления 1-2 ШД

Добавлено: 19 фев 2016, 04:04
AndyBig
Morroc писал(а):а как захочется несколькими шд шевелить одновременно, да еще и дисплей прилепить
А уже хочется? В описании задачи этого нет :)
И зачем придумывать себе трудности, чтобы потом мужественно их преодолевать? Захочется чего-то, на чем ардуина перенапрягается - взять что-то постарше ардуины, а не пыжиться, выдавливая из нее последние соки.
Morroc писал(а):Черный ящик, принимающий G код, проблему решает - генератор G кода можно тяп ляп написать и все равно шд будут бегать нормально
Так ведь на ардуине как раз и "(недавно ведь была тема про дергающийся шд)" :)) Просто не стоит пихать ардуину всюду, невзирая на трудности, создаваемые ее ограниченностью (как ресурсов, так и раздутых библиотек, тратящих половину ресурсов на свои внутренние проблемы).
Есть задача шевелить шаговиком по нажатию кнопок - любая ардуина с простейшей программой. Есть задача шевелить синхронно несколькими ШД с выводом на экран и прочими плюшками - берем что-то более приспособленное для этого. И не будет тем "ШД затыкается когда я вывожу две циферки на экран".
Это как раз яркий пример ардуизма мозга - для простейшей задачи, с которой справится почти любая тинька, взять ДВЕ меги и геморроиться с огромными библиотеками и отладкой взаимодействия между контролерами. Просто потому что так привыкли...
Не, автор, конечно, пусть делает как знает. Но такого :idiot: я еще не встречал - нажатия кнопок транслировать в совершенно чуждый контроллерам текстовый код, чтобы потом вторым контроллером этот код интерпретировать и исполнять :) Не думал, что ардуинщики еще могут меня чем-то удивить после увиденного многомесячного проекта, пытающегося заставить веб-сервер на ардуине работать хоть с какой-то приемлимой скоростью, но тут переплюнули :)

Re: Современный тулчейн на arduino для управления 1-2 ШД

Добавлено: 19 фев 2016, 11:14
SVP
По итогам планируется купить штук пять драйверов "типа StepStick DRV8825" и штук пять-десять дуин, вероятно нано, либо 5 нано, 5 pro, там посмотрим.

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

ЗЫ. Я уже слишком стар, чтобы не думать о расширяемости, даже если её не в первоначальном ТЗ.