Բովանդակություն:
- Քայլ 1. Arduino Pulse Induction Idea - Flip Coil
- Քայլ 2. Ստեղծեք դետեկտոր (Breadboard)
- Քայլ 3: Գնացեք PCB
- Քայլ 4. Դետեկտորի կարգավորում և օգտագործում
- Քայլ 5: Թարմացնել 1. Օգտագործելով 16x2 LCD էկրան
Video: Arduino- ի վրա հիմնված իմպուլսային ինդուկցիայի դետեկտոր - մատով խփել. 5 քայլ (նկարներով)
2024 Հեղինակ: John Day | [email protected]. Վերջին փոփոխված: 2024-01-30 09:50
Գաղափարը
Նախկինում տարբեր արդյունքների հասնելով մետաղական դետեկտորներ կառուցելով, ես ցանկացա ուսումնասիրել Arduino- ի հնարավորություններն այդ ուղղությամբ:
Կան մի քանի լավ օրինակներ, թե ինչպես կարելի է Arduino- ով մետաղական դետեկտորներ կառուցել, ոմանք այստեղ ՝ որպես հրահանգներ: Բայց երբ դրանք նայում են, դրանք սովորաբար պահանջում են անալոգային ազդանշանի բուժման համար կամ բավականին արտաքին բաղադրիչներ, կամ զգայունությունը բավականին ցածր է:
Մետաղական դետեկտորների մասին մտածելիս հիմնական թեման այն է, թե ինչպես զգալ որոնման կծիկի հետ կապված ազդանշանների լարման փոքր փոփոխությունները: Այս փոփոխությունները սովորաբար շատ փոքր են: Առավել ակնհայտ մոտեցումը կլինի ATmega328- ի անալոգային մուտքերի օգտագործումը: Տեխնիկական պայմաններին նայելով ՝ կա երկու հիմնական խնդիր. Դրանք (հաճախ) դանդաղում են, իսկ լուծումը (շատ դեպքերում) ցածր է:
Մյուս կողմից, Arduino- ն աշխատում է 16 ՄՀց հաճախականությամբ և ունի բավականին ժամանակային հնարավորություններ, i. ե. 0,0625µS լուծում, եթե օգտագործում եք ժամացույցի արագություն: Այսպիսով, անալոգային մուտքը զգայարան օգտագործելու փոխարեն, լարման փոքր դինամիկ փոփոխություններ զգալու ամենապարզ միջոցը ժամանակի ընթացքում լարման անկման փոփոխությունը համեմատել ֆիքսված հղման լարման ժամանակ:
Այդ նպատակով ATmega328- ն ունի D6- ի և D7- ի միջև ներքին համեմատիչի կոկիկ հատկություն: Այս համեմատիչը ի վիճակի է առաջացնել ընդհատում ՝ հնարավորություն տալով իրադարձությունների ճշգրիտ մշակմանը: Միլիս () և միկոս () կոշտ կոդավորված ռեժիմների կողքին թողնելով և ATmega328- ի ներքին ժամաչափ մտնելը շատ ավելի բարձր լուծմամբ, Arduino- ն հիանալի հիմք է մետաղների հայտնաբերման մոտեցումների համար:
Այսպիսով, սկզբնաղբյուրի տեսանկյունից, լավ սկիզբ կլինի ծրագրել ներքին համեմատիչին մուտքերի բևեռայնության «փոփոխության» համար և օգտագործել ներքին հաշվիչ `առավելագույն հնարավոր արագությամբ` փոփոխությունների ժամանակի փոփոխման համար:
Arduido- ում սա հասնելու համար ընդհանուր կոդն է.
// Բոլոր նախնական փոփոխականների և այլնի սահմանում և գրանցամատյանների ստեղծում
անստորագիր char clockSelectBits = _BV (CS10); // ոչ նախնական, ամբողջական xtal void setup () {pinMode (6, INPUT); // + համեմատիչի - դրանք որպես INPUT դնելով, դրանք // սահմանվում են բարձր դիմադրողականության pinMode (7, INPUT); // - համեմատիչի - դրանք INPUT դնելով, դրանք // սահմանվում են բարձր դիմադրողականության cli (); // stop ընդհատում TCCR1A = 0; // ամբողջ TCCR1A գրանցամատյանը սահմանել 0 TCCR1B = 0; // նույնը TCCR1B -> նորմալ ռեժիմի համար TTCNT1 = 0; // նախաստորագրել հաշվիչի արժեքը 0 -ի համար; TCCR1B | = clockSelectBits; // սահմանում է նախալեզվիչ և սկսում ժամացույցը TIMSK1 = _BV (TOIE1); // սահմանում է ժմչփի արտահոսքի ընդհատումը հնարավորություն տալիս bit sei (); // թույլ տալ ընդհատումներ ACSR = (0 << ACD) | // Անալոգային համեմատիչ `միացված (0 << ACBG) | // Անալոգային համեմատիչ Bandgap Select: AIN0 կիրառվում է դրական մուտքի վրա (0 << ACO) | // Անալոգային համեմատիչի ելք. Անջատված (1 << ACI) | // Անալոգային համեմատիչի ընդհատման դրոշ. Հստակ ջնջման ընդհատում (1 << ACIE) | // Անալոգային համեմատիչի ընդհատում. Միացված է (0 << ACIC) | // Անալոգային համեմատիչի մուտքային նկարահանում. Հաշմանդամ (0 << ACIS1 | 0 << ACIS0 // ընդհատում ելքային միացման/ // (0 << ACIS1 | 1 << ACIS0 // վերապահված // (1 << ACIS1 | 0 << ACIS0 // ընդհատում ելքի եզրին ընկնելիս // (1 << ACIS1 | 1 << ACIS0 // ընդհատում մուտքի եզրին բարձրանալիս;}
// այս ռեժիմը կոչվում է ամեն անգամ, երբ համեմատիչը ստեղծում է ընդհատում
ISR (ANALOG_COMP_vect) {oldSREG = SREG; cli (); timeStamp = TCNT1; SREG = հին SREG; }
// այս ռեժիմը կոչվում է ամեն անգամ, երբ ներքին հաշվիչում հեղեղ է լինում
ISR (TIMER1_OVF_vect) {timer1_overflow_count ++; }
// այս ռեժիմը օգտագործվում է ժամաչափը 0 -ի վերակայելու համար
void resetTimer (void) {oldSREG = SREG; cli (); // Անջատել ընդհատումները TCNT1 = 0; // նախաստորագրել 0 -ի SREG = oldSREG արժեքը; // Վերականգնել կարգավիճակի գրանցամատյանը TCCR1B | = clockSelectBits; // սահմանում է նախալեզվիչ և սկսում ժամացույցի ժամաչափը 1_հոսքի_հաշիվ = 0; // վերականգնում է գերհոսքի հաշվիչը}
Իհարկե, այս գաղափարը բոլորովին նոր չէ: Այս ծածկագրի հիմնական մասը կարելի է գտնել այլուր: TCIMD - TPIMD - Tiny Pulse Induction Metal Detector- ի գլխավոր էջում հայտնաբերված նման մոտեցման լավ իրականացում:
www.miymd.com/index.php/projects/tpimd/ (ցավոք, այս էջն այլևս առցանց չէ, ներկայումս կա կայքի կրկնօրինակում ՝ www.basic4mcu.com հասցեով, որը փնտրում է «TPIMD»):
Քայլ 1. Arduino Pulse Induction Idea - Flip Coil
Գաղափարն այն է, որ Arduino- ն օգտագործվի որպես զարկերակային ինդուկցիայի դետեկտոր, ինչպես TPIMD- ում, քանի որ քայքայման կորի ժամանակացույցի գաղափարը բավականին լավ է աշխատում: Իմպուլսային ինդուկցիայի դետեկտորների խնդիրն այն է, որ դրանք սովորաբար տարբեր լարման կարիք ունեն աշխատելու համար: Մեկ լարումը ՝ կծիկին սնուցելու համար, և առանձին լարվածություն ՝ քայքայման կորը հաղթահարելու համար: Լարման այս երկու աղբյուրները զարկերակային ինդուկցիայի դետեկտորները դարձնում են միշտ մի փոքր բարդ:
Նայելով կծիկի լարմանը PI դետեկտորում, արդյունքում կորը կարող է բաժանվել երկու տարբեր փուլերով: Առաջին փուլը ինքնին զարկերակն է, որը սնուցում է կծիկը և կառուցում մագնիսական դաշտը (1): Երկրորդ փուլը լարման անկման կորն է ՝ սկսած լարման գագաթնակետից, այնուհետև արագ շարժվելով դեպի կծիկի «առանց էներգիայի» լարման (2): Խնդիրն այն է, որ կծիկը զարկերակից հետո փոխում է իր բևեռականությունը: Արդյո՞ք զարկերակը դրական է (Var 1. կցված նկարում) քայքայման կորը բացասական է: Արդյո՞ք զարկերակը բացասական է, քայքայման կորը կլինի դրական (Վար 2. կցված նկարում)
Այս հիմնական խնդիրը լուծելու համար կծիկը պետք է «շրջվի» էլեկտրոնային եղանակով ՝ զարկերակից հետո: Այս դեպքում զարկերակը կարող է լինել դրական, իսկ քայքայման կորը ՝ նույնպես:
Դրան հասնելու համար կծիկը զարկերակից հետո պետք է մեկուսացված լինի Vcc- ից և GND- ից: Այս պահին կա միայն հոսանք, որը հոսում է թուլացնող ռեզիստորի միջով: Կծիկի և թուլացման դիմադրության մեկուսացված այս համակարգը կարող է «կողմնորոշվել» ցանկացած հղման լարման վրա: Սա, տեսականորեն, կստեղծի համակցված դրական կորի (գծագրի ներքևում)
Այս դրական կորը կարող է օգտագործվել համեմատիչի միջոցով `ժամանակի այն կետը հայտնաբերելու համար, որտեղ քայքայման լարումը« հատում է »հղման լարումը: Կծիկին մոտ գտնվող գանձերի դեպքում քայքայման կորը փոխվում է, և տեղեկամատյան լարման անցման ժամանակը: Այս փոփոխությունը կարելի է հայտնաբերել:
Որոշ փորձարկումներից հետո հետևյալ միացումն աշխատեց:
Շղթան բաղկացած է Arduino Nano մոդուլից: Այս մոդուլը վարում է երկու MOSFET տրանզիստոր, որոնք սնուցում են կծիկը (SV3- ում) D10- ի միջոցով: Երբ D10- ում զարկերակն ավարտվում է, երկու MOSFET- երը մեկուսացնում են 12V- ից և GND- ից ոլորուն: Կծիկի խնայված էներգիան արյունահոսում է R2 (220 Օմ) միջով: Միևնույն ժամանակ, R1 (560 Օմ) միացնում է կծիկի նախկին դրական կողմը tho GND- ին: Սա փոխում է R5- ի (330 Օմ) բացասական քայքայման կորը դեպի դրական կոր: Դիոդները պաշտպանում են Arduino- ի մուտքային քորոցը:
R7- ը լարման անջատիչ է `մոտ 0.04 Վ: Այս պահին D7- ի քայքայման կորը դառնում է ավելի բացասական, քան D6- ում 0.04 -ը, ընդմիջումը գործարկվում է, և զարկերակի ավարտից հետո տևողությունը պահպանվում է:
Կծիկին մոտ մետաղի դեպքում քայքայման կորը տևում է ավելի երկար, իսկ զարկերակի ավարտի և ընդհատման միջև ընկած ժամանակահատվածը երկարում է:
Քայլ 2. Ստեղծեք դետեկտոր (Breadboard)
Դետեկտոր կառուցելը բավականին հեշտ է: Դա կարելի է անել կամ տախտակի վրա (կպչելով սկզբնական շրջանին), կամ մասերը կպցնելով PCB- ի վրա:
Arduino Nano տախտակի վրա D13 LED- ն օգտագործվում է որպես մետաղի ցուցում
Հացաթուղթ բացելը աշխատանքային դետեկտորին հասնելու ամենաարագ ճանապարհն է: Բավականին մի շարք էլեկտրագծեր են անհրաժեշտ, այնուամենայնիվ դա կարելի է անել մի փոքրիկ տախտակով: Նկարներում սա ցուցադրվում է 3 քայլով, քանի որ Arduino- ն և MOSFET- ը թաքցնում են լարերի մի մասը: Փորձարկման ժամանակ ես ինչ -որ կերպ անջատեցի դիոդները ՝ սկզբում չնկատելով: Սա բացասական ազդեցություն չի ունեցել դետեկտորի վարքագծի վրա: Շղթայի PCB տարբերակում ես դրանք ամբողջությամբ դուրս եմ թողել:
Նկարներում ցուցադրված չեն 0.96 OLED էկրանին միացումները: Այս ցուցադրումը միացված է.
Vcc - 5V (Arduino- ի կապում, ոչ թե մատակարարման լարման !!!)
GND - GND
SCL - A5
SDA - A4
Այս OLED էկրանը անհրաժեշտ է սկզբում դետեկտորը չափաբերելու համար: Դա արվում է Arduino- ի PIN6- ում ճիշտ լարումը սահմանելով: Այս լարումը պետք է լինի մոտ 0.04 Վ: Theուցադրումն օգնում է ճիշտ լարումը սահմանել:
Գրատախտակի տարբերակը բավականին լավ է աշխատում, չնայած, հավանաբար, պիտանի չէ բնություն գնալու համար:
Քայլ 3: Գնացեք PCB
Ինչ վերաբերում է զոդմանը, ես իսկապես չեմ սիրում երկկողմանի բարձր տեխնոլոգիական PCB, այնպես որ ես փոխեցի սխեման, որպեսզի այն տեղավորվի միակողմանի PCB- ի վրա:
Հետևյալ փոփոխությունները կատարվեցին.
1. դիոդները դուրս են մնացել:
2. MOSFET- ի դարպասները ստացել են 10 Օմ դիմադրություն
3. D6- ում լարման բաժանարարի մատակարարման լարումը տրվում է D8- ի Բարձր մակարդակի ազդանշանով
4. MOSFET- երի վարորդի քորոցը փոխվեց:
Այս կերպ կարելի է ստեղծել միակողմանի PCB, որը կարող է զոդվել ունիվերսալ PCB- ներով: Այս սխեմայի միջոցով դուք կունենաք աշխատող PI դետեկտոր `ընդամենը 8-10 արտաքին բաղադրիչներով (կախված այն բանից, թե OLED էկրանը և/կամ բարձրախոսը օգտագործվում են):
Քայլ 4. Դետեկտորի կարգավորում և օգտագործում
Եթե դետեկտորը ճիշտ է կառուցված, և ծրագիրը գրված է Arduino- ում, միավորը տեղադրելու ամենահեշտ (եթե ոչ միակ) եղանակը OLED էկրան օգտագործելն է: Էկրանը կցված է 5V, GND, A4, A5: Սարքը միացնելուց հետո էկրանը պետք է ցուցադրի «չափաբերում»: Մի քանի վայրկյան հետո այն պետք է ասի «calibration done», իսկ էկրանին պետք է ցուցադրվի երեք թիվ:
Առաջին համարը ճշգրտման ընթացքում հայտնաբերված «տեղեկատու արժեքն» է: Երկրորդ արժեքը վերջին չափված արժեքն է, իսկ երրորդը `վերջին 32 չափումների միջին արժեքը:
Այս երեք արժեքները պետք է լինեն քիչ թե շատ նույնը (իմ 1000-ից ցածր թեստային դեպքերում): Միջին արժեքը պետք է լինի քիչ թե շատ կայուն:
Նախնական կարգավորումը սկսելու համար կծիկին մոտ չպետք է մետաղ լինի:
Այժմ լարման բաժանարարը (պոտենցիոմետր) պետք է կտրել այնպես, որ ստորին երկու արժեքները պետք է սահմանվեն առավելագույնի վրա ՝ միևնույն ժամանակ կայուն ընթերցում տալով: Գոյություն ունի կրիտիկական պարամետր, որտեղ միջին արժեքը սկսում է տարօրինակ ընթերցումներ տալ: Հետ շրջեք հարմարվողական սարքը `կրկին կայուն արժեքներ ստանալու համար:
Կարող է պատահել, որ էկրանը սառչի: Պարզապես սեղմեք վերականգնման կոճակը և սկսեք նորից:
Իմ տեղադրման համար (կծիկ ՝ 18 պտույտ @ 20 սմ) կայուն արժեքը մոտ 630-650 է: Տեղադրվելուց հետո սեղմեք վերակայման կոճակը, միավորը նորից չափագրվում է, և ծառի բոլոր արժեքները կրկին պետք է լինեն նույն տիրույթում: Եթե այժմ մետաղը կծիկ է բերվում, ապա Arduino-Board (D13)-ի LED- ը պետք է լուսավորվի: Կցված բարձրախոսը տալիս է սեղմման մի քանի ձայներ (այնտեղ ծրագրավորման բարելավման տեղ կա):
Բարձր ակնկալիքները կանխելու համար.
Դետեկտորն իսկապես հայտնաբերում է որոշ իրեր, բայց մնում է շատ պարզ և սահմանափակ դետեկտոր:
Հնարավորությունների մասին տպավորություն թողնելու համար a- ն որոշ տեղեկատու հայտնաբերումներ կատարեց տարբեր այլ դետեկտորների հետ: Նայելով արդյունքներին ՝ այն դեռևս բավականին տպավորիչ է միայն 8 արտաքին մասերով, բայց չհամապատասխանող պրոֆեսիոնալ դետեկտորների համար նախատեսված դետեկտորի համար:
Շրջանակին և ծրագրին նայելով ՝ բարելավման շատ տեղ կա: Ռեզիստորների արժեքները հայտնաբերվել են փորձով, 250 մգ զարկերակի ժամանակը ընտրվել է պատահականորեն, կծիկի պարամետրերը ՝ նույնպես: Եթե ունեք բարելավումների գաղափարներ, ես ավելի քան ուրախ կլինեի դրանք քննարկել:
Զվարճանալ!
Քայլ 5: Թարմացնել 1. Օգտագործելով 16x2 LCD էկրան
Բարելավումներ
Հետագա փորձարկումների ընթացքում ես հասկացա, որ I2C OLED էկրանին ներկայացվող գրադարանը զգալի ժամանակ է ծախսում: Այսպիսով, ես որոշեցի դրա փոխարեն օգտագործել 16x2 էկրան ՝ I2C փոխարկիչով:
Այսպիսով, ես ընդունեցի ծրագիրը LCD էկրանին `ավելացնելով որոշ օգտակար հատկություններ: Էկրանի առաջին տողը այժմ ցույց է տալիս հնարավոր ցուցման ազդանշանի ուժը: Երկրորդ տողը այժմ ցույց է տալիս երկու արժեք: Բռունցքը ցույց տվեց ընթացիկ ազդանշանի շեղումը `չափաբերման արժեքի համեմատ: Այս արժեքը պետք է լինի «0»: Եթե այս արժեքը մշտապես բացասական կամ դրական է, ապա դետեկտորը պետք է նորից չափաբերվի ՝ սեղմելով վերակայման կոճակը: Դրական արժեքները ցույց են տալիս մետաղը կծիկին մոտ:
Երկրորդ արժեքը ցույց է տալիս քայքայման կորի փաստացի հետաձգման արժեքը: Այս արժեքը սովորաբար այնքան էլ հետաքրքիր չէ, բայց անհրաժեշտ է դետեկտորի սկզբնական կարգավորման համար:
Programրագիրը այժմ թույլ է տալիս մի քանի զարկերակային տևողություն հաջորդականությամբ (փորձարկումներ / կատարողականի բարելավման միջոցներ): Ես ոչ մի ճեղքման չեմ հասել: Այսպիսով, կանխադրվածը սահմանվում է մեկ զարկերակի տևողության վրա:
Դետեկտորի նախնական կարգավորումը
Դետեկտորը տեղադրելիս երկրորդ տողի երկրորդ արժեքը տեղին է (առաջինը կարող է անտեսվել): Սկզբում արժեքը կարող է լինել «անկայուն» (տես նկարը): Պտտեք զարդանախշերի դիմադրությունը մինչև արժեքը հասնի կայուն ընթերցման: Այնուհետև շրջեք ՝ արժեքը առավելագույն կայուն արժեքի հասցնելու համար: Սեղմեք «Վերականգնել» կոճակը ՝ նորից չափագրելու համար, և դետեկտորը պատրաստ է օգտագործման համար:
Ինձ մոտ տպավորություն ստեղծվեց, որ սահմանելով առավելագույն կայուն արժեքը `ես կորցրեցի զգայունությունը ոչ երկաթե մետաղների նկատմամբ: Այսպիսով, գուցե արժե մի քանի անգամ փորձարկել պարամետրերը `ոչ երկաթե իրերի նկատմամբ լավ զգայունություն ունենալու համար:
Կծիկներ
Ես կառուցում եմ 3 կծիկ ՝ հետագա փորձարկման համար
1 -> 18 պտույտ @ 200 մմ
2 -> 25 պտույտ @ 100 մմ
3 -> 48 պտույտ @ 100 մմ
Հետաքրքիր է, որ բոլոր կծիկներն աշխատել են բավականին լավ ՝ գրեթե նույն կատարմամբ (20 կիթ մետաղադրամ ՝ 40-50 մմ օդում): Սա կարող է լինել բավականին սուբյեկտիվ դիտարկում:
Խորհուրդ ենք տալիս:
LDR- ի վրա հիմնված լույսի ցուցիչ/դետեկտոր `3 քայլ
LDR- ի վրա հիմնված լույսի ցուցիչ/դետեկտոր. Լույսի տվիչներն ու դետեկտորները չափազանց օգտակար են միկրոկոնտրոլերների և ներդրված համակարգերի համար, ինչպես նաև ինտենսիվության մոնիտորինգ: Նման սենսորներից ամենապարզ և ամենաէժանը LDR- ն է: LDR կամ թեթև կախյալ դիմադրիչները հեշտությամբ կարող են օգտագործվել
Եղանակի վրա հիմնված երաժշտության գեներատոր (ESP8266 վրա հիմնված միջինի գեներատոր). 4 քայլ (նկարներով)
Եղանակի վրա հիմնված երաժշտության գեներատոր (ESP8266 Based Midi Generator). Բարև, այսօր ես կբացատրեմ, թե ինչպես պատրաստել ձեր սեփական եղանակի վրա հիմնված փոքր երաժշտության գեներատոր: Այն հիմնված է ESP8266- ի վրա, որը նման է Arduino- ին և արձագանքում է ջերմաստիճանին, անձրևին: և լույսի ուժգնություն: Մի ակնկալեք, որ այն ամբողջ երգեր կամ ակորդներ կհաղորդի
Գնահատման վրա հիմնված առիթմիայի դետեկտոր Arduino- ի միջոցով. 7 քայլ
Arduino- ի միջոցով օգտագործվող ռիթմի ռիթմի դետեկտոր. Սրտի ռիթմի խանգարումներն ամեն տարի տառապում են մոտ չորս միլիոն ամերիկացիների (Տեխասի սրտի ինստիտուտ, պարբ. 2): Թեև յուրաքանչյուր սիրտ ռիթմի և փոխարժեքի փոփոխություններ է ունենում, սրտի քրոնիկ առիթմիաները կարող են մահացու լինել իրենց զոհերի համար: Շատ սրտի ռիթմեր
DIY Arduino- ի վրա հիմնված իմպուլսային ինդուկցիոն մետաղադետեկտոր `5 քայլ
DIY Arduino- ի վրա հիմնված իմպուլսային ինդուկցիայի մետաղական դետեկտոր. Սա համեմատաբար պարզ մետաղական դետեկտոր է `գերազանց կատարումներով
Arduino- ի վրա հիմնված իմպուլսային ինդուկցիայի դետեկտոր - LC -Trap: 3 քայլ
Arduino- ի վրա հիմնված իմպուլսային ինդուկցիայի դետեկտոր-LC-Trap. Երբ փնտրում էի պարզ գաղափարներ Արդինո իմպուլսային ինդուկցիայի պարզ դետեկտորի համար, միայն մեկ մատակարարման լարվածությամբ, ես հանդիպեցի Teemo- ի գլխավոր էջին ՝ http: //www.digiwood.ee/8-electronic- նախագծեր/2-մետաղ-դետեկտոր-շրջան Նա ստեղծեց պարզ զարկերակային ինդուկտ