Доработка металлоискателя Пират
Translator



(13-11-2025, 16:27)-vlad- : Сейчас ещё раз запущу. Может я не дождался?
Что именно? Что на входе ацп? Какой сигнал? Я забыл, у там же оптрон, а он инвертирует. Значит отклик должен быть положительный. Тогда всё нормально.
-vlad-" попробуйте этот вариант.

.zip   pwm_pira.zip (Размер: 1.48 KB / Загрузок: 41)
volatile byte nopdelay = 9;  //смещение выборок ацп ~ 10мкс
volatile byte startdelay = 9;  //Задержка после закрытия транзистора ~ 10мкс. При 0 приблизительно 600нс.
nopdelay - это смещение выборок ацп при этом значении получается около 10мкс. Лучше пока не трогать.

startdelay - это задержка после закрытия ключа перед началом выборок. Изменяя эту задержку сдвигается окно выборок относительно полезного сигнала. Попробуйте по отклику подобрать оптимальную. Больше 100 наверное ставить не стоит.

Резисторы на светодиоды надо увеличить до хотя бы до 1к. Зачем грузить контроллер? Светодиоды и при 1ма нормально светятся, а при 1к. будет больше 3-х. Попробуйте убрать делитель смещения оу от 12в. и сделать смещение от 5в. через резистор 33к-47к и поставить электролит с керамикой на общий провод. Тогда на выходе оу сигнал будем изменятся относительно 5в и можно спокойно подавать его напрямую на ацп через 10к. и на всякий случай поставить защитный диод на +5в на вход ацп, хотя и внутренний должен выдержать без проблем.
Ближе к вечеру доберусь до компа.
vako, Попробовал, а разницы между своим кодом и вашим(так же работает) вообще не заметил. Такая же реакция на приближение монетки...

(14-11-2025, 12:48)vako : смещение от 5в. через резистор 33к-47к
Это пока не вариант, так как я использую рабочую плату-донора от Пирата с УД2. Её перепаивать как бы не хочется на TL и обвязку.
У меня сейчас в голове вертится идея, там то точно я применю выборки, да и в другой теме,так как это будет уже не пират.
Частота уже другая будет >125Гц да и колечко другое. Попробую сделать: железо/цвет.
(15-11-2025, 11:55)-vlad- : vako, Попробовал, а разницы между своим кодом и вашим(так же работает) вообще не заметил. Такая же реакция на приближение монетки...
Графики можно посмотреть?
А пока оставлю как есть, на диоды только резисторы перерисую.
В плоттере видно, сигнал шумный очень, ФНЧ попробую сделать.
А регулировка порога(зеленая) управляется кнопками.    

(15-11-2025, 12:08)vako : Графики можно посмотреть?
Да конечно.

Все то же самое.    

vako, Сейчас мне убежать надо, график могу переснять попозже.
-vlad-, startdelay пробовали увеличивать?
(15-11-2025, 12:20)-vlad- : ФНЧ попробую сделать.

Код:
/***
*
* //https://github.com/MartinBloedorn/libFilter/blob/master/examples/LowPass_ADC/LowPass_ADC.ino
* ADC_Filtering Example
*
* Copyright (C) 2016  Martin Vincent Bloedorn
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 3, as
* published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program.  If not, see <http://www.gnu.org/licenses/>.
*/

#include <filters.h>

const float cutoff_freq   = 20.0;  //Cutoff frequency in Hz
const float sampling_time = 0.005; //Sampling time in seconds.
IIR::ORDER  order  = IIR::ORDER::OD3; // Order (OD1 to OD4)

// Low-pass filter
Filter f(cutoff_freq, sampling_time, order);

void setup() {
  Serial.begin(115200);
  pinMode(A0, INPUT);
  // Enable pull-ups if necessary
  digitalWrite(A0, HIGH);
}

void loop() {
  int value = analogRead(0);
  float filteredval = f.filterIn(value);
  //View with Serial Plotter
  Serial.print(value, DEC);
  Serial.print(",");
  Serial.println(filteredval, 4);
  delay(5); // Loop time will approx. match the sampling time.
}
-vlad-, Поробуйте этот вариант.

.rar   pwm_pira.rar (Размер: 1.44 KB / Загрузок: 64) В прошлом выводилась только сумма, а в этом массив из 100 выборок сигнала. В 27-ой строке я поставил самую большую скорость 2000000. Должен быть виден сигнал с катушки. И надо поизменять startdelay.
vako, Если я правильно понял, вы хотите ...по дискретным точкам построить?