Как понизить переменное напряжение на вход аналогового входа

Semka_2005
Offline
Зарегистрирован: 15.06.2017

Здравствуйте! Схема подключения такая:

https://drive.google.com/open?id=19Ok4-kqJy0XUTnpC8AEpn0tNkjqtnbtD

Есть задача:

Отслеживать поступает или нет сигнал (аудио) с радиостанции на аналоговый вход А0 ардуино UNO 5В. 

Сигнал без подключенной нагрузки (динамика 8Ом) амплитудой 7.2V. 

Сигнал с подключенной нагрузкой (динамика 8Ом) амплитудой 1.5V (на максимальной громкости). Ток 3,6mА

Все бы ничего, но вот показания которые я получаю на входе А0:

Y=907
Y=1023
Y=927
Y=798
Y=392
Y=805
Y=1023
Y=0
Y=526
Y=443
Y=760
Y=795
Y=79
Y=356
Y=1023
Y=0
Y=1023
Y=866
Y=662
Y=521
Y=749
Y=923
Y=354
Y=281
Y=0
Y=985
Y=224
Y=157
Y=0
Y=1023
Y=963

Проскакивают ноли при том, что сигнал есть и музыка играет. При отсутствии сигнала стабильный ноль.

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

Скетч предельно простой:

void loop() {
  val = analogRead(0);     
   Serial.print("Y=");
   Serial.println(val); }

 

ZhenyaRUS39
Offline
Зарегистрирован: 08.10.2015

просто игнорить их программно нельзя? добавьте, просто защиту от дребезга, как с кнопкой програмно (проверка последних2-х значений на совпадение, если они оба равно "0", то сигнала нет, если только одно равно "0", то пропускаем). Посмотрите примеры с кнопкой в интернете. Это будет легче, чем искать наводки в цепи.

bwn
Offline
Зарегистрирован: 25.08.2014

А мне кажется ТС аудиосинусоиду рандомно меряет. Диодный мостик+RC цепочка.

Semka_2005
Offline
Зарегистрирован: 15.06.2017

bwn пишет:

А мне кажется ТС аудиосинусоиду рандомно меряет. Диодный мостик+RC цепочка.

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

evgta
Offline
Зарегистрирован: 02.09.2016

после мостика резистор на 5-10К и конденсатор поставить,  не?

Semka_2005
Offline
Зарегистрирован: 15.06.2017

evgta пишет:

конденсатор поставить,  не?

Пробовал. 100нФ. Не помогло. Ставил 100uF пропуски ушли, но возникла другая проблема. Время разряда этого кондера... Сигнала уже нет, а еще 3-5сек продолжает думать что сигнал есть. Можно подобрать теоретически, но в моем случае входной сигнал может быть еще больше по амплитуде...

bwn
Offline
Зарегистрирован: 25.08.2014

Semka_2005 пишет:

evgta пишет:

конденсатор поставить,  не?

Пробовал. 100нФ. Не помогло. Ставил 100uF пропуски ушли, но возникла другая проблема. Время разряда этого кондера... Сигнала уже нет, а еще 3-5сек продолжает думать что сигнал есть. Можно подобрать теоретически, но в моем случае входной сигнал может быть еще больше по амплитуде...

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

GarryC
Offline
Зарегистрирован: 08.08.2016

Вообще то, исходя из приведенных Вами данных, 5 раз 1023 и 4 раза 0 на 32 отсчета, у Вас сильное насыщение сигнала и надо для начала уменьшить коэффициент передачи. Ну а дальше - или НЧ фильтр на входе или усреднение после измерения.

dimax
dimax аватар
Offline
Зарегистрирован: 25.12.2013

GarryC, вы уверены что Т.С. поймёт о чём вы говорите ? :) Он вон защитные диоды в м.к. пытает переменкой без капли сомнений.

Semka_2005
Offline
Зарегистрирован: 15.06.2017

dimax пишет:

GarryC, вы уверены что Т.С. поймёт о чём вы говорите ? :) Он вон защитные диоды в м.к. пытает переменкой без капли сомнений.

Это вы правы )))

Semka_2005
Offline
Зарегистрирован: 15.06.2017

GarryC пишет:

Вообще то, исходя из приведенных Вами данных, 5 раз 1023 и 4 раза 0 на 32 отсчета, у Вас сильное насыщение сигнала и надо для начала уменьшить коэффициент передачи. Ну а дальше - или НЧ фильтр на входе или усреднение после измерения.

 

Так, так , так... Интересно. Я не совсем понимаю вашу фразу "5 раз 1023 и 4 раза 0 на 32 отсчета", но действительно сигнал я с рации подаю пока "какой есть" не понижая до 5В  делителем напряжения. Ардуинка терпит пока. Да и я на пределе ее не насилую

evgta
Offline
Зарегистрирован: 02.09.2016

Да его и не надо делителем понижать, резистора на 10К последовательно хватит.

Semka_2005
Offline
Зарегистрирован: 15.06.2017

GarryC, можете мне неопытному пояснить фразу "у Вас сильное насыщение сигнала и надо для начала уменьшить коэффициент передачи"?

перенасыщение по току? 

Уменьшить коэфициент передачи... Это уменьшить мощность сигнала? т.е. ограничить по току вход резистором 10К последовательно, как уже советывали?

Pablos
Pablos аватар
Offline
Зарегистрирован: 18.07.2017

А можно пояснить в двух словах смысл этого действия?
Зачем в схеме динамик?
Если нужно понимать есть голосовой сигнал или нет - это одно, если пытаться его еще и отцифровывать - то совсем другое.
Если задача только понять, есть или нет сигнал, то перед АЦП нужно поставить ингерирующую RC цепочку. Тогда все колебания сглядятся и на выходе будет только общий уровень. После этого нужно помнить, что появится неизбежная задержка срабатывания, связанная с медленным нарастанием и спадом сигнала.

P.S. Поражает любовь к изобретению велосипедов

 

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

Странно.....
Человек работает с радиостанциями и не знает что такое амплитудный детектор....

Mikhail86
Offline
Зарегистрирован: 01.08.2016

Товарищи,  это вобще фигня по моему полная. Надо сделать схему делитель на резисторах, а уже потом снимать напряжение. Какая нафиг амплитуда 7.2В ?! Сгорит мега нафиг. А уже потом, подтянутую к земле цепь пытаться мерить на аналоговом входе,  и при желании или добавить кондер или сделать фильтр программный - надо смотреть сигнал. Но то как в первом посте написано это все не правильно.

Semka_2005
Offline
Зарегистрирован: 15.06.2017

Pablos, динамик в качестве нагрузки! Я не зря написал параметры сигнала. Если без динамика запустить в ардуину сигнал, то она китайским фиерверком засветится. 

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

Semka_2005
Offline
Зарегистрирован: 15.06.2017

Mikhail86, неправильно что? 7,2В? Что снял то и показал. Замеры произвожу мультиметром в режиме переменного напряжения. 

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

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

Semka_2005 пишет:

Pablos, динамик в качестве нагрузки! Я не зря написал параметры сигнала. Если без динамика запустить в ардуину сигнал, то она китайским фиерверком засветится. 

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

Вы наверно схему детекторного приёмника не смогли одолеть?

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

ua6em пишет:
Вы наверно схему детекторного приёмника не смогли одолеть?

Есть на свете добрые люди!
Радисты старой закалки ещё всё помнят.
Нашлась схема амплитудного детектора.

bwn
Offline
Зарегистрирован: 25.08.2014

Изюмительная ведь весчь была в детстве. Батарейков нет, а звук есть. 

Semka_2005
Offline
Зарегистрирован: 15.06.2017

С детектором поэксперементирую. После праздников отпишусь по результату

Mikhail86
Offline
Зарегистрирован: 01.08.2016

Тогда выходит для съема переменного напряжения надо поставить половинный диодный мост с резистором на минус и конденсатором. Тут как раз вы и помехи можете убрать и сигнал будет оперативно виден.http://www.joyta.ru/4139-esr-metr-kondensatorov-svoimi-rukami/

Вот статья, там все кроме DD1 очень пригодно для таких задач. Вместо ГД можно взять диоды шоттки, ( BAS-28 например) ну а дальше подумать. У меня по крайней мере емкость по аналогичной схеме снимается отлично - нареканий нет.

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

Дарю идею:

Умножитель напряжения ( раза в 4) со стабилитроном на 4.7 Вольта на выходе.

Почему умножитель?

1. Сразу однополярный сигнал.
2. У вас напруга уж сильно гуляет.
    В одном случае явный перебор, в другом сильно не хватает.
3. Нет необходимости использовать балластный резистор.
4. Сигнал подаём сразу на цифровой вход.

evgta
Offline
Зарегистрирован: 02.09.2016

в дуине есть стабилитрон на 1мА поэтому(нагрузкана выхож не нужна) резистор на 10К последовательно а конденсатор и резистор для разрядки по вкусу

Semka_2005
Offline
Зарегистрирован: 15.06.2017

Mikhail86, Смоделировал по вашей ссылке работу схемы. Предварительно результат устроил. После праздников буду собирать схему в реале. Вот результат и схема:

https://drive.google.com/open?id=1H26_lApY7m5VtRn6KUkTh7YLVtCeQBg-

 

Semka_2005
Offline
Зарегистрирован: 15.06.2017

"в дуине есть стабилитрон на 1мА поэтому(нагрузкана выхож не нужна) резистор на 10К последовательно а конденсатор и резистор для разрядки по вкусу"

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

Mikhail86
Offline
Зарегистрирован: 01.08.2016

Поздравляю с удачным моделированием! Желаю успешной сборки. Диоды можно взять шоттки любые, до 208кГц они держат. Полумост с кондером дает вполне ровный ток для измерения. Конденсатор на выходе 10мкф на массу влияет на скорость изменения. Надо пробовать от 1го до 20мкф. Посчитайте там время разряда кондера на резистор. И резистор тоже

evgta
Offline
Зарегистрирован: 02.09.2016

что здесь может не так работать?

вместо D2  можно диодный мост поставить

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

Semka_2005 пишет:

Скетч предельно простой:

void loop() {
  val = analogRead(0);     
   Serial.print("Y=");
   Serial.println(val); }

 

Может это поможет https://electronics.stackexchange.com/questions/67087/analogread0-or-analogreada0 

;)

ПС. Схема у Вас - просто атас! Хоть резистор ограничения тока в ногу добавте если еще не позно ;)

Pablos
Pablos аватар
Offline
Зарегистрирован: 18.07.2017

Вот тут очень интересный проект в тему: "индикатор уровня аналогового сигнала". Сама страница проекта на японском, но схема читается легко. Там снимают только переменную часть сигнала через кондер и делитель. Далее отцифровывается сигнал и амплитуда считается программно. Напомню, что максимальная частота отцифровки у ардуино около 8кГц если функцией analogread. Но можно и повысить при сноровке.
https://youtu.be/bONO13WHr2Q

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

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

Pablos
Pablos аватар
Offline
Зарегистрирован: 18.07.2017

Согласен. Можно ещё раз 5...6 в секунду снимать подряд пару сотен замеров и считать амплитуду. Так проще, мне думается.

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

Ну 5-6сек - жирно будет, и не динамично.  И 0,5сек (это 10 периодов 20Гц) вполне хватит заглаза. Лучше уж сглаживать/осреднять полученое по результатам обработки очередных замеров и предыдущих результатов. Кстати, вспомнил, писал както похожее. Измерительный трансформатор тока включен в питание стиралки. По току определяю включена она или нет для включения подачи воды. Самопальный аквастоп. Только в моем случае частота твердо известна - 50Гц, а так все тоже по сути.

 

void loop()
{
  unsigned int AnMax;   
   
  AnMax=0;
   
   
  //Вводим мгновенный ток, по ходу ищем максимум, за 24мс его точно найдем. 
  //Это задает  и темп выполнения основного цикла 
  for (byte i=0;i<240;i++)
  {
    unsigned int AnInp = analogRead(InpTT);
    if (AnInp>AnMax) AnMax=AnInp;
    delayMicroseconds(100);
//    if(FirsStep) Serial.println(AnInp);
  }
  
  /* Сглаживаем максимальные значения мгновенного тока простым БИХ-фильтром  ФНЧ */
  SrMax=SrMax-(SrMax>>BIX_EXP)+AnMax;

  //сравниваем ток после фильтра с порогом
  byte CurrState = SrMax>POROG?1:0; 
  
  //ограничим отфильтрованое значение тока для того, чтоб не наростало сильно и быстро уменшалось
  if (SrMax>2*POROG) 
       SrMax=2*POROG;