Металлодетектор на Ардуино

OneHalf
Offline
Зарегистрирован: 29.04.2011

Здравствуйте.

Господа, кто-нибудь может подсказать, как на основе Ардуино собрать металлодетектор?

Здесь есть схема похожего детектора, но у меня на руках есть Ардуино, есть IDE, мне кажется, что гораздо проще использовать Ардуино, чем паять схему на 2313, паять программатор (либо колхозить программатор на Ардуине), углубляться в детали программирования микроконтроллеров и т.д.

 

Помогите пожалуйста, кто может.

kikia99
Offline
Зарегистрирован: 22.03.2011

Купить индукционный датчик или намотать самому  (луч купить путевый ) прицепить его к аналоговому входу ардуино или непосредственно или если нужна т очность через опер усилитель  купить  маленький экранчек  где ардуино будет выводить шкалу  прицепить его или по 4 битной или по 8 битной схеме к ардуино  ну и купить капсуль звуковой наверно что бы писщало и прицепить его на шим ногу 

kadushkin
Offline
Зарегистрирован: 18.12.2011

А какой датчик посоветуете? И насколько эффективен будет такой детектор?

Tosha_info
Offline
Зарегистрирован: 01.08.2012

 Некорректно как-то было выложить прошивку для контроллера в HEX формате, её ни прочесть, ни подкорректировать под свои нужды нельзя... одним словом или юзай то что кто-то написал, или пиши своё заново с нуля. Если есть у кого-то нормальный исходный код - закиньте плиз на форум линк, буду благодарен.

AlexFisher
AlexFisher аватар
Offline
Зарегистрирован: 20.12.2011

Я бы сделал проще (для начала) Примерно так:

Принцип работы: измерение изменения индуктивности катушки.

Алгоритм:

  • Меняем уровень на D4, запоминаем old_m=micros()
  • Ловим смену уровня на D3 (лучше прерыванием) получаем задержку del_m=micros-old_m
  • сравниваем с запомненной задержкой - отклонение и будет характеризовать изменение индуктивности катушки за счет приближения к металлическому предмету.
  • Кнопкой запоминаем текущую задержку для сравнения (типа установки нуля)

Резистор нужно подбирать по индуктивности катушки.

Забыл пищалку нарисовать. Но это и необязательно.

leshak
Offline
Зарегистрирован: 29.09.2011

 

OneHalf пишет:

Здравствуйте.

Господа, кто-нибудь может подсказать, как на основе Ардуино собрать металлодетектор?

Здесь есть схема похожего детектора, но у меня на руках есть Ардуино, есть IDE, мне кажется, что гораздо проще использовать Ардуино, чем паять схему на 2313, паять программатор (либо колхозить программатор на Ардуине), углубляться в детали программирования микроконтроллеров и т.д.

Тому кто придумал маркитнговый ход "для ардуины не нужно разбиратся в програмировании" - нужно в голову гвоздь вклепать. А арудину разве вам програмить не нужно будет?

Вы можете пойти двумя путями - изобретать свою схему (начало положил AlexFisher). Или взять вот эту вашу в качестве основы. Действительно - можно заюзать ардуину для прототипа. Но для "конечного результата" она будет избыточна. Можно на ней отладить скетч, а потом залить его в тиньку. Погуглите, есть версия аруины IDE и для тинек. Не на оф сайте, а энтузиастами сделаный форк. Именно для случаев когда ради одного пина целую ардуину жаба давит жертвовать.

Если возмете их схему "за базу". То блок 3 и 6 - это фактически ваша ардуина. Блок 5 - можно "пожертвовать" и выводить данные не писком, а в Serial или LCD какой-нибудь.

Но... как я понял весь смысл в том как потом обрабатывать сигнал в микроконтролле. То есть то самое "программирование". Так что либо варианта три:

  • Брать тиньку вливать их hex и не себе морочить голову
  • Искать где-то исходники их прошивки и портировать на ардуину
  • Разбиратся в самом алгоритме анализа сигнала и с нуля реализовать на ардуине

>либо колхозить программатор на Ардуине

Гм... а для чего же тогда ардуина нужна как не для "колхозить"? Тем более что для этого нужно 4-ре щелчка мышкой сделать и 6-ть проводков

 

 

Tosha_info
Offline
Зарегистрирован: 01.08.2012

 В ардуине есть смысл, разобраться в алгоритме, можно и не разбираться а свой написать, сложного нет ничего. Зато это быстрое прототипирование, этим всё сказано. А заливать себе в контроллер неизвестно кем созданный HEX, с неизвестным алгоритмом, вот это воистину БРЕД.

leshak
Offline
Зарегистрирован: 29.09.2011

Tosha_info пишет:

 В ардуине есть смысл, разобраться в алгоритме, можно и не разбираться а свой написать, сложного нет ничего.

Я небыл бы так уверен. То есть я не хочу сказать что "не нужно" свой писать, но то что алгоритм "тривиален" - совсем не факт. И даже тривиальный алгоритм трудно написать если нет специальных знаний из предметной области.

Tosha_info пишет:

 А заливать себе в контроллер неизвестно кем созданный HEX, с неизвестным алгоритмом, вот это воистину БРЕД.

Воистину. Еще вирусы какие-нибудь занесет и пин кредитски сворует.

Tosha_info
Offline
Зарегистрирован: 01.08.2012

leshak пишет:

Я небыл бы так уверен. То есть я не хочу сказать что "не нужно" свой писать, но то что алгоритм "тривиален" - совсем не факт. И даже тривиальный алгоритм трудно написать если нет специальных знаний из предметной области.

Знания несомненно нужны

leshak пишет:

Воистину. Еще вирусы какие-нибудь занесет и пин кредитски сворует.

А это больше на параною похоже.

Сысла заливать закрытый HEX как не было так и нет, я уже почти написал всё что нужно для девайса сам, причём смогу код расширить так как мне нужно, добавить функционала и т.д. Интересно как вы собираетесь взяв HEX расширить возможности готового устройства?

leshak
Offline
Зарегистрирован: 29.09.2011

 

Tosha_info пишет:

А это больше на параною похоже.

Это больше похоже на сарказм.

К тому же если у вас параноя это еще не значит что за вами никто не следит :)

Tosha_info пишет:

Сысла заливать закрытый HEX как не было так и нет, я уже почти написал всё что нужно для девайса сам, причём смогу код расширить так как мне нужно, добавить функционала и т.д.

Никто не спорит что "знать как устроено" лучше чем "не знать". Но это же не значит что это единственный путь. У кого-то может и не хватит знаний что-бы осилить создание прошивки самому.

Но даже и в этом варианте "залить закрытый HEX" имеет вполне осязаемый плюс. Использовать его в качестве "референстной прошивки". Вот собрали вы схему, залили ЗАВЕДОМО рабочий HEX. Убедились что железо работает правильно. И уже на проверенном железе начинаете делать свою прошивку. Имя возможность сравнить лучше или хуже она рабоатет по сравнению с чьим-то "черным ящиком".

Tosha_info пишет:

Интересно как вы собираетесь взяв HEX расширить возможности готового устройства?

Удовлетворю ваше любопыство - никак. Я вообще не собираюсь собирать металодетектор. Его хотел собрать OneHalf. 

Но даже если бы и собирался - ситуация когда у меня нет планов "расширять", а хочу просто  "собрать и пользоватся" - вполне реальная. Или просто нет знаний что-бы написать самому. В этих раскладах "просто работающий HEX" - меня вполне устроит.

Но, естественно, наличие исходников позволило-бы чувствовать себя гораздо комфортней. Поэтому если вы поделитесь "уже почти написал всё что нужно для девайса сам" думаю топикстартер и его последователи будут вам благодарны.

Tosha_info
Offline
Зарегистрирован: 01.08.2012

Могу поделиться когда закончу, мне не жалко

nestandart
nestandart аватар
Offline
Зарегистрирован: 15.06.2011

>>купить индукционный датчик или намотать самому (луч купить путевый ) прицепить его к аналоговому входу ардуино или непосредственно или если нужна т очность через опер усилитель купить маленький экранчек где ардуино будет выводить шкалу прицепить его или по 4 битной или по 8 битной схеме к ардуино ну и купить капсуль звуковой наверно что бы писщало и прицепить его на шим ногу << 

Вы не совсем понимаете смысл работы металлдетектора. Все не так просто. В данном случае нужно посылать определенный сигнал на катушку , а уже потом читать отклик (если он есть). Здесь никак не обойтись без высоковольтного преобразователя (на катушку нужно подавать не менее 400в) и т.д.

Год назад я задавал аналогичный вопрос , пытался экспериментировать , но безрезультатно (занимался этим без особого фанатизма).

AlexFisher
AlexFisher аватар
Offline
Зарегистрирован: 20.12.2011

nestandart пишет:

Вы не совсем понимаете смысл работы металлдетектора. Все не так просто. В данном случае нужно посылать определенный сигнал на катушку , а уже потом читать отклик (если он есть). Здесь никак не обойтись без высоковольтного преобразователя (на катушку нужно подавать не менее 400в) и т.д.

Ну... есть разные принципы. Радиолокационный незачем применять в простом устройстве. Обычно (в простых конструкциях) оценивают изменение индуктивности контура при приближении к металлическому предмету по изменению частоты или прямым измерением (я вариант схемы предлагал именно для прямого измерения). Изменение частоты обычно измеряют по биениям с образцовой частотой (на слух).

AlexFisher
AlexFisher аватар
Offline
Зарегистрирован: 20.12.2011

А что, больше тема никому не интересна? Ничем не закончилась? 

leshak
Offline
Зарегистрирован: 29.09.2011

AlexFisher пишет:

А что, больше тема никому не интересна? Ничем не закончилась? 

В первый раз, что-ли? Чем более "комплексный девайс" человек начинает делать тем меньша шансов что в итоге доведет.

Особенно чайники, которые начинают "с мега комбайта" и первым постом на форуме идет список железа на две страницы которые они купили/собираются купить (или просят посоветовать).

sevzirfo
Offline
Зарегистрирован: 24.11.2012

Металлодетектор на принципе частотометра (FM)  http://cxem.net/metal/Part6/6-12.php  обладает двумя большими минусам - влияние земли (минерализации) вызывает ложные срабатывания. На морском пляже будут сплошные глюки. Маленькая чувствительность.

Как игрушку - использовать можно, но не более.

Для создания рабочего прототипа предлагаю использовать Импульсный металлодетектор (PI) http://www.masterkit.ru/info/magshow.php?num=94 В этой статье подробно описан алгоритм функционирования микроконтроллера и работа схемы. 

Преимущество аналоговой части этой схемы - в большинстве случаев не требует настройки и работает сразу, очень простая катушка - 28 витков, провод 0.4-0.7 пэв, общее сопротивление 1.8 Ом +\- 10%

От ARDUINO нам потребуется 3 пина (Q0/Q1/Q2/) для управления аналоговой частью, 1 пин - АЦП, для измерения полезного сигнала от цели на конденсаторе С12, 1 пин - ШИМ, для генерации звука.

Остальные выводы можно задействовать для вывода информации на LCD и кнопки.

Tracker PI

OneHalf
Offline
Зарегистрирован: 29.04.2011

leshak пишет:

В первый раз, что-ли? Чем более "комплексный девайс" человек начинает делать тем меньша шансов что в итоге доведет.

Особенно чайники, которые начинают "с мега комбайта" и первым постом на форуме идет список железа на две страницы которые они купили/собираются купить (или просят посоветовать).

Я так понимаю - это кирпич в мой огород?

Так это не по адресу! Мне не комбайН нужен был, а задача стояла как можно проще обзавестись детектором из железяк, которые у меня есть на руках.

В итоге даже не начал. Просто потому что обзавёлся фирменным по-дешевке.

nmi
Offline
Зарегистрирован: 17.12.2012

Схема предложенная AlexFisher  это абсолютно бездарная схема...

Катушка для металлодетектора имеет индуктивность не более 50 мкГн. А это значит что для данной цепи тау будет менне 1мкс. Значит у вас тактов микропроцессора не хватит чтобы выполнить программу, не то что АЦПировать....Данный метод работал бы если у вас однокристалка работала на частотах - ГГц, хотя ацпировать на таких частотах в принципе не возможно......так что это пока тупиковая ветвь....

Уважаемые изучайте математику, теорию регулирования и т.д нефиг людям советовать что не знаете....

Схема эта взята из примера по измерению емкости и индуктивности. Емкость в микрофарадах таким образом мерять можно, а вот индуктивность в мигрогенри - нет....схема и пример там не рабочий, при любой индуктивности будет одно число....таймер не будет успевать считать.....

Индуктивность катушек в вашем случае можно мерить только двумя способами:

1. собрать генератор на LC и мерять его частоту - есть минус.  долгое измерение частоты, низкое время реакции. Для вашего случая подойдет (кстати, вторая схема от sevzirfo работает именно по такому принципу и является рабочей ).

2. Сделать LC контур и с генератора подовать высокую частоту. Мерять в этом случае добротность контура и реактивное сопротивление катушки. Отсюда легко вычислить L. Но, в вашем случае не столько важна индуктивность, как ее изменнение при внесение металличекого тела в катушку. Если изменение индуктивности начинается от 3-5% это хорошо - можно сделать такое простое решение. Если изменение это доли процента, то вы несможите вычлинить результат измерения от статистической погрешности. 

3. Вариант с электромагнитными датчиками для Вас не покатит. т.к все они работают до 6см, и как правило выдают логические 1 и 0 (степень приблежения, размер не покажут). т.к расчитаны на установки для автоматизацит процессов.

Вот я вам все по полкам разложил, если надо могу все математические выкладки сделать.

PS: Вы правильно сделали что купили фирменный. т.к змерение L не тривальная задача для микроконтроллеров. А детекция размеров и типов обнаруженных  металлов (измерение приращений) это ноу хау многох фирм которые делают металл детекторы. и сколхозить собственными силами полный аналог не возможно, можно сделать только полурабочую радиолюбительскую поделку верещащую на любой кусок металла.

leshak
Offline
Зарегистрирован: 29.09.2011

 

OneHalf пишет:

leshak пишет:

В первый раз, что-ли? Чем более "комплексный девайс" человек начинает делать тем меньша шансов что в итоге доведет.

Особенно чайники, которые начинают "с мега комбайта" и первым постом на форуме идет список железа на две страницы которые они купили/собираются купить (или просят посоветовать).

Я так понимаю - это кирпич в мой огород?

Да нет, вообщем-то. Просто наблюдение. Даже не персонализированное. Кто начинает с "помигать диодом", "научится писать/читать serial" и т.п. - тот в итоге делает и какие-то полезные девайсы. А кто хочет проскочить "скучные азы" и сделать сразу относительно сложный девайс поверив маркетингу "не нужно знать программирование для ардуины" - шансы что-то сделать не велики (хотя нет правил из исключений).

OneHalf пишет:

Так это не по адресу! Мне не комбайН нужен был, а задача стояла как можно проще обзавестись детектором из железяк, которые у меня есть на руках.

Если до этого контроллеры не программили то это именно комбайН. А про то что возможно возможно у вас задача "получить как можно проще что-бы пользоваться" - если заметите я рассматривал как вполне возможную.

OneHalf пишет:

В итоге даже не начал. Просто потому что обзавёлся фирменным по-дешевке.

Что и требовалось доказать :) В данном случае тенденция подтвердилась :)

Это ни в коем случае не означает что я хочу сказать про вас что-то плохое. Вы решили свою поставленную задачу - и это главное. "Простучали" возможные пути решения, увидели что "проще купить чем разбиратся" (почти наверняка так дешевле). Абсолютно нормальный и логичный подход.  Кидать камни в огород за то что "изменили ардуине" - никто не будет ;)

 

AlexFisher
AlexFisher аватар
Offline
Зарегистрирован: 20.12.2011

leshak пишет:

 Кидать камни в огород за то что "изменили ардуине" - никто не будет ;)

:) Хочу изменить ардуине с STM32F3discovery (уже в ящике лежит), но пока не могу - некогда :(

nmi
Offline
Зарегистрирован: 17.12.2012

Соглашусь, что arduino фигня редкостная. Но эта фигня имеет кучу поклоников по всему миру, а как следствие  - кучу полезных библиотек. Снимающих  массу рутиных задач....

STM32F3discovery - не лучший и не хучший вариант, так попробывать.

Я так же пробывал комплект АВР Батерфляй - ну ничего, но  не цепляет..... для меня более важны устройства ввода вывода, и каналы передачи данных чем магетометометры и  компасы.

 

Kolchugin
Offline
Зарегистрирован: 15.12.2013

 Наткнулся случайно на металлоискатель:
 http://magelab.ru/index.php/retsepty/4-ippulsnyj-metallodetektor-na-arduino-izobretaem-velosiped

В основе схема из 15 сообщения. Решил повторить.
Катушку намотал диаметром 19см. Провода взял из витой пары, было несколько кусков. Распутывать не стал (муторно) так
по 2 провода в паре и мотал. В итоге 28 витков.

Печатная плата.
 Взял за основу плату от "Tracker-Pi", перерисовал под ардуино про мини. Получилось вот так:

Как работает не очень понравилось.  Хотя автор написал, что был удивлён чувствительностью.
Возможно я что-то неправильно настроил, или накосячил где с деталями, но не суть. Собирал интереса ради.
Вышло 17 см на десятирублёвую монету (та что на фото с катушкой)  это дома "по воздуху"
По деталям: полевой транзистор IRF610 (такой был в наличии), конденсаторы вместо 470Пф поставил на 510Пф (думаю не критично), резисторы на катушке по 330 Ом.

Скетч:



#include <LiquidCrystal.h>

//(c) Tsaryk Aliaksei - rst10h - 2014

LiquidCrystal lcd(8, 9, 4, 5, 6, 7);
#define FASTADC 1
 
// defines for setting and clearing register bits
#ifndef cbi
#define cbi(sfr, bit) (_SFR_BYTE(sfr) &= ~_BV(bit))
#endif
#ifndef sbi
#define sbi(sfr, bit) (_SFR_BYTE(sfr) |= _BV(bit))
#endif
 
//для пищалки
//#define R3_PIN       A0
#define SPEAKER_PIN  11
#define T2_WGM   0b010
#define T2_COMA  0b01
#define T2_CS    0b111
 
// параметры подстройки
int pMID=0;
int pMAX=0;
int pMIN=0;
int Sensv = 0; //(0 - макс чувствительность, минимум - около сотни наверное.)
int LastData[] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
int SetupData[200];
void delayms(int ms) {
  for (int i=0;i<ms;i++) delayMicroseconds(1000);
}
void setup() {
  //set port/pin  mode
  //DDRD = 0xFF;//all outputs
  //DDRC = 0x0F;//all inputs
  //DDRD = 0xFF;//all outputs
  //DDRC = B11111110;
  //TIMER INTERRUPT SETUP
  
  DDRD = DDRD | B00001110;
  PORTD = B00001110;
 
  //PORTD = 0;
  
  lcd.begin(16,2);
  lcd.setCursor(0,0);
  lcd.print("START  ");
  
  #if FASTADC
// set prescale to 16
sbi(ADCSRA,ADPS2) ;
cbi(ADCSRA,ADPS1) ;
cbi(ADCSRA,ADPS0) ;
#endif
 
  //для динамика
 
  TCCR2A = (T2_COMA << 6) | (T2_WGM & 0b011);
  TCCR2B = ((T2_WGM & 0b100) << 1) | T2_CS;
  OCR2A = 18;
  // pinMode(R3_PIN, INPUT);
 // pinMode(SPEAKER_PIN, INPUT);  
 // pinMode(SPEAKER_PIN, OUTPUT);
  noInterrupts();
  beep(100);
  delayms(100);
  beep(100);
  delayms(100);
  beep(100);
  delayms(1000); 
  //посылаем пару сотен импульсов в холостую просто так 
  //
  lcd.clear();
  lcd.setCursor(0,0);
  lcd.print("SETUP...  ");
  //while (1) 
  for (int i=0;i<200;i++) {  
  int t = SendPulse();  
  delayMicroseconds(6500); 
  }
  //посылаем 200 импульсов для настройки
  for (int i=0;i<200;i++) {
  int t = SendPulse();
  SetupData[i]=t;
  delayMicroseconds(6500);   
  }
  int tmin=1024;
  int tmax=0;
  unsigned long tnak=0;
  for (int i=0;i<200;i++) {
    tnak=tnak+SetupData[i];
    if (SetupData[i]>tmax) tmax = SetupData[i];
    if (SetupData[i]<tmin) tmin = SetupData[i];
  }  
 pMID = tnak/200;
 pMIN = tmin;
 pMAX = tmax;
 lcd.clear();
 lcd.setCursor(0,1);
 lcd.print(pMIN);
 lcd.setCursor(5,1);
 lcd.print(pMID);
 lcd.setCursor(10,1);
 lcd.print(pMAX);
 /* //for test
 for (int i=0;i<200;i++){
 lcd.setCursor(0,0);
 lcd.print(SetupData[i]);
 delayms(1000);
 lcd.setCursor(0,0);
 lcd.print("           ");
 }*/
 beep(500);
}
//Функция опроса кнопок модуля дисплея 1602 с кнопками.
//кнопки подключены к аналоговому порту (0) ардуино, если их подключаете как то иначе - функцию необходимо переделать
int getKey() {
  int value = analogRead(0);
  if (value>1000) return 0; //ничего не нажато
  if (value>580) return 1; //SELECT //Автонастройка.
  if (value>380) return 2; //ЛЕВО
  if (value>200) return 3; //ВНИЗ //Уменьшить порог (увеличивается чувствительность)
  if (value>80) return 4; //ВВЕРХ //Увеличить порог (снижается чувствительность)
  if (value<50) return 5; //ВПРАВО
}
 
 
void beepOn() {
  pinMode(SPEAKER_PIN, OUTPUT);
}
void beepOff() {
  pinMode(SPEAKER_PIN, INPUT); 
}
 
void beep(int msec) {
 beepOn();
 delayms(msec);
 beepOff(); 
}
 
int lmax = 10;
int mmax = 80;
int mmaxDefault = 80;
int lmaxDefault = 10;
int LL=lmax; //Длина звук. сигнала, циклов
int MM=mmax; //Длина тишины, циклов.
 
     int vo = 0;
     int vi = 0;
     int vod = 0;
     int vid = 0;
     unsigned long v1 = 0;
int SendPulse() {
    //--------------------------
    //Начало импульса
    //Мощный ключ открыт, усилитель выключен.
    PORTD = B00000010; 
    //-------------------------
    //Ожидаем 100мкс: 
    delayMicroseconds(100);
    //Закрываем ключ:
    PORTD = B00001010;
    //Открываем Q1:
    delayMicroseconds(12); //Защитный интервал
    PORTD = B00001110;
    delayMicroseconds(7);
    PORTD = B00001100;
    delayMicroseconds(100);
    PORTD = B00001110;
    int r = analogRead(1);
    return r;
}
int tControl = 0; //может изменяться от 0 до 15
int maxControl = 10; //кол-во измерений для расчета - чем больше количество измерений, тем меньше влияние шума.
                    //При тестировании в доме я выставлял 12-15 измерений для получения стабильной работы.
                    //В поле достаточно двух
 
int getMidControl() {
  int gm = 0;
  for (int i=0;i<maxControl;i++) {
    gm = gm+LastData[i];
  }
  int res = gm/maxControl;
  return res;
}
 
char Str2[11] = {0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,'\0'};
int V;
void(* resetFunc) (void) = 0; //сброс
int setupcount = 150;
void loop() {
  int k =0;
  //tone(SPEAKER_PIN,400);
  noInterrupts();
  //lcd.setCursor(0,0);
  //lcd.print(t);
  
  //Бит 3 = 1, J3
  //Бит 2 = 1  J4
  //Бит 1 = 1, J9
  PORTD = B00001110;
  delayms(2000);
  int ssl=0; 
    lcd.clear();
    lcd.setCursor(0,0);
    lcd.print("      ");
    lcd.setCursor(12,1);
    lcd.print("    ");
    lcd.setCursor(12,1);
    lcd.print(Sensv);
    int a = 0;
    int val;
    LL=9;
    while (1) {
      k = getKey();
     if(tControl>=maxControl) tControl=0;
    int t = SendPulse();
    LastData[tControl] = t;
    int s = getMidControl();
    tControl++;
    //для тестирования
    //pMID = 781;
    //s = 520;
    //==================
    //==================================
    // ОЗВУЧКА ЦЕЛИ          V
    //==================================
    if (LL<lmax && LL>0) LL--;
    if (LL==0 && MM>0) MM--;
    if (MM==0) {
      LL = lmax;
      MM = mmax;
    } 
    if (setupcount>0) {
      if (s<=pMID) pMID = pMID-1;
      setupcount--;
    }
    int signal=(pMID-Sensv)-s; //для средних значений
    //int signal=(pMIN-Sensv)-s; //для минимальных
    if (signal>0 && LL==lmax) {
      beepOn();
      //if (signal<50) slevel = 2-
      int slevel = 200-signal; //цифра влияет на чувствительность пищалки. 400- редко пикает, затем часто до писка. 50 - быстро, затем писк.
      if (slevel<5) slevel = 5;
      mmax = slevel/5;
      MM = mmax;
      LL--;
    }
    if (signal<0 && LL==lmax) {
      mmax = mmaxDefault;
      MM = mmax;
    }
    int ssk = signal;
    signal = signal/5;
    if (signal<0) signal = 0;
    for (int i=0;i<10;i++) {
    if (i<signal) Str2[i] = 0xff;
    else Str2[i] = ' ';
    }
    if (LL==0) beepOff();
    //==================================
    //==================================
    //if (a==0) val = s;
    lcd.setCursor(0,1);
    lcd.print(Str2);
    a++;
    if (k==4) {
      Sensv++;
      lcd.setCursor(12,1);
      lcd.print("   ");
      lcd.setCursor(12,1);
      lcd.print(Sensv);
      beep(100);
      delayms(100);
    }  
    if (k==3) {
      Sensv--; 
      lcd.setCursor(12,1);
      lcd.print("   ");
      lcd.setCursor(12,1);
      lcd.print(Sensv);
      beep(100);
      delayms(100);
    }
    if (k==1) {
      
      pMID = t;
      Sensv = 0;
      setupcount = 150;
      lcd.setCursor(12,1);
      lcd.print("   ");
      lcd.setCursor(12,1);
      lcd.print(Sensv);
      beep(200);
      delayms(500);
      
      //resetFunc();
    };
    delayMicroseconds(1000); 
 
    lcd.setCursor(0,0);
    lcd.print(vi);
    lcd.print('.');
    lcd.print(vid);
    lcd.print("V  ");
    lcd.print(ssl);
    lcd.print(' ');
        if (a>200) {
      a = 0;
     //1 раз за 200 циклов измеряем напряжение аккумулятора и выводим на экран
     V = analogRead(4);
     //V = V-73; //калибровка во вольтметру
     unsigned long vt = V*125l;
     vt = vt/64l-140;
     vi = vt/100;
     vid = vt/10%10;
     ssl = ssk/10;
     //vi = v1*4;
    }
    //lcd.print(vid);    
 
    //lcd.print(vi);       
  }
} 

 

Zaliv
Offline
Зарегистрирован: 05.03.2011

Может дело как раз в том, что пара "витая". Я так понимаю, это как-то уменьшает наводки, т.е чувствительность.

Kolchugin
Offline
Зарегистрирован: 15.12.2013

Возможно вы правы. Найду проволоку и попробую намотать обычную катушку.

trembo
trembo аватар
Offline
Зарегистрирован: 08.04.2011

Zaliv пишет:

Может дело как раз в том, что пара "витая". Я так понимаю, это как-то уменьшает наводки, т.е чувствительность.

Витая пара уменьшает внешние наводки ( синфазую помеху) только тогда
когда один и тот-же ток идёт по одному её проводу и возвращается по другому.
В одном проводе помеха прибавляется к сигналу, а в другом вычитается из него.
Сумма помехи равно нулю.
Симметричная линия называется.

Kolchugin
Offline
Зарегистрирован: 15.12.2013

Тогда получается, что смысла мотать другую катушку одним проводом,
с таким же диаметром и с таким же количеством витков нет.  Будет работать так же.
 

FoxyLab
FoxyLab аватар
Offline
Зарегистрирован: 10.06.2015

А вот и мой проект импульсного металлодетектора на Arduino foxyPI v2, причем используется не капризный АЦП Arduino, а встроенный компаратор.
Видео испытаний - https://youtu.be/ikJbqUCbyvw
Подробное описание (будет дополняться) - http://acdc.foxylab.com/node/47
Схема:

Для снижения влияния помех производится усреднение анализируемой длительности RX-импульса катушки по алгоритму "скользящего среднего".
Реализована как автоматическая, так и ручная балансировка.
Тональность звукового сигнала изменяется при приближении катушки к мишени (также сделана и графическая индикация для различных градаций длительности RX-импульса).
Для настройки длительности TX-импульсов, интервалов между ними, времени задержки и ширины окна "скользящего среднего" используется меню, при этом реализовано сохранение настроек в EEPROM.

FoxyLab
FoxyLab аватар
Offline
Зарегистрирован: 10.06.2015

Возможно, окажется полезным. Иллюстрация к вопросу о влиянии напряжения пробоя MOSFET-а на скорость затухания тока в катушке (зависимость получена на модели МД в LTspice):

dt - интервал времени, за который ток уменьшается в e^2 раз
Ubrk - напряжение лавинного пробоя транзистора

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

интересный проект

а что за vr1? линейный стабилизатор? на какое напряжение если на него 3В подается

FoxyLab
FoxyLab аватар
Offline
Зарегистрирован: 10.06.2015

DEL

FoxyLab
FoxyLab аватар
Offline
Зарегистрирован: 10.06.2015

jeka_tm пишет:

интересный проект

а что за vr1? линейный стабилизатор? на какое напряжение если на него 3В подается

МД уже почти построен (мой второй проект, поэтому получился аккуратнее, чем первый - "Пират").

Нет, это импульсный преобразователь, маленькая платка, работает, начиная с 1 В - на выходе 5 В (вот она на ebay http://www.ebay.com/itm/DC-DC-Boost-Converter-Step-Up-Module-1-5V-to-5V-500mA-Power-Module-New-F5-/291549001381?hash=item43e1acb6a5:g:SxEAAOSwzrxUs-SZ)

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

может значок поменять. выглядит как линейный стабилизатор, а он только понижать может, поэтому и смутило

FoxyLab
FoxyLab аватар
Offline
Зарегистрирован: 10.06.2015

jeka_tm пишет:

значок поменять

это верно

Logik
Offline
Зарегистрирован: 05.08.2014

А не логичней ли питать и контроллер от 12в батареи через dc/dc в 5В?

FoxyLab
FoxyLab аватар
Offline
Зарегистрирован: 10.06.2015

Там "земли" разные - "минус" одной батареи - это "плюс" другой. Иначе необходимо убирать постоянную составляющую анализируемого сигнала. Помех опять же меньше (цепи передатчика и приемника изолированы), надежность выше, так как потребление от трехвольтовой батареи небольшое и до 1 В ей долго разряжаться. А если 12-вольтовая просядет (в разумных пределах), то это только на "чуйку" повлияет.

trembo
trembo аватар
Offline
Зарегистрирован: 08.04.2011

...............минус" одной батареи - это "плюс" другой........

А сделать  минус 3 из того что есть( из +12) ?

+12
GND
-3

FoxyLab
FoxyLab аватар
Offline
Зарегистрирован: 10.06.2015

Так они так и включены :-) Почти   +3 В   -3В = + 12 В    -12 В

Еще можно p-канальный мосфет поставить, но проблематично найти его на 400 - 500 Вольт за малую денежку. Но и это не решит всех проблем. Всё из-за того, что интересующее нас напряжение на катушке направлено против полярности питания - поэтому или так, или еше делают преобразователь, чтобы ОУ двуполярным напряжением питать, чтобы он отрицательный сигнал усиливал. Но мне с двумя батареями интереснее.

trembo
trembo аватар
Offline
Зарегистрирован: 08.04.2011
FoxyLab
FoxyLab аватар
Offline
Зарегистрирован: 10.06.2015

Эти я знаю, конечно. Но нужен P-CHANNEL.

FoxyLab
FoxyLab аватар
Offline
Зарегистрирован: 10.06.2015

Текущее состояние проекта:

ivan-82
Offline
Зарегистрирован: 26.01.2016

soznik
Offline
Зарегистрирован: 20.09.2015

Эти я знаю, конечно. Но нужен P-CHANNEL.

IRF740 N -канал

FoxyLab
FoxyLab аватар
Offline
Зарегистрирован: 10.06.2015

soznik пишет:

Эти я знаю, конечно. Но нужен P-CHANNEL.

IRF740 N -канал

Для модификации схемы P-канальный нужен.

soznik
Offline
Зарегистрирован: 20.09.2015

Извиняюсь понял о чем речь. 

А разводка печатки есть ?

FoxyLab
FoxyLab аватар
Offline
Зарегистрирован: 10.06.2015

Нет, "old school", суровый навесной монтаж ;-)

Для одного экземпляра нет смысла делать печатную плату, да и надежность повыше, как ни странно.

И возможность модификации опять же, в разумных пределах.

Всё вышесказанное сугубо субъективно, переубеждать меня бесполезно ;-)

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

следующий можно красиво на печатной плате с корпусом подходящим. в чип и дипе видел много хороших корпусов

FoxyLab
FoxyLab аватар
Offline
Зарегистрирован: 10.06.2015

Корпус там ответственный, эта коробушка IP55, хотя я и изъял из нее уплотнитель для игрищ котов.

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

коробку я знаю, но такому устройству хочется что то вроде этого

http://www.chipdip.ru/product/g1188g/

ручку целиковую из водопроводной белой пластиковой тубы. согнуть в нужных мес помощью горячего воздуха чтобы получилась эргономичная конструкция. как гнуть инфы достаточно

ну это мне так кажется

FoxyLab
FoxyLab аватар
Offline
Зарегистрирован: 10.06.2015

Красивая коробка.

А насчет штанги - я специально сделал укороченный вариант - в свете изменений в законодательстве РБ стала весьма недружественной страной к ЛПП.

А так можно сеточку на катушку, блоки сбросить - и ни разу это не штанга, это научный "струмент" - сачок, а сам я "энтомолоджист и следую на Суматру для ловли бабочек" )))))))))))))

satelit
Offline
Зарегистрирован: 12.12.2015

все это хорошо, есть идея получше. у нас в городе один взял погонять у знакомого, прошелся по местным пляжам. за день нашли цепок на 70 штук деревянных( предложили в самом первом ломбарде). я к чему- берете а аренду на пару суток, шаримся по пляжам, и покупаем хороший аппарат( паяльник не пригодился)

FoxyLab
FoxyLab аватар
Offline
Зарегистрирован: 10.06.2015

Так МД - он для морального удовольствия, а не для материального.