Администрация форума не несёт ответственности за достоверность информации и оставляет за собой право редактировать или в особых случаях даже удалять посты без предупреждения. Спасибо за понимание.

Программирование ATMEL в BASCOM.

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » Программирование ATMEL в BASCOM. » Разное » АОН. Алгоритм.


АОН. Алгоритм.

Сообщений 1 страница 23 из 23

1

Доброго всем дня
такой вопрос:
кто занимался АОНами? в плане написания ПО для опредления номера

хочу себе сделать АОН с разными функциями под себя:
Выходной день - пропускает только звонки из списка Родственники и друзья
Рабочий день  -все с 9 до 20 часов
Ночь - только родственники
и тд.

пока пришло в голову взять приставку АОН, подключиться к её ЖКИ и считывать данные, передаваемые на него
А потом, после прочтения номера, делать анализ номера и режима работы

0

2

Может стоит купить терминал с выходом RS-232 и АТ командами при входящих звонках (RING) спрашивать номер входящего и подавать команды на управление звонками.

0

3

Хорошая тема.
Мне бы не помешало бы.

0

4

разобрал приставку, нашел выход компаратора, котрый подключен к МК
Подключил usb-осциллограф, позвонил себе и посмотрел что выдается
Пипец :)
как-бы видны посылки, но нужна математика, чтобы распознать две частоты в посылке

с ЖКИ то же пока не получилось снять данные, хотя с этой моделью (аналог НТ1613) работал

пока тупик

по поводу внешнего модуля. А что и где можно прикупить? а АТ командами работал, идея ясна

0

5

ребята, я про DTMF ни слова не сказал ;)
у нас - старый советский АОН
если был-бы DTMF, то я бы и не спрашивал... я с ним с 2003 года знаком неплохо

0

6

я ноль в математике :(

0

7

Александр Д. написал(а):

по поводу внешнего модуля. А что и где можно прикупить?

Я тоже думаю, что это самое простое. Сейчас диалапные модемы отдают практически за пиво.  Из них многие модели последних лет выпуска (в смысле когда они еще выпускались) оснащены АОНами. Особенно часто они были с т.н. "русскими" прошивками.

0

8

нарыл у себя старый внешний COM модем Zyxel Omny 56K
сейчас поишу на него описание, может есть возможность АОН...

0

9

хм
не знаю - не уверен, что смогу сделать алгоритм в коде
тут придется попотеть :)

научился управлять модемом
а какие команды и как подавать?
даю: AT&I2
звонит телефон, вижу RING
даю ATA
но номер не определяется...

0

10

ой, а как и куда его прикрутить? :)...

0

11

Mrshilov, вы написали спектроанализатор на 6 заданных частот?

0

12

хм
надо опробовать! Спасибо!

0

13

Где об этом алгоритме спектроанализатора подробнее почитать можно?
Интересно, а можно ли данный алгоритм для цветомузыки приспособить?

Я надеюсь, вы меня за сообщение не по теме не забаните?

0

14

Mrshilov написал(а):

Плохо, что Протеус в реалтайме не может это моделировать

Думаю что может, ну ему надо более мощный комп.

0

15

С программной реализацией фурье уже наигрался и понял, что мощности контроллера для серъёзного применения не хватает. Есть ещё одна задумка, да вот времени не хватает на реализацию. А тему открыл новую в светоэффектах Цифровые фильтры для ЦМУ.

0

16

Mrshilov написал(а):

У меня PhenomII-4X-3.2ГГц, причем диспетчер задач показывает загрузку проца 26%

Процессор 4-ёх ядерный?
Если да, то протеус загружает только одно ядро, а это 25 % от общей загрузки процессора что и видно в диспетчере задач.

0

17

Mrshilov, не хотите перейти на целочисленную арифметику?
В последнем своем проекте мне удалось таким образом съэкономить 20% памяти, да и быстродействие увеличилось.
Кроме того, имхо, точность констант можно понизить без ущерба качеству примерно до 4-х знаков.

0

18

Как высчитать K() для других частот? Это что-то с синуса/косинуса?

0

19

Ну что, получилось?

0

20

вы будете сьмеяться, но вот только сейчас руки дошли :)
постараюсь собрать схемку. Думаю, как совместить МК и тел.линию, разберусь :)

кстати, надо бы придумать, как эту посылку записать и многократно воспроизводить, а то разорюсь самому себе с мобилки звонить :)

кстати, вот тут, как я понимаю, компаратором сделано?
http://aon-clip.narod.ru/

ps
еще народ предлагает использовать типовой приёмник DTMF - только заменить кварц
я пробовал прикинуть - велика разница в частотах (

0

21

radan написал(а):

Где об этом алгоритме спектроанализатора подробнее почитать можно?Интересно, а можно ли данный алгоритм для цветомузыки приспособить?

Я же вам давал ссылку на него и макет спектроанализатора. Кому интересно, может покопаться в исходниках. Можно взять тут http://yadi.sk/d/p_OPG9CD45v_a. Написано на Delphi, но переписать на BASCOM труда не составит.

Отредактировано sva-don (2013-05-02 15:53:12)

0

22

опять подниму эту тему :)
я так и не доделал свой АОН

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

вот код:

Код:
'( Результаты неплохие: Фильтр 700Гц на своей частоте выдает уровень сигнала в 4094 попугая, а на "чужой" 900Гц - 11. Это при 128 отсчетах.
При 64 - 1022/11, при 32 - 272/18. Так что алгоритм вполне себе годится для АОН.
Только в листинге было несколько опечаток, привожу исправленный.
Кроме того - не пугайтесь - на выходе данные будут иметь значение миллионов. Так и должно быть, соотношения резонанс/шум остаются прежними.
Mrshilov Http : / / Bascomavr.3bb.ru / Viewtopic.phpPrint Id = 550

По приходу телефонного вызова иммитируем снятие трубки - подключаем к линии сопротивление 620-470 Ом.
Посылаем запрос на АТС 500Гц, длительностью 100мс. В ответ приходит 10 пачек двухтональных сигналов по 40мс каждая.
Запускаем алгоритм - длительность его работы около 32мс. По окончании его работы в переменных Level будет информация об уровнях каждой из 6 частот.
Если уровень выше какого-то порога, значит частота была в посылке. По таблице сочетаний определяем цифру (например 900+1300= цифра 5).
Записываем ее и так же переходим к следующей посылке. Запуск алгоритма нужно производить через 40мс, чтобы попадать на каждую новую посылку,
очевидно потребуется еще таймер.

K=2*cos(2*pi*f/F), где f-требуемая частота, F-частота дискретизации.

Период выборки 256us. Т.е. частота дискретизации F=3906,25 Гц
2 * 3 , 14 * 700 / 3906 , 25 = 1 , 1259468
Cos(1,1259468)=0,43032205 ----- косинус в радианах
2*0,43032205=0,8606441
')


$regfile = "m8adef.dat"
$crystal = 4000000
$hwstack = 64
$swstack = 32
$framesize = 48

$baud = 9600


'Переменные
Dim K(6) As Single
K(1) = 0.86064410                                 'Для частоты 700Hz
K(2) = 0.24567877                                 'Для частоты 900Hz
K(3) = -0.39449342                                'Для частоты 1100Hz
K(4) = -0.99419024                                'Для частоты 1300Hz
K(5) = -1.49188229                                'Для частоты 1500Hz
K(6) = -1.83650594                                'Для частоты 1700Hz

Const N = 128                                     'Число выборок = 128
Dim New_sample As Word                            'Данные от АЦП
Dim Samples As Byte                               'Счетчик выборок
Dim F As Byte                                     'Счетчик частот
Dim Y2(6) As Single
Dim Y1(6) As Single
Dim Y0(6) As Single
Dim Level(6) As Single                            'Амплитуда частоты
Dim Ready As Bit                                  'Сигнал окончания расчетов

'Конфигурация АЦП
Config Pinc.0 = Input                             'Вход на ADC(0)
Config Adc = Single , Prescaler = 32 , Reference = Internal       'Частота АЦП 125kHz
Start Adc

'Таймер выборки
Config Timer2 = Timer , Prescale = 8 , Compare = Disconnect , Clear Timer = 1       'период выборки 256uS
Compare2 = 128
On Compare2 Algorithm
Enable Compare2
Stop Timer2                                       'Таймер пока остановлен

'===============================================================================
'=============================== Программа =====================================



Do
 
   'Включение алгоритма
   For F = 1 To 6                                 'обнуляем Y1 и Y2 в начале цикла
      Y1(f) = 0
      Y2(f) = 0
   Next F
   Ready = 0
   Samples = 0
   Enable Interrupts
   Start Timer2

Loop


'-------------------------------------------------------------------------------
Algorithm:

   New_sample = Getadc(0)                         'Получаем данные АЦП

   For F = 1 To 6                                 'Просчитываем все частоты
      Y0(f) = K(f) * Y1(f)
      Y0(f) = Y0(f) - Y2(f)
      Y0(f) = Y0(f) + New_sample                  'Результат в Y0
      Y2(f) = Y1(f)                               'Сдвигаем данные
      Y1(f) = Y0(f)
   Next F

   Incr Samples                                   'счетчик обработанных выборок

'Финальный расчет после получения всех 128 выборок
   If Samples = N Then
      Stop Timer2                                 'Останавливаем сбор выборок
      For F = 1 To 6
         Level(f) = Y1(f) * Y1(f)
         Y0(f) = Y2(f) * Y2(f)
         Level(f) = Level(f) + Y0(f)
         Y0(f) = Y1(f) * Y2(f)
         Y0(f) = Y0(f) * K(f)
         Level(f) = Level(f) - Y0(f)              'Амплитуды сосчитаны
         Ready = 1
      Next F
   End If

Return

вопросы к тем, кто занимался с ЦМУ:
как тут добавить вывод данных?
перед подачей сигнала на вход АЦП требуется сделать искусственный ноль (U/2) и подавать именно переменное напряжение 2.5 вольта?

0

23

на 90% задачу решил. НО! но программой для Ардуино. Методом проб и какой-то матери, превозмогая @@@й синтаксис среды Ардуины, с помощью иностранного форума, переписал программный декодер DTMF под свою задачу.
Но теперь надо всё это превратить именно в то, что я задумал. А учить Ардуино - как два шага назад + сломанные за это время нервы...
Стал переписывать под Баском, понял откуда МрШилов брал образец :) по крайне мере, куски его кода и то, что в Сети лежит - совпадает до некоторых мелочей...

единственно, не могу понять некоторые моменты работы программы под Ардуино, так как неясно как он работает и что откуда вызывается...

http://forum.arduino.cc/index.php?topic … msg2845327

0


Вы здесь » Программирование ATMEL в BASCOM. » Разное » АОН. Алгоритм.