Мазмуну:

Arduino негизделген Pulse индукция детектору - LC -Trap: 3 кадам
Arduino негизделген Pulse индукция детектору - LC -Trap: 3 кадам

Video: Arduino негизделген Pulse индукция детектору - LC -Trap: 3 кадам

Video: Arduino негизделген Pulse индукция детектору - LC -Trap: 3 кадам
Video: Hack: modify 20A DC 10-60V PWM Motor Speed Controller and control with Arduino 2024, Июль
Anonim
Arduino негизделген Pulse индукция детектору - LC -Trap
Arduino негизделген Pulse индукция детектору - LC -Trap

Жөнөкөй Ardino Pulse Induction металл детекторунун бирден бир чыңалуусу боюнча кошумча идеяларды издеп жатып, мен Teemo башкы бетине туш болдум:

www.digiwood.ee/8-electronic-projects/2-metal-detector-circuit

Ал LC-Trap принцибин колдонуу менен жөнөкөй Pulse Induction детекторун түзгөн. Окшош схемалар бул жерде TechKiwiGadgets тарабынан Instructableге жайгаштырылган. Teemo схемасы PIC микроконтроллеринин ички компараторлорун колдонот, башкача айтканда азыраак тышкы компоненттерге муктаж

Ошентип, мен бул схема үчүн PIC-Контроллердин ордуна Arduino колдонууга жана канчалык алыстай алам деп кароого чакырылдым.

1 -кадам: схемалык

Схемалык
Схемалык
Схемалык
Схемалык
Схемалык
Схемалык

Arduino схемасы бир аз татаалыраак, анткени Arduino ички аналогдук сигналды компаратордун киришине багыттоого мүмкүндүк бербейт. Бул жөнөкөй чыңалуу deviderr үчүн эки компонентти кошот. Бул Flip Coil дизайнынын 9уна салыштырмалуу 12 тышкы компоненттери бар дизайнга алып келет (динамикти жана 16x2 ЖКны калтыруу).

Схеманын иштөө принциби Teemo сайтында абдан жакшы түшүндүрүлгөн. Негизи катушка кубат берилет, анан өчүрүлөт. Өчүрүлгөндөн кийин, катушка жана конденсатор параллель түрдө өчүрүлгөн термелүүнү пайда кылат. Тербелүүнүн жыштыгы жана ажыроосуна катушка жакын жайгашкан металл таасир этет. Райондун чоо -жайын билүү үчүн Teemo же TechKiwi баракчасын караңыз бул жерде Instructables.

Flip Coil Pulse Induction детекторундагыдай эле, мен ички компараторду жана катуштан сигнал алуу үчүн үзгүлтүккө учуратуу мүмкүнчүлүгүн колдоном.

Бул учурда мен бир нече жолу үзгүлтүккө учурайм, анткени чыңалуу салыштыргычта орнотулган маалымдама чыңалуусунун айланасында термелип жатат. Термелүүнүн аягында, катуштагы чыңалуу 5В тегерегинде чечилет, бирок так эмес. Мен болжол менен 4.9 вольттун чыңалуусун алуу үчүн 200 Ом жана 10k Ом менен чыңалуу бөлүштүргүчтү тандадым

Схемалардын татаалдыгын азайтуу үчүн мен D4 жана D5ти GND (10к резистор үчүн) жана 5В (220 Ом резистору үчүн) менен камсыз кылдым. Пиндер детектордун башталышында орнотулат.

Бул версияда мен Arduino негизделген металл детекторун кантип программалоодо сүрөттөлгөндөй, үндү көзөмөлдөгөн көп түстүү аппаратты колдонуп динамик байланышын коштум. Бул максаттын касиеттерин айырмалоого жана сигналдын күчүн сезүүгө мүмкүнчүлүк берет. Динамик кошумча 5 пин башына туташтырылышы мүмкүн. Баштын калган 3 казыгы баскычтар үчүн колдонулат (ишке ашырылат).

2 -кадам: Программалоо

Программалоо
Программалоо
Программалоо
Программалоо
Программалоо
Программалоо

Эми схема иштелип чыгып, прототип курулгандыктан, металлды табуу үчүн ылайыктуу ыкманы табууга убакыт келди.

1. Импульстарды эсептөө

Термелүүнүн импульсун толугу менен чиригенге чейин эсептөө бир идея.

Катушка жакын металл болсо, термелүүнүн көлөмү азаят. Бул учурда салыштыргычтын таяныч чыңалуусу акыркы импульс араң эле өлчөнө турган деңгээлге коюлушу керек. Ошентип, бир нерсе аныкталса, бул импульс дароо жок болот. Бул бир аз проблемалуу болду.

Термелүүнүн ар бир толкуну эки үзүлүүнү жаратат. Бири ылдый түшүп, бири артка кетет. Шилтеме чыңалуусун термелүү толкунунун чокусуна так коюу үчүн, ылдый түшүү менен өйдөлөөнүн ортосундагы убакыт мүмкүн болушунча кыска болушу керек (сүрөттү караңыз). Тилекке каршы, бул жерде Arduino чөйрөсүнүн үстү көйгөйлөрдү жаратат.

Үзгүлтүктүн ар бир триггери бул кодду чакырат:

ISR (ANALOG_COMP_vect) {

Toggle1 = Toggle0 // акыркы маанини сактоо Toggle0 = TCNT1; // жаңы баалуулукту алуу}

Бул код бир аз убакытты талап кылат (эгер мен туура эстесем, болжол менен 78 үйрөтүү цикли болжол менен 5 микросекунд @ 16MHz). Демек, эки импульстун ортосундагы минималдуу аныкталуучу аралык бул кодду талап кылган убакыт, эгерде эки триггердин ортосундагы убакыт кыскарса (сүрөттү караңыз), ал аныкталбайт, анткени код экинчи үзгүлтүктү аныктоо алдында толугу менен аткарылат.

Бул сезимталдыкты жоготууга алып келет. Ошол эле учурда, мен байкадым, термелүүлөрдүн басаңдашы ар кандай тышкы таасирлерге өтө сезимтал, ошондуктан бул мамилени бир аз татаалдаштырат.

2. Жыштыкты өлчөө

Металды табуунун дагы бир жолу - термелүүнүн жыштыгын өлчөө. Бул термелүүнү басаңдатууну өлчөө менен салыштырганда чоң артыкчылыкка ээ, анткени жыштыктагы өзгөрүү металлды басмырлоого мүмкүндүк берет. Катушканын жанында кара материал бар болсо, жыштык басаңдайт, эгер катушка жакын жерде баалуу металл болсо, жыштык көбөйөт.

Жыштыкты өлчөөнүн эң оңой жолу - катуштар термеле баштагандан кийин импульстун көлөмүн өлчөө. Башталган менен акыркы импульстун ортосундагы убакыт аралыгы өлчөнгөн импульстун жалпы суммасына бөлүнөт. Тилекке каршы, акыркы бир нече термелүүлөр абдан симметриялуу эмес. Металдын болушу термелүүнүн бузулушуна таасир эткендиктен, акыркы термелүүлөр симметриялуу эмес болгондуктан, окууларды чечмелөө кыйын. Сүрөттө бул 1ден 1ге чейин жана 2ден 2ге чейинки өтмөк менен көрсөтүлгөн.

Жакшы ыкма - жыштыкты өлчөө үчүн мурунку импульстарды колдонуу. Тестирлөөнүн жүрүшүндө, кээ бир импульстар башкаларга караганда сезимтал экенин билдим. Кайсы бир жерде термелүүнүн 2/3 бөлүгүндө маалыматтарды алуу үчүн жакшы учур болуп саналат.

Маалыматтарды иштетүү

Циклдин () негизинде түзүлгөн баштапкы код, катуштун убактысын жасоо үчүн импульс () функциясын чакырат. Жыйынтыктар жаман болбосо да, убакытты жакшыртууга болгон каалоом бар болчу. Бул үчүн, мен Arduino негизделген металл детекторун кантип программалоо керектигине алып келген, таймерге негизделген кодду түздүм. Бул көрсөтмө убакытты, маалыматтарды сындыруучу ЖКнын чыгышын деталдуу түрдө түшүндүрөт

1. ЖК

Биринчи ыкма 10 импульсту өлчөө жана андан кийин ЖКда баалуулуктарды көрсөтүү болчу. I2C маалыматын берүү өтө жай экенин билгенден кийин, мен импульска бир гана белгини жаңыртуу үчүн кодду алмаштырдым.

2. Минималдуу баалуулук мамилеси

Окуулардын туруктуулугун жогорулатуу үчүн, мен өлчөнгөн маалыматтарды жакшыраак сезүү үчүн сериялык чыгаруу тартибин жаздым. Көрүнүп тургандай, окуулардын көбү бир аз стабилдүү болгону менен, айрымдары андай эмес! "Ошол эле" термелүү импульсинин кээ бир окуулары бири -биринен ушунчалык алыс болгондуктан, жыштыктын өзгөрүшүн талдоо үчүн ар бир ыкманы бузат.

Мунун ордун толтуруу үчүн, мен баалуулук ишенимдүү болгон "чек араны" түздүм. I. e. баалуулуктар күтүлгөн мааниден таймердин 35 циклинен ашыгыраак болгондо, бул маанилер этибарга алынган эмес ("Arduino негизиндеги металл детекторун кантип программалоо керек" инструкциясында кеңири түшүндүрүлгөн)

Бул ыкма абдан туруктуу экенин көрсөттү.

3. Чыңалуу

Теемонун оригиналдуу дизайны 5 вольттон төмөн иштейт. Менин божомолдорум "көбүрөөк вольт = көбүрөөк күч = сезимталдык" болгондуктан, мен башында 12В менен блокту иштеттим. Бул MOSFETти жылытууга алып келди. Бул жылытуу детектордун тез-тез тең салмакташына алып келген өлчөнгөн маанилердин жалпы жылышына алып келди. Чыңалууну 5В чейин төмөндөтүү менен, MOSFETтин жылуулук өндүрүшүн минимумга келтирүүгө болот, бул жерде көрсөткүчтөрдүн дээрлик эч кандай жылышы байкалган жок. Бул схеманы ого бетер жөнөкөй кылды, анткени Arduino борттогу чыңалуу жөндөгүчүнүн кереги жок болуп калды.

MOSFET үчүн мен башында IRL540 тандадым. Бул MOSFET логикалык деңгээлге шайкеш келет, бирок 100В максималдуу чыңалуу рейтингине ээ. Мен жакшыраак иштөөнү үмүттөндүм, 200V рейтинги бар IRL640. Тилекке каршы, жыйынтыктар бирдей болду. Ошентип, же IRL540, же IRL640 бул ишти аткарат.

3 -кадам: Акыркы жыйынтыктар

Акыркы Жыйынтыктар
Акыркы Жыйынтыктар
Акыркы Жыйынтыктар
Акыркы Жыйынтыктар
Акыркы Жыйынтыктар
Акыркы Жыйынтыктар

Детектордун артыкчылыгы - баалуу жана темир материалдарды айырмалай алат. Кемчилиги - бул жөнөкөй схеманын сезгичтиги анча жакшы эмес. Иштетүүнү салыштыруу үчүн мен Flip-Coil детекторундагыдай шилтемелерди колдондум. Балким, кээ бирлерди аныктоо үчүн жакшы, бирок, чынында, чыныгы издөөнүн көңүлүн калтырат.

Бул жерде PIC контроллери бар оригиналдуу дизайн сезгич болушу мүмкүн, анткени ал термостун 16 МГцтин ордуна 32 МГцте иштеп жатат, жыштыктагы жылыштарды аныктоо үчүн жогорку чечимди камсыз кылат.

Натыйжаларга 48 мм @ 100мм катушка колдонуу аркылуу жетишилди.

Ар дайымкыдай эле, кайтарым байланыш үчүн ачык

Сунушталууда: