Агуулгын хүснэгт:
- Алхам 1: Arduino Pulse Induction Idea - Flip Coil
- Алхам 2: Илрүүлэгчийг бүтээх (Breadboard)
- Алхам 3: ПХБ хийх
- Алхам 4: Илрүүлэгчийг тохируулах, ашиглах
- Алхам 5: Шинэчлэлт1: 16х2 хэмжээтэй LCD дэлгэц ашиглах
Видео: Arduino дээр суурилсан импульсийн индукцийн детектор - Flip Coil: 5 алхам (зурагтай)
2024 Зохиолч: John Day | [email protected]. Хамгийн сүүлд өөрчлөгдсөн: 2024-01-30 11:04
Санаа
Өмнө нь янз бүрийн үр дүн бүхий метал илрүүлэгч бүтээсэн болохоор би Arduino -ийн чадавхийг энэ чиглэлээр судлахыг хүссэн юм.
Металл илрүүлэгчийг Arduino ашиглан хэрхэн бүтээх талаар зарим сайн жишээ бий, заримыг нь зааварчилгаа болгон энд оруулав. Гэхдээ тэдгээрийг харахад аналог дохионы эмчилгээнд зарим гадны бүрэлдэхүүн хэсгүүдийг шаарддаг, эсвэл мэдрэмтгий чанар нь маш бага байдаг.
Металл илрүүлэгчийн талаар бодохдоо хайлтын ороомогтой холбоотой дохионуудын хүчдэлийн бага зэргийн өөрчлөлтийг хэрхэн яаж мэдрэх вэ гэдэг нь гол сэдэв болдог. Эдгээр өөрчлөлт нь ихэвчлэн маш бага байдаг. Хамгийн тодорхой арга бол ATmega328 -ийн аналог оролтыг ашиглах явдал юм. Гэхдээ техникийн үзүүлэлтүүдийг харахад хоёр үндсэн асуудал байдаг: тэдгээр нь (ихэвчлэн) удаашрах, нарийвчлал нь (ихэнх тохиолдолд) бага байдаг.
Нөгөө талаар, Arduino нь 16MHz давтамжтай ажилладаг бөгөөд цаг хугацааны хувьд нэлээд чадвартай байдаг. д. цагны хурдыг ашигладаг бол 0.0625µS нарийвчлалтай. Тиймээс аналог оролтыг мэдрэхийн оронд хүчдэлийн жижиг динамик өөрчлөлтийг мэдрэх хамгийн хялбар арга бол тогтмол жишиг хүчдэл дэх хүчдэлийн уналтын өөрчлөлтийг харьцуулах явдал юм.
Үүний тулд ATmega328 нь D6 ба D7 хоорондох дотоод харьцуулагчийн онцлог шинж чанартай байдаг. Энэхүү харьцуулагч нь тасалдлыг өдөөж, үйл явдлыг нарийн зохицуулах боломжийг олгодог. Millis (), micos () гэх мэт нарийн кодчилсон цагийн горимыг орхиод илүү өндөр нарийвчлалтай ATmega328 -ийн дотоод таймер руу орвол Arduino нь метал илрүүлэх арга барилыг бий болгох үндэс суурь болдог.
Тиймээс эх кодын үүднээс авч үзвэл дотоод харьцуулагчийг оролтын туйлшралыг "өөрчлөх" програмчлах, өөрчлөлтийн цагийг өөрчлөхийн тулд хамгийн өндөр хурдтай дотоод тоолуурыг ашиглах нь сайн эхлэл байх болно.
Үүнийг хийхийн тулд Arduido дахь ерөнхий код нь:
// Шаардлагатай бүх урьдчилсан хувьсагчдыг тодорхойлох, бүртгэлийг тохируулах
гарын үсэггүй char цагSelectBits = _BV (CS10); // урьдчилсан хуваарь байхгүй, бүрэн xtal void тохиргоо () {pinMode (6, INPUT); // + харьцуулагчийн - тэдгээрийг INPUT гэж тохируулснаар тэдгээрийг өндөр импеданс pinMode (7, INPUT) болгож тохируулна. // - харьцуулагчийн - тэдгээрийг INPUT гэж тохируулснаар // өндөр эсэргүүцэлтэй cli (); // зогсоох тасалдал TCCR1A = 0; // TCCR1A бүртгэлийг бүхэлд нь 0 болгож тохируулна уу TCCR1B = 0; // TCCR1B -тэй ижил -> хэвийн горимTCNT1 = 0; // тоолуурын утгыг 0 болгож эхлүүлэх; TCCR1B | = clockSelectBits; // prescaler тохируулж, цагийг эхлүүлнэ TIMSK1 = _BV (TOIE1); // таймер халих тасалдлыг идэвхжүүлэхийг тохируулна bit sei (); // тасалдлыг зөвшөөрөх ACSR = (0 << ACD) | // Аналог харьцуулагч: Идэвхжүүлсэн (0 << ACBG) | // Аналог харьцуулагч Bandgap Select: AIN0 нь эерэг оролтод хэрэглэгддэг (0 << ACO) | // Аналог харьцуулагчийн гаралт: Off (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 = oldSREG; }
// дотоод тоолуур дүүрэх тоолонд энэ горимыг дууддаг
ISR (TIMER1_OVF_vect) {timer1_overflow_count ++; }
// энэ горимыг таймерыг 0 болгож тохируулахад ашигладаг
void resetTimer (void) {oldSREG = SREG; cli (); // Тасалдлыг идэвхгүй болгох TCNT1 = 0; // тоолуурын утгыг 0 болгоно SREG = oldSREG; // Статусын бүртгэлийг сэргээх TCCR1B | = clockSelectBits; // урьдчилсан тооцоолуурыг тохируулж, цагийг эхлүүлнэ timer1_overflow_count = 0; // халих тоолуурыг дахин тохируулна}
Мэдээжийн хэрэг, энэ санаа нь цоо шинэ зүйл биш юм. Энэ кодын үндсэн хэсгийг өөр газраас олж болно. TPIMD - Tiny Pulse Induction Metal Detector нүүр хуудсан дээрх микроконтроллерын ийм сайн шийдэл.
(www.miymd.com/index.php/projects/tpimd/
Алхам 1: Arduino Pulse Induction Idea - Flip Coil
Ардуиног TPIMD -ийн нэгэн адил импульсийн индукцийн детектор болгон ашиглах явдал юм. Пульс индукцийн детекторуудын гол асуудал бол ажиллахын тулд ихэвчлэн өөр өөр хүчдэл шаарддаг. Ороомог тэжээх нэг хүчдэл ба ялзралын муруйтай тэмцэх тусдаа хүчдэл. Эдгээр хоёр хүчдэлийн эх үүсвэр нь импульсийн индукцийн детекторыг үргэлж төвөгтэй болгодог.
PI детектор дахь ороомгийн хүчдэлийг харахад үүссэн муруйг хоёр өөр үе шатанд хувааж болно. Эхний шат бол импульс өөрөө ороомог тэжээж, соронзон орон бий болгох явдал юм (1). Хоёрдахь үе шат бол хүчдэлийн бууралтын муруй бөгөөд хүчдэлийн оргил үеэс эхлэн ороомгийн "хүчгүй" хүчдэлд хурдан ордог (2). Асуудал нь импульсийн дараа ороомог туйлшралаа өөрчилдөг явдал юм. Импульс эерэг байна уу (хавсаргасан зураг дээрх Var 1.) задралын муруй сөрөг байна. Импульс сөрөг байвал ялзралын муруй эерэг байх болно (Хавсралт дээрх зураг 2.)
Энэхүү үндсэн асуудлыг шийдэхийн тулд импульсийн дараа ороомог электрон хэлбэрээр "эргүүлэх" шаардлагатай. Энэ тохиолдолд импульс эерэг байж болох ба ялзралын муруй нь эерэг байж болно.
Үүнд хүрэхийн тулд импульсийн дараа ороомогыг Vcc ба GND -ээс тусгаарлах ёстой. Одоогийн байдлаар норгогч эсэргүүцэгчээр дамжих урсгал л байна. Энэхүү тусгаарлагдсан ороомог ба норгогч эсэргүүцэл нь ямар ч лавлах хүчдэлд "чиглэгдэх" боломжтой юм. Энэ нь онолын хувьд хосолсон эерэг муруй үүсгэх болно (зургийн доод талд)
Энэхүү эерэг муруйг харьцуулах төхөөрөмжөөр дамжуулан задралын хүчдэл жишиг хүчдэлийг "гатлах" хугацааг тодорхойлоход ашиглаж болно. Ороомогтой ойролцоо эрдэнэсийн хувьд ялзралын муруй өөрчлөгдөж, жишиг хүчдэлийг давах цаг нь өөрчлөгддөг. Энэ өөрчлөлтийг илрүүлэхээс илүү хийх боломжтой.
Туршилт хийсний дараа дараах хэлхээ ажилласан нь батлагдлаа.
Уг хэлхээ нь Arduino Nano модулаас бүрдэнэ. Энэ модуль нь D10 -ээр ороомог (SV3 дээр) тэжээдэг хоёр MOSFET транзисторыг удирддаг. D10 дахь импульс дуусахад MOSFET хоёулаа ороомогыг 12V ба GND -ээс тусгаарладаг. Ороомог дахь хэмнэгдсэн энерги нь R2 (220 Ом) -аар дамжин цус алддаг. Үүний зэрэгцээ R1 (560 Ом) нь ороомгийн хуучин эерэг талыг GND -тэй холбодог. Энэ нь R5 (330 Ом) дахь сөрөг задралын муруйг эерэг муруй болгон өөрчилдөг. Диодууд нь Arduino -ийн оролтын зүүг хамгаалдаг.
R7 нь ойролцоогоор 0.04 В хүчдэлийн хуваагч юм. D7 дахь задралын муруй нь D6 дахь 0.04 -ээс илүү сөрөг болж байгаа үед тасалдал идэвхжиж, импульсийн төгсгөлийн үргэлжлэх хугацаа хадгалагдана.
Ороомогтой ойролцоо металлын хувьд ялзралын муруй удаан үргэлжилж, импульсийн төгсгөл ба тасалдлын хоорондох хугацаа урт болно.
Алхам 2: Илрүүлэгчийг бүтээх (Breadboard)
Илрүүлэгчийг бүтээх нь маш энгийн. Үүнийг талхны самбар дээр (анхны хэлхээнд наалддаг) эсвэл эд ангиудыг ПХБ дээр гагнах замаар хийж болно.
Arduino Nano самбар дээрх D13 LED нь металлын үзүүлэлт болдог
Талхны самбарыг задлах нь детекторыг ажиллуулах хамгийн хурдан арга юм. Нэлээд утастай байх шаардлагатай боловч үүнийг жижиг талхны хавтангаар хийж болно. Зурган дээр үүнийг 3 алхамаар харуулав, учир нь Arduino болон MOSFETs зарим утсыг нууж байна. Туршилт хийхдээ би эхлээд анзааралгүй диодыг ямар нэгэн байдлаар салгасан. Энэ нь детекторын зан төлөвт сөрөг нөлөө үзүүлээгүй. ПХБ -ийн хэлхээний хувилбарт би тэдгээрийг бүрэн орхисон.
0.96 OLED дэлгэцтэй холбогдох холболтуудыг зураг дээр харуулаагүй болно. Энэ дэлгэц холбогдсон байна:
Vcc - 5V (Arduino зүү дээр, тэжээлийн хүчдэл биш !!!)
GND - GND
SCL - A5
SDA - А4
Энэхүү OLED дэлгэц нь детекторыг эхлээд шалгалт тохируулга хийхэд шаардлагатай байдаг. Үүнийг Arduino -ийн PIN6 дээр зөв хүчдэлийг тохируулах замаар хийдэг. Энэ хүчдэл нь 0.04 В орчим байх ёстой. Дэлгэц нь зөв хүчдэлийг тохируулахад тусалдаг.
Талхны хавтангийн хувилбар нь маш сайн ажилладаг боловч зэрлэг байгальд ороход тохиромжгүй байдаг.
Алхам 3: ПХБ хийх
Гагнуурын хувьд би хоёр талт өндөр технологийн ПХБ-д үнэхээр дургүй, тиймээс би хэлхээгээ хоёр талт ПХБ дээр тааруулж өөрчилсөн.
Дараахь өөрчлөлтүүдийг хийсэн.
1. диодууд орхигдсон байв.
2. MOSFET -ийн хаалга 10 Ом эсэргүүцэлтэй болсон
3. D6 дээрх хүчдэл хуваагуурын тэжээлийн хүчдэлийг D8 дээрх өндөр түвшний дохиогоор өгдөг
4. MOSFET -ийн жолоочийн зүүг өөрчилсөн.
Ийм байдлаар бүх талын ПХБ дээр гагнах боломжтой нэг талт ПХБ бий болно. Энэ хэлхээг ашигласнаар та зөвхөн 8-10 гадаад бүрэлдэхүүн хэсэгтэй ажилладаг PI детектортой болно (OLED дэлгэц ба/эсвэл чанга яригч ашиглаж байгаа эсэхээс хамаарна).
Алхам 4: Илрүүлэгчийг тохируулах, ашиглах
Хэрэв детекторыг зөв бүтээж, програмыг Arduino дээр бичсэн бол төхөөрөмжийг тохируулах хамгийн хялбар (цорын ганц биш) арга бол OLED дэлгэц ашиглах явдал юм. Дэлгэц нь 5V, GND, A4, A5 дээр залгагдсан. Төхөөрөмж ассаны дараа дэлгэц дээр "шалгалт тохируулга" гарч ирэх ёстой. Хэдэн секундын дараа "шалгалт тохируулга хийгдсэн" гэж хэлэх ёстой бөгөөд гурван тоог дэлгэц дээр харуулна.
Эхний тоо нь шалгалт тохируулгын явцад тодорхойлсон "лавлах утга" юм. Хоёр дахь утга нь сүүлчийн хэмжсэн утга, гурав дахь утга нь сүүлийн 32 хэмжилтийн дундаж утга юм.
Эдгээр гурван утга нь ойролцоогоор ижил байх ёстой (миний туршилтын тохиолдлууд 1000-аас доош). Дундаж үнэ нь их бага хэмжээгээр тогтвортой байх ёстой.
Эхний тохиргоог эхлүүлэхийн тулд ороомгийн ойролцоо металл байх ёсгүй.
Одоо хүчдэл хуваагчийг (обудтай потенциометр) тайрч авах ёстой бөгөөд ингэснээр тогтвортой уншилтыг өгч байхад доод хоёр утгыг хамгийн дээд хэмжээнд байлгах ёстой. Дундаж үнэ цэнэ нь хачин уншилтыг өгч эхэлдэг чухал тохиргоо байдаг. Тогтвортой утгыг дахин авахын тулд шүргэгчийг буцааж эргүүлнэ үү.
Энэ нь тохиолдож магадгүй, дэлгэц нь хөлдөх болно. Зүгээр л дахин тохируулах товчийг дараад дахин эхлүүлээрэй.
Миний тохиргооны хувьд (ороомог: 20см-ийн 18 эргэлт) тогтвортой утга нь ойролцоогоор 630-650 байна. Тохируулсны дараа дахин тохируулах товчлуурыг дарахад нэгж дахин тохируулагдах бөгөөд бүх модны утгууд дахин ижил мужид байх ёстой. Хэрэв одоо метал ороомог руу орвол Arduino-Board (D13) дээрх LED асах ёстой. Хавсаргасан чанга яригч нь товших чимээ гаргадаг (програмчлалыг сайжруулах боломжтой).
Өндөр хүлээлтээс урьдчилан сэргийлэхийн тулд:
Илрүүлэгч нь зарим зүйлийг илрүүлдэг боловч маш энгийн бөгөөд хязгаарлагдмал детектор хэвээр үлддэг.
Чадварын талаар сэтгэгдэл төрүүлэхийн тулд өөр өөр детектор ашиглан зарим илрүүлэлтийг хийсэн. Үр дүнг харахад зөвхөн 8 гаднах хэсэгтэй боловч мэргэжлийн детектортой тохирохгүй детекторын хувьд үнэхээр гайхалтай хэвээр байна.
Хэлхээ, хөтөлбөрийг харахад сайжруулалт хийх маш их боломж бий. Туршилтаар резисторуудын утгыг олж мэдсэн бөгөөд импульсийн цагийг 250 мс, ороомгийн параметрүүдийг санамсаргүй байдлаар сонгосон. Хэрэв танд сайжруулах санаа байгаа бол би тэдгээрийг хэлэлцэхэд баяртай байх болно.
Хөгжилтэй байгаарай!
Алхам 5: Шинэчлэлт1: 16х2 хэмжээтэй LCD дэлгэц ашиглах
Сайжруулалт
Цаашдын туршилтын явцад I2C OLED дэлгэцийн номын сан маш их цаг зарцуулж байгааг би ойлгосон. Тиймээс би оронд нь I2C хөрвүүлэгчтэй 16x2 дэлгэц ашиглахаар шийдсэн.
Тиймээс би энэ програмыг LCD дэлгэц дээр ашиглаж, зарим ашигтай шинж чанаруудыг нэмж оруулав. Дэлгэцийн эхний мөр нь одоо байгаа дохионы хүчийг харуулж байна. Хоёрдахь мөрөнд хоёр утгыг харуулав. Нударга нь шалгалт тохируулгын утгатай харьцуулахад одоогийн дохионы хазайлтыг илэрхийлэв. Энэ утга нь "0" байх ёстой. Хэрэв энэ утга байнга сөрөг эсвэл эерэг байвал дахин тохируулах товчийг дарж детекторыг дахин тохируулах шаардлагатай. Эерэг утга нь ороомогтой ойролцоо металлыг илэрхийлдэг.
Хоёрдахь утга нь задралын муруйн бодит саатлын утгыг харуулна. Энэ утга нь ихэвчлэн тийм ч сонирхолтой биш боловч детекторын анхны тохиргоонд шаардлагатай байдаг.
Хөтөлбөр нь одоо импульсийн үргэлжлэх хугацааг дараалан (туршилт хийх / гүйцэтгэлийг сайжруулах хэрэгсэл) зөвшөөрдөг. Би ямар ч амжилтанд хүрч чадаагүй. Тиймээс анхдагч импульсийн үргэлжлэх хугацааг тохируулсан болно.
Детекторын анхны тохиргоо
Илрүүлэгчийг тохируулахдаа хоёр дахь шугамын хоёр дахь утга нь хамааралтай болно (эхнийхийг үл тоомсорлож болно). Эхэндээ утга нь "тогтворгүй" байж болно (зураг харна уу). Утга нь тогтвортой уншилт хүртэл обудны резисторийг эргүүлнэ. Дараа нь утгыг хамгийн тогтвортой утга болгон нэмэгдүүлэхийн тулд эргүүлнэ үү. Дахин тохируулахын тулд дахин тохируулах товчийг дарахад детектор ашиглахад бэлэн болно.
Тогтвортой хамгийн дээд утгыг тогтоосноор төмрийн бус металлын мэдрэмтгий чанар алдагдсан гэсэн сэтгэгдэл төрсөн. Төмөр бус зүйлд сайн мэдрэмжтэй байхын тулд тохиргоог туршиж үзэх нь зүйтэй болов уу.
Ороомог
Би цаашдын туршилтанд зориулж 3 ороомог хийдэг
1 -> 200 мм -ээс 18 эргэлт
2 -> 100 мм -ээр 25 эргэлт
3 -> 100 мм -ээс дээш 48 эргэлт
Сонирхолтой нь бүх ороомог нь маш сайн ажилладаг, бараг ижил үзүүлэлттэй (агаарт 40-50мм хэмжээтэй 20ct зоос). Энэ нь нэлээд субъектив ажиглалт байж магадгүй юм.
Зөвлөмж болгож буй:
LDR дээр суурилсан гэрэл мэдрэгч/детектор: 3 алхам
LDR дээр суурилсан гэрлийн мэдрэгч/детектор: Гэрлийн мэдрэгч ба детектор нь микроконтроллер, суулгагдсан системд маш их хэрэгтэй байдаг бөгөөд эрчимийн хяналтыг хийх шаардлагатай байдаг. Ийм мэдрэгчийн хамгийн энгийн бөгөөд хямд нь LDR юм. LDR эсвэл Хөнгөн хамааралтай резисторыг хялбархан ашиглаж болно
Arduino дээр суурилсан контактгүй хэт улаан туяаны термометр - Arduino ашиглан IR суурилсан термометр: 4 алхам
Arduino дээр суурилсан контактгүй хэт улаан туяаны термометр | Arduino ашиглан IR суурилсан термометр: Сайн байна уу залуусаа энэ зааварчилгаанд бид arduino ашиглан контактгүй термометр хийх болно. Заримдаа шингэн/хатуу бодисын температур хэт өндөр эсвэл бага байдаг тул түүнтэй холбоо тогтооход хэцүү байдаг. тэр үед температур
DIY Arduino дээр суурилсан импульсийн индукцийн металл илрүүлэгч: 5 алхам
DIY Arduino дээр суурилсан импульсийн индукцийн металл илрүүлэгч: Энэ бол маш сайн гүйцэтгэлтэй харьцангуй энгийн металл илрүүлэгч юм
Arduino дээр суурилсан импульсийн индукцийн детектор - LC -Trap: 3 алхам
Arduino дээр суурилсан импульсийн индукцийн детектор-LC-Trap: Цорын ганц тэжээлийн хүчдэл бүхий энгийн Ardino Pulse Induction металл илрүүлэгчийн талаар өөр санаа хайж байхдаа Teemo-ийн нүүр хуудсыг олж харлаа: http: //www.digiwood.ee/8-electronic- төслүүд/2-металл илрүүлэгч-хэлхээТэр энгийн импульсийн индукцийг бүтээсэн
ESP8266 дээр суурилсан Sonoff ухаалаг унтраалга дээр MicroPython програмыг хэрхэн яаж гэрэлтүүлэх вэ: 3 алхам (зурагтай)
ESP8266 дээр суурилсан Sonoff ухаалаг шилжүүлэгч дээр MicroPython Firmware -ийг хэрхэн яаж гэрэлтүүлэх вэ? Sonoff нь ITEAD -ийн боловсруулсан Smart Home -ийн төхөөрөмжийн шугам юм. Энэ шугамын хамгийн уян хатан, хямд төхөөрөмжүүдийн нэг бол Sonoff Basic ба Sonoff Dual юм. Эдгээр нь ESP8266 агуу чип дээр суурилсан Wi-Fi идэвхжүүлсэн унтраалга юм. Хэзээ