|
Управление atmega16 кодом СК 2/11, Требуется помощь. |
|
|
|
Feb 19 2017, 07:00
|

Группа: Участник
Сообщений: 9
Регистрация: 19-02-17
Из: Пермский край
Пользователь №: 95 507

|
Добрый день, уважаемые форумчане! Напишу сразу - это мой первый опыт работы с МК вообще и с МК atmel в частности. Передо мной стоит следующая задача: имеются два микроконтроллера - atmega16 и pic16c622a (но этот для другой ветки форума  ). Необходимо сделать так, чтобы, в зависимости от того, какая двухчастотная посылка поступила на вход МК, на соответствующем выходе появлялось U. Вход используется один. Выходы - в зависимости от полученной двухчастотной посылки. Двухчастотная посылка представляет из себя аналоговый сигнал, состоящий из следующих друг-за другом двух частот: сигнал первой частоты длительностью 0,8 сек, второй - 1,6 сек. Таким образом вся посылка длиться 2,4 сек. Всего частот 11: F1 316 Гц F2 430 Гц F3 585 Гц F4 795 Гц F5 1080 Гц F6 1470 Гц F7 2000 Гц F8 890 Гц F9 1215 Гц F10 1360 Гц F11 1620 Гц Т.о. всего комбинаций - 110.  Возможно ли это реализовать на данных МК? Может на каком-то МК будет сделать это проще? Буду рад любой помощи по данному вопросу. Имею небольшое представление о языке C. Так же не полный нуль в электронике.
|
|
|
|
2 страниц
1 2 >
|
 |
Ответов
(1 - 25)
|
Feb 19 2017, 10:16
|

Группа: Участник
Сообщений: 9
Регистрация: 19-02-17
Из: Пермский край
Пользователь №: 95 507

|
Если бы я знал, как это сделать, то не открывал бы данную тему.
|
|
|
|
|
Feb 19 2017, 10:41
|

Группа: Участник
Сообщений: 9
Регистрация: 19-02-17
Из: Пермский край
Пользователь №: 95 507

|
Den64, как раз с количеством выходов проблем нет. В каждом конкретном случае я выберу МК с необходимым количеством выходов. Мне, пока, не очень ясно с чего начать написание самой программы. Повторюсь еще раз - это мой первый опыт программирования микроконтроллера. Точнее я понимаю, что сначала необходимо определить частоту, точнее частоты, входной посылки. А это, скорее всего, определяется подсчетом импульсов за определенный промежуток времени. Зная, какие частоты на входе, уже можно дать команду на вывод Uпит. на тот или иной порт. Я правильно рассуждаю?
Сообщение отредактировал altec - Feb 19 2017, 10:43
|
|
|
|
|
Feb 19 2017, 10:55
|

Гуру
     
Группа: Свой
Сообщений: 2 538
Регистрация: 13-08-05
Пользователь №: 7 591

|
Цитата(altec @ Feb 19 2017, 13:41)  А это, скорее всего, определяется подсчетом импульсов за определенный промежуток времени. Скорее всего- нет. А начинать надо с выяснения алгоритма. Думаю, полезно почитать про DTMF. Хотя если : Цитата аналоговый сигнал, состоящий из следующих друг-за другом двух частот это так, то можно пробовать.
|
|
|
|
|
Feb 19 2017, 12:01
|

Знающий
   
Группа: Свой
Сообщений: 584
Регистрация: 22-11-07
Из: Курская область
Пользователь №: 32 571

|
Цитата(altec @ Feb 19 2017, 13:41)  ... Мне, пока, не очень ясно с чего начать написание самой программы. Повторюсь еще раз - это мой первый опыт программирования микроконтроллера.... С/С++ владеете? Если хоть не много то для начала нужно написать несколько функций. Одна из них подсчёт импульсов грубо говоря int GetFrq(void) { ClrMyTimer(); Delay(100); return GetMyTimer(); } Начните примерно с такого.
|
|
|
|
|
Feb 23 2017, 10:13
|

Группа: Участник
Сообщений: 9
Регистрация: 19-02-17
Из: Пермский край
Пользователь №: 95 507

|
Уже неделю спать толком не могу - верчу в голове различные варианты для решения задачи  Установил Proteus, накачал кучу литературы по C и программированию AVR. В принципе, в голове уже сложился определенный алгоритм, но вот реализовать его в коде пока не получается.
Сообщение отредактировал altec - Feb 23 2017, 10:14
|
|
|
|
|
Mar 11 2017, 04:27
|

Группа: Участник
Сообщений: 9
Регистрация: 19-02-17
Из: Пермский край
Пользователь №: 95 507

|
Добрый день! С определением МК входящей двухчастотной посылки, вроде, разобрался  . Сейчас интересует вопрос контроля того, что МК "принял" код. Т.е. есть необходимость в том, чтобы он как-то "сообщил" о том, что код принят, и какой-то из портов активирован. Я хочу, чтобы в качестве сообщения, после принятия кода, МК отправлял на определенный выход НЧ сигнал. Сигнал - это обычный одночастотный сигнал из диапазона 300-3400 Гц. Имеется ли возможность средствами самого МК реализовать подобное? Или какой-нибудь внешний ГНЧ лепить придется?
|
|
|
|
|
Mar 11 2017, 07:36
|
Местный
  
Группа: Участник
Сообщений: 338
Регистрация: 1-02-06
Из: Королев, М.О.
Пользователь №: 13 846

|
Пьезокерамический излучатель (баззер, пищалка). Есть активные (со встроенным генератором) - управляются просто уровнем. Есть пассивные - на них надо подавать переменный сигнал, который легко формируется самим МК с помощью модуля Сapture/Compare (ШИМ).
Сообщение отредактировал IgorKossak - Mar 11 2017, 17:33
Причина редактирования: бездумное цитирование
--------------------
-Да как так-то?/-Да как-то так/-Ну так-то да
|
|
|
|
|
Mar 11 2017, 11:27
|

Группа: Участник
Сообщений: 9
Регистрация: 19-02-17
Из: Пермский край
Пользователь №: 95 507

|
Цитата(Harvester @ Mar 11 2017, 12:36)  Пьезокерамический излучатель (баззер, пищалка). Есть активные (со встроенным генератором) - управляются просто уровнем. Есть пассивные - на них надо подавать переменный сигнал, который легко формируется самим МК с помощью модуля Сapture/Compare (ШИМ). Цитата(Obam @ Mar 11 2017, 14:42)  ...Т.е. отображение идентификатора комбинации не достаточно? (: Смысл в том, что пользователь и МК находятся в разных местах. Соответственно, пользователь не может визуально убедиться в том, что МК принял кодовую посылку и активировал какой-либо порт. Поэтому необходимо как-то известить пользователя об этом. Самое простое послать в ответ, по линии связи, звуковой сигнал, который пользователь сможет прослушать.
|
|
|
|
|
Mar 31 2017, 14:56
|

Группа: Участник
Сообщений: 9
Регистрация: 19-02-17
Из: Пермский край
Пользователь №: 95 507

|
Не стал открывать новую тему, т.к. очередной вопрос, по сути, продолжение данной темы. Собственно вопрос следующий - как можно униполярный сигнал преобразовать в биполярный? Поясню. С помощью МК формируется меандр частотой 400 Гц. Далее с помощью ПФ из данного сигнала выделяется первая гармоника. Т.е. получаем синусоиду частотой 400 Гц. Но она униполярна - от 0 В до +1 В. Сигнал планируется передавать по линии связи, поэтому необходимо как-то преобразовать его в биполярный. Как-нибудь это можно осуществить?
|
|
|
|
Guest_TSerg_*
|
Mar 31 2017, 17:38
|
Guests

|
Цитата(altec @ Mar 31 2017, 17:56)  поэтому необходимо как-то преобразовать его в биполярный. Как-нибудь это можно осуществить? На двух транзисторах, можно и на одном, можно и без транзисторов.
|
|
|
|
|
Apr 1 2017, 03:24
|

Группа: Участник
Сообщений: 9
Регистрация: 19-02-17
Из: Пермский край
Пользователь №: 95 507

|
Цитата(TSerg @ Mar 31 2017, 22:38)  На двух транзисторах, можно и на одном, можно и без транзисторов. Можно по-подробней? Или пример схемы? Цитата(Baser @ Mar 31 2017, 22:58)  Можно. Поставьте последовательно конденсатор (ВЧ фильтр). Он уберет постоянную составляющую. Я первым делом подумал про конденсатор, но эмуляция в Протеусе показывает не совсем то, что я ожидал. Я думаю это из-за того, что в схеме используется однополярный источник питания 0 - +5В.
|
|
|
|
|
Apr 2 2017, 10:49
|

Группа: Участник
Сообщений: 9
Регистрация: 19-02-17
Из: Пермский край
Пользователь №: 95 507

|
Цитата(Den64 @ Apr 1 2017, 16:25)  Удивительный ... протеус. Разобрался. С Протеусом все нормально. Это я сглупил - не внес в схему эквивалент нагрузки. Как только добавил в схему сопротивление нагрузки - все встало на свои места.
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|