Добрый день, уважаемые. Требуется помощь специалиста ибо, сам в этом деле ничего не смыслю. Есть у меня токарный станок и на него установлен электропривод ходовыми винтами. Управление сделано на Arduino Mega2560. Хочется, чтобы можно было на детали обрабатывать радиус. Можете помочь в решении такой задачи ? Если не туда влез, перенесите пожалуйста, куда следует.
подобные вещи делаются обычно с использованием шаговых моторов у вас наверно стоят асинхронники на ходовых винтах тема для чпушных форумов но там всё на шаговых моторах
Как все зациклились на шаговых двигателях... Нет, у меня не шаговые, а серво. Обычный двигатель постоянного тока с энкодером на валу. На этих форумах из пустого в порожнее переливается, а вывод один: Arduino слабА, нужен не ниже Cortex.
есть ардуины и на кортексе. Но, как правило, для станков мк и попроще atmega328 (который в уно) хватает.
ну кому и 144 ногого кортекса не хватит, это не вопрос. Три мотора и шпиндель - 8 ног, это даже в простейшем случае прямого управления, без контроллеров двигателей. 6 концевиков - итого 14 портов. Куда больше? У меня в 3д фрезере атмега8а справляется.
Мало ног? Тадам! http://avrproject.ru/publ/kak_podkljuchit/bascom_avr_74hc595/2-1-0-44 и 3 ноги превращаются... превращаются в... А почти во сколько хотите
Ребята, мне один человек аж на 13 корпусах TTL- логики предложил решение... Не нужно ничего добавлять, уже всё есть и работает. Не хватает только обработки радиуса. Человек, писавший этот скетч не программист и не знает, как математику сферы перенести на код. Можете помочь с решением ? Хотя бы в общих чертАх.
Помочь конечно можем. Как только вы дадите исходные данные и поставите задачу. А написать: "У меня есть самодельный ЧПУ мне нужно выточить сферу", на это, простите, можно ответить: "напильник Вам в руки". Вам как минимум нужно описать, как происходит управление вашим станком. После чего, возможно, уже можно будет говорить о какой о "математике".
Возожно, я не правильно использую вашу терминологию... Станок управляется Arduino 2560. Она, по сигналам энкодера со шпинделя, выдаёт сигналы Step и Dir на контроллеры серводвигателей. Их два и они крутят винты подач: поперечной и продольной. Сейчас станок может работать с автоматической подачей по обеим осям, нарезать резьбы ( не совсем полноценное нарезание, не хватает цикла, для повторения проходов с заглублением ), точит конуса. Вот ещё бы радиус добавить...
описание - это хорошо. Хотелось бы еще тогда пример программы, нарезающей, на пример, резьбу. Как я понимаю, отдельная программа, это отдельная прошивка?
// ***** Gewinde ***** typedef struct { byte Ks_Div; int Km_Div; byte Kcs_Div; int Kcm_Div; char Text[7]; char Sp_Lim[8]; }Gewinde_INFO; Gewinde_INFO const Gewinde_Info[] = { { 72, 5912, 142, 72, "0.25mm", " 999rpm" }, { 60, 4926, 118, 9333, "0.30mm", " 999rpm" }, { 51, 8508, 101, 9429, "0.35mm", " 999rpm" }, { 45, 3695, 11, 2500, "0.40mm", " 999rpm" }, { 36, 2956, 71, 36, "0.50mm", " 999rpm" }, { 30, 2463, 59, 4667, "0.60mm", " 950rpm" }, { 25, 9254, 50, 9714, "0.70mm", " 810rpm" }, { 24, 1971, 47, 5733, "0.75mm", " 760rpm" }, { 22, 6847, 44, 6, "0.80mm", " 710rpm" }, { 20, 1642, 39, 6444, "0.90mm", " 560rpm" }, { 18, 1478, 35, 68, "1.00mm", " 460rpm" }, { 14, 5182, 28, 544, "1.25mm", " 380rpm" }, { 12, 985, 23, 7687, "1.50mm", " 320rpm" }, { 10, 3702, 20, 3886, "1.75mm", " 280rpm" }, { 9, 739, 17, 84, "2.00mm", " 220rpm" }, { 7, 2501, 14, 272, "2.50mm", " 190rpm" }, { 6, 493, 11, 8933, "3.00mm", " 140rpm" }, {156, 0576, 56, 1890, "80tpi ", " 999rpm" }, { 72, 0000, 50, 5701, "72tpi ", " 999rpm" }, { 45, 7238, 44, 9512, "64tpi ", " 999rpm" }, { 42, 6888, 42, 1417, "60tpi ", " 999rpm" }, { 40, 109, 39, 3323, "56tpi ", " 999rpm" }, { 34, 2950, 33, 7134, "48tpi ", " 999rpm" }, { 31, 4371, 30, 9039, "44tpi ", " 950rpm" }, { 28, 5792, 28, 945, "40tpi ", " 900rpm" }, { 25, 7213, 25, 2850, "36tpi ", " 760rpm" }, { 22, 8634, 22, 4756, "32tpi ", " 710rpm" }, { 20, 0054, 19, 6661, "28tpi ", " 650rpm" }, { 19, 2910, 18, 9638, "27tpi ", " 600rpm" }, { 18, 5765, 18, 2614, "26tpi ", " 570rpm" }, { 17, 1475, 16, 8567, "24tpi ", " 500rpm" }, { 15, 7186, 15, 4520, "22tpi ", " 450rpm" }, { 14, 2896, 14, 0472, "20tpi ", " 440rpm" }, { 13, 5751, 13, 3449, "19tpi ", " 420rpm" }, { 12, 8606, 12, 6425, "18tpi ", " 380rpm" }, { 11, 4317, 11, 2378, "16tpi ", " 350rpm" }, { 10, 0027, 9, 8331, "14tpi ", " 320rpm" }, { 8, 5738, 8, 4284, "12tpi ", " 270rpm" }, { 7, 8593, 7, 7260, "11tpi ", " 240rpm" }, { 7, 1448, 7, 0236, "10tpi ", " 220rpm" }, { 6, 4303, 6, 3213, " 9tpi ", " 190rpm" }, { 5, 7158, 5, 6189, " 8tpi ", " 170rpm" }, { 5, 0014, 4, 9165, " 7tpi ", " 150rpm" }, { 4, 2869, 4, 2142, " 6tpi ", " 140rpm" }, }; #define Total_Gewinde (sizeof(Gewinde_Info) / sizeof(Gewinde_Info[0])) Как я уже писал, программа написана не программистом, поэтому, если вас что- то убивает, отнеситесь пожалуйста со спокойствием.
То что Вы написали - не программа для ардуино. Это просто описатель структуры/класса Gewinde_INFO и массив Gewinde_Info[], содержащий записи этой структуры/класса. Ну и Total_Gewinde - количество этих элементов. Как я понимаю, по этой структура ардуина вырезает Вам резьбу. Но пока мы не поймём: - как конкретно она работает с этой структурой - что конкретно означают: byte Ks_Div; int Km_Div; byte Kcs_Div; int Kcm_Div; char Text[7]; char Sp_Lim[8]; - есть ли какие то ещё переменные, с которым она может работать, и как с ними работать Вряд ли мы сможем написать что то подобное.
Ну, такие вопросы не для меня конечно... Я попробую ответить но, предупреждаю, это только мои предположения, основанные на долгом и нудном глядение на экран и попытке проанализировать увиденное. На сколько это верно, не мне судить. Итак, если я правильно понимаю byte Ks_Div; это делитель для резьбы продольной, целая часть, а int Km_Div; это делитель тоже для продольной но, дробная часть. А byte Kcs_Div; и int Kcm_Div; соответственно для поперечной резьбы.
Есть ещё: char Text[7]; который: "2.50mm" или "24tpi " (после i зачем-то пробел???)? и почему часть в mm а часть в tpi? char Sp_Lim[8]; " 999rpm" (перед цифрами зачем-то пробел???)? Пробелы несут какой то скрытый смылсл? можно ли без них? Ну и, если это делители, то получается у Вас резьба конусом идёт??? Вообще, для начала бы не плохо понять, что такое элемент массива и массив в целом.
2,50мм это метрическая резьба, а 24tpi это дюймовая резьба.что касается пробела, я думаю это не критично. Эта инфа выводится на экран. Наверное, можно и без них, без пробелов. Что касается делителей, это не означает что резьба идёт конусом. Это скорее всего издержки арифметики. На шпинделе стоит энкодер. На ходовой винт двигатель передаёт вращение с редукцией. Ну и сам винт, имеет шаг резьбы. Всё это и вылезает на делителях. А вот, что такое элемент массива и массив в целом, Вам наверное нужно сначала мне объяснить , что это такое и с чем это едят ?