Нужен пример скетча для Arduino

Тема в разделе "Закажу проект", создана пользователем mat, 1 июн 2016.

  1. mat

    mat Нерд

    Добрый день, уважаемые. Требуется помощь специалиста ибо, сам в этом деле ничего не смыслю. Есть у меня токарный станок и на него установлен электропривод ходовыми винтами. Управление сделано на Arduino Mega2560. Хочется, чтобы можно было на детали обрабатывать радиус. Можете помочь в решении такой задачи ?
    Если не туда влез, перенесите пожалуйста, куда следует.
     
  2. vvr

    vvr Инженерище

    подобные вещи делаются обычно с использованием шаговых моторов
    у вас наверно стоят асинхронники на ходовых винтах
    тема для чпушных форумов
    но там всё на шаговых моторах
     
  3. mat

    mat Нерд

    Как все зациклились на шаговых двигателях... Нет, у меня не шаговые, а серво. Обычный двигатель постоянного тока с энкодером на валу. На этих форумах из пустого в порожнее переливается, а вывод один: Arduino слабА, нужен не ниже Cortex.
     
  4. Onkel

    Onkel Гуру

    есть ардуины и на кортексе. Но, как правило, для станков мк и попроще atmega328 (который в уно) хватает.
     
  5. mat

    mat Нерд

    Не спешили бы с утверждениями... Потому и взята 2560, что у 328 ножек не хватает.
     
  6. Onkel

    Onkel Гуру

    ну кому и 144 ногого кортекса не хватит, это не вопрос. Три мотора и шпиндель - 8 ног, это даже в простейшем случае прямого управления, без контроллеров двигателей. 6 концевиков - итого 14 портов. Куда больше? У меня в 3д фрезере атмега8а справляется.
     
  7. mat

    mat Нерд

    По сути вопроса, есть что сказать ?
     
  8. joman

    joman Гик

  9. mat

    mat Нерд

    Ребята, мне один человек аж на 13 корпусах TTL- логики предложил решение... Не нужно ничего добавлять, уже всё есть и работает. Не хватает только обработки радиуса. Человек, писавший этот скетч не программист и не знает, как математику сферы перенести на код. Можете помочь с решением ? Хотя бы в общих чертАх.
     
  10. joman

    joman Гик

    Помочь конечно можем. Как только вы дадите исходные данные и поставите задачу.
    А написать: "У меня есть самодельный ЧПУ мне нужно выточить сферу", на это, простите, можно ответить: "напильник Вам в руки".
    Вам как минимум нужно описать, как происходит управление вашим станком. После чего, возможно, уже можно будет говорить о какой о "математике".
     
  11. mat

    mat Нерд

    Возожно, я не правильно использую вашу терминологию... Станок управляется Arduino 2560. Она, по сигналам энкодера со шпинделя, выдаёт сигналы Step и Dir на контроллеры серводвигателей. Их два и они крутят винты подач: поперечной и продольной. Сейчас станок может работать с автоматической подачей по обеим осям, нарезать резьбы ( не совсем полноценное нарезание, не хватает цикла, для повторения проходов с заглублением ), точит конуса. Вот ещё бы радиус добавить...
     
  12. mat

    mat Нерд

    Если это как- то поможет оперативности и понятности нашего диалога, могу пригласить в Skype.
     
  13. joman

    joman Гик

    описание - это хорошо.
    Хотелось бы еще тогда пример программы, нарезающей, на пример, резьбу.
    Как я понимаю, отдельная программа, это отдельная прошивка?
     
  14. mat

    mat Нерд

    Э-э... Простите, не понял. У нас одна прошивка. Или Вы о чём- то своём ?
     
  15. joman

    joman Гик

    Каким образом меняется программа нарезания?
     
  16. mat

    mat Нерд

    // ***** 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]))

    Как я уже писал, программа написана не программистом, поэтому, если вас что- то убивает, отнеситесь пожалуйста со спокойствием.
     
    Последнее редактирование: 1 июн 2016
  17. joman

    joman Гик

    То что Вы написали - не программа для ардуино.

    Это просто описатель структуры/класса 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];
    - есть ли какие то ещё переменные, с которым она может работать, и как с ними работать
    Вряд ли мы сможем написать что то подобное.
     
  18. mat

    mat Нерд

    Ну, такие вопросы не для меня конечно... Я попробую ответить но, предупреждаю, это только мои предположения, основанные на долгом и нудном глядение на экран и попытке проанализировать увиденное. На сколько это верно, не мне судить. Итак, если я правильно понимаю byte Ks_Div; это делитель для резьбы продольной, целая часть, а int Km_Div; это делитель тоже для продольной но, дробная часть.
    А byte Kcs_Div; и int Kcm_Div; соответственно для поперечной резьбы.
     
  19. joman

    joman Гик

    Есть ещё:
    char Text[7];
    который: "2.50mm" или "24tpi " (после i зачем-то пробел???)?
    и почему часть в mm а часть в tpi?
    char Sp_Lim[8];
    " 999rpm" (перед цифрами зачем-то пробел???)?

    Пробелы несут какой то скрытый смылсл? можно ли без них?

    Ну и, если это делители, то получается у Вас резьба конусом идёт???

    Вообще, для начала бы не плохо понять, что такое элемент массива и массив в целом.
     
  20. mat

    mat Нерд

    2,50мм это метрическая резьба, а 24tpi это дюймовая резьба.что касается пробела, я думаю это не критично. Эта инфа выводится на экран. Наверное, можно и без них, без пробелов.
    Что касается делителей, это не означает что резьба идёт конусом. Это скорее всего издержки арифметики. На шпинделе стоит энкодер. На ходовой винт двигатель передаёт вращение с редукцией. Ну и сам винт, имеет шаг резьбы. Всё это и вылезает на делителях.
    А вот, что такое элемент массива и массив в целом, Вам наверное нужно сначала мне объяснить
    , что это такое и с чем это едят ?