Мазмұны:
- 1 -қадам: Жобаны іске қосу үшін қолданылатын материалдар, құралдар, құрылғылар
- 2 -қадам: Орындалуы қажет аппараттық құралдар
- 3 -қадам: Arduino кодтау
- 4 -қадам: Visual Studio C# БҚ
- 5 -қадам: Нәтижелер
Бейне: Сынақтан жасалған CNC беру жылдамдығын өлшеу құралы: 5 қадам
2024 Автор: John Day | [email protected]. Соңғы өзгертілген: 2024-01-30 10:26
Кез келген адам CNC машинасында нақты берілу жылдамдығын өлшегісі келді ме? Мүмкін емес, CNC жұмысынан кейін фрезерлік бөлшектер бұзылмайынша … бірақ олар үнемі үзіле бастаған кезде, мүмкін, тергеу уақыты келді. Бұл нұсқаулықта сіз CNC машинасының нақты берілу жылдамдығын анықтай аласыз. Ол принтердің кері инженерлік бөлігін, arduino микробағдарламасын, компьютерлік бағдарламалық қамтамасыз етуді және әріптестерімнің көмегімен алынған нәтижелерді және қазынаға айналған қоқысты қамтиды.
1 -қадам: Жобаны іске қосу үшін қолданылатын материалдар, құралдар, құрылғылар
Мен осы жұмысты бастаған кезде, қажет нәрселердің қысқаша тізімін ойладым:
- бөлшектелген принтердің тасымалдау механизмі
- мұны өзгертуге арналған қол құралдары
- дәнекерлеуіш, дәнекерлеу, сымдар
- мультиметр
- осциллограф немесе логикалық анализатор - бұл мүлде қажет емес
- нәр беруші
- микроскоп
- Arduino нано + түйреуіш
- Arduino IDE, Visual Studio 2008 Express + MS Charting құралдары орнатылған компьютер
- (MPU6050 - мен мұны пайдаланбаймын)
- Сіз қалай істеу керектігін білмейтін барлық нәрсені шолуға дайынсыз
Басында мен MPU6050 тақтасы бірден үш ось бойынша жылдамдықты өлшеуге мүмкіндік береді деп ойладым. Ішінде акселерометр бар, мен акселерометрдің мәліметтерін жинақтау маған қажетті мәнді - әр ось бойынша жылдамдықты беретініне сенімді болдым. Деректерді сериялық мониторда көрсететін Arduino үзіндісін жүктеп, өзгерткеннен кейін мен Visual Studio -да деректерді өңдейтін шағын компьютерлік бағдарлама жаздым және оны түсіндіру үшін диаграммаға салдым. Маған Visual Studio C# Express 2008 және диаграмма құралдарын жүктеу керек болды.
Біраз уақыт кодтағаннан кейін және сериялық байланысқа қажет барлық нәрсені іздегеннен кейін мен жоспарланған мәндермен аяқтадым, бірақ мен не істесем де, ол қолданылмады. Кішкентай, бірақ кенеттен қозғалыстар үлкен секірулерге әкеледі, ал ұзақ сапарлар тіпті диаграммаларда көрінбейді. MPU6050 -ді екі күн соққаннан кейін мен ақырында бас тарттым және басқа нәрсеге бұрылдым - принтердің бөлшектелген позициясы бойынша кері байланыс механизмі.
2 -қадам: Орындалуы қажет аппараттық құралдар
Кері инженерия
Әрине, принтердің механизмінде мен оның нақты қасиеттерін анықтау үшін қолданатын бөлшек нөмірі жоқ еді, біз қалаған жерге жету үшін сәл кері технология қажет болды. Механизм мен электрониканы мұқият зерттей келе, мен сенсорлық оптикалық түйреуіштерді анықтау керек деп шештім. Бұл бәрін Arduino -мен байланыстыру үшін жасалуы керек еді. Мен қара пластикалық бөлікті бөлшектедім, ПХД алып тастадым және сенсорды қарадым: оның үстінде ROHM RPI-2150 жазылған. Бұл мені қуантты, мен деректер кестесін табамын деген үміт жоғары болды. Өкінішке орай, бұл ескі немесе реттелетін бөлік - Интернетте еш жерде табылмайтын деректер кестесі жоқ. Бұл мәселені өз қолыма алуым керек дегенді білдірді: бұл сенсорларда әдетте инфрақызыл жарық диоды мен ішінде екі фото-транзистор бар екенін біле тұра, мен мультиметрді алып, диодты өлшеу режиміне қойдым және түйреуіштер арасында өлшеуді бастадым.
Қуат түйреуіштерін әдетте оңай табуға болады - оларда конденсаторлар болады және олар әдетте ПХД -дегі кең іздермен байланысты. Жердегі іздер көбінесе шуды жақсы басу үшін бірнеше жастықшаларға қосылады.
Кіріс және шығыс түйреуіштері соншалықты маңызды емес. Диодты өлшеу кезінде өлшеуіш бір бағытта өзінің ілгерілеу кернеуін, ал екінші жағында шамадан тыс жүктемені (шексіз) көрсетеді. Мен түйреуіштер арасындағы төрт диодты анықтай алдым, мен төртінші диод қандай да бір зенер немесе TVS диоды болуы керек деген қорытындыға келдім, себебі бұл компоненттің қуат түйреуіштері арасында. Инфрақызыл сәулелендіргішті табу оңай болды, онымен қатар 89R резисторы болды. Менде қалған екі түйреуіште екі диодты өлшеу қалды, бұл екі қабылдағыш болуы керек.
Ескерту: Бұл сенсорларда импульстерді санау арқылы позицияны анықтаудан басқа қозғалыс бағытын анықтай алатын екі қабылдағыш бар. Бұл екі шығыс толқын формасы 90 ° фазадан тыс, бұл санау немесе кері импульсті шығару үшін қолданылады. Осы импульстардың санын қадағалай отырып, басып шығару механизмінің нақты орнын анықтауға болады.
Эмитент пен екі қабылдағыш орналасқан кезде мен сымдарды түйреуіштерге дәнекерледім, сондықтан сенсорды Arduino -мен байланыстыра аламын. Мұны жасамас бұрын мен сенсорға 3,3В кернеуді бердім, сенсор арасындағы жолақты екі рет тарттым және шығысындағы төртбұрышты толқынды байқадым. Квадрат толқынының жиілігі қозғалыс жылдамдығына байланысты өзгерді, мен өлшеу жүйесі енді Arduino -ға қосылуға дайын деген қорытындыға келдім.
Arduino қосылу
Бұл жаңа «сенсорды» қосу өте оңай. Тек сенсордың шығуын D2 және D3-ке қосыңыз (үзіліс жасай алатын түйреуіштер!), Және қоректену желілері мен кодтау басталуы мүмкін.
3 -қадам: Arduino кодтау
Arduino коды өте қарапайым. Мен D2 көтерілетін жиекті көрген сайын орындалатын функцияны тағайындадым, бұл мен қосқан Arduino кодынан өткен функция. Егер сіз квадраттық кодердің сигналдарына қарасаңыз, сіз мынаны көресіз:
- бір бағытта А фазасы В әр фазасының көтерілу жиегінде жоғары логикаға ие
- басқа бағытта А фазасы әр фазаның В көтерілу жиегінде логикалық төмен
Бұл мен қолданған кодердің қасиеті болды: Өту функциясы D2 көтерілетін жиек болған сайын орындалатындықтан, егер мен D3 жоғары болғанда есептегішті ұлғайтады, ал D3 төмен болғанда оны азайтады деп жаздым. Бұл бірінші әрекетте жұмыс істеді, мен есептегіш мәнін сериялық мониторға жібердім және принтердің басын білікке жылжытқанда оның ұлғаюын/төмендеуін бақыладым.
Қысқаша айтқанда, микробағдарлама цикл функциясында келесі әрекеттерді орындайды:
- кез келген кіріс деректері бойынша сериялық қабылдау буферін тексереді
- егер кіретін деректер болса, оның '1' екенін тексеріңіз
- егер бұл '1' болса, бұл ДК бағдарламалық қамтамасыз етушісінің есептегіш мәнін сұрайтынын білдіреді
- санауыш мәнін дербес компьютерге сериялық арқылы жіберу
- 1 -ден бастаңыз.
Осылайша, доп қазір ДК бағдарламалық қамтамасыз етуінің алаңында. Бұған енейік!
4 -қадам: Visual Studio C# БҚ
VS C# бағдарламасының мақсаты есептеу жүктемесін Arduino -дан компьютерге ауыстыру болды. Бұл бағдарламалық қамтамасыз ету Arduino ұсынатын деректерді алады, график түрінде жылдамдықты есептейді және көрсетеді.
Мен бірінші рет Google -ге C#-де сериялық байланысты қалай жасау керектігін білдім. Мен MSDN.com сайтында жақсы мысалмен бірге көптеген жақсы ақпарат таптым, содан кейін мен қажет емес нәрсені - оқу бөлімінен басқа, бәрін тастадым. Мен COM порты мен жылдамдықты Arduino-мен сәйкес келетін етіп қойдым, содан кейін оны бірнеше рет сынап көрдім және сериялық портқа келгендердің барлығын көп жолды мәтін ұясына тастадым.
Мәндер оқылғаннан кейін мен readto & split функцияларын бір өлшемді бір -бірінен және шектеу таңбаларынан бөліп алу үшін қолдана аламын. Олар Диаграмманың басқару элементіне салынды және мәндер экранда пайда бола бастады.
Егер сіз VS құралдар тақтасында Диаграмма басқару элементін көре алмасаңыз, мәселені Google арқылы шешіп, шешімді осы жерден таба аласыз (№1 жауапты іздеңіз): сілтеме
Өлшеу принципі
Санау саны мен бастық жүретін қашықтық арасындағы байланысты табу үшін біз санау мәнін нөлге түсірдік, принтер басын қолмен 100 мм жылжыттық және санаулардың өзгеруін байқадық. Ақырында біз келесі пропорцияны таптық: 1 санау = 0.17094мм.
Біз қашықтықты сұрай алатындықтан және үлгілер арасындағы уақытты өлшей алатындықтан, біз позицияның ауысу жылдамдығын есептей аламыз - біз жылдамдықты есептей аламыз!
TMR0 арқасында бағдарламалық қамтамасыз етудің ұзақтығы 50 мс құрайды, бірақ біз бұл уақыт өте дәл емес екенін байқадық. Іс жүзінде, бағдарламалық қамтамасыз етудің жылдамдығын өлшегеннен кейін, біз 50 мс уақыттың 50 мс емес екенін анықтадық. Бұл үлгілер белгіленген аралықта алынбағанын білдіреді, сондықтан жылдамдықты есептеу де белгіленген уақыт базасын қолдана алмайды. Біз бұл мәселені тапқан соң, әрі қарай жүру оңай болды: біз қашықтық пен уақыт айырмашылығын алдық және жылдамдықты D_distance/D_time (D-қашықтық/50ms орнына) деп есептедік.
Сонымен қатар, біздің теңдеу мм/50мс бірлікпен жылдамдықты қайтаратындықтан, басы бір минут ішінде [мм/минут] жүріп өтетін қашықтықты алу үшін оны 1200 -ге көбейту керек.
Ескертпе: Mach 3 CNC диірменін басқаратын бағдарламалық қамтамасыз ету беру жылдамдығын [мм/минут] бірлігінде анықтайды.
Сүзу
Осы сәттен бастап өлшеулер өте дәл болып көрінді, бірақ өлшенген сигналда біраз шу болды. Біз бұл біліктегі механикалық сәйкессіздіктерден, біліктердің ілінісуінен және т.б. байланысты деп күдіктендік, сондықтан өлшеудің орташа мәнін алу үшін оны сүзгілеуді шештік.
Бағдарламалық жасақтамаға жақсы түзетулер
Іске қосу уақытында іріктеу жиілігі мен сүзгі жиілігін өзгерту үшін айналдыру жолақтары қосылды - әрқайсысына бір. Сонымен қатар, сюжеттерді жасыру мүмкіндігі енгізілді.
5 -қадам: Нәтижелер
Аппараттық және бағдарламалық қамтамасыз ету бөліктері дайын болғаннан кейін, біз mach 3 + менің бағдарламалық жасақтамамен үш өлшеу жиынтығын жүргіздік, сіз нәтижелерді қоса берілген суреттерден көре аласыз. Кейінгі эксперименттер дәлдікті көрсетті, сүзгі де, іріктеу жылдамдығы да өсті. Сюжеттер өлшенген жылдамдықты қатты қызыл түспен көрсетеді, ал орташа нүкте-көкпен.
Айта кету керек, Mach 3 бұл жылдамдық параметрлерін дәл өңдейтін сияқты, бірақ қазір біз нақты білеміз:)
Сізге кері инженерия мен суды шарапқа айналдыру туралы қысқа нұсқаулық ұнады деп сенемін!
Сәлем!
Ұсынылған:
Arduino көмегімен қозғалтқыш жылдамдығын өлшеу: 6 қадам
Arduino көмегімен қозғалтқыш жылдамдығын өлшеу: қозғалтқыштың айналу жиілігін өлшеу қиын ба? Мен олай ойламаймын. Қарапайым шешімдердің бірі - сіздің жинағыңыздағы бір ғана IR сенсоры мен Arduino мұны істей алады. Бұл жазбада мен IR сенсоры мен А көмегімен кез келген қозғалтқыштың айналу жиілігін өлшеуді түсіндіретін қарапайым оқулық беремін
Эмпатикалық дизайн: Arduino автоматты егеуқұйрықтарды беру құралы: 18 қадам
Эмпатикалық дизайн: Arduino егеуқұйрықтарды автоматты түрде беру құралы: Бұл нұсқаулық егеуқұйрыққа немесе үй жануарларына ұқсас мөлшерде автоматты түрде тамақтандыратын құрылғы құруға арналған барлық нұсқаулық ретінде қызмет етеді. Бұл жобаға шабыт әпкемнің егеуқұйрығынан келді, оны дәл 4 тағамдық түйіршікті тамақтандыру керек
Цифрлық көп функциялы өлшеу құралы: 21 қадам (суреттермен)
Цифрлық көп функциялы өлшеу құралы: сәлем баршаңызға. Мен әрқашан 3D принтер кереуетін тегістеуге көмектесетін құрылғы мен қисық беттің ұзындығын алуға көмектесетін басқа құрылғыны қалайтынмын, сонда мен жапсырманың қажетті ұзындығын оңай қиып алатынмын
Термисторды қолданатын қарапайым және арзан температуралық өлшеу құралы: 5 қадам
Термисторды қолданатын қарапайым және арзан температуралық өлшеу құралы: NTC термисторлы термисторы бар қарапайым және арзан температура сенсоры термистор туралы көбірек білу үшін температура сенсорын құратын осы қасиеттің көмегімен уақыттың өзгеруіне байланысты қарсылығын өзгертеді https://kk.wikipedia.org/wiki/ Термистор
Ағын жылдамдығын өлшеу: 7 қадам (суреттермен)
Ағынның жылдамдығын өлшеу: Бұл құрылғы арқылы сіз еркін ағынның жылдамдығын өлшей аласыз. Қажетті жалғыз нәрсе - Arduino және қолөнердің кейбір негізгі дағдылары және, әрине, еркін ағын. Бұл жылдамдықты өлшеудің ең практикалық әдісі емес