Как передать сигнал DTMF на Arduino

Я пытаюсь считывать входящий сигнал DTMF через входной вывод A0. Я хочу сделать это программно, а не с помощью модуля MT8870. Эта библиотека (https://github.com/Adrianotiger/phoneDTMF) должен делать именно это, но я не могу понять, как подключить мой входящий сигнал DTMF к контакту Arduino A0, чтобы получить сигнал. В принципе, мой ноутбук выдает сигнал DTMF, и я хочу подключить линию out, которая представляет собой два провода, положительный и заземляющий, к Arduino. Ни одна из конфигураций, которые я пробовал, не работает. Я попытался прикрепить позитив к A0 и землю к земле, но A0, похоже, ничего не обнаруживает. Я также не хочу использовать микрофон на выводе A0 для обнаружения DTMF. Простая схема типа Fritzing, показывающая, как подключить входящий сигнал DTMF к A0, была бы полезна. Спасибо.

, 👍0

Обсуждение

Не эксперт по DTMF, но позаботились ли вы о том, чтобы диапазон сигнала был в диапазоне от 0 до 5 В Arduino? Линия выхода симметрична вокруг земли, и я думаю, что диапазон от пика до пика также может быть неправильным. Связанная библиотека также имеет схему регулировки диапазона, хотя и рассчитана на уровни стационарного напряжения, @chrisl

Я подумывал о том, чтобы попытаться подключить усилитель LM386 для усиления входящего сигнала, но я до сих пор не знаю, как настроить два провода на Arduino., @user3080392


1 ответ


Лучший ответ:

3

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

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

Самый простой способ-с одним конденсатором и двумя резисторами:

schematic

Эта схема удалит любое смещение постоянного тока, которое может добавить ваш ноутбук ("пара переменного тока"), а затем добавит к сигналу собственное смещение постоянного тока 2,5 В. Затем аудиосигнал будет чередоваться примерно на 2,5 В.

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

schematic

Здесь коэффициент усиления усилителя представляет собой соотношение между R3 и R4 - в данном случае соотношение 10:22 (или коэффициент усиления 2,2 x).

С программной точки зрения теперь вы удаляете 512 из каждого аналогового считываемого значения, чтобы получить диапазон +/-511 для ваших выборочных значений. Затем вы, вероятно (возможно, с помощью библиотеки, на которую вы ссылаетесь), берете блок выборок на определенной частоте и выполняете анализ БПФ, чтобы найти, какие доминирующие частотные компоненты присутствуют.

,

Я настроил первую схему и смог обнаружить сигналы DTFM. Спасибо! Единственная проблема, однако, заключается в том, что программа, кажется, обнаруживает неправильный тон. Используя генератор тонов здесь, https://onlinetonegenerator.com/dtmf.html какую бы кнопку я ни нажал, программа обнаруживает кнопку вниз на одну строку и вправо на один столбец. Например. Я нажимаю 1, и 5 обнаруживается. Или я нажимаю 5, и 9 обнаруживается. Я опубликую вопрос об этом, потому что это, кажется, проблема программного обеспечения., @user3080392