http://emc2arduino.wordpress.com/tag/hal2arduino/
Сделал на ней управление шпинделем от РУ модели.
От EMC2 используется сигналы spindle-on и spindle-cmd.
spindle-on включает выключает шпиндель, а spindle-cmd задает скорость - на Arduino я знаю требуемые обороты, и перевожу сигнал в ШИМ для управления шпинделем.
Вообще поддерживает несколько Arduino, например одна будет в пульте, а вторая в станке включать/выключать всевозможную периферию и получать от неё данные.
Есть модуль чтения данных с концевых датчиков.
Есть модуль для вывода данных на LCD дисплей - может по свободе попробую сделать пульт с выводом координат и с энкодерами для регулировки подач и задания координат.
Есть даже модуль управления ШД, как я понял от EMC он получает координату в мм или дюймах, а Arduino сама рассчитывает скорости и выдает импульсы драйверам, но я его не испытывал, может под 3Д принтеры он и пойдет.
ОСТОРОЖНО: в коде есть ошибки!
В этом файле: https://github.com/dewy721/EMC-2-Arduin ... ino-0.4.py
В месте инициализации пинов не определена переменная pinLabel
Код: Выделить всё
if codesAccepted.find("107") > -1:
if simulation == True:
print "creating: motion_analog-out-02"
else:
print "makePins: creating: %r" % pinLabel
c.newpin("motion_analog-out-02",hal.HAL_FLOAT,hal.HAL_IN)
Код: Выделить всё
if codesAccepted.find("133") > -1:
command=133
hostCheck=c['motion_spindle-on']
if hostCheck != hostCheckOld[command]:
hostCheckOld[command]=hostCheck
checkSum=hostCheck+command
comString=str(command) + " 0 " + str(hostCheck) + " " + str(int(checkSum)) + ";"
masterTx.put(comString)
Код: Выделить всё
if codesAccepted.find("133") > -1:
command=133
hostCheck=c['motion_spindle-on']
if hostCheck != hostCheckOld[command]:
hostCheckOld[command]=hostCheck
checkSum=hostCheck+command
if hostCheck:
masterTx.put("133 0 1 134;")
else
masterTx.put("133 0 0 133;")