svic писал(а):для распознавания используется не одиночный бит, а байт
Вы забегаете вперед...))Я только про это хотел сказать.
Почему именно 500 Гц ? Вообще при разработке нужно стремиться использовать существующие стандарты. Так схема получиться универсальной, работающая практически со всеми типами раций... телефонами и т.д. У меня полоса пропускания рации примерно такая же как и у заводских: примерно 200...2700 Гц (линейная область 200...2000 Гц) - это полоса разговорного тракта всех раций, радиотелефонов, проводных телефонов и т. д... Значит при передачи простых кодов (00100101 - 1; 00101001 - 2; 00101011 - 3; 00101101 - 4...... ) получим импульсы с частотой 250 или 500 Гц. При таких частотах мы получаем довольно хорошую прямоугольность импульсов на выходе приёмника. Гармоники прямоугольных импульсов укладываються в полосу пропускания рации... Как показывает практика, лучше всего передавать биты через рации со скоростью несколько сотен бит. Получаем несколько сотен герц. Позже поэксперементируем со скоростью передачи. Пока остановимся на 500 Гц. Я могу внести изменения в схему рации для низкой скорости передачи... даже постоянной составляющей. Но это уже получиться не универсальная схема.
Кодировка.При использовании МК вопрос с количеством деталей уже не стоит так остро. Поэтому для распознавания используется не одиночный бит, а байт целиком. Я тут накидал схемку кодера-декодера байтов...
Кодер (TX).получился простенький. Кнопки 1,2,3,4, - команды, 0,5- служебные для настройки радиоканала. Нажимаем кнопку 0 получаем на выходе меандр 480 Гц. Кнопка 5- меандр 240 Гц.
При нажатии любой кнопки будет выполняться соответствующая команда, пока не нажмем другую кнопку...
Нажимаем кнопку 1 - код 00100101 - пауза - код 00100101.... и т.д. бесконечно.
Нажимаем кнопку 2 - код 00101001 - пауза - код 00101001.... и т.д. бесконечно.
Нажиаем одновременно кнопку 1 и 2 - код 00100101 - пауза - код 00101001 - код 00100101 - пауза - код 00101001.... и т.д. бесконечно. Т.е. поочереди передаются коды 1 и 2...
Так же и с другими кнопками. Байты разделены синхропаузами... Пока ничего лучше (проще) не придумал.
Компилируем... Прошиваем
mega8... Все работает
Декодер (RX). тут сложнее... Приемник и передатчик на atmega8. Для упрощения схемы используеться внутренний генератор RC - 1 Мгц. Фьюзы не трогаем.Приёмник:
Диод D1-индикатор сигнала. D1,D2,D3,D4 - выход команд на реле.
Теперь алгоритм приёмника: в исходном состоянии на ноге 28 (порт PC5) "1" (+5V). При поступлении команды "0"- старт бит (0V) запускаеться программа алгоритма определения состояния ноги 28 (порт PC5) через равные промежутки времени. При этом мигает диод D1-индикатор сигнала.
Я пока не дошел до всяких таймеров и т.д... поэтому задержку я сделал используя бесконечный цикл
while (1). После доработки программы я использовал счетчики
for (a=0;a<b;a++). На счетчиках программа получилась почти в два раза меньше.
Короче, при появлении "0" на 28 (порт PC5) включаеться счетчик задержки, время задержки задаеться при настройке-
c=100. Затем включаеться счетчик проверки состояния, первого бита кода. Он проверяет состояние ноги 28 (порт PC5). Проверка: 70 раз, количество проверок задаеться также при настройке-
b=70... Если первый бит "0" то включаеться второй счетчик задержки
c=100... затем второй третий счетчик проверяет второй бит кода... и опять задержка... и опять проверка третего бита кода... и так пока программа не проверит все 8 бит кода. В зависимости от расположения битов в коде вывоиться соответствующая команда: D1,D2,D3,D4. После этого МК переходит в режим ожидания... и ожидания следующей посылки кода... Если хоть один бит неверный то происходит сброс МК... и ожидания следующей посылки кода... и т.д. бесконечно.
Короче простенькая програмка с возможностью расширения на большее количество кнопок.
Задержки между определениями импульсов кода нужны для того чтобы небыло ошибок при фазовом шуме импульсов... который незбежно появиться при прохождении через радиоканал. Т.е. форма и фаза импульсов сильно изменяться - это устраняеться задержками.
Вообщем примерно так .. Жду замечаний, предложений
- Вложения
-
- RX исходник Си.txt
- (5.7 KiB) Скачиваний: 735
-
- TX - исходник Си.txt
- (1.74 KiB) Скачиваний: 603
-
- TX.png
- (42.5 KiB) Скачиваний: 1233