Переработка схемы глубинника Колоколова-Щедрина. Отличия от оригинальной схемы:
1. Кварцевого генератора на микросхеме к561.. и кварце на 32 кГц- НЕТ. Сигнал 32 кГц дает Ардуино Про Мини.
2. Схемы звукового оповещения на нескольких микросхемах 561 серии тоже нет-озвучивает цели тоже Ардуино(И должен заметить отлично озвучивает, по сравнению с авторской схемой).
3. Питание от однополярного напряжения 12в(свинцовый акб).
4. Регулировка чувствительности кнопками. При шкале АЦП от 0 до 1023, порог срабатывания регулируется от 1 до 38(значение легко можно изменить в скетче).
Самое главное, что хотелось показать в этой статье, что можно собрать МД на Ардуино не уступающий оригиналу по чувствительности(это получилось-т.к. оригиналов исходной схемы было собрано порядка 10шт, поэтому материал для сравнения есть). Оригинальная схема:
Когда я только начинал работу с Ардуино, я был так воодушевлен, что думал, что могу найти и собрать любую схему МеталлоДетектора из интернета на Ардуино, которую с легкостью найду на просторах большой помойки. В принципе так и оказалось, но схемы были на основе частотомера, что не позволило добиться реально хорошей дальности. Одни детские игрушки и проба пера+ попытки заработать на новичках. Оригинал данного мд является реальной рабочей лошадкой, позволяющей находить крупные предметы на расстоянии 2м (смотрите в гугле книгу Колоколова-Щедрина). Статистики по преображенному мд нет. Надеюсь она появится при поддержке фанатов МД и Ардуино. Схема работала с Ардуино Уно и Ардуино Про Мини.
Далее на ссылке выложен процесс рождения данного МД на сайте Паяльник, который длился не один год и подтолкнул автора к изучению программирования дуин. Возможно кому то скетч покажется убогим — с удовольствием приму ваши ИСПРАВЛЕНИЯ.
Ссылка на паяльник
На данный момент есть скетч позволяет регулировать барьер чуствтельности(вывод 7 дуины +1 к барьеру, вывод 8 -1 к барьеру). .
Ардуино про мини 5в, 16МГц, АТмега168 и дисплей использовал вот такие. Рядом для масштаба переходник Мини СД-
Как уже говорил 1602 стоит 86 рублей, ПроМини — 82 рубля. При желании можно вообще взять голую АТмегу168, разработать под нее плату и залить скетч прямо в нее. А так я например устанавливал при помощи разъема мама-папа на плату МД. На фото видно у Ардуино штекер на 6 пинов-через него и заливались скетчи прямо на плате.
Скетч-MD.Rx-Tx.ProMini.SrednjajaTochkaRegBar.ino
// A3-аналоговый вход для вольтметра
// А4-аналоговый вход для сигнала
// 6- вывод зука
// 9 — вывод частоты 31200 Гц
#include
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
byte z1[8] = { // значок батарейки
0b01100, 0b11110, 0b11110, 0b11110, 0b11110, 0b11110, 0b11110 };
int countleds = 0; // переменная для хранения значения уровня шкалы
int voltag = 0; //переменная для хранения значения напряжения
int noll = 0; //переменная для хранения значения средней точки
#define NUM_SAMPLES 10 // 10 аналоговых выборок для чтения за 1сек
int sum = 0; // сумма взятых образцов
int sun = 0; // то же, но деленное на 10
unsigned char sample_count = 0; // текущий номер выборки с
float voltage = 0.0; // расчитаное напряжение
const int button1 = 7; // кнопка барьер-плюс
const int button2 = 8; // кнопка барьер-минус
int i =5; // барьер
void setup(){
lcd.begin(16, 2); // инициализация дисплея
lcd.setCursor(1, 0);
lcd.print("CXEM.NET");
lcd.setCursor(10, 1);
lcd.print("Rx-Tx");
delay(3000);
lcd.clear();
TCCR1A = TCCR1A & 0xe0 | 2;
TCCR1B = TCCR1B & 0xe0 | 0x09;
analogWrite(9 ,126); // на выводе 10 ШИМ=50% f=31200Гц
lcd.createChar(1, z1);
}
void loop() {
int buttonState1 = HIGH; // Состояние кнопки один
int buttonState2 = HIGH; // Состояние кнопки два
sample_count = 0; //сбрасываем контур кол-ва сложений
sum = 0; //сбрасываем сумму 10ти сложений
while (sample_count < NUM_SAMPLES) {
sum += analogRead(A4); // к сумме плюсуется очередное измерение
sample_count++; // к номеру измерения плюсуется единица
sun = sum/10;} // находим среднее значение из 10ти измерений
noll = analogRead (A3)/2; // средняя точка питания
float voltage = map(analogRead (A3),0,1023,0,1500)/100.0;
//Вольтметр, построенный на входе А3
if (sun >= noll + i) {countleds = map(sun, noll+i, noll*2 — 250, 9, 14);
// если полученный рез-т на 9-15 сегмент шкалы
tone(6, countleds*100);}
if (sun <= noll — i) {countleds = map(sun, 116, noll — i, 0, 7);
// если полученный рез-т на 0-7 сегмент шкалы
tone(6, countleds*50); }
if (sun < noll && sun >=noll — (i-1)) {countleds = 7 ;
noTone(6); } //островок виртуального НУЛЯ(7 сегмент)
if (sun > noll && sun <= noll + (i-1)) {countleds = 8 ;
noTone(6); } //островок виртуального НУЛЯ шкалы(8 сегмент)
{lcd.setCursor(countleds, 0); // устанавливаем курсор в колонку countleds, строку 0
lcd.print("xff"); // закрашенный значок
lcd.setCursor(0, 1); // перемещаем во 2 строку, столбец-0
lcd.print(char(1)); // Индикация значка батарейки
lcd.setCursor(1, 1); // перемещаем на указание напряжения
lcd.print(voltage); // вольтаж
lcd.setCursor(7, 0); // 8й столбец 1я строка
if (sun < noll ) { lcd.print("{");} // печать
lcd.setCursor(8, 0); // 9й столбец 1я строка
if (sun > noll ) { lcd.print("}");} // печать
lcd.setCursor(7, 1);
lcd.print("B=");
lcd.setCursor(9, 1); // 11 столбец 2я строка
lcd.print(i); // барьер
lcd.setCursor(13, 1); // 13й столбец 2я строка
lcd.print(sun); // печать усредненного значения значения АЦП
delay(100); // ждём
buttonState1 = digitalRead(button1); // Чтение состояния кнопки 1
buttonState2 = digitalRead(button2); // Чтение состояния кнопки 2
if (buttonState1 == LOW) { i =i + 1 ; delay(50);}
// При нажатой кнопке барьер вырастает на 1. Задержка 50
if (buttonState2 == LOW) { i =i — 1 ; delay(50);}
// При нажатой кнопке барьер снижается на 1. Задержка 50
if (i < 1) { i = 1;} // Нижняя граница барьера
if (i > 38) {i = 38;} // Верхняя граница барьера
lcd.clear();
}
}
Автоноль не использовал.Последние два элемента ТЛ074 остались без дела. Но на схеме и плате они есть. Может появится желание довести их до рабочего состояния чуть позже. Я считаю, что я своего добился. Блок индикации работает чудесно. Все остальное зависит от МД.
Источник (Source)
Становитесь автором сайта, публикуйте собственные статьи, описания самоделок с оплатой за текст. Подробнее здесь.
Источник: