«Лиса» на ATtiny2313

главная\р.л. конструкции\разное\...

«Лиса» на ATtiny2313

Схема простейшей «лисы» на частоту 3,580 МГц родилась во время экспериментов с микроконтроллерами. Принцип ее действия прост: тактовая частота программно делится и программно же выдается на выход, нагруженный на резонансный контур, к которому подключена антенна.

Кварцевый резонатор - на 14,318 МГц (стоят на компьютерных материнских платах), микросхема, соответственно, должна бытьATtiny2313-20 (20 МГц).

Катушка выходного контура может быть любой – мы поставили дроссель ДМ и подобранный до появления резонанса дисковый конденсатор. Можно обойтись и без них - исключить C7, L1 и R2, тогда антенна через С6 подключается к 14 ножке микросхемы.

Аккумулятор использовали от сотового телефона (у нас никель-марганцевый 650 mAh от старого Siemens-а, хватает надолго – за год отработал 30-50 часов, и пока ещё не подзаряжали). Провода питания аккуратно подпаяны напрямую к контактам аккумулятора.

Вся конструкция собрана навесным монтажом на макетной плате и помещена в корпус от старой компьютерной «мыши», что вызывает у детей некоторое непонимание действительности.  Хвостик «мыши» – это антенна «лисы» (у нас длинной чуть более метра) - многожильный гибкий провод в изоляции.

«Лиса» со свернутой в комок антенной и спрятанная в портфель устойчиво определяется пеленгатором с расстояния 5 -10 метров – это такая игра для самых маленьких – «Найди, в чьём портфеле передатчик». На фото: найдена «лиса» спрятанная в кармане.

 

 

 С развернутой антенной и находясь на ветке дерева (высота 1-2 метра над землей) слышна с 20-30 метров.

Увеличением дальности и мощности излучения не занимались – хотя, возможно, самый простой способ увеличить мощность, это вместо R2 поставить эмиттерный повторитель и подобрать отводы у контура.

            Кнопку «Reset» поставили уже в рабочую конструкцию для удобства.

            При программировании микросхемы использовали программу PonyProg, состояние fuse bits для ATtiny2313 при использовании кварцевого резонатора на частоту более 8 МГц - галочек нет, т.е. установлены единички:

 

            Сама программа писалась в AVR Studio, ниже приведен листинг для тех, кто пожелает поменять имя «лисы», выдаваемое в эфир, а так же алгоритм работы (паузы, длительности). Наша же излучает слово из букв «М», «О», «Е» четыре раза, затем идет длинная пауза около полуминуты, опять слово МОЕ четыре раза, опять длинная пауза и так далее по кругу.

Выходная частота передатчика определяется по формуле Fвых=Fкв/2*(n+1), где n= коэффициент деления таймера OCR0A. У нас стоит n=1 и делит на 4, а при n=3 Fкв поделится в восемь раз.

Вроде бы всё просто.

А для того, чтобы поменять букву «Е» на букву «А», надо заменить точку кода Морзе на точку и тире, а также поставить короткую паузу между ними, т.е. добавить два символа. В начале программе в строке «.equ ch =12  ;Кол-во символов в имени лисы» меняем число 12 на 14, затем в таблице в самом низу программы строку «.db 0x01 ; Буква Е» меняем на «.db 0x01, 0x81, 0x03 ;Буква А» (что такое 0x01, 0x81, 0x03 см. таблицу символов внизу программы). Конечно, эта простота не отменяет знание ассемблера и умения пользоваться AVR Studio.

 

;********************************

; Лиса на 3.5 МГц на ATtiny 2313

;********************************

 

.include "tn2313def.inc"

 

.equ        freq        =14318200                          ;Частота кварца

.equ        period    =125                                      ;Длительность ТОЧКИ и короткой паузы 125 мсек

.equ        ch                           =12                        ;Кол-во символов в имени лисы

.equ        kol                          =4                           ;Кол-во повторов имени в одной посылке

 

.def         tmp                        =r16

.def         count1   =r17

.def         count2   =r18

.equ        speed     =period*freq/64000

 

.CSEG

.org         0

                rjmp       RESET

                nop                        ;rjmp      EXT_INT0           ;Внешние прерывание по IRQ0

                nop                        ;rjmp      EXT_INT1           ;Внешние прерывание по IRQ1

                nop                        ;rjmp      TIM1_CAPT       ;Прерывание по таймеру 1

                rjmp       TIM1_COMPA                                  ;Прерывание по сравнению таймер 1

                nop                        ;rjmp      TIM1_OVF          ;Прерывание по переполнению таймер 1

                nop                        ;rjmp      TIM0_OVF          ;Прерывание по переполнению таймер 0

                nop                        ;rjmp      USART0_RXC    ;

                nop                        ;rjmp      USART0_DRE    ;

                nop                        ;rjmp      USART0_TXC    ;

                nop                        ;rjmp      ANA_COMP        ;Прерывание аналогового компаратора

                nop                        ;rjmp      PCINT

                nop                        ;rjmp      TIMER1_COMPB

                nop                        ;rjmp      TIMER0_COMPA

                nop                        ;rjmp      TIMER0_COMPB

                nop                        ;rjmp      USI_START

                nop                        ;rjmp      USI_OVERFLOW

                nop                        ;rjmp      EE_READY

                nop                        ;rjmp      WDT_OVERFLOW

               

.org         0x0013

TIM1_COMPA:

                reti

RESET:

                ldi                           tmp,       RAMEND             ; Настраиваем

                out                         SPL,       tmp                        ; стек.

                ldi                           tmp,       1<

                out                         MCUCR,              tmp

                ldi                           tmp,       high(speed)

                out                         OCR1AH,             tmp

                ldi                           tmp,       low(speed)

                out                         OCR1AL,             tmp

                ldi                           tmp,       1<

                out                         TIMSK, tmp

                ldi                           tmp,       (1<

                out                         TCCR1B,             tmp

                ldi                           tmp,       1                             ;коэффициент деления

                out                         OCR0A,                tmp                        ;для таймера

                ldi                           tmp,       (1<

                out                         TCCR0A,             tmp

                ldi                           tmp,       1

                out                          TCCR0B,             tmp

                sei

                ldi                           count2,  kol

l3:

                ldi                           count1,  ch

                ldi                           zh,                          high(2*Tabl)

                ldi                           zl,                           low(2*Tabl)

l2:

                lpm                        tmp,       z+

                cpi                          tmp,       0

                breq        l2

                bst                          tmp,       7

                brts         pause

                sbi                          DdrB,     2

l1:

                sleep

                dec                         tmp

                brne        l1

l4:

                dec                         count1

                brne        l2

                dec                         count2

                brne        l3

                ldi                           count2,  kol+1

                ldi                           count1,  1

                cbi                          DdrB,     2

                ldi                           tmp,       0xFF

                rjmp       p1

pause:

                cbr                          tmp,       1<<7

                cbi                          DdrB,     2

p1:                                                                        ;длинная пауза после передачи имени лисы

                sleep

                dec                         tmp

                brne        p1

                rjmp       l4

 

; Таблица символов:

; 0x03 - это ТИРЕ в коде

; 0х01 - это ТОЧКА в коде

; 0х81 - это короткая пауза между знаками

; 0х83 - это пауза между буквами

; 0х86 - это пауза между словами

Tabl:

.db 0x03, 0x81, 0x03                                        ; Буква М "тире" "короткая пауза" "тире"

.db 0x83                                                                              ; Длинная пауза

.db 0x03, 0x81, 0x03, 0x81, 0x03                 ; Буква О

.db 0x83                                                                              ; Длинная пауза

.db 0x01                                                                              ; Буква Е

.db 0x86                                                                              ; Пауза между словами

 

.exit

 

            Алгоритм работы передатчика и его мощность, скорее всего не соответствуют принятым стандартам по «лисоловству», но при желании можно подогнать программу и схемотехнику для полноценной работы.

Записав в программу позывной, можно применить «лису» и как радиомаяк, а смешав с другими частотами можно использовать и на более высоких частотах.

Также проверили работоспособность схемы в звуковом диапазоне, заменив кварц на 4 МГц, поменяв в программе строки:   .equ     freq    =500000    ;Частота кварца (на самом деле кварц 4 МГц, но включив внутренний делитель на 8, поставив галочку в окне CKDIV8 при програмировании в PonyProg, получаем 0,5 МГц) и увеличив коэффициент деления в строке   ldi          tmp,   249   ;коэффициент деления

                 оut   OCR0A,  tmp   ;для таймера.

            В итоге получили 1 кГц (по правде говоря, получили 1024 Гц, потому что кварц попался на 4,096 МГц).

            Fuse для звукового выда:   

 

 

            Файл с исходником и прошивкой «лисы» на 3,5 МГц, а так же аудиозапись с эфира прилагается.

По всем вопросам обращайтесь Этот e-mail адрес защищен от спам-ботов, для его просмотра у Вас должен быть включен Javascript , но оперативности ответов не гарантируем.

 

Авторы:  Балимов Эдуард,  Гольцов Андрей.






Рекомендуемый контент




Copyright © 2010-2017 housea.ru. Контакты: info@housea.ru При использовании материалов веб-сайта Домашнее Радио, гиперссылка на источник обязательна.