Да и не получится на 4-х мегагерцовом проце пихать данные в порты с интервалом 0,2 мкс.
Правильно, поэтому 20MHz, запас по быстродействию еще никому не помешал.
Отредактировано life (2008-03-19 01:21:39)
самодельный станок с ЧПУ, отзывы duxe.ru |
Привет, Гость! Войдите или зарегистрируйтесь.
Вы здесь » самодельный станок с ЧПУ, отзывы duxe.ru » Схема контроллера, шаговые двигатели » Контроллер станка с ЧПУ на PIC с возможностью автономной работы
Да и не получится на 4-х мегагерцовом проце пихать данные в порты с интервалом 0,2 мкс.
Правильно, поэтому 20MHz, запас по быстродействию еще никому не помешал.
Отредактировано life (2008-03-19 01:21:39)
ребята сначало думаю алгоритм работы контроллера на до проработать формат передачи данных уточнить , а быстродействия кконтроллера в 4 мГц вполне хватит ,
могу сказать что основное время работы контроллера все ранвно впустую уходит так как
контроллер "выдерживает" серию пауз необходимую для работы . канечно все зависит от алгоритма работы
чем он оптимальнее тем меньшая частота для проца потребна, мой контроллер вполне "уверено" на 4 мгц работает.
в том то и дело, что pic придется обвешивать еще кучей ШИМ модуляторов на этих же пиках или tl494.
И в итоге на 3 двигателя будет выходить 4 контроллера если все делать по уму. Ну а если попроще, без шим, то действительно можно одним обойтись.
У меня 4-х осевой контроллер на 16F877, с ШИМом до 20 кГц. Под ШИМ задействованы по 2 входа на каждый двигатель, то есть 8 разрядный порт. На этот порт подается сигнал с 2-х счетверенных компараторов, каждая пара компараторов обслуживает свой двигатель.
ШИМ реализован просто. Появление сигнала на выходе компаратора вызывает прерывание, которое отключает сигнал с порта управляюшего двигателем. Делается пауза, через некоторое время прерывание блокируется и на драйвер двигателя снова идет сигнал. И так до 20 тысяч раз в секунду.
На входах Vref компаратора постоянный, регулируемый уровень напряжения. Если проц позволяет, можно подать напряжение с ЦАП.
Кстати, такое построение позволяет пользователю выбрать любой мыслимый диапазон токов двигателей с ШИМ, или вовсе от ШИМ отказаться, не устанавливая компараторы, а просто, подав определенные уровни на порт, подключаемый к компараторам. Тогда двигатели будут управляться по простому, без ШИМ.
Главное, чтобы у камня хватило портов.
Отредактировано Трудоголик (2008-03-19 08:47:58)
Простите но никак не могу понять, что за время шага? В смысле скорость? А зачем ее в файл закладывать? Есть холостой ход, есть обработка. Может устанавливать кнопками на самом контроллере? В зависимости от материала, инструмента и т.д. и почему 4 бита на ось и направление? Достаточно трех. Или планируется больше четырех осей?
Да, действительно, можно при связе с контроллером и началом работы устанавливать рабочую и холостую скорость по каждой оси, тогда по два байта на ось будет достаточно
Главное, чтобы у камня хватило портов.
В этом то вся и проблема...
У меги точно хватит, еще и останется для клавиатуры, индикатора и памяти.
Просто если в дальнейшем будет расширяться переферия, то это потребует еще контроллеров со своими программами. А это так любимые всеми финансовые затраты и время.
Опять же повторюсь, может на стадии разработки предусмотреть ВСЕ возможные модули, а дальше писать программу для одного контроллера. Сначала простую, а со временем дополнять ее соответствующими модулями. Дополнение железками практически не потребуется.
Для подключения шим можно сделать и без компараторов, нужно лишь с токового резистора снять напряжение, подвести его на переменный резистор и подать на ацп меги. Или даже сделать регулировку тока программно. выставить токи работы и токи удержания.
Я не вижу контроллер на пике тупиковым направлением, но на меге модернизация упрощается.
Если сказать честно, я начинал с пиков, но когда перешел на меги, забыл их как страшный сон. Сейчас уже год почти ничего не делал, времени не хватает.
Есть много программ для конфигурирования проца и генерации начального кода для мег, для тех кто с знаком с пиками не составит особого труда освоить и мегу. Это лично мое мнение.
ШАг станка.
Ну и что?
Я же уже говорил, что кол-во микрон в файле делится на шаг станка. Получается кол-во необходимых импульсов. Если остаток от деления меньше 5, то остаётся всё как есть. Если больше, то добавляется один шаг и пошли крутить движки. Если вы про то, что погрешность вылезет - так тут самому пользователю внимательнее надо быть - он же программу для станка не руками пишет, а какой-то CAD как правило использует. Вот пусть и задаёт при разработке изделия в этом CADе сетку равную шагу своего станка. Ибо если у пользователя минимальный шаг станка 0.1мм, а у него координаты в файле с точностью до 0.001мм, то тут ни PC ни PIC погрешность не скомпенсируют. Или я заблуждаюсь?
все верно. для этого эти 40 см разбиваются на нужное количество пакетов
Как вариант 2 - использовать 2 байта для задания перемещения
Может быть всё-таки выделить 3 байта, чтобы потом в этих пакетах не путаться?
У меня сейчас выделено 3 байта, считываю из 24ххх строку в 6 символов и преобразую в число. Всё наглядно и понятно. В отладчике сразу видно координату.
в том то и дело, что pic придется обвешивать еще кучей ШИМ модуляторов на этих же пиках или tl494.
Это тем, у кого есть такая необходимость. Если кого-то устраивает питание шаговиков постоянным напряжением, то зачем им навязывать ШИМ?
И в итоге на 3 двигателя будет выходить 4 контроллера если все делать по уму. Ну а если попроще, без шим, то действительно можно одним обойтись.
Угу. Так и планировалось.
Может быть заранее заложить более производительное железо, на печатке сразу предусмотреть доп. входы/выходы, а потом добавлять кикие либо модули с минимальным количеством компонентов и всего лишь обновляя программу в мк.
Лучшее - враг хорошего Реализацию идеального контроллера можно обсуждать не один год. А можно начать практическую реализацию с простого варианта. Если кому-то кроме сверления, рисования/выжигания/фрезерования 2D от автономного контроллера ничего не надо, то его и простой контроллер устроит. Соберёт и будет радоваться. Ещё и простор для модернизации драйверов будет. Заодно при обкатке такого варианта вылезет большинство недочётов, с которыми на следующем этапе надо будет бороться.
Вам не кажется такой путь более перспективным?
Кажется. Но начинать наверное лучше с малого это раз. И не всем нужен такой навороченный вариант это два.
Но вот только похоже на следующую ситацию: в автосервисе не ремонтирут мерседесы по тому что не знают как они устроены, хотя за них платят больше. но самое страшное - не хотят и узнавать.
Не совсем так - атмелы я тоже мучал лет 5 назад. Просто не понравились вот и всё. Дело привычки наверное.
Если для Вас принципиален вопрос денег для покупки того же atmega128 стоимостью 200-220р для опытов, то я готов их предоставить.
Также придётся предоставить и документацию(со всеми errata) и компиляторы и время на изучение...
Хотя... Предложение довольно заманчиво...
Также придётся предоставить и документацию(со всеми errata) и компиляторы и время на изучение...
Хотя... Предложение довольно заманчиво...
вот о чем я и говорил - похоже все упирается в финансы
даташиты, аппноуты, книги по ним хоть сейчас скину, надо тока домой дойти. Даташиты даже на русском есть на 128 мегу. Программы надо глянуть, тоже гдето лежат. И генераторы начального кода, и отладчики и тд. и тп. Информации по всему этому добру куча. И я думаю найти в интернете еще - не проблема. Было бы желание.
А лет 5 назад с атмелами действительно тяжело было. Как с иномарками в ссср.
МК не работают с плавающей запятой и необходимости насиловать себя и микроконтроллер расшифровкой текста нет.
Быстродействия у нас на все хватает, об этом пока не спорим. МК любой фирмы, стоимости и т.д.
тестер для СОМ1 и МК вчера написал такой:
nnnn nnnn - byte числа шагов,
ssss - 4 бита скорости (нам бы и 2х хватило)
L/R - 2 бита направления (можно и один)
dd - 2 бита ось (00 - вкл. шпинделя)
Передача данных в обратной последовательности по DTR, флагом готовности к приему очередной порции РС считает "1" на DSR (там же и CLK). Уровни для удобства такие "0"=-12..0, "1"=3..12В
Теперь интересно увидеть схему и программу для МК
Отредактировано bolt (2008-03-19 11:02:29)
Я не вижу контроллер на пике тупиковым направлением, но на меге модернизация упрощается.
Это смотря какой пик и какая мега...
PIC18F458 16384 x 16 - PROM/1536-RAM 8-ADC 35I/O 4-Timer + Watchdog USB2.0/USART/MSPI/MI2C 5 x 10-Bits-PWM ICSP.
На мег у меня документации нет кроме древнего CD от Atmela. А там 103 и всё.
Теперь интересно увидеть программу для МК, бо обсуждаем горячо, а реальных результатов не наблюдается
Я лично COM порт и не планировал. Мне от LPT проще. Что касается автономной работы от внешней памяти - почти что уже всё готово. Осталось найти добровольца со станком c драйверами степ/дир, пиком, памятью, программатором для них и сободным временем и желанием.
МК не работают с плавающей запятой и необходимости насиловать себя и ПИК расшифровкой текста нет.
МК работают с плавающей запятой. По вашему для чего нужен файл float.h в папке с компилятором? Но дело не в этом. Дело в том, что не нужны тут никакие плавающие запятые. А "насилование" себя и PIC с расшифровкой текста укладывается в одну единственную строчку.
X = atol(inpbuf);
проект, который и мне /пока/ не особенно нужен, становится все виртуальнее
У меги точно хватит, еще и останется для клавиатуры, индикатора и памяти.
ТОже с каждым днем все большесклоняюсь в сторону Меги.
Для подключения шим можно сделать и без компараторов, нужно лишь с токового резистора снять напряжение, подвести его на переменный резистор и подать на ацп меги.
ЕСли есть 6 каналов АЦП, то почему бы и нет?
Если вы про то, что погрешность вылезет - так тут самому пользователю внимательнее надо быть - он же программу для станка не руками пишет, а какой-то CAD как правило использует. Вот пусть и задаёт при разработке изделия в этом CADе сетку равную шагу своего станка.
В этом вся и проблема, будет существовать такая неприятность как "непереносимость программ".
Если у меня, например, шаг сетки 13 шагов на мм, а у соседа 17 шагов, то мою программу сверления плат ему просверлить, мне кажется, будет затруднительно, если я не учту особенность его станка.
Осталось найти добровольца со станком c драйверами степ/дир, пиком, памятью, программатором для них и сободным временем и желанием.
Вообще то можно и на симуляторе погонять.
А в реальности - смотря под какой пик прога делалась.
На мег у меня документации нет кроме древнего CD от Atmela.
Кратко.
ATmega128, ATmega128L
8-разрядный AVR-микроконтроллер с внутрисистемно программируемой флэш-памятью емкостью 128 кбайт
Отличительные особенности:
Высокопроизводительный, маломощный 8-разрядный AVR-микроконтроллер
Развитая RISC-архитектура
– 133 мощных инструкций, большинство из которых выполняются за один машинный цикл
– 32 8-разр. регистров общего назначения + регистры управления встроенной периферией
– Полностью статическая работа
– Производительность до 16 млн. операций в секунду при тактовой частоте 16 МГц
– Встроенное умножающее устройство выполняет умножение за 2 машинных цикла
Энергонезависимая память программ и данных
– Износостойкость 128-ми кбайт внутрисистемно перепрограммируемой флэш-памяти: 1000 циклов запись/стирание
– Опциональный загрузочный сектор с отдельной программируемой защитой
Внутрисистемное программирование встроенной загрузочной программой
Гарантированная двухоперационность: возможность чтения во время записи
– Износостойкость 4 кбайт ЭСППЗУ: 100000 циклов запись/стирание
– Встроенное статическое ОЗУ емкостью 4 кбайт
– Опциональная возможность адресации внешней памяти размером до 64 кбайт
– Программируемая защита кода программы
– Интерфейс SPI для внутрисистемного программирования
Интерфейс JTAG (совместимость со стандартом IEEE 1149.1)
– Граничное сканирование в соответствии со стандартом JTAG
– Обширная поддержка функций встроенной отладки
– Программирование флэш-памяти, ЭСППЗУ, бит конфигурации и защиты через интерфейс JTAG
Отличительные особенности периферийных устройств
– Два 8-разр. таймера-счетчика с раздельными предделителями и режимами сравнения
– Два расширенных 16-разр. таймера-счетчика с отдельными предделителями, режимами сравнения и режимами захвата
– Счетчик реального времени с отдельным генератором
– Два 8-разр. каналов ШИМ
– 6 каналов ШИМ с программируемым разрешением от 2 до 16 разрядов
– Модулятор выходов сравнения
– 8 мультиплексированных каналов 10-разрядного аналогово-цифрового преобразования
8 несимметричных каналов
7 дифференциальных каналов
2 дифференциальных канала с выборочным усилением из 1x, 10x и 200x
– Двухпроводной последовательный интерфейс, ориентированный не передачу данных в байтном формате
– Два канала программируемых последовательных УСАПП
– Последовательный интерфейс SPI с поддержкой режимов ведущий/подчиненный
– Программируемый сторожевой таймер со встроенным генератором
– Встроенный аналоговый компаратор
Специальные возможности микроконтроллера
– Сброс при подаче питания и программируемая схема сброса при снижении напряжения питания
– Встроенный калиброванный RC-генератор
– Внешние и внутренние источники прерываний
– Шесть режимов снижения энергопотребления: холостой ход (Idle), уменьшение шумов АЦП, экономичный (Power-save), выключение (Power-down), дежурный (Standby) и расширенный дежурный (Extended Standby)
– Программный выбор тактовой частоты
– Конфигурационный бит для перевода в режим совместимости с ATmega103
– Общее выключение подтягивающих резисторов на всех линиях портов ввода-вывода
Ввод-вывод и корпуса
– 53 –программируемые линии ввода-вывода
– 64-выв. корпус TQFP
Рабочие напряжения
– 2.7 - 5.5В для ATmega128L
– 4.5 - 5.5В для ATmega128
Градации по быстродействию
– 0 - 8 МГц для ATmega128L
– 0 - 16 МГц для ATmega128
А это отладочная плата для МЕГИ128, размер 3х4 см.
Некоторые ссылки по АВР
Ввводный курс, перевод на русский.
http://publ.lib.ru/ARCHIVES/M/MORTON_Dj … dnyy_kurs.(2006).[djv+ocr].zip
Курс програмирования:
http://avr123.nm.ru
Документация
http://lord-n.narod.ru/walla.html
http://ihtik.lib.ru/dreamhost_complit_22janv2007.html
http://lord-n.narod.ru/download/books/w … .part2.rar
Самоучитель
http://forum.radiospec.ru/index.php?showtopic=5612
Релиз многоязычной программы для работы с МЕГА (к самоучителю)
http://sourceforge.net/forum/forum.php?forum_id=767068
Отредактировано Трудоголик (2008-03-19 13:15:25)
64-выв. корпус TQFP
Ага, народная конструкция, простая в изготовлении... ))
В этом вся и проблема, будет существовать такая неприятность как "непереносимость программ".
Если у меня, например, шаг сетки 13 шагов на мм, а у соседа 17 шагов, то мою программу сверления плат ему просверлить, мне кажется, будет затруднительно, если я не учту особенность его станка.
Естественно. И никуда от этого не деться. У соседа будет возникать погрешность. Только не окажется ли она существенно меньше люфтов соседского станка?
Вы же не отдаёте на завод платы с требованием 1мкм между дорожек? Существуют требования производителя, основанные на возможностях оборудования, и производитель всегда говорит чего он может, а чего не может. Можно даже провести эксперимент - сверлить или рисовать один и тот же файл с PC и автономно. Затем сравнить и сделать выводы. Всё сразу ясно станет.
Ага, народная конструкция, простая в изготовлении...
Не нравится - делай в корпусе DIP, у Атмела выбор огромен.
Могу прислать файло печатной платы для утюга.
Вообще то можно и на симуляторе погонять.
А в реальности - смотря под какой пик прога делалась.
На симуляторе всё ОК.
А в реальности - скомпилировать могу под ЛЮБОЙ с кол-вом ног от 14 и выше.
Если памяти хватит
Отредактировано koolhatcker (2008-03-19 14:44:59)
Могу прислать файло печатной платы для утюга.
Отладочной то? Не, спасибо, не надо.
Сначала надо доделать то, что уже начал.
Думаю до выходных управлюсь, а там видно будет.
Естественно. И никуда от этого не деться. У соседа будет возникать погрешность. Только не окажется ли она существенно меньше люфтов соседского станка?
НЕ знаю, не знаю, если ваш постпроцессор учел набегающую погрешность для подачи 13 ш/мм, то просчитайте, какая будет погрешность при подаче 17ш/мм
Чур, в постпроцессор данные снова не загонять, исплользвовать уже вышедшие из него данные.
ЛЮБОЙ с кол-вом ног от 14 и выше.
А чего ног так мало? Или это только один канал?
А чего ног так мало? Или это только один канал?
Я же ссылку на схему размещал.
http://koolhatcker.pochta.ru/Index.html
К двум ногам порта B подключена память, 6 ног порта А выдают импульсы на двигатели.
Для отладки чтения из внешней памяти больше ничего и не требуется.
Вся схема - 3 резистора, МК и память 24ххх.
НЕ знаю, не знаю, если ваш постпроцессор учел набегающую погрешность для подачи 13 ш/мм, то просчитайте, какая будет погрешность при подаче 17ш/мм
Да не о том я речь веду.
А о том, что если у вашего станка минимальный шаг перемещения в 2-3 раза превышает тот шаг с которым нарисована картинка, то наивно требовать от станка абсолютно точной копии картинки.
Вот о чём я.
И никакие предварительные расчёты на супер-пупер ЭВМ тут не помогут.
Обычный вопрос разумной достаточности.
Устраивает - пользуемся. Не устраивает - меняем двигатель или винт с гайкой.
Да не о том я речь веду.
А о том, что если у вашего станка минимальный шаг перемещения в 2-3 раза превышает тот шаг с которым нарисована картинка, то наивно требовать от станка абсолютно точной копии картинки.
Мне даже и в кошмарном сне не могло приснится сверлить отверстия в плате, размеченные через 2,54 мм через трафарет с шагом 6 мм
Значит по вашему можно сверлить те же отверстия через трафарет с шагом 1 мм, минимальный шаг сверления
ведь в 2,54 раза меньше, чем шаг отверстий?
Значит по вашему можно сверлить те же отверстия через трафарет с шагом 1 мм
Такого я не говорил. Я сказал только то, что сказал и ничего более.
Сверлить конечно можно - никто ж не запрещает. Только вот устроит ли результат?
Сверлить конечно можно - никто ж не запрещает. Только вот устроит ли результат?
Правильно, не устроит. Вот тоже самое произойдет если вы в своем ОРКАДе просчитаете траекторию, сделаете
коррекцию погрешностей под свой станок, а выходной файл попробуете на другом станке, с другим шагом, отличным от вашего.
Коррекцию под конкретный шаг станка должна делать управляющая программа назовем ее "ОРКАМ", а не программа подготовки файлов, типа ОРКАДа.
Правильно, не устроит. Вот тоже самое произойдет если вы в своем ОРКАДе просчитаете траекторию, сделаете
коррекцию погрешностей под свой станок,
Я так понимаю, что вы OrCAD в глаза никогда не видели...
Траектория практически формируется ещё на этапе разводки, когда задают сетку и расставляют компоненты. Вне этой сетки траектории не будет. Надеюсь, понятно почему?
Что касается погрешностей под конкретный станок - там такой возможности нет, я этого никогда не делал и делать не собираюсь. Ибо нелепо. Единственное, что я делаю в оркадовском гербер тулзе - оптимизирую траекторию сверления.
Коррекцию под конкретный шаг станка должна делать управляющая программа назовем ее "ОРКАМ", а не программа подготовки файлов, типа ОРКАДа.
Можете сказать название такой программы? И какая фирма её выпускает?
Если вы про CAM процессор, то он в оркаде тоже имеется. OrCAD - это не просто разводчик. Это ПАКЕТ программ. У меня установлено 5 компонент из этого пакета. И это не полный пакет.
И чего вы так к бедному оркаду прицепились? Если я не говорил, что иногда (если в этом есть необходимость) после оркада загоняю файл в CAM350, то это не значит что я этого не делаю.
Вы здесь » самодельный станок с ЧПУ, отзывы duxe.ru » Схема контроллера, шаговые двигатели » Контроллер станка с ЧПУ на PIC с возможностью автономной работы