Բովանդակություն:

Ռոբոտային թելերի դիսպենսեր Arduino- ի համար. 8 քայլ (նկարներով)
Ռոբոտային թելերի դիսպենսեր Arduino- ի համար. 8 քայլ (նկարներով)

Video: Ռոբոտային թելերի դիսպենսեր Arduino- ի համար. 8 քայլ (նկարներով)

Video: Ռոբոտային թելերի դիսպենսեր Arduino- ի համար. 8 քայլ (նկարներով)
Video: JOE FERDENZI *Experiences with new American Cichlids *AMERICAN CICHLIDS* Ciclidi Americani*AIC LIVE 2024, Հուլիսի
Anonim
Image
Image

Ինչու է մոտորիզացված գործիք

3D տպիչների թելը `սովորաբար գրեթե ամուր, քաշվում է էքստրուդերի կողմից, մինչ գլանը տեղադրվում է տպիչին մոտ` ազատ պտտվելու համար: Ես նկատել եմ նյութական վարքի էական տարբերություններ `կախված օգտագործման մակարդակից, որոնք վերաբերում են 1 կգ թելիկավոր գլաներին: Թելիկի նոր (լիարժեք) պարույրը գրեթե լավ է հոսում, բայց էքստրուդերային ուժի կիրառած ուժը պետք է համեմատաբար համապատասխան լինի. Քաշը կազմում է առնվազն 1,5 կգ:

Էքստրուդերային շարժիչը (շատ դեպքերում ՝ Nema17 սանդուղք) ունի բավարար ուժ աշխատանքն իրականացնելու համար, սակայն էքստրուդերային երկու շարժիչները թելիկը մղելով դեպի տաք ծայրը ՝ աշխատանքի ընթացքում հավաքում են թելիկի մասնիկները ՝ գործադրված ուժերի պատճառով. դա պահանջում է էքստրուդերների հաճախակի սպասարկում `վարդակի խցանումից խուսափելու համար: Այս մասնիկները հակված են անջատվել և խառնել մաքուր թելիկի հետ, երբ այն սնվում է, մեծացնելով վարդակների խնդիրները և ավելի հաճախակի վարդակների մաշվածությունը. դա ավելի հաճախ տեղի է ունենում 0.3 մմ տրամագծով վարդակներով:

Երբ թելիկի գլանափաթեթը կիսով չափ օգտագործվում է կամ ավելի, նրա պարույրները փոքրանում են, և շրջակա միջավայրի որոշ պայմաններում թելիկը հակված է շատ հաճախ կոտրվել: Երկար տպագրության աշխատանքները դառնում են ավելի քիչ հուսալի և սթրեսային. Ես չեմ կարող թողնել, որ տպիչը մի ամբողջ գիշեր աշխատի միայնակ ՝ առանց այն վերահսկելու: Այսպիսով, թելերի սնուցումը վերահսկելով շարժիչային գործիչներով `լուծելով մի շարք խնդիրներ:

Հավաքածուն հասանելի է Tindie.com կայքում

Քայլ 1: Հավաքածուի բովանդակությունը

Հավաքածուի բովանդակությունը
Հավաքածուի բովանդակությունը
Հավաքածուի բովանդակությունը
Հավաքածուի բովանդակությունը

Հավաքածուն ներառում է 3D տպագրության բոլոր մասերը և մեխանիկան ՝ թելերի շարժիչով դիսպենսեր հավաքելու համար: Փոխարենը կա երկու լրացուցիչ մաս `շարժիչը և շարժիչի կառավարման տախտակը:

Իմ տեղադրման մեջ ես օգտագործել եմ 12 Վ McLennan շարժական շարժական խոզանակով շարժիչ, բայց 37 մմ տրամագծով ցանկացած շարժիչ կարող է ճիշտ տեղավորվել շարժիչի աջակցության մեջ:

Լավագույն կատարումներին հասնում է TLE94112LE Arduino վահանը Infineon- ի կողմից (ամբողջական ակնարկը այստեղ); այս DC շարժիչի վերահսկիչի տախտակը կարող է միաժամանակ աջակցել մինչև 6 տարբեր ռոբոտային դիսպենսերային հավաքածուների:

Ես ամբողջ համակարգը փորձարկել եմ ինչպես Arduino UNO R3- ի, այնպես էլ Arduino- ի համատեղելի տախտակի XMC1100 Boot հավաքածուի կողմից Infineon- ի կողմից, և համակարգը շատ լավ էր արձագանքում երկու միկրոկառավարիչների տախտակներին:

TLE94112LE վահանի օգտագործումը առաջարկվում է, բայց ոչ էական: Arduino- ի համար ցանկացած DC շարժիչի վերահսկիչ `ներառյալ ձեր սեփական նախագիծը: - կարող է լավ աշխատել այս գործիքի հետ

Հավաքածուն բաժանված է բաղադրիչների երկու փաթեթների, քանի որ երկու մասերը կառուցված են միասին աշխատելու համար: Հիմնական հարթակը կաջակցի թելքի գլանափաթեթը, որը պտտվում է չորս ազատ անիվային առանցքակալների վրա: Հիմքը ամրացված է քաշի տվիչի վրա `վերահսկելու պտտվող մեխանիզմը, որն առաջացնում է դրա ակտիվացումը, ինչպես նաև վերահսկում է թելերի պայմանները` քաշը, մետրը և տոկոսը: Arduino- ից սերիական տերմինալի միջոցով հասանելի են բազմաթիվ տեղեկություններ, ինչպես նաև ամբողջական հրամանների հավաքածու:

Ձեզ անհրաժեշտ գործիքներ

Հավաքը ավարտելու համար ձեզ հարկավոր է որոշ պլաստիկ սոսինձ որոշ մասերի համար, պտուտակահան և մի շարք Ալեն պտուտակներ:

Քայլ 2. Նախագիծ և ձևավորում

Նախագիծը և ձևավորումը
Նախագիծը և ձևավորումը
Նախագիծը և ձևավորումը
Նախագիծը և ձևավորումը
Նախագիծը և ձևավորումը
Նախագիծը և ձևավորումը

Այս նախագիծը 3D տպիչի թելերի դիսպենսերների շարքի երրորդ էվոլյուցիան է: Որոշ ժամանակ առաջ ես ստեղծեցի պտտվող հիմքը `թելքի հոսքը օպտիմալացնելու համար, երբ այն քաշվում է 3D տպիչի էքստրուդերով:

Երկրորդ մոդելը ներառում էր քաշի տվիչ `իրական ժամանակում Arduino տախտակով թելերի օգտագործումը վերահսկելու համար: Այս վերջին նախագիծը ներառում է թելերի ավտոմատ արձակումը `կախված 3D տպիչի աշխատանքի կարիքներից: Այն հիմնված է քաշի վիրտուալ տատանումների վրա, երբ էքստրուդերը սկսում է ձգել թելը: Այս իրադարձությունը միկրոկառավարիչին ստիպում է քաշի սենսորի միջոցով և շարժական թելերի գլանափաթեթը սկսում է մի քանի մատնաչափ նյութ բաց թողնել, այնուհետև դանդաղեցնել և կանգ առնել:

Բաղադրիչներն արտահանվել են STL ձևաչափով և 3D տպագրությամբ, այնուհետև զտվել և հավաքվել միասին: Ես ստեղծել եմ հատուկ աջակցություն ՝ շարժման հատվածը հիմքին հավասարեցնելու համար: Ավելի երկար ալյումինե երկաթուղին օգտագործվում էր նաև Arduino- ի և շարժիչի վահանի համար `ամբողջ գործիքը կոմպակտ և հեշտ տեղաշարժելու համար:

Դիզայնը ստեղծելիս ես հետևեցի մի շարք ենթադրությունների.

  • Ավտոմատացված շարժիչը դարձնելով գրեթե պարզ և հեշտ վերարտադրվող
  • Հնարավորինս նվազեցրեք այն պատրաստելու համար ոչ 3D տպագրվող բաղադրիչների քանակը
  • Հնարավորինս նվազեցրեք տպագրության ընթացքում էքստրուդերային ճնշումը
  • Օգտագործեք ցածր գնով և հեշտ ծրագրավորվող միկրոհսկիչ տախտակ
  • Օգտագործեք քաշի բեռի սենսորը `թելերի սպառումը և թելերով սնուցումը վերահսկելու համար Կառավարեք շրջակա միջավայրի աղմուկը` միջամտելով թելերի քաշի չափումներին:

Սա այն արդյունքն է, որին ես հասել եմ:

Քայլ 3: Հիմքի հավաքում

Հիմքի հավաքում
Հիմքի հավաքում
Հիմքի հավաքում
Հիմքի հավաքում
Հիմքի հավաքում
Հիմքի հավաքում

Առաջին քայլը հիմքի հավաքումն է քաշի տվիչով:

  1. Տեղադրեք կրող առանցքի փոքր խողովակը կրող անցքի մեջ
  2. Տեղադրեք երկու տարանջատող սկավառակներ առանցքակալի կողմերին
  3. Ներկայացրեք բաղադրիչները «U» չափի կրող հենարանի ներսում, որոնք հավասարեցնում են անցքերը
  4. տեղադրեք Ալենի պտուտակը մի կողմից, իսկ լվացքի մեքենան և ընկույզը մյուս կողմը ՝ փակելով ընկույզը առանց ավելորդ ջանքերի

Դուք պետք է կրկնեք գործողությունը կրող բոլոր չորս հենարանների վրա: Այնուհետեւ փորձարկեք հավաքը. Առանցքակալները պետք է ազատ պտտվեն:

Այժմ Ալենի պտուտակներով ամրացրեք վերևի հիմքի չորս կրող հենարանները ՝ կարգավորիչ չորս անցքերով: Հավասարեցրեք առանցքակալների հենարանները `դրանք զուգահեռ պահելու համար: Կարգավորեք հեռավորությունը ՝ կախված ձեր թելերի գլանների լայնությունից:

Հաջորդ քայլը քաշի սենսորային սանդղակի հավաքումն է ՝ ներքևի և վերին հիմքը միասին պահելով: Քաշի սենսորը երկու կողմերում ունի երկու տարբեր Ալեն պտուտակներ, և դուք պետք է այն կողմնորոշեք այնպես, որ առավելագույն քաշի պիտակը ընթեռնելի լինի, երբ հիմքը ճիշտ տեղադրված է: Ներքևի հիմքն ունի երկու լրացուցիչ կողային անցք `քաշի տվիչի A/D ուժեղացուցիչը ամրացնելու համար: HX711 IC- ի վրա հիմնված ուժեղացուցիչը կաշխատի և միացված կլինի Arduino- ի տախտակին չորս լարերի միջոցով, ինչպես ցույց է տրված կցված տվիչների տվյալների թերթիկում:

Վերջին քայլը ամբողջական վերին հիմքի հավաքումն է արդեն իսկ ներքևի մասում ամրացված քաշի տվիչի վրա:

Առաջին բաղադրիչը տեղադրված է:

Քայլ 4. Spool Motion Engine մասերի հավաքում

Spool Motion Engine մասերի հավաքում
Spool Motion Engine մասերի հավաքում
Spool Motion Engine մասերի հավաքում
Spool Motion Engine մասերի հավաքում
Spool Motion Engine մասերի հավաքում
Spool Motion Engine մասերի հավաքում

Պտույտի շարժիչի հավաքման ավելի հեշտ ընթացակարգը առանձին հավաքելն է չորս ամենակարևոր բաղադրիչները, այնուհետև ավարտել վերջնական շենքը.

Շարժիչի փոխանցման տուփի մեջ տեղակայված DC շարժիչը

DC շարժիչը պետք է տեղադրվի կառուցվածքի աջակցության կենտրոնական մասում. շարժիչը պտուտակելուց առաջ դուք պետք է որոշեք, թե որն է լինելու ձեր նախընտրած կողմը, որտեղ պետք է դնել փոխանցման տուփը `շարժիչը և շարժիչը պահող երկու թևերը ճիշտ հավասարեցնելու համար:

Քշված մեծ հանդերձում

Խոշոր հանդերձանքը պետք է պտուտակված լինի կտրված կոնաձև բլոկով ՝ Ալենի չորս պտուտակներով: Այս հանդերձանքը պտտվող առանցքի վրա արգելափակվելու է ընկույզներով. կոնաձև հատվածը կպահի թելիկավոր պտուտակը, որը մյուս կողմից կողպված է նման կողպեքի ընկույզներով ՝ մեկ այլ կտրված կոնաձև բլոկի ներսում: Այս լուծումը ոչ միայն պահում է շարժվող մեխանիզմը, այլ ուղղում է ամբողջ քաշը դեպի հիմք, և դա համակարգի տարայի քաշն է:

Կծիկի կողպեքի բռնիչը

Սա կտրված կոնաձև բլոկ է, որը քշված հանդերձանքի հետ միասին կողպման նման կողմը կպահի շարժման մեխանիզմը թելքի կծիկին: Որպես տակտ, թելերի գլանափաթեթն է ավարտում շենքը, մինչդեռ երկու ձեռքի հենարանն ազատ է մյուս կողմից շարժվելու համար:

Ինչպես ցույց է տրված նկարներում, կծիկի կողպեքը ամրացված է երկու մասի: Սկզբում տեղադրեք M4 ընկույզը բլոկի ավելի մեծ մասում, այնուհետև սոսնձեք երկրորդ մասը (ծածկը) ՝ բլոկները միասին պահելով: Ընկույզը մնում է փակված կողպեքի ամրակի ներսում, որը պտուտակված կլինի պտուտակավոր առանցքով:

Առանցքակալների տուփ

Կրող տուփն ունի երկու գործառույթ. Փոխանցման փոխանցման տուփերին լավ աջակցություն և սահուն և անաղմուկ շարժում: Կրող տուփը հավաքելու համար հետևեք այս պարզ քայլերին.

  1. Պտուտակեք առաջին M4 ընկույզը պտուտակավոր պտուտակավոր բռնակի առանցքի երկու ծայրերից մեկին
  2. Տեղադրեք առաջին կրողը
  3. Տեղադրեք անջատիչը
  4. Տեղադրեք երկրորդ կրողը
  5. Պտուտակեք երկրորդ ընկույզը և չափավոր կողպեք: Ներքին պլաստիկ տարանջատիչը կհակադրվի բավարար ուժի ՝ իրերը տեղում երկար պահելու համար:
  6. Տեղադրեք հավաքված առանցքակալները կրող տուփի մեջ: Դա պետք է արվի ավելի լավ արդյունքներ տալու համար, այնպես որ պլաստիկ մասերը կատարելագործելիս արկղի ներքին հատվածը շատ չընդլայնեք:

Մենք պատրաստ ենք բաղադրիչների վերջին հավաքմանը:

Քայլ 5. Շարժիչային շարժիչի հավաքման ավարտը

Ավարտելով շարժիչային շարժիչի հավաքումը
Ավարտելով շարժիչային շարժիչի հավաքումը
Ավարտելով շարժիչային շարժիչի հավաքումը
Ավարտելով շարժիչային շարժիչի հավաքումը
Ավարտելով շարժիչային շարժիչի հավաքումը
Ավարտելով շարժիչային շարժիչի հավաքումը

Մենք պատրաստվում ենք ավարտել կառուցվածքի հավաքումը, ապա կարող ենք անցնել շարժման փորձարկման: Այժմ ձեզ կրկին պետք է մի քանի սոսինձ: Առանցքակալ տուփը, որը հավաքվել է նախորդ քայլում, պետք է տեղադրվի երկու թևերի շարժիչի հենարանի տուփի ամրակի անցքում և, հնարավոր է, սոսնձվի տուփի կափարիչը պտուտակելուց առաջ:

Wգուշացում. Մի սոսնձեք տուփի կափարիչը, այլ միայն պտուտակեք այն: Կափարիչը կարևոր է փոշուց պաշտպանվելու համար և պետք է շարժական լինի ապագա սպասարկման ցանկացած գործողության համար:

Երբ այս կարգավորումն ավարտվի ՝ շարժիչ հանդերձանքը (ավելի մեծը) ավելացնելուց առաջ, ավելացրեք փոքր տարանջատիչ օղակը. Այն պահում է մեծ հանդերձը ՝ շարժիչի հանդերձին համապատասխանեցնելով, որպես լվացքի մեքենա ՝ ամրացված շարժվող հավաքածուն ամրացնելու համար:

Այնուհետեւ տեղադրեք վարորդի հանդերձանքը (փոքրը) շարժիչի լիսեռի մեջ: Ուշադրություն դարձրեք, որ շարժիչի մեջ, ինչպես նաև հանդերձանքի կենտրոնական անցքում, կա հարթ կողմ, որը հանդերձում պտտվողը պահում է DC շարժիչով:

Վերջին քայլը, տեղադրեք մեծ շարժիչ հանդերձանքը, ինչպես ցույց է տրված պատկերներում և կողպեք այն M5 երկու ընկույզով պտուտակած առանցքի վրա:

Մեխանիկայի շենքն ավարտված է:

Քայլ 6: Բոնուս. Ինչպես եմ ես հարմարեցրել հավաքակազմը կառավարելու աջակցությունը

Բոնուս. Ինչպես եմ հարմարեցրել հավաքածուն կառավարելու աջակցությունը
Բոնուս. Ինչպես եմ հարմարեցրել հավաքածուն կառավարելու աջակցությունը
Բոնուս. Ինչպես եմ հարմարեցրել հավաքածուն կառավարելու աջակցությունը
Բոնուս. Ինչպես եմ հարմարեցրել հավաքածուն կառավարելու աջակցությունը
Բոնուս. Ինչպես եմ հարմարեցրել հավաքածուն կառավարելու աջակցությունը
Բոնուս. Ինչպես եմ հարմարեցրել հավաքածուն կառավարելու աջակցությունը

Հավաքածուն տեղում պահելու համար ես պատրաստեցի շատ պարզ կառուցվածք, որը հիմնված էր երկու ալյումինե քառակուսի խողովակների վրա `ինչպես հիմքը, այնպես էլ շարժման կառուցվածքը: Հիմքը ամրացվել է չորս պտուտակներով երկու ռելսերի վրա (մոտ 25 սմ երկարություն), և մի քանի փոքր 3D տպագիր հենարաններով ես ամրացնում եմ շարժիչը, որը ազատ տեղաշարժվում է, որպեսզի թելքի գլանի տեղադրումն ու հեռացումը հեշտ լինի:

Oneանկացած անձ կարող է ընտրել իր լուծումը `կախված այն բանից, թե ինչպես է իր աշխատանքային սեղանը կազմակերպված:

Քայլ 7: Լարերի միացում և միացում Arduino- ին

Image
Image
Միացում և միացում Arduino- ին
Միացում և միացում Arduino- ին

Ինչպես նկարագրված է Kit- ի բովանդակության փուլում, ես օգտագործել եմ Infineon TLE94112LE DC շարժիչային վահանը Arduino- ի համար և շարժիչը փորձարկել եմ ինչպես Arduino UNO R3- ի, այնպես էլ Infineon XMC110 Boot Kit- ի վրա:

Եթե դուք վերահսկելու եք շարժիչը (անհրաժեշտ է PWM գործառույթներ) ձեր ընտրած DC կառավարման վահանակով, պարզապես հրահանգները հարմարեցրեք ձեր վահանի տեխնիկական բնութագրերին:

Նշում TLE04112LE Arduino Shield- ի վերաբերյալ

Arduino- ի շարժիչային կառավարման այլ վահաններով աշխատած սահմանափակումներից մեկն այն է, որ նրանք օգտագործում են միկրո վերահսկիչի նույն հատկությունները (այսինքն ՝ PWM և GPIO կապում); սա նշանակում է, որ ձեր խորհուրդը նվիրված է դառնում այս խնդիրներին, մինչդեռ այլ օգտագործման համար հասանելի են ընդամենը մի քանի այլ ռեսուրսներ (MPU և GPIO):

Հնարավորություն ունենալով ձեռքերը դնել TLE94122LE Arduino վահանի վրա ՝ ճանապարհային փորձարկումների համար, IC- ի առավել ակնհայտ առավելությունը, որի վրա հիմնված է տախտակը, դրա ամբողջականությունն է: Arduino- ի տախտակը կապում է վահանին SPI արձանագրության միջոցով `օգտագործելով ընդամենը երկու կապում: Վահան ուղարկված յուրաքանչյուր հրաման ինքնավար մշակվում է TLE94112LE IC- ի կողմից ՝ առանց MPU- ի ռեսուրսներ սպառելու: Infineon տախտակի մեկ այլ ուշագրավ առանձնահատկությունն այն է, որ հնարավոր է վերահսկել մինչև վեց խոզանակ շարժիչ ՝ երեք ծրագրավորվող PWM ալիքով: Սա նշանակում է, որ Arduino- ն կարող է տեղադրել մեկ կամ մի քանի շարժիչ, գործարկել դրանք և շարունակել աշխատել այլ առաջադրանքների վրա: Այս վահանը իդեալական բացահայտեց միաժամանակ մինչև վեց տարբեր թելերի գլանափաթեթներ պահելու համար: ՊՄՀ -ի վրա դրված խնդիրներից միայն մեկն է: Հաշվի առնելով վեց տարբեր թելերի կծիկները կառավարելու հնարավորությունը մեկ Arduino + վահանով, միկրոկառավարիչի ծախսերի ազդեցությունը ծախսերի վրա թելերի յուրաքանչյուր հսկիչի վրա `5 եվրոյից պակաս:

Քաշի տվիչ

Որոշ փորձեր կատարելուց հետո ես տեսա, որ հնարավոր է վերահսկել ամբողջ համակարգը `մոնիտորինգ և ավտոմատ սնուցում` մեկ սենսորով. բեռնախցիկը (քաշի տվիչ) ի վիճակի է դինամիկորեն չափել թելքի կծիկի քաշի տատանումները ՝ տրամադրելով մեզ անհրաժեշտ բոլոր տեղեկությունները:

Ես օգտագործել եմ 0-5 կգ միջակայքի էժան բեռնախցիկ ՝ փոքր տախտակի հետ միասին, որը հիմնված է HX711 AD ուժեղացուցիչի վրա, որը հատուկ է բեռնախցիկների տվիչների կառավարման համար: Միջերեսային խնդիրներ չեղան, քանի որ այն հասանելի է լավ աշխատող Arduino գրադարանով:

Սարքավորումների տեղադրման երեք քայլ

  1. Տեղադրեք վահանը Arduino տախտակի կամ Infineon XMC110 Boot Kit- ի վերևում
  2. Շարժիչի լարերը միացրեք վահանի Out1 և Out2 պտուտակված միակցիչներին
  3. Միացրեք հզորությունը և ազդանշանները HX711 AD քաշի տվիչի ուժեղացուցիչից Arduino կապումներին: Այս դեպքում ես օգտագործել եմ 2 -րդ և 3 -րդ կապերը, բայց բոլոր անվճար կապերը լավ են:

Arnգուշացում. Էջ 8 -ը և 10 -ը վերապահված են TLE94113LE վահանով ՝ SPI կապի համար

Վերջ! Պատրա՞ստ եք տեղադրել ծրագրակազմը: Շարունակիր.

Քայլ 8: Softwareրագրակազմի և կառավարման հրամանների հավաքածու

Softwareրագրակազմի և կառավարման հրամանի հավաքածու
Softwareրագրակազմի և կառավարման հրամանի հավաքածու
Softwareրագրակազմի և կառավարման հրամանի հավաքածու
Softwareրագրակազմի և կառավարման հրամանի հավաքածու
Softwareրագրակազմի և կառավարման հրամանի հավաքածու
Softwareրագրակազմի և կառավարման հրամանի հավաքածու
Softwareրագրակազմի և կառավարման հրամանի հավաքածու
Softwareրագրակազմի և կառավարման հրամանի հավաքածու

Ամբողջ փաստաթղթավորված ծրագրաշարը կարելի է ներբեռնել GitHub պահոցից 3DPrinterFilamentDispenserAndMonitor

այստեղ մենք դիտարկում ենք միայն ամենաիմաստուն մասերը և վերահսկման հրամանները:

Կա պատճառ, որը պարտադրված է Arduino UNO- ի հասանելի կապերի քանակով: Ես որոշեցի համակարգը վերահսկել USB սերիական տերմինալի միջոցով. Քանի որ յուրաքանչյուր շարժիչային միավոր հիմնված է քաշի տվիչի վրա, վեց տարբեր թելերի դիսպենսերների կառավարումը պահանջում է վեց քաշի տվիչների տվյալների ընթերցում: Յուրաքանչյուր բեռնախցիկ «սպառում» է երկու կապում, 0 և 1 կապերը վերապահված են (Tx/Rx) սերիայի համար, իսկ 8 և 10 կապերը վերապահված են TLE94112LE վահանը միացնող SPI ալիքին:

Համակարգի կարգավիճակը

Հսկիչ ծրագրակազմն աշխատում է չորս տարբեր վիճակների միջոցով, որոնք սահմանված են թելիկում: ժ.

#սահմանել SYS_READY «Պատրաստ» // Համակարգը պատրաստ է

#define SYS_RUN «Running» // Filament in use #define SYS_LOAD «Load» // Roll loaded #define SYS_STARTED «Started» // Application started // կարգավիճակի կոդեր #սահմանել STAT_NONE 0 #սահմանել STAT_READY 1 #սահմանել STAT_LOAD 2 #ff 3

Կարգավիճակը: Սկսվեց

Այս կարգավիճակը հայտնվում է ապարատային վերականգնումից հետո կամ երբ համակարգը միացված է: Միացման (և տեղադրման () զանգը, երբ ուրվագիծը սկսվում է) նախաստորագրում է ներքին կանխադրված արժեքները և պետք է սկսվի առանց լրացուցիչ քաշի հարթակի վրա, քանի որ սկզբնավորման հաջորդականության մի մասը բացարձակ թարի ձեռքբերումն է ՝ ֆիզիկական զրոյական քաշի հասնելու համար:.

Կարգավիճակ: Պատրաստ է

Պատրաստ վիճակը հայտնվում է փափուկ վերագործարկումից հետո (ուղարկված սերիական տերմինալից): Այն նման է ֆիզիկական մասնահատմանը, բայց ոչ մի թարի հաշվարկ չի կատարվում. վերականգնման հրամանը կարող է գործարկվել նաև այն դեպքում, երբ համակարգը աշխատում է:

Կարգավիճակը: Բեռնել

Բեռի կարգավիճակը տեղի է ունենում, երբ բեռի հրամանը ուղարկվում է տերմինալով: Սա նշանակում է, որ թելերի գլանափաթեթը բեռնված է, և հաշվարկվել է դինամիկ թարը: Թելերի ճշգրիտ քաշը ստացվում է շարժակազմի և դատարկ գլանափաթեթի քաշը հանած գլանափաթեթների տեսակից:

Կարգավիճակը ՝ վազում

Այս կարգավիճակը միացնում է քաշի ավտոմատ հաշվարկը և թելերի ավտոմատ դիսպանսերը:

Տերմինալային հաղորդագրություններ

Theրագրաշարի ընթացիկ տարբերակը մարդկային ընթեռնելի հաղորդագրությունները վերադարձնում է տերմինալ `կախված հրամաններից: Լարային հաղորդագրությունները սահմանվում են երկու վերնագրի ֆայլերում `commands.h (հրամանի հետ կապված հաղորդագրություններ և պատասխաններ) և filament.h (տողեր, որոնք վերլուծիչն օգտագործում է բարդ հաղորդագրություններ ստեղծելու համար):

Հրամաններ

Երկու տարբեր ֆայլեր ներգրավված են հրամանատարության կառավարման մեջ.

Մինչ ներքին հաշվարկներն ավտոմատ կերպով կատարվում են ծրագրային ապահովման միջոցով, ես իրականացրել եմ մի շարք հրամաններ `համակարգի վարքը սահմանելու և որոշ պարամետրեր ձեռքով վերահսկելու համար:

Հրամանի հիմնաբառերը մեծատառ են և պետք է ուղարկվեն տերմինալից: Եթե հրամանը չի համապատասխանում ընթացիկ կարգավիճակին, այն չի ճանաչվում, սխալ հրաման է ուղարկվում, հակառակ դեպքում հրամանը կատարվում է:

Կարգավիճակի հրամաններ

Փոխեք համակարգի ընթացիկ կարգավիճակը, և վարքագիծը նույնպես հարմարեցված է

Թելերի հրամաններ

Առանձին հրամանների միջոցով հնարավոր է թելերի և գլանների բնութագրեր սահմանել ՝ շուկայում առկա ամենատարածված քաշի և չափերի հիման վրա:

Միավորների հրամաններ

Սրանք մի քանի հրամաններ են `չափման միավորների տեսողականությունը գրամներով կամ սանտիմետրերով սահմանելու համար: Իրականում հնարավոր է վերացնել այս հրամանները և միշտ ներկայացնել տվյալները երկու ստորաբաժանումներում:

Տեղեկատվական հրամաններ

Showույց տալ տեղեկատվության խմբեր `կախված համակարգի կարգավիճակից

Շարժիչային հրամաններ

Կառավարեք շարժիչը թելերի սնուցման կամ քաշման համար:

Բոլոր շարժիչային հրամանները հետևում են արագացման/դանդաղեցման ուղուն: Երկու հրամանները feed and pull- ը կատարում են կարճ հաջորդականություն, ինչպես սահմանված է motor.h- ում FEED_EXTRUDER_DELAY մշտական ուժով, մինչդեռ feedc և pullc հրամանները գործում են անորոշ ժամանակով, մինչև չստացվի stop հրահանգը:

Գործող ռեժիմի հրամաններ

Գործող կարգավիճակը ընդունում է երկու ռեժիմ. ռեժիմի մարդը պարզապես պարբերաբար կարդում է քաշը և շարժիչը շարժվում է մինչև շարժիչի կառավարման հրաման չուղարկվի: Mode auto- ն փոխարենը կատարում է սնուցման երկու հրաման, երբ էքստրուդերին անհրաժեշտ է ավելի շատ թել:

Սկզբունքը հիմնված է քաշի ընթերցումների վրա, որոնք համատեքստավորված են տվյալ միջավայրին: Մենք ակնկալում ենք, որ թելերի սպառումը համեմատաբար դանդաղ է, 3D տպիչները գրեթե դանդաղ են, իսկ նորմալ քաշի տատանումները կախված են շրջակա միջավայրի թրթռումից (ավելի լավ է, եթե ամբողջ իրերը չդնեք 3D տպիչի վրա)

Երբ էքստրուդերը քաշում է թելը, փոխարենը քաշի տարբերությունը կտրուկ աճում է (50 գ կամ ավելի) շատ քիչ ժամանակում, սովորաբար երկու կամ երեք ընթերցումների միջև: Այս տեղեկատվությունը զտվում է այն ծրագրաշարի միջոցով, որը «հանում» է այդ նոր թելիկի անհրաժեշտությունը: Սխալ ընթերցումներից խուսափելու համար շարժիչի աշխատանքի ընթացքում քաշի տատանումները ընդհանրապես անտեսվում են:

Կիրառման տրամաբանություն

Կիրառման տրամաբանությունը բաշխվում է.ino main- ում (Arduino էսքիզ) երեք գործառույթի երկայնքով ՝ setup (), loop () և parseCommand (commandString)

Էսքիզը օգտագործում է երկու առանձին դասեր ՝ FilamentWeight դաս, որը կառավարում է թելերի բոլոր հաշվարկները և սենսորների ընթերցումը HX711 IC և MotorControl դասերի միջոցով ՝ միացնելով TLE94112LE Arduino վահանի ցածր մակարդակի մեթոդները:

կարգավորում ()

Մեկ անգամ գործարկվել է միացման ժամանակ կամ ապարատային սարքավորման վերագործարկումից հետո սկզբնականացնել դասերի օրինակները, կարգաբերել սարքավորումները և տերմինալային հաղորդակցությունը:

հանգույց ()

Հիմնական հանգույցի գործառույթը կառավարում է երեք տարբեր պայմաններ:

Չնայած համեմատաբար բարդ են քաշի տվիչների և շարժիչների երկու դասեր, կա առավելություն, որ արդյունքում ստացված ուրվագիծը իսկապես հեշտ է հասկանալ և կառավարել:

  1. Ստուգեք (ավտոմատ ռեժիմում), թե արդյո՞ք էքստրուդերը ավելի թել է պահանջում
  2. Եթե շարժիչն աշխատում է, ստուգեք ապարատային սխալները (վերադարձված է TLE94112LE- ով)
  3. Եթե առկա են սերիական տվյալներ, վերլուծեք հրամանը

parseCommand (commandString)

Վերլուծման գործառույթը ստուգում է սերիալից եկող տողերի առկայությունը և երբ հրաման է ճանաչվում, այն անմիջապես մշակվում է:

Յուրաքանչյուր հրաման գործում է որպես պետական մեքենա, որն ազդում է համակարգի որոշ պարամետրերի վրա. Այս տրամաբանությունից հետո բոլոր հրամանները կրճատվում են մինչև երեք հաջորդական գործողություններ.

  1. Ուղարկեք հրաման FilamentWeight դասին (քաշի հրամաններ) կամ MotorControl դասին (շարժիչի հրամաններ)
  2. Կատարում է քաշի արժեքների թարմացման կամ ներքին պարամետրերից մեկի թարմացման հաշվարկ
  3. Theուցադրել տերմինալի և տեղեկատվության ելքի վրա, երբ կատարումն ավարտված է

Տեղադրեք HX711 Arduino գրադարանը, ներբեռնեք ծրագրակազմը GitHub- ից և վերբեռնեք այն ձեր Arduino տախտակին, ապա վայելեք:

Խորհուրդ ենք տալիս: