Плазменная резка + mach3
duritskiy - че молчим, увлеклись сборкой датчика? 😃 3 дня отправил как и 3 дня не слуху не духу
Вот запустили станок, прадвка емкостной высотомер пока убрал…
3-я ось соплит немного, чуть антенну не разрезал 😁
Вот видео, как говорится:
Vodka - nein!
Mädchen - nein!
Die Arbeit, die Arbeit und die Disziplin! 😁 😁 😁
Вот снежинка - сталь 3мм
Режет сносно, если учесть что сопла убитые поставил и датчики юстировал на скорую руку…
еще эти рывки, для сего дела надо использовать сервоприводы…
шаговые в резонансе сидят на нужной мне скорости и с моей механикой, отсюда и рывки, и рез с зазубринками, ну то не существенно 😃
а куда отправил? на почту? я пока ничего не получал 😦 может сорвалось?
Debian, отправь пожалуста ещё разок.
duritskiy@mail.ru
заранее спасибо.
Знаете други мои: Почитал как-то сей форум попрыгал по ссылкам и уговорил босса купить PLASMACAM. Тот самй американский станочек, станок получил и заодно с ним CarveWright. За все про все отдали 16000 зеленых рублей и при все при том, что америкосы никак не хотели с заграницей работать - а тем более с рашами 😃
Но нашли наши Раши в Америке, купили и переправили.
На следующей неделе буду собирать - кому интересно могу фотки кинуть в процессе так сказать сборки и наладки.
конечно интересно. чем больше тем лучше
А может кто нибудь пользовался вот этой приблудой
от Артсофта: www.machsupport.com/plugins/THC.m3p
Насколько я понял, то достаточно подключить через делитель
к звуковой карте напряжение с плазмы, настроить пределы напряжений
и не надо собирать никаких приставок. У кого какое мнение по этому поводу?
Debian, со схемкой поможешь?
буду очень благодарен!!!
А может кто нибудь пользовался вот этой приблудой
от Артсофта: www.machsupport.com/plugins/THC.m3p
Насколько я понял, то достаточно подключить через делитель
к звуковой карте напряжение с плазмы, настроить пределы напряжений
и не надо собирать никаких приставок. У кого какое мнение по этому поводу?
я все не сфотогграфирубю осциллограмму выбросов с делителя)))
там при первой же пробивке из системника будет слышен такой негромкий “ЧПОК” =)
to duritskiy
я на работе, все никак нет времени набросать, постораюсь в ближайшее время помочь
Доброго времени суток!
ДДолго отсутствовал. Дело гляжу потихоньку идёт.
Почти закончил контроллер высоты для плазмы. Как и писал ранее контроллер PIC18F25J10. Напряжение с делителя на 10битный АЦП. Цифровой фильтр. ПИД регулирование скорости движения привода по высоте (шаговик через контроллер LEADSHINE). Датчики пределов движения каретки плюс плавающее крепление резака. Плазма 150 А китайская. Настраиваю : высоту поджига, высоту прокола, высоту резки, время прокола, время задержки подачи сигнала на КОМП ARC_OK, задержка отката после выключения торча, высота отката после отключения торча и переходом к новому месту прокола, напряжение дуги от 50 до 200 вольт, размер шага двигателя привода ( до 1 микрона), скорости позиционирования и движения в ручном режиме. Качество резки довольно хорошее, и резка стала намного проще и быстрее.
Самые большие грабли - это помехи 😦. Пока не сделал полную гальваническую развязку всех датчиков контроллер глючил как только мог. С плазмы беру отрицательное напряжение на делитель до осцилятора. Плюс прямо с заземления стола, к нему же экран.
Чно нужно сделать: на прямых и острых углах реза невооружённым глазом видно, что резак немного “ныряет” вниз. Тоже самое при резе отверстий малых диаметров и в конце реза детали, когда отверстие расширяется. Происходит довольно резкое повышение напряжения дуги и контроллер естественно пытается его отработать. В случае с отверстиями - резка вообще идёт прямо в отверстии 😦. и оно получается сами понимаете…
Вижу два путя выхода: давать в контроллер команду с компа на отключение контроля напряжения во время резки дырок и острыхо углов детали (требуется редактирование Г-кодов). Или придумать хитрый алгоритм обнаружения этих ситуаций и отключение слежения за напряжением дуги (хотя я уже пытался отслеживать быстрые изменения напряжения, но это приводит к замедлению скорости отработки по высоте, особенно на перепадах высоты металла в 40- 50 миллиметров.)
А схемку и исходники можно?
Вроде схемку выкладывал ранее в теме.
Программу же ещё следует отрабатывать (устранение провалов резака на отверстиях). Да и в конечном устройстве уже будет немножко другое управление и индикация (механический энкодер и дисплей 2х20). На фото тестовая версия для отработки алгоритма.
shad71, а как у тебя дела обстоят с шумом у на входе в АЦП? цифровой фильтр представляет собой обычное усреднение? на сколько единиц шумит АЦП и какая примерно частота после усреднения?
Уважаемый Debian, я понимаю что Вы хотите назвать "негромкий “ЧПОК” , меня просто не правильно поняли. .естественно в момент поджига дуги там будет пару Кв. и контроль высоты совсем не нужен до момента пока дуга не начнёт рез.(не прожиг а именно рез). Поэтому я контролирую ток простым герконовым реле. Как включилось так значит пора сделать маленькую паузу и потом начинаем отслеживать напряжение. А случайные выбросы напряжения можно ограничить стабилитроном и ещё поставить емкость для сглаживания возможных пульсаций. Или наконец подумать о гальванической развязке плазмареза от компа. Вот почему и спрашиваю может кто уже пользавал этот плагин.
Потому что делать что-то сложное для контроля высоты факела не вижу смысла. В Маче это и так неплохо организовано программно. Сейчас работаю Mach+SheetCam и весьма доволен. Плазма итальянская Эргус только резак пока подвешен на направляющих. Вот и хочу сделать THC малой кровью, а следовательно надёжный.
Как я говорил АЦП 10 разрядный. Один бит соответствует 0.25 вольтам, итого для 250 вольт 0х3Е8. Период работы ПИДа 4 миллисекунды по таймеру. После измерения результат загоняю в фильтр, работающий по принципу “скользящее среднее” с 2 в степени n (какое нужно усреднение и время реакции системы). Плюс сигнал после делителя фильтруется дросселями и кондёрами на землю и далее электролит на 0.47 микрофарад. При первом включении произвожу калибровку АЦП (встроенная функция). Измеряемое напряжение (вывожу во время реза на дисплей) прыгает в диапазоне 0.5 - 1.5 вольт на ровном листе. Как я говорил, основная трабла с резом углов более 45 градусов и маленьких отверстий. В плагине для Мача есть отключение контроля в этих ситуациях, но как-бы это переделать в отдельный плагин, и просто выдавать в порт команду на отключение контроля? Есть у кого опыт работы с плагинами Мача??
Это теоретически можно организовать в постпроцессоре SheetCam`а. Там есть “entitylength” - length of the next cut path. Если значение меньше чем допустим 20мм, то отключение THC
Shad71
Разрядник спасет мир 😃)
а оптопара то ащще великое изобретение 😉
незнаю как вам а мне лично уже свербит этот Math3 …
вот идет осень - зима …
можно ваять свое чтобы работало с железом своим же и было все тесно завязано между собой 😃
Надо проэкт всетаки закончить с интерполятором…
И сделать его коммерческим, но с доступной ценой 😈
ПС Shad71 подкинте доку на дисплей, как вы им управляете, это от 3310?
незнаете где можно оторвать штук пару таких, чтобы контакты были приклеены к дисплею, а не эта убогая токопроводящая резинка…
да, программа очень навороченная, но на редкость глюкавая!
Кстати очень интересная микрушка AD7746 - для измерения ёмкостей порядка 0…8пФ, стоит примерно 300р, имеет 2 канала, выход через I2C.
Сам процесс измерения уже отладил, но на станок ещё не ставил.
а не сгорит?
попробуйте, нам расскажите
и еше вопрос всем
кто работал с интикаторами Tic149 Ampire упр. контроллер PCF5832
кстати игрушка дешевая и удобная… я себе 3 штуки сегодня заказал 😃
только незнаю как х укрощать… там I2C шина…
будем смотреть
Доброго времени суток!
Не могу загрузить даташиту на контроллер pcd8544. Управляется по SPI.
Вот код на Сях с поддержкой русского языка.
Покупаю по 11 гривен в сети сотовой связи MOBILIZATION. Контакты прямо на стекле, только паяй.
#define nok_sclk RB7 // nokia lcd sclk
#define nok_sda RB6 // nokia lcd sda
#define nok_dc RB5 // nokia lcd d/!c
#define nok_cs RA2 // nokia lcd !cs
#define nok_res RA1 // nokia lcd !res
#define DIM(a) (sizeof(a) / sizeof(a[0])) //определяем размер массива
//***********************************************************************************
const char table[820] = { 0x00,0x00,0x00,0x00,0x00, // 20 space ASCII table for NOKIA LCD: 96 rows * 5 bytes= 480 bytes
0x00,0x00,0x5f,0x00,0x00, // 21 ! Note that this is the same set of codes for character you
0x00,0x07,0x00,0x07,0x00, // 22 " would find on a HD44780 based character LCD. 😃
0x14,0x7f,0x14,0x7f,0x14, // 23 # Also, given the size of the LCD (84 pixels by 48 pixels),
0x24,0x2a,0x7f,0x2a,0x12, // 24 $ the maximum number of characters per row is only 14. 😃
0x23,0x13,0x08,0x64,0x62, // 25 %
0x36,0x49,0x55,0x22,0x50, // 26 &
0x00,0x00,0x07,0x00,0x00, // 27 ’
0x00,0x1c,0x22,0x41,0x00, // 28 (
0x00,0x41,0x22,0x1c,0x00, // 29 )
0x14,0x08,0x3e,0x08,0x14, // 2a *
0x08,0x08,0x3e,0x08,0x08, // 2b +
0x00,0x50,0x30,0x00,0x00, // 2c ,
0x08,0x08,0x08,0x08,0x08, // 2d -
0x00,0x60,0x60,0x00,0x00, // 2e .
0x20,0x10,0x08,0x04,0x02, // 2f /
0x3e,0x51,0x49,0x45,0x3e, // 30 0
0x00,0x42,0x7f,0x40,0x00, // 31 1
0x42,0x61,0x51,0x49,0x46, // 32 2
0x21,0x41,0x45,0x4b,0x31, // 33 3
0x18,0x14,0x12,0x7f,0x10, // 34 4
0x27,0x45,0x45,0x45,0x39, // 35 5
0x3c,0x4a,0x49,0x49,0x30, // 36 6
0x01,0x71,0x09,0x05,0x03, // 37 7
0x36,0x49,0x49,0x49,0x36, // 38 8
0x06,0x49,0x49,0x29,0x1e, // 39 9
0x00,0x36,0x36,0x00,0x00, // 3a :
0x00,0x56,0x36,0x00,0x00, // 3b ;
0x08,0x14,0x22,0x41,0x00, // 3c <
0x14,0x14,0x14,0x14,0x14, // 3d =
0x00,0x41,0x22,0x14,0x08, // 3e >
0x02,0x01,0x51,0x09,0x06, // 3f ?
0x32,0x49,0x79,0x41,0x3e, // 40 @
0x7e,0x11,0x11,0x11,0x7e, // 41 A
0x7f,0x49,0x49,0x49,0x36, // 42 B
0x3e,0x41,0x41,0x41,0x22, // 43 C
0x7f,0x41,0x41,0x22,0x1c, // 44 D
0x7f,0x49,0x49,0x49,0x41, // 45 E
0x7f,0x09,0x09,0x09,0x01, // 46 F
0x3e,0x41,0x49,0x49,0x7a, // 47 G
0x7f,0x08,0x08,0x08,0x7f, // 48 H
0x00,0x41,0x7f,0x41,0x00, // 49 I
0x20,0x40,0x41,0x3f,0x01, // 4a J
0x7f,0x08,0x14,0x22,0x41, // 4b K
0x7f,0x40,0x40,0x40,0x40, // 4c L
0x7f,0x02,0x0c,0x02,0x7f, // 4d M
0x7f,0x04,0x08,0x10,0x7f, // 4e N
0x3e,0x41,0x41,0x41,0x3e, // 4f O
0x7f,0x09,0x09,0x09,0x06, // 50 P
0x3e,0x41,0x51,0x21,0x5e, // 51 Q
0x7f,0x09,0x19,0x29,0x46, // 52 R
0x46,0x49,0x49,0x49,0x31, // 53 S
0x01,0x01,0x7f,0x01,0x01, // 54 T
0x3f,0x40,0x40,0x40,0x3f, // 55 U
0x1f,0x20,0x40,0x20,0x1f, // 56 V
0x3f,0x40,0x38,0x40,0x3f, // 57 W
0x63,0x14,0x08,0x14,0x63, // 58 X
0x07,0x08,0x70,0x08,0x07, // 59 Y
0x61,0x51,0x49,0x45,0x43, // 5a Z
0x00,0x7f,0x41,0x41,0x00, // 5b [
0x02,0x04,0x08,0x10,0x20, // 5c Yen Currency Sign
0x00,0x41,0x41,0x7f,0x00, // 5d ]
0x04,0x02,0x01,0x02,0x04, // 5e ^
0x40,0x40,0x40,0x40,0x40, // 5f _
0x00,0x01,0x02,0x04,0x00, // 60 `
0x20,0x54,0x54,0x54,0x78, // 61 a
0x7f,0x48,0x44,0x44,0x38, // 62 b
0x38,0x44,0x44,0x44,0x20, // 63 c
0x38,0x44,0x44,0x48,0x7f, // 64 d
0x38,0x54,0x54,0x54,0x18, // 65 e
0x08,0x7e,0x09,0x01,0x02, // 66 f
0x0c,0x52,0x52,0x52,0x3e, // 67 g
0x7f,0x08,0x04,0x04,0x78, // 68 h
0x00,0x44,0x7d,0x40,0x00, // 69 i
0x20,0x40,0x44,0x3d,0x00, // 6a j
0x7f,0x10,0x28,0x44,0x00, // 6b k
0x00,0x41,0x7f,0x40,0x00, // 6c l
0x7c,0x04,0x18,0x04,0x78, // 6d m
0x7c,0x08,0x04,0x04,0x78, // 6e n
0x38,0x44,0x44,0x44,0x38, // 6f o
0x7c,0x14,0x14,0x14,0x08, // 70 p
0x08,0x14,0x14,0x18,0x7c, // 71 q
0x7c,0x08,0x04,0x04,0x08, // 72 r
0x48,0x54,0x54,0x54,0x20, // 73 s
0x04,0x3f,0x44,0x40,0x20, // 74 t
0x3c,0x40,0x40,0x20,0x7c, // 75 u
0x1c,0x20,0x40,0x20,0x1c, // 76 v
0x3c,0x40,0x30,0x40,0x3c, // 77 w
0x44,0x28,0x10,0x28,0x44, // 78 x
0x0c,0x50,0x50,0x50,0x3c, // 79 y
0x44,0x64,0x54,0x4c,0x44, // 7a z
0x00,0x08,0x36,0x41,0x00, // 7b <
0x00,0x00,0x7f,0x00,0x00, // 7c |
0x00,0x41,0x36,0x08,0x00, // 7d >
0x08,0x08,0x2A,0x1C,0x08, // 7e Right Arrow ->
0x08,0x1C,0x2A,0x08,0x08, // 7f Left Arrow <-
0x04,0x02,0x7F,0x02,0x04, // 80 UP Arrow
0x10,0x20,0x7F,0x20,0x10, // 81 Down Arrow
0x00,0x06,0x09,0x06,0x00, // 82 градус
0x5A,0x3C,0xE7,0x3C,0x5A, // 83 SUN
0x7C,0x0A,0x09,0x09,0x7F, // А
0x7F,0x49,0x49,0x49,0x31, // Б
0x7F,0x49,0x49,0x49,0x36, // В
0x7F,0x01,0x01,0x01,0x03, // Г
0x60,0x3E,0x21,0x3F,0x60, // Д
0x7F,0x49,0x49,0x41,0x41, // Е
0x77,0x08,0x7F,0x08,0x77, // Ж
0x22,0x41,0x49,0x49,0x36, // З
0x7F,0x10,0x08,0x04,0x7F, // И
0x7F,0x10,0x09,0x04,0x7F, // Й
0x7F,0x08,0x14,0x22,0x41, // К
0x40,0x3E,0x01,0x01,0x7F, // Л
0x7F,0x02,0x04,0x02,0x7F, // М
0x7F,0x08,0x08,0x08,0x7F, // Н
0x3E,0x41,0x41,0x41,0x3E, // О
0x7F,0x01,0x01,0x01,0x7F, // П
0x7F,0x09,0x09,0x09,0x06, // Р
0x3E,0x41,0x41,0x41,0x22, // С
0x03,0x01,0x7F,0x01,0x03, // Т
0x27,0x48,0x48,0x48,0x3F, // У
0x0E,0x11,0x7F,0x11,0x0E, // Ф
0x63,0x14,0x08,0x14,0x63, // Х
0x3F,0x20,0x20,0x3F,0x60, // Ц
0x07,0x08,0x08,0x08,0x7F, // Ч
0x7F,0x40,0x7F,0x40,0x7F, // Ш
0x3F,0x20,0x3F,0x20,0x7F, // Щ
0x01,0x7F,0x48,0x48,0x30, // Ъ
0x7F,0x48,0x30,0x00,0x7F, // Ы
0x7F,0x48,0x48,0x30,0x00, // Ь
0x22,0x49,0x49,0x49,0x3E, // Э
0x7F,0x08,0x3E,0x41,0x3E, // Ю
0x46,0x29,0x19,0x09,0x7F, // Я
0x20,0x54,0x54,0x38,0x40, // а
0x3C,0x4A,0x4A,0x4A,0x31, // б
0x7C,0x54,0x54,0x54,0x28, // в
0x7C,0x04,0x04,0x04,0x04, // г
0x60,0x38,0x24,0x3C,0x60, // д
0x38,0x54,0x54,0x54,0x18, // е
0x6C,0x10,0x7C,0x10,0x6C, // ж
0x28,0x44,0x54,0x54,0x28, // з
0x7C,0x20,0x10,0x08,0x7C, // и
0x7C,0x20,0x12,0x08,0x7C, // й
0x7C,0x10,0x10,0x28,0x44, // к
0x40,0x38,0x04,0x04,0x7C, // л
0x7C,0x08,0x10,0x08,0x7C, // м
0x7C,0x10,0x10,0x10,0x7C, // н
0x38,0x44,0x44,0x44,0x38, // о
0x7C,0x04,0x04,0x04,0x7C, // п
0x7C,0x24,0x24,0x24,0x18, // р
0x38,0x44,0x44,0x44,0x28, // с
0x04,0x04,0x7C,0x04,0x04, // т
0x4C,0x50,0x50,0x50,0x3C, // у
0x18,0x24,0x7C,0x24,0x18, // ф
0x44,0x28,0x10,0x28,0x44, //х
0x3C,0x20,0x20,0x3C,0x60, // ц
0x1C,0x20,0x20,0x20,0x7C, // ч
0x7C,0x40,0x7C,0x40,0x7C, // ш
0x3C,0x20,0x3C,0x20,0x7C, // щ
0x04,0x7C,0x48,0x48,0x30, // ъ
0x7C,0x48,0x30,0x00,0x7C, // ы
0x7C,0x48,0x48,0x48,0x30, // ь
0x54,0x54,0x54,0x54,0x38, // э
0x7C,0x10,0x38,0x44,0x38, // ю
0x48,0x54,0x34,0x14,0x7C //я
};
//**********************************************************************************
void init_nokia(void)
{
// nokia LCD init
nok_dc=1; // bytes are stored in the display data ram, address counter, incremented automatically
nok_cs=1; // chip disabled
DelayMs(10);
nok_res=0; // reset chip during 250ms
DelayMs(250);
nok_res=1;
// set extins extended instruction set
nokia_write_command(0x21);
// Vop was 0xc5 // better is 0xa0
nokia_write_command(0xa0);
// bias
nokia_write_command(0x13);
// horizontal mode from left to right, X axe are incremented automatically , 0x22 for vertical addressing ,back on normal instruction set too
nokia_write_command(0x20);
// all on
nokia_write_command(0x09);
DelayMs(50);
// DelayMs(250);
nokia_clear(); // reset DDRAM, otherwise the lcd is blurred with random pixels
DelayMs(10);
// mod control blank change (all off)
nokia_write_command(0x08);
DelayMs(10);
// mod control normal change
nokia_write_command(0x0c);
// nokia_gotoxy(0,0);
}
//*******************************************************************************
void nokia_write_command(unsigned char command_in)
{
nok_dc=0; // byte is a command it is read with the eight SCLK pulse
nok_cs=0; // chip enabled
clockdata(command_in);
nok_cs=1; // chip disabled
}
//*******************************************************************************
void nokia_write_data(unsigned char data_in)
{
nok_dc=1;
nok_cs=0; // chip enabled
clockdata(data_in);
nok_cs=1; // chip disabled
}
//*******************************************************************************
void clockdata(unsigned char bits_in)
{
signed char bitcnt;
for (bitcnt = 8; bitcnt > 0; bitcnt–)
{
nok_sclk = 0; // Set Clock Idle level LOW.
if ((bits_in&0x80)==0x80) {nok_sda = 1;} // PCD8544 clocks in the MSb first.
else {nok_sda = 0;}
nok_sclk = 1; // Data is clocked on the rising edge of SCK.
bits_in = bits_in<<1; // Logical shift data by 1 bit left.
}
}
//*******************************************************************************
//*******************************************************************************
void nokia_clear(void) // очистка экрана DDRAM (установка всех бит в 0)
{
signed char ch, cm, cl;
nok_sda=0;
nok_dc=1;
nok_cs=0;
for (ch=6;ch>0;ch–){ // 6 rows
for (cm=84;cm>0;cm–){ // 84 columns
for (cl=8;cl>0;cl–){ // 8 pixels
nok_sclk=0;
nok_sclk=1;
}
}
}
nok_cs=1;
}
//*******************************************************************************
void nokia_gotoxy (unsigned char xnokia, unsigned char ynokia) // Nokia LCD Position cursor
{
// bytefornokia=(0x40|(ynokia&0x07)); // Y axe initialisation: 0100 0yyy
nokia_write_command(0x40|(ynokia&0x07));
// bytefornokia=(0x80|(xnokia&0x7f)); // X axe initialisation: 1xxx xxxx
nokia_write_command(0x80|(xnokia&0x7f));
}
//*******************************************************************************
void putchar(unsigned char character)
{
int tablept;
signed char count;
unsigned char char_column;
if ((character<0x20)) {return;} // Exit function if character is not found.
if(character > 191)
{
tablept = ((5*(character-60)) - 160);
}
else
{
tablept = ((5*character) - 160); // Point to the columns of the character in the table.
}
for (count=5;count>0;count–) // Draw the columns to print the character.
{
char_column = table[tablept];
nokia_write_data(char_column);
tablept++;
}
nokia_write_data(0x00); // 1 pixel spacing per character.
}
//*********************************************************************************
void putstr(const char *s)
{
while(*s) {putchar(*s++); } // Points to one ASCII to be written one at a time.
}
О! халяваный знакогенератор! спасиба! 😃