Съдържание:

CNC измервателен инструмент за скорост на подаване, направен от скрап: 5 стъпки
CNC измервателен инструмент за скорост на подаване, направен от скрап: 5 стъпки

Видео: CNC измервателен инструмент за скорост на подаване, направен от скрап: 5 стъпки

Видео: CNC измервателен инструмент за скорост на подаване, направен от скрап: 5 стъпки
Видео: Токарная ошибка, сорвало деталь 2024, Юли
Anonim
Инструмент за измерване на скоростта на подаване с ЦПУ, направен от скрап
Инструмент за измерване на скоростта на подаване с ЦПУ, направен от скрап

Някой искал ли е някога да измери действителната скорост на подаване на машина с ЦПУ? Вероятно не, докато фрезовете са непокътнати след работа с ЦПУ … но когато започнат да се чупят редовно, може би е време да разследваме. В тази инструкция можете да следвате търсене за определяне на действителната скорост на подаване на CNC машина. Той ще обхваща частта за обратното инженерство на принтер, фърмуера на arduino, компютърния софтуер и резултатите, които получих с помощта на колегите си, и боклук, превърнат в съкровище.

Стъпка 1: Материали, инструменти, устройства, използвани за стартиране на проекта

Когато започнах да работя върху това, измислих кратък списък с нещата, от които ще се нуждаем:

  • разглобен механизъм за носене на принтер
  • ръчни инструменти, за да промените това
  • поялник, спойка, проводници
  • мултиметър
  • осцилоскоп или логически анализатор - това не е абсолютно необходимо
  • захранване
  • микроскоп
  • Arduino nano + разпечатка
  • Компютър с инсталирани Arduino IDE, Visual Studio 2008 Express + MS Charting tools
  • (MPU6050 - В крайна сметка не използвах това)
  • готови да търсят всичко, което не знаете как да направите

В началото си мислех, че платката MPU6050 ще ми позволи да измервам скоростта на подаване по трите оси наведнъж. Имайки акселерометъра вътре в него, бях сигурен, че сумирането на данните от акселерометъра ще ми даде желаната стойност - скоростта по всяка ос. След като изтеглих и модифицирах фрагмент от Arduino, който показваше необработени данни на серийния монитор, написах малка компютърна програма във Visual Studio, която обработваше данните, и ги нанесе на диаграма за по -лесно тълкуване. Трябваше да изтегля както Visual Studio C# Express 2008, така и инструментите за графики за това.

След като кодирах известно време и потърсих всички неща, от които се нуждая за серийна комуникация, се озовах със начертаните стойности, но каквото и да направих, не можеше да се използва. Малки, но внезапни движения биха довели до огромни скокове, докато по -дългите пътувания дори не биха се появили в класациите. След два дни чукане на MPU6050, накрая се отказах и се обърнах към нещо друго - механизъм за обратна връзка за разглобен принтер.

Стъпка 2: Хардуерни неща, които трябва да бъдат направени

Хардуерни неща, които трябва да бъдат направени
Хардуерни неща, които трябва да бъдат направени
Хардуерни неща, които трябва да бъдат направени
Хардуерни неща, които трябва да бъдат направени
Хардуерни неща, които трябва да бъдат направени
Хардуерни неща, които трябва да бъдат направени
Хардуерни неща, които трябва да бъдат направени
Хардуерни неща, които трябва да бъдат направени

Обратно инженерство

Разбира се, принтерният механизъм нямаше номер на част, който бих могъл да използвам, за да определя точните му свойства, имаше нужда от малко обратно инженерство, за да стигнем до мястото, което искахме. След като разгледах отблизо механизма и електрониката, реших, че първото нещо трябва да бъде идентифицирането на щифтовете на оптичния сензор. Това трябваше да се направи, за да се свърже всичко с Arduino. Разглобих черната пластмасова част, извадих печатната платка и огледах сензора: върху него имаше написано ROHM RPI-2150. Това ме зарадва, надеждата беше голяма, че ще намеря лист с данни. За съжаление това е или стара, или персонализирана част - няма данни в никъде в мрежата. Това означаваше, че трябваше да взема нещата в свои ръце: знаейки, че тези сензори обикновено имат инфрачервен светодиод и два фототранзистора вътре, грабнах мултицет, поставих го в режим на измерване на диоди и започнах измерване между щифтовете.

Захранващите щифтове обикновено са лесни за намиране - те ще имат кондензатори през тях и обикновено са свързани с широки следи на печатни платки. Земните следи често са свързани към множество подложки за по -добро отхвърляне на шума.

Входните и изходните щифтове обаче не са толкова тривиални. При измерване през диод, измервателният уред ще показва напрежението си напред в едната посока, а претоварването (безкрайно) в другата. Успях да идентифицирам четири диода между щифтовете, стигнах до заключението, че четвъртият диод трябва да е някакъв ценеров или TVS диод, тъй като беше точно между захранващите щифтове на компонента. Намирането на инфрачервения излъчвател беше лесно, имаше резистор 89R последователно с него. Останах с две диодни измервания на останалите два щифта, това трябваше да са двата приемника.

Забележка: Тези сензори имат два приемника, за да могат да определят посоката на движение в допълнение към определянето на позицията чрез преброяване на импулсите. Тези две изходни форми на вълната са 90 ° извън фазата, това се използва за създаване на импулс за отброяване или отброяване. Следвайки броя на тези импулси, може да се определи точното положение на печатащата глава.

Когато излъчвателят и двата приемника бяха разположени, запоявах проводници върху щифтовете им, за да мога да свържа сензора с Arduino. Преди да направя това, захранвах сензора с 3.3V, издърпвах лентата между сензора няколко пъти и наблюдавах квадратната вълна на изходите. Честотата на квадратната вълна варира в зависимост от скоростта на движение и стигнах до извода, че измервателната система вече е готова за свързване с Arduino.

Свързване на Arduino

Свързването на този нов „сензор“е много лесно. Просто свържете изходите на сензора към D2 и D3 (щифтове с възможност за прекъсване!) И захранващите линии и кодирането може да започне.

Стъпка 3: Кодиране на Arduino

Кодиране на Arduino
Кодиране на Arduino

Кодът на Arduino е доста прост. Присвоих функция, която се изпълнява всеки път, когато D2 види нарастващ ръб, това е функцията за изтичане от прикачения от мен код на Arduino. Ако погледнете сигналите на квадратен енкодер, ще видите следното:

  • в една посока фаза А е логика високо на всяка фаза В изгряващ ръб
  • в другата посока фаза А е логически ниска на всяка фаза В издигащ се ръб

Това беше свойството на енкодера, от който се възползвах: тъй като функцията elapse се изпълнява всеки път, когато D2 има нарастващ ръб, току -що написах, ако това увеличава брояча, когато D3 е високо, и го намалява, когато D3 е ниско. Това проработи при първия опит, изпратих стойността на брояча към серийния монитор и наблюдавах как се увеличава/намалява, когато премествах главата на принтера върху вала.

Накратко, фърмуерът прави следното във функцията цикъл:

  1. проверява серийния буфер за получаване на входящи данни
  2. ако има входящи данни, проверете дали е „1“или не
  3. ако е „1“, това означава, че компютърният софтуер изисква стойността на брояча
  4. изпратете стойността на брояча на компютъра чрез сериен
  5. започнете от 1.

С това топката вече е в игрището на компютърния софтуер. Нека да влезем в това!

Стъпка 4: Софтуер на Visual Studio C#

Целта на програмата VS C# беше да прехвърли изчислителната тежест от Arduino към компютъра. Този софтуер получава данните, които Arduino предоставя, изчислява и показва скоростта под формата на графика.

Първото, което направих, беше да потърся в Google как да осъществя серийна комуникация в C#. Намерих много добра информация на MSDN.com заедно с добър пример, след което просто изхвърлих това, което не ми трябваше - основно всичко, освен частта за четене. Настроих COM порта и скоростта да съвпадат с тази на Arduino, след което направих няколко опита и изхвърлих всичко, което идва на серийния порт, в многоредово текстово поле.

След като стойностите бяха прочетени, можех просто да използвам функциите readto & split, за да изолирам едно измерване едно от друго и от разделителни знаци. Те бяха нанесени на контрола на диаграма и стойностите започнаха да се появяват на екрана.

Ако не можете да видите контролата на диаграмата във вашата кутия с инструменти за VS, можете да потърсите в Google проблема и да намерите решението тук (потърсете отговор #1): връзка

Принципът на измерване

За да открием връзката между броя на броенията и разстоянието, което главата изминава, нулирахме стойността на броенето, преместихме главата на принтера на 100 мм на ръка и наблюдавахме промяната в броя. Най -накрая стигнахме до следната пропорция: 1 брой = 0,17094 мм.

Тъй като можем да запитаме разстоянието и можем да измерим времето между извадките, можем да изчислим скоростта, с която се случва изместването на позицията - можем да изчислим скоростта!

Има грубо време на софтуера от 50 ms благодарение на TMR0, но забелязахме, че тези времена не са прекалено точни. Всъщност, след някои софтуерни измервания на скоростта, установихме, че времевите 50ms изобщо не са 50ms. Това означава, че пробите не са взети на фиксиран интервал, така че изчислението на скоростта също не може да използва фиксирана времева база. След като открихме този проблем, беше лесно да продължим напред: взехме разликата в разстоянието и разликата във времето и изчислихме скоростта като D_distance/D_time (вместо D-distance/50ms).

Също така, тъй като нашето уравнение ще върне скоростта в единици mm/50ms, трябва да умножим това по 1200, за да получим разстоянието, което главата ще измине за една минута, в [mm/минута].

Забележка: Софтуерът за управление на фреза Mach 3 CNC дефинира скоростите на подаване в единици от [mm/минута]

Филтриране

От този момент нататък измерванията изглеждаха доста точни, но имаше известен шум върху измерения сигнал. Подозирахме, че това се дължи на механични несъответствия в вала, съединението на вала и т.н., затова решихме да го филтрираме, за да получим хубава средна стойност на това, което се измерва.

Фини настройки на софтуера

За да се промени честотата на дискретизация и честотата на филтриране по време на изпълнение, бяха добавени ленти за превъртане - по една за всяка. Също така беше въведена възможността за скриване на парцелите.

Стъпка 5: Резултати

Резултати
Резултати
Резултати
Резултати
Резултати
Резултати
Резултати
Резултати

След като хардуерните и софтуерните части бяха готови, проведохме три набора измервания с mach 3 + моя софтуер, можете да видите резултатите на приложените снимки. По -късните експерименти показаха по -добра точност, с увеличаване на честотата на филтриране и проба. Графиките показват измерената скорост с плътно червено, а средната със синьо с тирета.

Като се има предвид това, изглежда, че Mach 3 се справя с тези настройки на скоростта доста точно, но сега знаем със сигурност:)

Надявам се да ви хареса тази кратка инструкция за обратното инженерство и превръщането на водата във вино!

Наздраве!

Препоръчано: