самодельный станок чпу (cnc)
а адрес зтого ХАЙВИНА у Вас есть???
pavel
Нет, Павел.
Их представителя в Москве я не нашел. Вернее есть они, но не официальные дистрибьюетры, что-ли, а типа перепродавцов. Не знаю как их правильно назвать.
Вот одни из них: www.mechatron.su/index.html
Токозадающие резисторы по этой схеме это R14 и R15, a R12C3 и R13C4 это фильтр. Расчет резистора на нужный ток есть в даташите. У меня отложилась в памяти цифра между 0,33 и 0,41ом для ДШИ, но это было давно, лет 5 назад, может и ошибаюсь.
R14 и R15 тоже коротил особо ни чего не менялось, может БП слабоват 200W один канал L297+8
Совсем разочаровался в связке L297+8
Читаю… Интересно. Год назад, сделал электронную линейку на базе инкриментального энкодера. Точность до 6 знаков после запятой(понимаем как электронную). Програмируется на любой энкодер и любой винт. Значение перемещения вычисляется как количество импульсов деленное на константу. Константа вычисляется как расчетная величина зависящая от параметров энкодера, передаточного количества с энкодера на винт, и шага винта, один раз во время калибровки. Проверял в работе при скорости вращение вала энкодера 100 об.мин.Итого 1000 имп. на оборот х 100 = 100 кГц работало без проблем. Если есть интерес могу помочь. Кстати голый шаговый без апаратного контроля ненадежное решение. На немецком оборудовании, которым сейчас я занимаюсь, есть смачные шаговые приводы (1000 шагов) с абсолютными энкодерами.Но их цена это их цена. Обратная сторона точности-скорость.
Читаю… Интересно. Год назад, сделал электронную линейку…
Молодца 😃, круто…, непонятно, только решили ведь что обратная связь ну уж точно не для HOBBY CNC.
Да уже устал копья ломать, даже для серъёзных промышленных приложений это редко используется.
При нормальном режиме работы ШД, количество импульсов на ШД пропорционально перемещению. При ненормальном режиме, проблемы будут даже при наличии обратной связи (ОС), кроме того, дешевле и эффективнее серво, чем ШД с ОС.
tvv,
Вы в какой области работаете?
Тем паче, что 100 об/мин даже для хобби маловато.
Работаю в немецкой машиностроительной фирме.
Речь идет о частоте счета импульсов от энкодера для микроконтролера. который к тому же делает и другие задачи (динамическая развертка на индикатор, деление на число с плавающей точкой). Получается если шаг резьбы 1мм и передаточное с вала винта на вал энкодера 1:1, допустимая скорость перемещения 100мм за секунду с точностью счета 1 тысячная. Если устраивает точность до сотки, делаем передаточное 10:1, и имеем скость перемещения 1000мм за секунду. Измерял точность механики червяка на новом оборудовании(полиграфия). Максимум видел 1-2 сотки. Часто они делают хитро. После перемещения винта, знаки после запятой для индикации, заменяются на заданные оператором, а не реальные от энкодера, так как остановить привод точно просто не реально. Скорость перемещения на буржуйском оборудовании тоже в пределах сотен мм. для частотного привода. После остановки тормозит-электро магнитной муфтой.
Обошлось по деньгам приблизительно 100 енотов.Самое дорогое белорусский энкодер-80 уе.
Пробую сейчас програмируемый привод. Оказывается интерфейс человек-машина запрограмировать тяжелее всего остального.
Второе нехватка времени.Чесно говоря не верю в ЧПУ на коленках, если это конечно не вопрос жизни. Много засад в механике и электрике тоже. Или этим должен заниматься коллектив.
Чесно говоря не верю в ЧПУ на коленках, если это конечно не вопрос жизни. Много засад в механике и электрике тоже. Или этим должен заниматься коллектив.
уважаемые гуру так можно отбить желание у начинающих в области чпу станков , а свой фрезерный станок я собрал не то что на “коленках”, я бы сказал бы на “ладонях” и обошелся он мне в каких нибудь 6-8 тыс рублей и пусть он выглядит игрушкой и это была всеголишь первая ступень к моей цели , тем не менее он уже способен выполнять работы по металлу ( пример бронза) с точностью примерно 0.05мм и размером 50на 50 мм и делает сложные рыльефы, что уже непложо для желающего , с низкими доходами, начать потихоньку свое дело, так что существует и такой путь и помогал ине в этом --форум с его участниками— это был мой единственный коллектив, и засады в механике и электрике не таки уж и страшные. все канечно зависит от задач которые будет выполнять станок.
tvv,
Уважаю немецкие машиностроительные фирмы, но имел ввиду не в какой фирме работаете, а чем фирма занимается, станками ЧПУ или например, прецизионными измерениями?
Может марки двигателей сообщите, и где такие системы применяются, сколько они стоят, может ссылочку на сайт дадите?
По поводу арифметики. Вы пишите:
“Проверял в работе при скорости вращение вала энкодера 100 об.мин.”
Далее:
“Получается если шаг резьбы 1мм и передаточное с вала винта на вал энкодера 1:1, допустимая скорость перемещения 100мм за секунду”
Чё то не клеится, при шаге 1мм на оборот, при скорости 100 оборотов в минуту, получим 100 мм в минуту, то есть 1,66 мм в секунду, никак не 100.
Черепаха раза в пять быстрее идёт.
Вообще что за ШД, сколько фаз, момент на валу, максимальная частота отработки импульсов полного шага, номинальная частота приемственности?
И что за винт, 1 мм/об?
“Проверял в работе при скорости вращение вала энкодера 100 об.мин. Итого 1000 имп. на оборот х 100 = 100 кГц работало без проблем.”
Что то у вас с арифметикой не в порядке, надо ещё на 60 поделить. Получите 1666 Гц.
Частота вращения вала двигателя 100 об/мин не годится даже для хоббийного станка, частота вращения на среднем станочке порядка 600 об/мин, если собираетесь с энкодера 1000 импульсов на оборот снимать, получите частоту 10 КГц.
“имеем скость перемещения 1000мм за секунду.”
60 метров в минуту.
На шаговике.
Круто. 😃
Так сколько же эта система стОит, где она используется и какие всё же у неё правильно посчитанные реальные характеристики?
Саша
Тёзка - пральна говоришь.
Нам главное не мешать и пугать, а помогать и советовать 😃 😃 😃
Cаша, MOLDMAKER,
Правильно. Ещё задача предостеречь от ненужных трат времени и сил.
Обратная связь на хоббийном станке с шаговыми двигателями нафиг не нужна.
сори!!! Проверял не на двигателе. Это теоретическая величина ограниченная скоростью счета для энкодера. А так в общем, в жизни не хватает единомышлеников. Если у Вас есть возможность делать печатные платы и железо, готов возобновить работу на общее благо. Есть идеи, но квартира (ее размеры), не позволяет развернуться как хочеться.
Фирма делает экструдеры, флексопечатные машины и другое.
Двигатели Siemens, Berger, Arcopos, Aradec. Plc- B&R,
step5,7, Provit.
www.wuh-lengerich.de/index_ru.html
Длинные темы лучше по тел.1198181
Помогите разобраться с шаговиком
Попался зверь (ДШИ 200-1-2) о восьми проводах, все одного цвета, вырваны из чего-то с мясом, как понять где какая обмотка???
я так понял разобрать надо??? А че там внутри???
Помогите разобраться с шаговиком
Попался зверь (ДШИ 200-1-2) о восьми проводах, все одного цвета, вырваны из чего-то с мясом, как понять где какая обмотка???
я так понял разобрать надо??? А че там внутри???
у меня с ДШИ 200-1-1 были такие же проблемы подсоединен как на рис 4, сначало я прозвонил прибором 8 выходов и разбил их по парам , каждой паре соответсвует обмотка , дальше необходим проверенный контроллер вот подключая к нему двигатель как показано на рис 4 пробуеш разные варианты- сначало 1 контур , при правельном подключении хотя бы одного контура( на сколько я помню) вал дши руками трудно провернуть. потом 2=ой контур . таким образом на 3 двигателя у меня уходило не более 1 часа—другой способ я не знаю.
“я так понял разобрать надо??? А че там внутри???”
Не разбирайте, он точно собран, можете испортить.
Кто писал прошивку для 3-х осевого контроллера на pic16f877 ?
Я пытаюсь но что-то с немогу сделать следующий алгоритм:
При поступлении на step вход МК сигнала происходит проверка наличия сигнала Dir, в соответствии дальше переключение обмоток в нужном направлении, и наконец загвоздка состоит в том чтобы следующий шаг происходил только при следуюшем поступлении сигнала. Могу сказать что задержка по временя не годится !
А вот исходник на PicBasic
device 16f877
declare xtal 20
Config HS_OSC, WDT_OFF, PWRTE_ON, BODEN_ON, LVP_OFF, WRTE_ON, CP_OFF, DEBUG_OFF
start:
’ set variables:
dim stepxA as byte
dim stepxB as byte
dim stepxC as byte
dim stepxD as byte
dim stepyA as byte
dim stepyB as byte
dim stepyC as byte
dim stepyD as byte
dim stepzA as byte
dim stepzB as byte
dim stepzC as byte
dim stepzD as byte
dim StepXArrayA[8] as Byte
dim StepXArrayB[8] as Byte
dim StepXArrayC[8] as Byte
dim StepXArrayD[8] as Byte
dim StepYArrayA[8] as Byte
dim StepYArrayB[8] as Byte
dim StepYArrayC[8] as Byte
dim StepYArrayD[8] as Byte
dim StepZArrayA[8] as Byte
dim StepZArrayB[8] as Byte
dim StepZArrayC[8] as Byte
dim StepZArrayD[8] as Byte
TRISD = %00000000
TRISC = %00000000
TRISE = %11000000
asm
bcf ADCON0,ADON
movlw 0x07 ;b’0000 0111’
bsf STATUS,RP0
movwf ADCON1
movlw 0x3F ;b’0011 1111’
movwf TRISA
clrf TRISE
endasm
input porta.0 ;dirX
input porta.1 ;stepX
input porta.2 ;dirY
input porta.3 ;stepY
input porte.0 ;dirZ
input porte.1 ;stepZ
StepXArrayA[0] = 0: StepXArrayB[0] = 0: StepXArrayC[0] = 0: StepXArrayD[0] = 1
StepXArrayA[1] = 0: StepXArrayB[1] = 0: StepXArrayC[1] = 1: StepXArrayD[1] = 1
StepXArrayA[2] = 0: StepXArrayB[2] = 0: StepXArrayC[2] = 1: StepXArrayD[2] = 0
StepXArrayA[3] = 0: StepXArrayB[3] = 1: StepXArrayC[3] = 1: StepXArrayD[3] = 0
StepXArrayA[4] = 0: StepXArrayB[4] = 1: StepXArrayC[4] = 0: StepXArrayD[4] = 0
StepXArrayA[5] = 1: StepXArrayB[5] = 1: StepXArrayC[5] = 0: StepXArrayD[5] = 0
StepXArrayA[6] = 1: StepXArrayB[6] = 0: StepXArrayC[6] = 0: StepXArrayD[6] = 0
StepXArrayA[7] = 1: StepXArrayB[7] = 0: StepXArrayC[7] = 0: StepXArrayD[7] = 1
StepYArrayA[0] = 0: StepYArrayB[0] = 0: StepYArrayC[0] = 0: StepYArrayD[0] = 1
StepYArrayA[1] = 0: StepYArrayB[1] = 0: StepYArrayC[1] = 1: StepYArrayD[1] = 1
StepYArrayA[2] = 0: StepYArrayB[2] = 0: StepYArrayC[2] = 1: StepYArrayD[2] = 0
StepYArrayA[3] = 0: StepYArrayB[3] = 1: StepYArrayC[3] = 1: StepYArrayD[3] = 0
StepYArrayA[4] = 0: StepYArrayB[4] = 1: StepYArrayC[4] = 0: StepYArrayD[4] = 0
StepYArrayA[5] = 1: StepYArrayB[5] = 1: StepYArrayC[5] = 0: StepYArrayD[5] = 0
StepYArrayA[6] = 1: StepYArrayB[6] = 0: StepYArrayC[6] = 0: StepYArrayD[6] = 0
StepYArrayA[7] = 1: StepYArrayB[7] = 0: StepYArrayC[7] = 0: StepYArrayD[7] = 1
StepZArrayA[0] = 0: StepZArrayB[0] = 0: StepZArrayC[0] = 0: StepZArrayD[0] = 1
StepZArrayA[1] = 0: StepZArrayB[1] = 0: StepZArrayC[1] = 1: StepZArrayD[1] = 1
StepZArrayA[2] = 0: StepZArrayB[2] = 0: StepZArrayC[2] = 1: StepZArrayD[2] = 0
StepZArrayA[3] = 0: StepZArrayB[3] = 1: StepZArrayC[3] = 1: StepZArrayD[3] = 0
StepZArrayA[4] = 0: StepZArrayB[4] = 1: StepZArrayC[4] = 0: StepZArrayD[4] = 0
StepZArrayA[5] = 1: StepZArrayB[5] = 1: StepZArrayC[5] = 0: StepZArrayD[5] = 0
StepZArrayA[6] = 1: StepZArrayB[6] = 0: StepZArrayC[6] = 0: StepZArrayD[6] = 0
StepZArrayA[7] = 1: StepZArrayB[7] = 0: StepZArrayC[7] = 0: StepZArrayD[7] = 1
main:
if porta.1=1 then
if porta.0 = 1 then
stepxA = stepxA + 1
stepxB = stepxB + 1
stepxC = stepxC + 1
stepxD = stepxD + 1
else
stepxA = stepxA - 1
stepxB = stepxB - 1
stepxC = stepxC - 1
stepxD = stepxD - 1
endif
PORTD.4 = StepXArrayA[stepxA]
PORTD.5 = StepXArrayB[stepxB]
PORTD.6 = StepXArrayC[stepxC]
PORTD.7 = StepXArrayD[stepxD]
endif
if porta.3=1 then
if porta.2 = 1 then
stepyA = stepyA + 1
stepyB = stepyB + 1
stepyC = stepyC + 1
stepyD = stepyD + 1
else
stepyA = stepyA - 1
stepyB = stepyB - 1
stepyC = stepyC - 1
stepyD = stepyD - 1
endif
PORTD.0 = StepYArrayA[stepyA]
PORTD.1 = StepYArrayB[stepyB]
PORTD.2 = StepYArrayC[stepyC]
PORTD.3 = StepYArrayD[stepyD]
endif
if porte.1=1 then
if porte.0 = 1 then
stepzA = stepzA + 1
stepzB = stepzB + 1
stepzC = stepzC + 1
stepzD = stepzD + 1
else
stepzA = stepzA - 1
stepzB = stepzB - 1
stepzC = stepzC - 1
stepzD = stepzD - 1
endif
PORTC.2 = StepZArrayA[stepzA]
PORTC.3 = StepZArrayB[stepzB]
PORTC.4 = StepZArrayC[stepzC]
PORTC.5 = StepZArrayD[stepzD]
delayms 5
endif
GoTo main
Кто писал прошивку для 3-х осевого контроллера на pic16f877 ?
Я пытаюсь но что-то с немогу сделать следующий алгоритм:
При поступлении на step вход МК сигнала происходит проверка наличия сигнала Dir, в соответствии дальше переключение обмоток в нужном направлении, и наконец загвоздка состоит в том чтобы следующий шаг происходил только при следуюшем поступлении сигнала. Могу сказать что задержка по временя не годится !
Решения два.
Или поставить D-триггер и по обработке импульса его сбрасывать, или ввести в программу флажок отработки шага, устанавличать его по обработке и сбрасывать по приходу 0. Если я правильно понял, что у вас простой опрос портов, а не прерывания.
😃 Спасибо ! А как приблизительно выглядит алгоритм реализация прерываний в pic для нашей цели ?
😃 Спасибо ! А как приблизительно выглядит алгоритм реализация прерываний в pic для нашей цели ?
Я не знаком с пиками, но глобально шаг по положительному фронту вызывает прерывание, где оно и обрабатывается 😃. Прерывание получается очень коротким, буквально несколько команд.
Хочу сделать станок, для работы по трем осям, по механике вопросов нет.
Есть двигатели ДШИ 200-1-1 но нет никаких данных на них.
Контроллер управления (между компом и контроллером двигателей или двигателями) предложите схему, если необходимо с прошивками.
И софт, для работы с контроллером(предложенным).
Для создания станка нужно быть спецом в механике и электронике… Лучше самому все делать и разбираться со своими ошибками…
Я делаю уже второй по счету ЧПУ и каждый раз нахожу все новые и более лучшие решения.
Вообще лучше чем обвесить все микроконтроллерами и обьеденить их интерфейсом rs485 я не придумал. Очень много возможностей открывается… Станок дробится на мелкие части - для несерийных моделей это наилучший вариант - т.е. есть мотор - контроллер ему отдельный есть датчик -тоже контроллер шпинделю - тоже и так далее… А самое главное что подключив на интерфейс комп - получаешь доступ ко всем устройствам
Кто писал прошивку для 3-х осевого контроллера на pic16f877 ?
Я пытаюсь но что-то с немогу сделать следующий алгоритм:
При поступлении на step вход МК сигнала происходит проверка наличия сигнала Dir, в соответствии дальше переключение обмоток в нужном направлении, и наконец загвоздка состоит в том чтобы следующий шаг происходил только при следуюшем поступлении сигнала. Могу сказать что задержка по временя не годится !
А вот исходник на PicBasicdevice 16f877
declare xtal 20
Config HS_OSC, WDT_OFF, PWRTE_ON, BODEN_ON, LVP_OFF, WRTE_ON, CP_OFF, DEBUG_OFFstart:
’ set variables:
dim stepxA as byte
dim stepxB as byte
dim stepxC as byte
dim stepxD as bytedim stepyA as byte
dim stepyB as byte
dim stepyC as byte
dim stepyD as bytedim stepzA as byte
dim stepzB as byte
dim stepzC as byte
dim stepzD as bytedim StepXArrayA[8] as Byte
dim StepXArrayB[8] as Byte
dim StepXArrayC[8] as Byte
dim StepXArrayD[8] as Bytedim StepYArrayA[8] as Byte
dim StepYArrayB[8] as Byte
dim StepYArrayC[8] as Byte
dim StepYArrayD[8] as Bytedim StepZArrayA[8] as Byte
dim StepZArrayB[8] as Byte
dim StepZArrayC[8] as Byte
dim StepZArrayD[8] as ByteTRISD = %00000000
TRISC = %00000000
TRISE = %11000000asm
bcf ADCON0,ADON
movlw 0x07 ;b’0000 0111’
bsf STATUS,RP0
movwf ADCON1
movlw 0x3F ;b’0011 1111’
movwf TRISA
clrf TRISE
endasminput porta.0 ;dirX
input porta.1 ;stepX
input porta.2 ;dirY
input porta.3 ;stepY
input porte.0 ;dirZ
input porte.1 ;stepZStepXArrayA[0] = 0: StepXArrayB[0] = 0: StepXArrayC[0] = 0: StepXArrayD[0] = 1
StepXArrayA[1] = 0: StepXArrayB[1] = 0: StepXArrayC[1] = 1: StepXArrayD[1] = 1
StepXArrayA[2] = 0: StepXArrayB[2] = 0: StepXArrayC[2] = 1: StepXArrayD[2] = 0
StepXArrayA[3] = 0: StepXArrayB[3] = 1: StepXArrayC[3] = 1: StepXArrayD[3] = 0
StepXArrayA[4] = 0: StepXArrayB[4] = 1: StepXArrayC[4] = 0: StepXArrayD[4] = 0
StepXArrayA[5] = 1: StepXArrayB[5] = 1: StepXArrayC[5] = 0: StepXArrayD[5] = 0
StepXArrayA[6] = 1: StepXArrayB[6] = 0: StepXArrayC[6] = 0: StepXArrayD[6] = 0
StepXArrayA[7] = 1: StepXArrayB[7] = 0: StepXArrayC[7] = 0: StepXArrayD[7] = 1StepYArrayA[0] = 0: StepYArrayB[0] = 0: StepYArrayC[0] = 0: StepYArrayD[0] = 1
StepYArrayA[1] = 0: StepYArrayB[1] = 0: StepYArrayC[1] = 1: StepYArrayD[1] = 1
StepYArrayA[2] = 0: StepYArrayB[2] = 0: StepYArrayC[2] = 1: StepYArrayD[2] = 0
StepYArrayA[3] = 0: StepYArrayB[3] = 1: StepYArrayC[3] = 1: StepYArrayD[3] = 0
StepYArrayA[4] = 0: StepYArrayB[4] = 1: StepYArrayC[4] = 0: StepYArrayD[4] = 0
StepYArrayA[5] = 1: StepYArrayB[5] = 1: StepYArrayC[5] = 0: StepYArrayD[5] = 0
StepYArrayA[6] = 1: StepYArrayB[6] = 0: StepYArrayC[6] = 0: StepYArrayD[6] = 0
StepYArrayA[7] = 1: StepYArrayB[7] = 0: StepYArrayC[7] = 0: StepYArrayD[7] = 1StepZArrayA[0] = 0: StepZArrayB[0] = 0: StepZArrayC[0] = 0: StepZArrayD[0] = 1
StepZArrayA[1] = 0: StepZArrayB[1] = 0: StepZArrayC[1] = 1: StepZArrayD[1] = 1
StepZArrayA[2] = 0: StepZArrayB[2] = 0: StepZArrayC[2] = 1: StepZArrayD[2] = 0
StepZArrayA[3] = 0: StepZArrayB[3] = 1: StepZArrayC[3] = 1: StepZArrayD[3] = 0
StepZArrayA[4] = 0: StepZArrayB[4] = 1: StepZArrayC[4] = 0: StepZArrayD[4] = 0
StepZArrayA[5] = 1: StepZArrayB[5] = 1: StepZArrayC[5] = 0: StepZArrayD[5] = 0
StepZArrayA[6] = 1: StepZArrayB[6] = 0: StepZArrayC[6] = 0: StepZArrayD[6] = 0
StepZArrayA[7] = 1: StepZArrayB[7] = 0: StepZArrayC[7] = 0: StepZArrayD[7] = 1main:
if porta.1=1 thenif porta.0 = 1 then
stepxA = stepxA + 1
stepxB = stepxB + 1
stepxC = stepxC + 1
stepxD = stepxD + 1
else
stepxA = stepxA - 1
stepxB = stepxB - 1
stepxC = stepxC - 1
stepxD = stepxD - 1
endifPORTD.4 = StepXArrayA[stepxA]
PORTD.5 = StepXArrayB[stepxB]
PORTD.6 = StepXArrayC[stepxC]
PORTD.7 = StepXArrayD[stepxD]
endif
if porta.3=1 thenif porta.2 = 1 then
stepyA = stepyA + 1
stepyB = stepyB + 1
stepyC = stepyC + 1
stepyD = stepyD + 1
else
stepyA = stepyA - 1
stepyB = stepyB - 1
stepyC = stepyC - 1
stepyD = stepyD - 1
endifPORTD.0 = StepYArrayA[stepyA]
PORTD.1 = StepYArrayB[stepyB]
PORTD.2 = StepYArrayC[stepyC]
PORTD.3 = StepYArrayD[stepyD]
endif
if porte.1=1 thenif porte.0 = 1 then
stepzA = stepzA + 1
stepzB = stepzB + 1
stepzC = stepzC + 1
stepzD = stepzD + 1
else
stepzA = stepzA - 1
stepzB = stepzB - 1
stepzC = stepzC - 1
stepzD = stepzD - 1
endifPORTC.2 = StepZArrayA[stepzA]
PORTC.3 = StepZArrayB[stepzB]
PORTC.4 = StepZArrayC[stepzC]
PORTC.5 = StepZArrayD[stepzD]
delayms 5
endifGoTo main
я работаю с Атмелами раньше работал с пиками считаю последние помехоустойчивым отстоем…
т.е. пики хороши там где есть сильные помехи и не более того, а вот атмелы менее устойчивы но навороченее…
ладно теперь по теме:
всякие приходящие сигналы необходимо загонять в контроллер по прерываниям - иначе можно вообще потерять их. важно это делать по фронту. выходные сигналлы с жесткими временными х-ками нужно привязывать к таймерам…
тоесть хочу сказать что ваша прога вообще никуда не годится - разве что побаловаться… однако если сильно захотеть при некоторых извратах это можно сделать и без таймеров и без прерываний…
но получится ерунда… в виду низких вычислительных х-к микроконтроллеров…
Уважаемые господа.Я понимаю,что проблема отладки микроконтроллера чрезвычано,просто жизненно необходима(хотя есть люди,прекрасно работающие без него вообще).Только зачем загружать форум всемирным показом ошибочных мест,ведь не у всех высокоскоростные сети,есть к сожалению люди,у которых модем.Вы просто захламляете,убиваете форум.
Ради бога,пишите в личку.