роботы
робототехника
микроконтроллеры
Главная
Как сделать робота
Новости
Спорт
Статьи
Wiki
Форум
Downloads
Ссылки
Контакты  


 Страниц (1): [1]   

> Без описания
Artem
Отправлено: 26 Января, 2013 - 18:48:17
Post Id


Главнокомандующий


Сообщений всего: 347
Дата рег-ции: Май 2012  





Здравствуйте Улыбка
Существует задача: собрать танк на радиоуправлении, попутно научиться писать программы, ну точнее базовые навыки есть, лапкой дёргать умею, ШИМ, АЦП, но для того чтобы сделать шифратор нужно нечто большее. Имеется приёмник и передатчик, собраны лично мной. имеются две платы с микроконтроллером ATmega8 на борту. Вроде всё есть Улыбка
Но вот беда я не могу придумать как закодировать а самое главное раскодировать управляющий сигнал.
Может кто-нибудь делал что-то подобное, расскажите глупому человеку принцип, как это на микроконтроллере построить, как нужно кодировать Замешательство
P.S. Лазил по многим сайтам, где на мк делают такое, но я не понимаю принцип, а мне очень хочется Улыбка
Заранее спасибо Улыбка
 
 Top
mihail
Отправлено: 26 Января, 2013 - 20:09:51
Post Id



Гуру


Сообщений всего: 1065
Дата рег-ции: Март 2010  





Необходимы пояснения о том, что из себя представляет передатчик и приемник. Если это что-то вроде http://dvrobot.ru/shop/i186.radio-udlinitel.htm то это одно. А если это что-то вроде http://dvrobot.ru/shop/i236.radi...24l01_8_pin_.htm то это совсем другое.

Смотрите как устроен USART. Как начинается передача и как заканчивается. Для чего нужен бит паритета (бит четности). Еще посмотрите как организована передача данных в ИК связи (ИК ПДУ).
 
 Top
Predator Супермодератор
Отправлено: 26 Января, 2013 - 20:16:57
Post Id


Супермодератор


Сообщений всего: 1115
Дата рег-ции: Июль 2012  





отправляют пакет 0 и 1 - принимают - получают команду.
проще всео для этого использовать uart, но на тему помехоустойчивости-дрова.
 
 Top
elmot
Отправлено: 27 Января, 2013 - 11:40:25
Post Id



Гуру


Сообщений всего: 1141
Дата рег-ции: Дек. 2010  





А почему не взять блютуз или вайфай? Там уже все готово.
 
 Top
Artem
Отправлено: 27 Января, 2013 - 14:48:02
Post Id


Главнокомандующий


Сообщений всего: 347
Дата рег-ции: Май 2012  





elmot пишет:
Там уже все готово.

В каком смысле всё готово?

mihail пишет:
Смотрите как устроен USART.


Почитал я про этот последоватьльный асинхронный приёмо-пердатчик, но немного нето это, он сразу в микроконтроллере есть а мне охота самому какой-нибудь код написать
 
 Top
mihail
Отправлено: 27 Января, 2013 - 19:20:08
Post Id



Гуру


Сообщений всего: 1065
Дата рег-ции: Март 2010  





Не вижу проблем. Наличие аппаратного USART никак не препятствует реализации USART программно.
 
 Top
Predator Супермодератор
Отправлено: 27 Января, 2013 - 20:38:48
Post Id


Супермодератор


Сообщений всего: 1115
Дата рег-ции: Июль 2012  





тогда посмотрите на килок - как в автосигналках, и возьмите оттуда преамбулу и кодировку 0 и 1, как по проводу синхронизируетесь - переходите на радиоканал.
главная задача приемник синхронизировать с передатчиком (чтобы начало и длительность битов совпадала).

у блютуза и вайфая всё готово - вся та самая кодировка + помехоустойчивое кодирвание+выбор свободного радиоканала + много чего еще.
 
 Top
Artem
Отправлено: 29 Января, 2013 - 21:48:43
Post Id


Главнокомандующий


Сообщений всего: 347
Дата рег-ции: Май 2012  





Снова почитал я про USART, про кодировку ик команд(их оказывается очень много), мне в принципе понравился этот способ(точнее все, они весьма однообразны), как я понял суть в том что шифратор запускает импульс, который обозначает начало команды, затем дает приёмнику некоторое время, что бы запуститься, и начинает отправлять один бит за другим, при этом для того, чтобы различить 0 это или 1 используется длина импульса. Способ мне понравился потому, что синхронизация работы приёмника и передатчика очень проста.

Вообще, основная проблема для меня была в том, как правильно написать программу, как корректно её составить. Для определения длинны импульса используются таймеры и прерывания, конечно все здорово, но что-то мне показалось сложновато, нет все рано нужно будет разобраться, но для первого раза подошел бы способ по проще.

И тут я наткнулся на такую замечательную вещь, как сдвиговый регистр. Я сразу понял что можно его использовать. Немного подумав, я набросал алгоритм по которому будет работать шифратор и дешифратор:

Во-первых, шифратор, выполнен на базе микроконтроллера ATmega8, он опрашивает состояние всех кнопок и создает последовательность из 3-х битов(именно 3-х, так как с помощью них можно закодировать 8 различных команд), перед тем как запустить эти биты он формирует импульс, который подготавливает дешифратор к работе, происходит синхронизация его с шифратором.

Во-вторых, дешифратор, здесь немного сложнее. Состоит из микроконтроллера и сдвигового регистра, который подсоединен к микроконтроллеру. Микроконтроллер следит за появлением стартового бита, при его появлении, он запускает тактовую частоту, которая совпадает с частотой отправки битов, что бы регистр принимал их в правильном порядке. (извините, может быть фраза кривовата вышла, но как-то не смог я слов подобрать). После приёма всех 3-х битов, сдвиговый регистр( или микроконтроллер сам) сигнализируют об окончании передачи команды, микроконтроллер подает команду вывести значение регистра на какой либо драйвер, ждет некоторое время, и убирает его, обнуляет регистр и начинает ждать новую команду.

Фух, вроде всё. Посмотрите, может какие-то нюансы есть в этом способе, недостатки.
Заранее спасибо Улыбка
 
 Top
Predator Супермодератор
Отправлено: 29 Января, 2013 - 22:11:06
Post Id


Супермодератор


Сообщений всего: 1115
Дата рег-ции: Июль 2012  





в общем типа того, отследите только чтобы момент "защелкивания" данных в сдвиговый регистр попадал на середину бита.
ну и собственно это-же самое можно сделать внутри контроллера: при пришествии стартового бита запустить таймер, и 3 раза защелкнуть (вписать в 3 переменных например) состояние входа.
получится типа UARTа, только 3-битные пакеты.
 
 Top
Artem
Отправлено: 29 Января, 2013 - 22:14:42
Post Id


Главнокомандующий


Сообщений всего: 347
Дата рег-ции: Май 2012  





Predator пишет:
ну и собственно это-же самое можно сделать внутри контроллера: при пришествии стартового бита запустить таймер, и 3 раза защелкнуть (вписать в 3 переменных например) состояние входа.

я об этом тоже думал, но как я сказал программу будет трудно писать, но в будущем обязательно попробую Подмигивающий
 
 Top
Artem
Отправлено: 06 Февраля, 2013 - 21:49:09
Post Id


Главнокомандующий


Сообщений всего: 347
Дата рег-ции: Май 2012  





Порывшись в интернете, я убедился, в том что моя идея очень даже осуществима высший восторг
Но с начала небольшое замечание по поводу управления с помощью 3 бит, мне нужно будет управлять 3 моторами, на каждый по 2 канала(вперёд/назад), я не подумал, что нужно будет крутить их одновременно и в разных комбинациях, я пришел к выводу, что нужен один бит на канал и того 6 бит. Я нашел почти подходящий 8-ми битный сдвиговый регистр 74hc595( ну можно ещё 2 канала сделать, лишними не будут).
Сейчас попробую выложить схему...
 
 Top
Страниц (1): [1]
« Обо всем »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 





Powered by Exclusive Bulletin Board
ExBB FM 1.0 RC1 Smiles by Fool from Foolstown