Activity
Господа гуру, есть вопрос.
В инете была нарыта следующая схема драйверов униполярных ШД для трехкоординатного CNC. Кто-нибудь что-нибудь может сказать про эту схему? Подкупает простота схемотехники. Как видно, должен быть еще какой-то или специальный софт/драйвер для этогй схемы? Или CNC-шный софт может работать с такой схемой?
Спасибо.
Сразу видно что шняга эта цепляется на паралельный порт. Пригодна для использования шаговиков низкой мощности.
Главная и принципиальная ошибка - отсутсвие гальванической развязки компа от внешнего мира - может очень плохо закончится.
STAER
Как то мне на рынке попадался движок ,как говорил продавец он гдето в самолете стоял мощя 350вт при 24 вольта 10000об работает буквально без шума !
У меня есть платка на L297+IRFZ34N.
Хотелось для самообразования собрать на Pic-е, вот я и решил взвалить на себя сей тяжелый груз заключающийся в написании собственной прошивки с алгоритмом удержания ШД (импульсами как у hobbycnc) и Теперь я понял что без прерываний не обойтись ! Так что буду искать инфу как реализовать это все ! А при положительном результате готов скинуть проект на благо всем любителям и профессионалам ! А У ВАС НЕБЫЛО ТАКОЙ ЗАТЕИ КАК СДЕЛАТЬ СООБЩЯ ДЕШЕВЫЙ КОНТРОЛЛЕР НЕ УСТУПАЮЩИЙ ПО ФУНКЦИЯМ КОММЕРЧИСКИМ ??? Ведь все реально ! Pic-и же не Боги делали !
По поводу двигателя- это скорее всего про дп 25 он говорил… но мощность там ват 10…
Дальше по тексту:
Мой настоятельный совет - брось ты эти пики и переходи на Атмел - програматор простой и софта до утра!
Удержание импульсами - это хорошо… Как показывает практика вполне достаточно для удержания половины рабочего напряжения.
У нас есть опытное производство печатных плат … если что - можно платку слепить и народу за недорого продать - важно знать о каком кол - ве идет речь чтобы вещь создать и цену нормальную сформировать…
Вообще я собираюсь электронику своего второго ЧПУ переделать - все посадить на интерфейс rs485 , для каждого мотора поставить свой контроллер атмел типа 2313 и ведущий контроллер типа mega 128 с большим количаством внешней флеш памяти, организовать работу от компа и от ведущего контроллера.
А вообще конечно интересен опыт самостоятельного изготовления шпинделя - все эти мелкие шлифмашины чистая хрень…
Интересует опыт создания шпинделя с очень малым осевым биением.
Ну и может кто делал самостоятельо индуктивные измерительные линейки?
😃 Я Всем очень благодарен ! Но перерыв немало страниц интернета так и ненашел какой-нибудь кусочек кода связанный с прерываниями по приходу сигнала в порт. 😃
В интернете должны быть примеры… к сожалению пиками занимался лет 10 назад - помню немногое но принцип как и всех контроллеров. да еще там переключение страниц памяти есть - это идиотское решение есть только в пик контроллерах.
Ладно смысл такой:
-в инициализирующей части описывается нужное прерывание
(по какому фронту и т д…)
-указываектся адрес перехода после его возникновения
-в самой проге необходимо управлять флагами прерывания(разрешать/запрещать)
-ну и необходимо писать саму подпрограмму обработки…
Вобщем все это обязательно есть в фирменных описаниях. Примеры тоже должны быть…
Атмел рулит - он и проще для понимания и софта для него поболее и еще он дешевле…
После изготовления второго сверлильного станка понял что применяя тяжелые шпиндели типа ручных шлифмашин скорость сверловки не увеличить - нужно где-то оторвать легкий скоросной шпиндель без осевых биений…
может кто знает где его взять?
а стеклотекстолит сверлят только победитом…
Хочу сделать станок, для работы по трем осям, по механике вопросов нет.
Есть двигатели ДШИ 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
я работаю с Атмелами раньше работал с пиками считаю последние помехоустойчивым отстоем…
т.е. пики хороши там где есть сильные помехи и не более того, а вот атмелы менее устойчивы но навороченее…
ладно теперь по теме:
всякие приходящие сигналы необходимо загонять в контроллер по прерываниям - иначе можно вообще потерять их. важно это делать по фронту. выходные сигналлы с жесткими временными х-ками нужно привязывать к таймерам…
тоесть хочу сказать что ваша прога вообще никуда не годится - разве что побаловаться… однако если сильно захотеть при некоторых извратах это можно сделать и без таймеров и без прерываний…
но получится ерунда… в виду низких вычислительных х-к микроконтроллеров…
В продолжение темы rcopen.com/forum/f111/topic19608
Собственно, какие вообще варианты существуют, кто на чем делает, какие проблемы? Прошу прощение, что не перечислил подробно все типы микросхем, которые в предыдущей теме упоминались.
У меня еще есть пара дилетантских вопросов:
Часто упоминают всякие полу-, четверть-шаговые режимы и т.д. Круто конечно же. А для хоббийных дел надо? Или ставим нормальную недорогую мелкосхему и имеем все эти прелести на халяву?
У кого из хоббистов на станке есть обратная связь (счетчики импульсов), чтобы знать действительно ли движок отработал то что ему послали? Или для наших простецких задачь это все лишь нездоровые усложнения?
нормальный контроллер управления ШД имеет процессор силовые ключи и два напряжения - удержания и рабочее как правило удержание - половина рабочего. если станок строится как игрушка то обратная связь не нужна Обеспечение полушагового режима не проблема… а вот с четвертьшаговым надо поработать