Orodha ya maudhui:

Kigunduzi cha Uingizaji wa Pulse ya Arduino - Flip Coil: Hatua 5 (na Picha)
Kigunduzi cha Uingizaji wa Pulse ya Arduino - Flip Coil: Hatua 5 (na Picha)

Video: Kigunduzi cha Uingizaji wa Pulse ya Arduino - Flip Coil: Hatua 5 (na Picha)

Video: Kigunduzi cha Uingizaji wa Pulse ya Arduino - Flip Coil: Hatua 5 (na Picha)
Video: Output DC or AC Voltage using MCP4725 DAC with LCD and PWM to Voltage Converter with Arduino 2024, Julai
Anonim
Detector ya Uingizaji wa Pulse ya Arduino - Flip Coil
Detector ya Uingizaji wa Pulse ya Arduino - Flip Coil
Detector ya Uingizaji wa Pulse ya Arduino - Flip Coil
Detector ya Uingizaji wa Pulse ya Arduino - Flip Coil

Wazo

Baada ya kujenga vichunguzi vya chuma hapo zamani na matokeo tofauti nilitaka kuchunguza uwezo wa Arduino kwa mwelekeo huo.

Kuna mifano mizuri ya jinsi ya kujenga vifaa vya kugundua chuma na Arduino, zingine hapa zikiwa za kufundisha. Lakini wakati wa kuziangalia, kawaida zinahitaji vifaa vya nje vya matibabu ya ishara ya analog au unyeti ni mdogo sana.

Wakati wa kufikiria juu ya vichunguzi vya chuma, mada kuu ni jinsi ya kuhisi mabadiliko kidogo ya voltage katika ishara zinazohusiana na coil ya utaftaji. Mabadiliko haya kawaida ni ndogo sana. Njia dhahiri zaidi itakuwa katika kutumia pembejeo za analog ya ATmega328. Lakini ukiangalia uainishaji kuna shida mbili za kimsingi: ni (mara nyingi) kupungua na azimio ni (mara nyingi) hadi chini.

Kwa upande mwingine, Arduino inaendesha 16MHz na ina uwezo wa muda i. e. azimio la 0.0625µS ikiwa unatumia kasi ya saa. Kwa hivyo badala ya kutumia pembejeo ya analogi kuhisi, njia rahisi ya kuhisi mabadiliko madogo ya nguvu katika voltage ni kulinganisha mabadiliko ya kushuka kwa voltage kwa wakati kwa voltage ya rejea ya kudumu.

Kwa kusudi hili ATmega328 ina huduma nadhifu ya kulinganisha ndani kati ya D6 D7. Kilinganishi hiki kinaweza kusababisha usumbufu, na kuwezesha utunzaji wa hafla sahihi. Ukiacha kando ya utaratibu mzuri wa nyakati kama vile millis () na micos () na kuingia kwenye kipima muda cha ndani cha ATmega328 na azimio kubwa zaidi, Arduino ni msingi mzuri wa mbinu za kugundua chuma.

Kwa hivyo kutoka kwa mtazamo wa nambari ya chanzo, mwanzo mzuri utakuwa kupanga kulinganisha kwa ndani kwa "mabadiliko" kwa polarity ya pembejeo na kutumia kaunta ya ndani na kasi kubwa zaidi inayowezekana ya mabadiliko katika muda wa mabadiliko.

Nambari ya jumla huko Arduido ili acheive hii ni:

// Kufafanua vigeuzi vyote vya mapema n.k na kuanzisha rejista

saa ya char isiyosajiliwaSelectBits = _BV (CS10); // hakuna muhtasari, usanidi kamili wa xtal batili () {pinMode (6, INPUT); // + ya kulinganisha - kwa kuiweka kama INPUT, wao ni // kuweka kwa pinMode ya juu ya impedance (7, INPUT); // - ya kulinganisha - kwa kuiweka kama INPUT, wao ni // wamewekwa kwenye hali ya juu ya hali ya juu (); // kuacha kusumbua TCCR1A = 0; // weka rejista yote ya TCCR1A kwa 0 TCCR1B = 0; // sawa kwa TCCR1B -> hali ya kawaidaTCNT1 = 0; // kuanzisha thamani ya kukabiliana na 0; TCCR1B | = saaChaguaBits; // huweka daktari na kuanza saa TIMSK1 = _BV (TOIE1); // inaweka kukatika kwa kipima muda kuwezesha bit sei (); // kuruhusu kukatiza ACSR = (0 << ACD) | // Msaidizi wa Analog: Imewezeshwa (0 << ACBG) | // Bandgap ya Analog ya Analog Chagua: AIN0 inatumika kwa pembejeo nzuri (0 << ACO) | // Pato la kulinganisha la Analog: Imezimwa (1 << ACI) | // Bendera ya Usumbufu wa Analog ya Analog: Futa Usumbufu Unaosubiri (1 << ACIE) | // Usumbufu wa kulinganisha kwa Analog: Imewezeshwa (0 << ACIC) | Kukamata Uingizaji wa Anasa ya Anasa ya Analog: Walemavu (0 << ACIS1 | 0 << ACIS0 // kukatiza kwa kugeuza pato // (0 << ACIS1 | 1 << ACIS0 // zimehifadhiwa // (1 << ACIS1 | 0 << ACIS0 // kukatiza kwenye pato la kuanguka kwa pato // (1

// utaratibu huu unaitwa kila wakati kulinganisha hutengeneza usumbufu

ISR (ANALOG_COMP_vect) {oldSREG = SREG; cli (); mudaStamp = TCNT1; SREG = zamaniSREG; }

// utaratibu huu unaitwa kila wakati kuna mafuriko katika kaunta ya ndani

ISR (TIMER1_OVF_vect) {timer1_overflow_count ++; }

// utaratibu huu hutumiwa kuweka kipima muda kuwa 0

batili resetTimer (batili) {oldSREG = SREG; cli (); // Lemaza kukatiza TCNT1 = 0; // anzisha thamani ya kaunta kwa 0 SREG = oldSREG; // Rejesha sajili ya hali TCCR1B | = saaChaguaBits; // set prescaler na kuanza saa timer1_overflow_count = 0; // kuweka upya kaunta ya kufurika}

Kwa kweli wazo hili sio mpya kabisa. Sehemu kuu ya nambari hii inaweza kupatikana mahali pengine. Utekelezaji mzuri aproach kama hiyo kwa mdhibiti mdogo aliyepatikana kwenye ukurasa wa nyumbani wa TPIMD - Tiny Pulse Induction Metal Detector.

www.miymd.com/index.php/projects/tpimd/ (kwa bahati mbaya ukurasa huu hauko mkondoni tena, kwa sasa kuna nakala rudufu ya wavuti kwenye www.basic4mcu.com, seach ya "TPIMD").

Hatua ya 1: Wazo la Uingizaji wa Arduino Pulse - Flip Coil

Wazo la Uingizaji wa Arduino Pulse - Flip Coil
Wazo la Uingizaji wa Arduino Pulse - Flip Coil
Wazo la Uingizaji wa Arduino Pulse - Flip Coil
Wazo la Uingizaji wa Arduino Pulse - Flip Coil

Wazo ni kutumia Arduino kama kigunduzi cha kuingiza Pulse, kama vile TPIMD, kwani wazo la wakati wa uozo linaonekana likifanya kazi vizuri. Shida na vifaa vya kugundua Pulse ni, kwamba kawaida wanahitaji voltage tofauti kufanya kazi. Voltage moja ya kuwezesha coil na voltage tofauti kushughulikia curve ya kuoza. Vyanzo hivi viwili vya voltage hufanya vitambuzi vya kuingiza kunde kila wakati kuwa ngumu kidogo.

Kuangalia voltage ya coil kwenye kigunduzi cha PI, curve inayosababishwa inaweza kugawanywa katika hatua mbili tofauti. Hatua ya kwanza ni kunde yenyewe inayowezesha coil na kujenga uwanja wa sumaku (1). Hatua ya pili ni upinde wa kuoza kwa voltage, ukianza na kilele cha voltage, halafu ikiongezeka haraka kwa voltage ya "hakuna-nguvu" ya coil (2). Shida ni kwamba coil inabadilisha polarity yake baada ya kunde. Je! Kunde ni chanya (Var 1. kwenye picha iliyoambatishwa) uozo-hasi ni hasi. Je! Pulse hasi, curve ya kuoza itakuwa chanya (Var 2. kwenye picha iliyoambatanishwa)

Ili kutatua shida hii ya msingi, coil inahitaji "kupinduliwa" kwa umeme baada ya kunde. Katika hali hii kunde inaweza kuwa chanya na upinde wa kuoza unaweza kuwa mzuri pia.

Ili kufanikisha hili, coil lazima iwe imetengwa kutoka kwa Vcc na GND baada ya kunde. Kwa wakati huu, kuna sasa tu inapita kupitia kontena la unyevu. Mfumo huu wa pekee wa kontena la coil na damping unaweza kuliko "kuelekezwa" kwa voltage yoyote ya kumbukumbu. Hii, kwa nadharia itaunda mchanganyiko mzuri (chini ya kuchora)

Curve hii nzuri inaweza kutumiwa kupitia kulinganisha kugundua hatua ya wakati ambapo voltage ya kuoza "inavuka" voltage ya kumbukumbu. Katika kesi ya hazina karibu na coil, safu ya kuoza hubadilika na wakati wa kuvuka mabadiliko ya voltage ya kumbukumbu. Mabadiliko haya yanaweza kugunduliwa.

Baada ya kujaribu majaribio yafuatayo kudhihirika.

Mzunguko una moduli ya Arduino Nano. Moduli hii huendesha transistors mbili za MOSFET kuwezesha coil (kwa SV3) kupitia D10. Wakati mapigo katika D10 yanaisha, MOSFET zote hutenga coilf kutoka 12V na GND. Nishati iliyohifadhiwa kwenye coil hutoka kupitia R2 (220 Ohms). Wakati huo huo R1 (560 Ohms) inaunganisha upande mzuri wa zamani wa coil tho GND. Hii inabadilisha mviringo mbaya wa kuoza kwa R5 (330 Ohms) kuwa curve nzuri. Diode zinalinda pini ya kuingiza ya Arduino.

R7 ni mtoaji wa voltage karibu 0.04V. Kwa sasa curve ya kuoza kwa D7 inapata hasi zaidi kuliko 0.04 kwa D6 kukatiza ni kichocheo na muda baada ya mwisho wa kunde kuokolewa.

Ikiwa chuma iko karibu na coil, curve ya kuoza hudumu kwa muda mrefu, na wakati kati ya mwisho wa mapigo na usumbufu unakua mrefu.

Hatua ya 2: Kuunda Kigunduzi (Bodi ya mkate)

Kujenga Detector (Bodi ya mkate)
Kujenga Detector (Bodi ya mkate)
Kujenga Detector (Bodi ya mkate)
Kujenga Detector (Bodi ya mkate)
Kujenga Detector (Bodi ya mkate)
Kujenga Detector (Bodi ya mkate)

Kujenga detector ni rahisi sana. Hii inaweza kufanywa ama kwenye ubao wa mkate (kushikamana na mzunguko wa asili) au kwa kuziunganisha sehemu kwenye PCB.

LED ya D13 kwenye bodi ya Arduino Nano hutumiwa kama kiashiria cha chuma

Kufungua ubao wa mkate ni njia ya haraka zaidi ya kigunduzi kinachofanya kazi. Wiring kadhaa inahitajika, bado hii inaweza kufanywa mkate mdogo. Katika picha hii inaonyeshwa kwa hatua 3 kwani Arduino na MOSFET wameficha waya zingine. Wakati wa kujaribu nilikata diode kwa namna fulani bila kugundua mwanzoni. Hii haikuwa na athari mbaya kwa tabia ya upelelezi. Katika toleo la PCB la mzunguko niliwaacha kabisa.

Haionyeshwi kwenye picha ni unganisho kwa onyesho la O96 O96. Onyesho hili limeunganishwa:

Vcc - 5V (kwenye pini ya Arduino, sio voltage ya usambazaji !!!)

GND - GND

SCL - A5

SDA - A4

Onyesho hili la OLED linahitajika kusuluhisha kichunguzi awali. Hii imefanywa kwa kuweka voltage sahihi kwenye PIN6 ya Arduino. Voltage hii inapaswa kuwa karibu 0.04V. Maonyesho husaidia kuweka voltage inayofaa.

Toleo la ubao wa mkate hufanya kazi vizuri, ingawa labda haifai kwa kwenda porini.

Hatua ya 3: Kwenda PCB

PCB inayoenda
PCB inayoenda
PCB inayoenda
PCB inayoenda
PCB inayoenda
PCB inayoenda
PCB inayoenda
PCB inayoenda

Kama kwa soldering sipendi sana PCB yenye teknolojia mbili, kwa hivyo nilibadilisha mzunguko kutoshea kwenye PCB iliyo upande.

Kufuatia marekebisho yalifanywa:

1. diode ziliachwa nje.

2. milango ya MOSFET ilipata upinzani wa 10 Ohm

3. voltage ya usambazaji kwa msuluhishi wa voltage katika D6 hutolewa na ishara ya kiwango cha JUU kwa D8

4. pini ya dereva kwa MOSFET ilibadilishwa.

Kwa njia hii PCB moja ya upande inaweza kuundwa ambayo inaweza kuuzwa kwenye PCB za ulimwengu. Kutumia mzunguko huu utakuwa na kigunduzi cha PI kinachofanya kazi na vifaa vya nje 8-10 (kulingana na onyesho la OLED na / au spika inatumika).

Hatua ya 4: Kuweka na Kutumia Kigunduzi

Kuweka na Kutumia Kigunduzi
Kuweka na Kutumia Kigunduzi
Kuweka na Kutumia Kigunduzi
Kuweka na Kutumia Kigunduzi
Kuweka na Kutumia Kigunduzi
Kuweka na Kutumia Kigunduzi

Ikiwa detector imejengwa vizuri na mpango umeandikwa kwa Arduino, njia rahisi (ikiwa sio pekee) ya kuweka kitengo ni kutumia onyesho la OLED. Onyesho limeambatanishwa na 5V, GND, A4, A5. Onyesho linapaswa kuonyesha "kupima" baada ya kitengo kuwezeshwa. Baada ya sekunde kadhaa inapaswa kusema "calibration imefanywa" na nambari tatu zinapaswa kuonyeshwa kwenye onyesho.

Nambari ya kwanza ni "thamani ya rejeleo" inayotambuliwa wakati wa usawazishaji. Thamani ya pili ni thamani ya mwisho iliyopimwa na thamani ya tatu thamani ya maana ya vipimo 32 vya mwisho.

Thamani hizi tatu zinapaswa kuwa sawa au chini sawa (katika kesi zangu za majaribio chini ya 1000). Thamani ya kati inapaswa kuwa zaidi au chini ya utulivu.

Kuanza usanidi wa awali, haipaswi kuwa na chuma karibu na coil.

Sasa mgawanyiko wa voltage (trim potentiometer) inapaswa kupunguzwa ili maadili mawili ya chini yawekwe kiwango cha juu wakati bado inatoa usomaji thabiti. Kuna mpangilio muhimu, ambapo thamani ya kati huanza kutoa usomaji wa kushangaza. Rudisha kipunguzi ili kupata maadili thabiti tena.

Inaweza kutokea, kwamba onyesho linaganda. Bonyeza kitufe cha kuweka upya na uanze tena.

Kwa usanidi wangu (coil: 18 zamu @ 20cm) thamani thabiti ni karibu 630-650. Mara baada ya kuweka, bonyeza kitufe cha kuweka upya, kitengo kinapima tena na maadili yote ya miti yanapaswa kuwa katika upeo huo huo tena. Ikiwa chuma sasa imeletwa kwa coil, LED kwenye Bodi ya Arduino (D13) inapaswa kuwaka. Spika inayoambatanishwa inatoa kelele za kubofya (kuna nafasi ya kuboresha programu hapo).

Kuzuia matarajio makubwa:

Kichunguzi hugundua vitu kadhaa, lakini inakaa kigunduzi rahisi na chache.

Ili kutoa maoni ya uwezo huo, je! Upelelezi fulani wa kumbukumbu na vitambuzi vingine tofauti. Kuangalia matokeo, bado inavutia sana kichunguzi kilicho na sehemu 8 za nje lakini hazilingani na vichunguzi vya kitaalam.

Kuangalia mzunguko na programu, kuna nafasi nyingi ya kuboresha. Maadili ya vipinga yalipatikana na uzoefu, wakati wa kunde wa 250ms ulichaguliwa bila mpangilio, vigezo vya coil pia. Ikiwa una maoni ya maboresho, nitafurahi zaidi kuyajadili.

Furahiya!

Hatua ya 5: Sasisha1: Kutumia LCD 16x2

Sasisho1: Kutumia LCD 16x2
Sasisho1: Kutumia LCD 16x2
Sasisho1: Kutumia LCD 16x2
Sasisho1: Kutumia LCD 16x2
Sasisho1: Kutumia LCD 16x2
Sasisho1: Kutumia LCD 16x2

Maboresho

Wakati wa upimaji zaidi niligundua kuwa maktaba ya I2C OLED Display ilikuwa ikitumia muda mwingi. Kwa hivyo niliamua kutumia onyesho la 16x2 na kibadilishaji cha I2C badala yake.

Kwa hivyo nilipitisha programu hiyo kwenye onyesho la LCD na kuongeza huduma muhimu. Mstari wa kwanza wa onyesho sasa unaonyesha nguvu ya ishara ya dalili inayowezekana. Mstari wa pili sasa unaonyesha maadili mawili. Ngumi ilionyesha kupotoka kwa ishara ya sasa ikilinganishwa na thamani ya upimaji. Thamani hii inapaswa kuwa "0". Ikiwa dhamana hii ni hasi au chanya kila wakati, kigunduzi kinapaswa kusawazishwa kwa kubonyeza kitufe cha kuweka upya. Maadili mazuri yanaonyesha chuma karibu na coil.

Thamani ya pili inaonyesha thamani halisi ya ucheleweshaji wa eneo la kuoza. Thamani hii kawaida sio ya kupendeza, lakini inahitajika kwa usanidi wa kwanza wa kigundua.

Programu sasa inaruhusu muda mwingi wa kunde kwa mlolongo (njia za kujaribu / kuboresha utendaji). Sikufanikiwa kupitia njia yoyote. Kwa hivyo chaguo-msingi imewekwa kwa muda mmoja wa kunde.

Usanidi wa awali wa Kigunduzi

Wakati wa kuanzisha kipelelezi, thamani ya pili ya laini ya pili ni muhimu (ya kwanza inaweza kupuuzwa). Hapo awali thamani inaweza kuwa "thabiti" (angalia picha). Washa kipingamizi cha trim hadi thamani ifike kwenye usomaji thabiti. Kisha ibadilishe ili kuongeza thamani kwa kiwango cha juu cha uthabiti. Bonyeza kitufe cha kuweka upya ili kupima tena na kichunguzi iko tayari kutumika.

Nilipata maoni kwamba kwa kuweka kiwango cha juu kabisa, nilipoteza unyeti kwa metali zisizo za chuma. Kwa hivyo inaweza kuwa na thamani ya kujaribu majaribio ya mipangilio ili kuwa na unyeti mzuri kwa vitu visivyo vya chuma.

Coils

Ninaunda koili 3 kwa upimaji zaidi

1 -> 18 anarudi @ 200mm

2 -> 25 zamu @ 100mm

3 -> 48 zamu @ 100mm

Kushangaza coil zote zilifanya kazi vizuri, na karibu utendaji sawa (sarafu 20ct saa 40-50mm hewani). Hii inaweza kuwa uchunguzi wa kibinafsi.

Ilipendekeza: