Сравнить звук между 2 звуковых дорожек .

georgiy123
Offline
Зарегистрирован: 26.03.2021

Приветствую всех ! 
Имею несколько тюнеров для потового вещания (с телевышки на сервер , сервер в IPTV)
К примеру , есть 3 тюнера , на каждом тюнере по одному каналу(скажу сразу , все тюнера одинаковые , и на всех тюнерах стоит средняя громкость звука ) . 
Всё работает хорошо , но иногда случается скачок напряжение , либо какие-то работы в телевышки и каналы перескакивают на первый номер  канала , то есть  три тюнера с каналами 1 , 2 , 3  перескакивают на первый номер канала .

Если я знаю что первый тюнер на первом канале  остается не тронутым , а остальные тюнера перескакивают на первый канал , получается есть за что зацепиться .

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

Написал скетч 

int analogPin = A4; // вход с первого тюнера  , подтянут резистором на 10 ком к земле , земля тюнера к земле ардуино 
int analogPin2 = A5;//вход со второго тюнера , подтянут резистором на 10 ком к земле , земля тюнера к земле ардуино 
int analogValueRaw;
int analogValueRaw2;
String str = "Sensor’s 1 value is:  ";
String str2 = "Sensor’s 2 value is:  ";
int p = 11; //выход на пьезо динамик 

void setup() {
  // put your setup code here, to run once:
  pinMode(analogPin, INPUT);
  pinMode(analogPin2, INPUT);
  Serial.begin(9600);
  Serial.println("Begin analog input test");
  pinMode(p, OUTPUT);
  
}

void loop() {
  analogValueRaw = analogRead(analogPin);
  analogValueRaw2 = analogRead(analogPin2);
  Serial.println(str + analogValueRaw );
  Serial.println(str2 + analogValueRaw2 );
  
  if (analogValueRaw2 == analogValueRaw) {  //если вход с первого тюнера будет равнятся входу со второго тюнера , значит нужно пищать 
    Serial.println("Тюнера переключились !!!");
    
    tone (p, 500); //включаем на 500 Гц

    delay(10); 

    noTone(p);
  }

  delay(10);
  }
  

НО , все работает никак надо , если даже не тюнера на разных каналов , условие времени от времени срабатывает , или не срабатывает , в общем живёт своей жизнью .

Если есть идеи как это реализовать , подскажите пожалуйста .... 

 

 

rkit
Offline
Зарегистрирован: 23.11.2016

Тебе бы почитать учебники годок-другой, чтобы хоть немножко понимать, что творишь, прежде чем такие хитрые планы придумывать.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

georgiy123 пишет:

Если есть идеи как это реализовать , подскажите пожалуйста ...

То, что Вы задумали - очень непросто.

Попробуйте покопать в сторону: "а нельзя ли просто спросить у тюнера на каком он сейчас канале". Если найдёте такую возможность, то дальнейшее несложно.

BOOM
BOOM аватар
Offline
Зарегистрирован: 14.11.2018

georgiy123 пишет:

НО , все работает никак надо , если даже не тюнера на разных каналов , условие времени от времени срабатывает , или не срабатывает , в общем живёт своей жизнью .

Это все потому, что ты его готовить не умеешь.)))

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

ЗЫ: Интересно, как решать данную задачу в новогоднюю ночь - Когда речь президента по всем каналам одновременно транслируют? ))

Komandir
Komandir аватар
Offline
Зарегистрирован: 18.08.2018

Даже если через analogRead читать один и тот же аналоговый сигнал на разных входах ардуино - будет разница !

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

BOOM пишет:

...а не уровни в текущий момент (отдельные точки).

А кто читает "в текущий момент"?

ТС читает сигналы с разных каналов с интервалом более 0.1 мс. Я даже не говорю о том, что уровень громкости в разных каналах может банально не совпадать.

В общем:

1. Читать нужно одновременно. Что можно сделать, например, на некоторых моделях stm32.

2. Сравнивать нужно грамотно. Например, не проверять на равенство, а вычислять коэффициент корреляции.

BOOM
BOOM аватар
Offline
Зарегистрирован: 14.11.2018

МДА, пока вариант Евгения Петровича кажется более простым ))

Morroc
Offline
Зарегистрирован: 24.10.2016

Ну самый то простой вариант разобраться с питанием, не ? :)

georgiy123
Offline
Зарегистрирован: 26.03.2021

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

И еще одно , стоит стойка тюнеров, штук 5 к примеру . 
на экранчиках  всех тюнеров   001 (то есть первый канал , нужный канал  , остальные все удалены )
Со временем когда удаленные  каналы начинают добавляться , это происходит очень интересно.
После удаление всех каналов  на стойке из 5ти тюнеров картина такая :
001
001
001
001
001

Спустя пару недель :
001
002
003
004
005

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

georgiy123
Offline
Зарегистрирован: 26.03.2021

Стоит юпс  , для тюнеров и сервера хватает на пол часа . 

Komandir
Komandir аватар
Offline
Зарегистрирован: 18.08.2018

Какие то странные тюнеры - сами перенастраиваются ... нах... такая самодеятельность !

georgiy123
Offline
Зарегистрирован: 26.03.2021

Тюнера  китай , на оригинальных (нормальных тюнерах ) каналы не переключается , знаю что можно поменять тюнера , но интересно именно поэкспериментировать .

Komandir
Komandir аватар
Offline
Зарегистрирован: 18.08.2018

Тогда настроить все ресиверы на все каналы и отслеживать вывод на индикатор (что там за индикатор ?)

georgiy123
Offline
Зарегистрирован: 26.03.2021

Komandir пишет:

Тогда настроить все ресиверы на все каналы и отслеживать вывод на индикатор (что там за индикатор ?)

 

Ремонт приставки DVB-T2 своими руками
Примерно вот такой индикатор 

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

georgiy123 пишет:

Примерно вот такой индикатор 

Ну, тут стопудово #2

imp
Offline
Зарегистрирован: 20.06.2020

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

sadman41
Offline
Зарегистрирован: 19.10.2016

Не совсем ясна конечная цель. Ну, допустим, определено, что тюнер ребутнулся - дальше что?

Komandir
Komandir аватар
Offline
Зарегистрирован: 18.08.2018

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

sadman41
Offline
Зарегистрирован: 19.10.2016

В таком случае зачем анализировать что выводится на индикатор? Ребут был - выставляй на заданный канал.

yul-i-an
yul-i-an аватар
Offline
Зарегистрирован: 10.12.2012

georgiy123 пишет:

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

Я думаю что проще сравнивать звуковые каналы операционным усилителем по такой схеме примерно.

При синфазных сигналах на выходе ничего не будет, а если есть разница то она усилится.

Но нужно чувствительность входов настраивать.

А если через аналоговые пины сравнивать, то сигнал необходимо пропустить через фильтр НЧ, частоту среза подбирать придется (80Гц 12Дб/окт) например. Так меньше шансов поймать разницу в каналах при синфазных сигналах, ну и программно предусмотреть допустимую дельту от ложных срабатываний.

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

а настроить на первый канал каждого тьюнера нужный TV канал не вариант?