Архив рубрики: РАЗРАБОТКА

Примеры разработки электроники и программного обеспечения для микронтроллеров

Доработка наушников, ремонт наушников

Продолжение проекта: «Наушники на два телефона». В этом видеоролике ролике рассказывается о особенностях конструкции наушников, доработки Bluetooth по микрофонному тракту и установке двухступенчатого ФНЧ с полосой среза 1 кГц и затуханием 24-30 Дб на актаву, то есть на частоте 2 кГц. затухание за пределами выше 2 кГц должно составить 24 -30 Дб.
ФНЧ применен для, чтобы выровнять АЧХ динамиков наушников, в которой наблюдается преимущественное преобладание средних и высоких частот.


Все авторские права принадлежат Петрову Р.В, RK50.RU

AVR программирование и применение,

Это генератор низкой частоты от 0.007 до 19 кГц.
Имеет две функциональные кнопки, к которым привязаны несколько функций, так же генератор имеет звуковую индикацию, когда достигнут минимум или максимум диапазона регулировки частоты, а так же при активации аттенюатора выходного напряжения.

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


Все авторские права принадлежат Петрову Р.В, RK50.RU

Датчик открытия двери автомобиля, программирование микроконтроллеров

Данное устройство осуществляет контроль открытия дверей автомобиля и в зависимости от комбинации открытия дверей выдает свой звуковой сигнал.
1. Открыта водительская дверь -один звуковой сигнал длительностью 100 мкС
2. Открыта пассажирская дверь -два звуковых сигнала длительностью 100 мкС
3. Открыта задняя дверь с стороны переднего пассажира — три звуковых сигнала длительностью 100 мкС
4. Открыта задняя дверь с стороны водителя — четыре звуковых длительностью 100 мкС
5. Отрыто две двери — два длинных звуковых сигнала длительностью 300 мкС
6. Открыто три двери- три длинных звуковых сигнала длительностью 300 мкС
7. Открыто четыре двери- четыре длинных звуковых сигнала длительностью 300 мкС.

По истечении 1 минуты передачи звукового сигнала наступает пауза в 20 минут, после чего цикл повторяется.

Данное устройство может работать от напряжения питания 7-28В и имеет защиту от смены полярности.
Может быть выполнено в заводском исполнении при заказе от 30 штук.


Все авторские права принадлежат Петрову Р.В, RK50.RU

Гарнитура на два телефона

Данную задачу удалось решить при использовании обычных наушников с микрофоном и Блютуз-гарниутры вмонтированное в один из наушников. Благодаря достаточному пространству в наушнике удалось в него вмонтировать аккумулятор большей емкости, что позволит реже его заряжать.
Так же была изменена схема низкочастотного тракта микрофона с целью поднять низкочастотную составляющую в передаваемом речевом спектре.
При прослушивании звукозаписи вы можете услышать, как добавились низкие частоты, при их отсутствии часть речи пропадала и складывалось ощущение, что с вами разговаривает человек имеющий проблемы речью.

Данную конструкцию могу выполнить на заказ.
Если взять самую дешевую конструкцию наушников, то стоимость конечного продукта будет стоить 35$.

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

Особенность конструкции:
1. В время входящего звонка можно задним фоном проиграть музыку или какой-либо иной фонограмму имитирующую нахождение вас в театре, ресторане, метро и так далее.
2. Можно связать двух абонентов, звонки которых поступили с разных номеров телефоном и при этом участвовать конференции.

Видео вариант 2.

Видео вариант 1.


Все авторские права принадлежат Петрову Р.В, RK50.RU

Генератор сигналов на микроконтроллере, часть 1

ОГЛАВЛЕНИЕ

1. «АЛИЭКСПРЕСС» ЗА И ПРОТИВ
2. КРАТКИЙ ОБЗОР ГЕНЕРАТОРА MHS-5200P 25 МГц
3. КРАТКОЕ ОПИСАНИЕ ГЕНЕРАТОРА
4. ТЕХНИЧЕСКИЕ ХАРАКТЕРИСТИКИ
5. ЭТАПЫ ПРОЕКТИРОВАНИЯ
ЭЛЕКТРИЧЕСКАЯ СХЕМА
6. ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ
7. ОСЦИЛЛОГРАММЫ
8. ФОТОГРАФИИ ПЕЧАТНОЙ ПЛАТЫ.
9. ВИДЕО 1 ЧАСТЬ

1. «АЛИЭКСПРЕСС» ЗА И ПРОТИВ
Если нравиться заниматься радио, то нужны приборы.
«АлиЭкспресс» спасает, но:
1. Товар может не дойти. Возврат денег 50/50
2. Товар дошел, но не соответствует заявленным техническим параметрам и такое обычно 100%. Однако всегда можно с некоторыми недостатками смериться.. Возврат денег — 0%
3. Товар дошел, но через некоторое время перестал работать. Возврат денег — 0%. Возможность положительного исхода ремонта 50/50.

2. КРАТКИЙ ОБЗОР ГЕНЕРАТОРА MHS-5200P 25 МГц

Посмотрел отзывы русских о данном продукте «MHS-5200P 25 МГц» -все в восторге. Посмотрел отзывы зарубежных радиолюбителей -как всегда: форма сигнала после 5 МГц уже только синус, выставляемое напряжение не соответствует действительности. Я все связываю с бедностью русских, которые не могут себе позволить измерительное оборудование кроме китайского, которое правильнее отнести к индикаторам.

3. КРАТКОЕ ОПИСАНИЕ ГЕНЕРАТОРА
Данный прибор предназначен для проверки приемных трактов радиостанций в диапазоне 0.2_60 МГц. Предполагается ввести аттенюатор и регулировку формы выходного сигнала с применением второго микроконтроллера AVR.
В настоящее время на микроконтроллере AVR ATTINY13A реализовано управление генераторами.
Нажатие и отпускание кнопки сопровождается звуковыми сигналами разной формы, соответствующей диапазону включения генератора..
Количество повторений сигнала при отпускании кнопки соответствует под диапазону включения LC-генератора, то есть от 1 до 3 повторений.
При бездействии генератора, в течении 2-х часов каждые 15 минут издается звуковой сигнал. Считаю данную опцию полезной, кто уходит с головой ремонт или разработку, Повторяющийся сигнал — не даст просидеть увлеченно за работой весь день без еды.
По истечении 2-х часов, генератор отключается, микроконтроллер уходит в режим Power Down. Перед отключение издается несколько продолжительных прерывистых звуковых сигналов.

4 ТЕХНИЧЕСКИЕ ХАРАКТЕРИСТИКИ

Технические характеристики генератора
Напряжение питания _________7_28В
1. Диапазон 0.2____2 МГц
2. Диапазон 2______15МГц
3. Диапазон 15______60 МГц

Выходной сигнал_____________________________________________________ синус
Амплитуда выходного сигнала в диапазоне частот 0.2____2 Мгц_____________10В
Амплитуда выходного сигнала в диапазоне частот 2____15Мгц_____________2В
Амплитуда выходного сигнала в диапазоне частот 16____60Мгц_____________0.7В
АМ/ЧМ модуляция____________________________________________________Да
Звуковая индикация___________________________________________________Да
Таймер отключения___________________________________________________2 часа.

5. ЭТАПЫ ПРОЕКТИРОВАНИЯ
1. PLL синтезатор
2. Цифровая регулировка выходного напряжения
3. Цифровая регулировка формы сигнала

6. ЭЛЕКТРИЧЕСКАЯ СХЕМА

программист микроконтроллеров, инженер программист микроконтроллеров, программист avr, разработка электрических схем, день инженера электроника, инженер ремонту электроники, разработчик микроконтроллеров, разработчик устройств микроконтроллерах,  программирование микроконтроллеров atmel, микросхема atmel программирование, инженер конструктор схемотехник, генератор генератор синусоидального сигнала, генератор вч сигналов, генератор сигналов на микроконтроллере, rk50.ru, rk50, ingineer Petrov, Roman Petrov, инженер Петров
электрическая схема LC-генератов и управления.

7. ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ

Программа занимает чуть менее 400 байт.

/*
* Управлением питания генераторов
*
* Created: 07.12.2016 21:15:42,.
* Author: Petrov Roman, http://rk50.ru, proftpd@mail.ru
********** МОДИФИКАЦИЯ 15.12.16: *********
1.Каждому под диапазону LC-генератора соответствует свой звуковой сигнал. 1,2 или 3 коротких сигнала.
2. В время работы генератора, по истечении 15 минут издается звуковой сигнал, то есть напоминание о том, чтобы не забыть отключить генератор, если не нужен.
********** МОДИФИКАЦИЯ 16.12.16: *********
1. Отключение генератора после 2-х часов бездействия, если не нажата ни одна кнопка.
*/
;PB4 -выход звукового индикатора
;PB3 — кнопка переключения генераторов
;PB2 — PB0 — питание на генераторы, в среднем 3-4 мА

.include «tn13def.inc»
.dseg ;сегмент данных
.def tmpa = R16 ; рабочий регистр
.def tmpb = R19; отсчет времени
.def timeout_1 = R20; отсчет времени
.def timeout_2 = R21; отсчет времени
.def channel = R22; канал RC-генератора
.def var_channel = R23
.def power_off = R24 ; отключение генератора

.equ clock = 0x00
.equ time_sound = 0x08; длительность звукового сигнала при запуске МК
.equ time_off = 0x08; время перед отключением МК=N*15min
.equ timeout_long = 0x5B; 0x5B < => 1-1=90=9,91s 900/90= 10 0x24 = 36 < => 36-1 = 35*25,228= 883sec, 30 = 737.5sec
.equ timeout_short = 0x67; 0x66=102 0x65=100 < => 10/0.09911=101 0xFD=252=883/252= 25.2286s 0xFB=252 < => 251-1=250 = 0,1017*249= 25,34 sec

.cseg ; сегмент кода
.org 0x00
ldi R16, clock
out OSCCAL, R16
clr channel
clr power_off

ldi tmpa, 0b00010111; PP3, PB4 -input
out DDRB, tmpa
ldi tmpa, 0b00011100
out PORTB, tmpa
ldi tmpb, time_sound
; Пауза пере стартом
start_pause:
dec tmpb
cpi tmpb,1
breq end_pause
rcall pause
rjmp start_pause
end_pause:

rcall sound_key_off

ldi timeout_1, timeout_long
ldi timeout_2, timeout_short; 25,43sec
;#############################################################################
start: ; 1100
rcall time_15min
nop
in tmpa, PINB
cpi tmpa, 12
breq start

rcall sound_key_on ;звук нажатия кнопки
clr power_off; сброс режима отключения, т.к. нажата кнопка
inc channel; 1
cbi PORTB, 2
sbi PORTB,1 ; PORTB=1
mov var_channel, channel; copy chanel _> var_chanel

;#############################################################################
start_1: ; 1010
nop
in tmpa, PINB
cpi tmpa, 10
brne start_1; пока не отпустят кнопку, будем ждать
rcall sound_2 ; двух кратный звуковой сигнал отпускания кнопки

;#############################################################################
start_1_0:
rcall time_15min
nop
in tmpa, PINB
cpi tmpa, 10
breq start_1_0; ждем пока не нажмут кнопку

rcall sound_key_on ; звук нажатия кнопки
clr power_off
inc channel ; 2
cbi PORTB, 1
sbi PORTB,0 ; PORTB0=1
mov var_channel, channel; copy chanel _> var_chanel

;#############################################################################
start_2: ;1001
nop
in tmpa, PINB
cpi tmpa, 9
brne start_2 ; ждем пока не отпустят кнопку
rcall sound_3 ; трех кратный звуковой сигнал отпускания кнопки
start_2_0:
rcall time_15min
nop
in tmpa, PINB
cpi tmpa, 9
breq start_2_0; ждем пока не нажмут кнопку

rcall sound_key_on ; звук нажатия кнопки
clr power_off
cbi PORTB, 0
sbi PORTB,2 ; PORTB2=1
mov var_channel, channel; copy chanel _> var_chanel
clr channel; 0

;#############################################################################
start_3: ;1100
nop
in tmpa, PINB
cpi tmpa, 12
brne start_3; ждем пока не отпустят кнопку.
rcall sound_1; одинарный звуковой сигнал отпускания кнопки, так как переходим в начало работы программы
rjmp start

;#########################################################################################################
; ЗВУКОВАЯ ИНДИКАЦИЯ
;#########################################################################################################
sound_1:
rcall sound_key_off
ret

sound_2:
rcall sound_key_off
rcall sound_key_off
ret

sound_3:
rcall sound_key_off
rcall sound_key_off
rcall sound_key_off
ret

;#############################################################################
pause: ; 100mS
ldi R17, 0x29 ; 0x2B 43 =105 mS
df1: ;
dec R17
cpi R17, 0
breq end1
ldi R18, 0xFF

next1: ; 2,31ms
dec R18
cpi R18,0
breq df1
rjmp next1
end1:
ret

sound_key_off:
sbi PORTB, 4; ON sound -Звуковой сигнал при отпускании кнопки
rcall pause ; 315/3=105
rcall pause
rcall pause
cbi PORTB, 4; OFF sound
rcall pause; 70 ms
rcall pause
rcall pause
ret

sound_key_on:; 35ms < => R18=0x0F
sbi PORTB, 4; ON sound -Выдаем звуковой сигнал, при нажатии кнопки
rcall pause
cbi PORTB, 4
rcall pause
rcall pause
rcall pause
rcall pause
rcall pause
rcall pause
ret
;########################################################################################
; ТАЙМЕР 15 МИНУТ
;########################################################################################

time_15min:
dec timeout_2
cpi timeout_2, 1
breq time_1
rcall pause
ret
time_1:
ldi timeout_2, timeout_short
dec timeout_1
cpi timeout_1, 0
breq timer_0; при завершении отсчета, выдать звуковой сигнал
ret

timer_0: ; По достижении 15 минут издается звуковой сигнал, соответствующий каналу включения генератора
rcall poweroff
ldi timeout_1, timeout_long; перегружаем таймер
ldi timeout_2, timeout_short; 25sec
cpi var_channel, 0
breq sound_1
cpi var_channel, 1
breq sound_2
cpi var_channel, 2
breq sound_3
ret

;##############################################################################
; Отключение питания через 2 часа бездействия
;##############################################################################

poweroff:
inc power_off
cpi power_off, time_off; t2=8 < => N*15min = 8*15=120min ждем при бездействии и выключаем все генераторы
breq end_power
ret

end_power:
clr tmpa
out PORTB, tmpa ; Все порты в 0
ldi tmpb, 0x5F
sbi PORTB, 4; Подача звукового сигнала перед отключением МК, т.е. входа в режим PowerDown
rcall pause_sleep
cbi PORTB, 4
rcall pause
sbi PORTB, 4
rcall pause_sleep
rcall pause_sleep
rcall pause_sleep
cbi PORTB, 4; sound OFF
clr R16
ldi R16, 0b00101000
out MCUCR, R16
nop

sleep

pause_sleep:
ldi tmpa, time_sound ; Длинный звуковой сигнал перед отключением
df:
dec tmpa
cpi tmpa,0
breq end_1
rcall pause
rjmp df
end_1:
ret

7. ОСЦИЛЛОГРАММЫ

программист микроконтроллеров, инженер программист микроконтроллеров, программист avr, разработка электрических схем, день инженера электроника, инженер ремонту электроники, разработчик микроконтроллеров, разработчик устройств микроконтроллерах,  программирование микроконтроллеров atmel, микросхема atmel программирование, инженер конструктор схемотехник, генератор генератор синусоидального сигнала, генератор вч сигналов, генератор сигналов на микроконтроллере, rk50.ru, rk50, ingineer Petrov, Roman Petrov, инженер Петров
Осциллограммы сигналов

Форма звукового сопровождения соответствует тому, что включен 3-й LC-генератор (30-60 МГц)

8. ФОТОГРАФИИ ПЕЧАТНОЙ ПЛАТЫ

9. ВИДЕО 1 ЧАСТЬ

Видео на YouTube. Часть 1: https://youtu.be/kfM5OuoNlnc


Все авторские права принадлежат Петрову Р.В, RK50.RU

Замена NI-CD аккумуляторов LI-ON аккумуляторами

Требуется переделать блок аккумуляторов портативной радиостанции CB-диапазана с NI-CD аккумуляторами для использования Li-ON аккумуляторов.

Положительные стороны переделки:
1. Возможность установить аккумуляторы большей емкости
2. Общая стоимость аккумуляторов оказывается в итоге ниже, чем если устанавливать Ni-Cd. Дело в том, что хорошие Ni-Cd аккумуляторы трудно купить в России и практически невозможно это сделать напрямую из Китая.
3. Продолжительность срока работы Li-ON аккумуляторов, так как процесс заряда является «интеллектуальным».
4. Ремонтопригодность

Отрицательные стороны переделки:
1. Сложность конструкции. Требуется изготовление дополнительной схемы, ограничивающей подачу напряжения питания на контроллер заряда LI-ON аккумулятора. Я изготовил схему с отсечкой по току потребления.
2. Требуется настройка схемы.
3. Стоимость. В принципе, стоимость качественных Ni-CD аккумуляторов может быть даже выше.


Все авторские права принадлежат Петрову Р.В, RK50.RU

Секретка на автомобиль, электронная секретка на автомобиль

Экспериментальный вариант блокировки двигателя реализован на микроконтроллере AVR.
Алгоритм программного обеспечения для микроконтроллера реализован таким образом, что подача топлива прекращается не сразу, а постепенно, эмитирую неработоспособность двигателя.
Данный модуль, является частью проекта.
В настоящее время не реализована часть с передачей данных о местоположении автомобиля, которая будет реализована посредством GPS-треккера.

Скачать описание формате PDF960 Kb.


Все авторские права принадлежат Петрову Р.В, RK50.RU

Звуковой индикатор заднего хода, модификация

Было решено модифицировать схему следующим образом:
Я посчитал, что задняя передача при движении может быть включена не постоянно и автомобиль может быть двигаться по инерции.
Поэтому, было решено передавать звуковой сигнал еще некоторое время, после выключения задней передачи.
После окончания действия периода передачи звукового сигнала, программа начинает снова отслеживать включение задней передачи.
Программа написана на языке Assembler.
Собран экспериментальный вариант образца и установлен на автомобиль.
По вопросам консультаций и разработок пишите на электронную почту, предварительно ознакомившись желательно с некоторой информацией на сайте rk50.ru


Скачать описание устройства в формате PDF690 Kb


Все авторские права принадлежат Петрову Р.В, RK50.RU

Звуковой сигнал заднего хода. Звуковой сигнал заднего хода своими руками.

Данное устройство реализовано на микроконтроллере AVR ATTINY13A.
Программное обеспечение для микроконтроллера реализовано на языке Assembler и составляет 126 слов.
При включении задней передачи на микроконтроллер подается напряжение питания и начинается процесс исполнения программы, которая состоит в реализации звукового тона частотой 621 Гц, одной тоновой посылки длительность в 0.8 Сек и двух коротких длительностью в 0.15 Сек. Так же работа устройства продублирована светодиодным индикатором который включается при передаче тонового сигнала и выключается в паузе.

Для усиления сигнала используется SMD транзистор в корпусе SO23. Так как он имеет ограничение по току, то последовательно с динамической головкой включено сопротивление 100 Ом.

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

Технические характеристики:
-Напряжение питания: 7-29 V
-Ток потребления: не мерил мА
-Частота тоновой посылки: 621 Hz
-Защита от смены полярности напряжения: Yes

Осциллограммы поясняющие работу «Звукового сигнала заднего хода»:

Звуковой сигнал заднего хода, осциллограммы, электронщик в Пушкино, rk50
Звуковой сигнал заднего хода, осциллограммы

Звуковой сигнал заднего хода, осциллограммы, электронщик в Пушкино, rk50
Звуковой сигнал заднего хода, осциллограммы
Звуковой сигнал заднего хода, осциллограммы, электронщик в Пушкино, rk50
Звуковой сигнал заднего хода, осциллограммы
Звуковой сигнал заднего хода, осциллограммы, электронщик в Пушкино, rk50
Звуковой сигнал заднего хода, осциллограммы

Источник информации: http://rk50.ru


Все авторские права принадлежат Петрову Р.В, RK50.RU

Блок управления фарами, разработка схемы и программного обеспечения

Это модуль управления противотуманными фарами.
Имеет 4-ре режима работы:
1 Фары постоянно включены
2 Фары мигают с равным интервалом времени
3. Фары мигают с увеличенным интервалом времени
4. Фары мигают с уменьшенным интервалом времени

В процессе эксплуатации обнаружилось два недостатка:
1. Когда нужно фары включить на небольшой промежуток времени, то для их выключения нужно перебрать оставшиеся три режима. Это отвлекает от дороги. Была сделана модификация программы, а именно добавлен аварийный выход из подпрограммы при длительном удержании кнопки.
2. После аварийного завершения программы, при возврате кнопки в исходное состояние, программа перескакивала в первый режим работы фар, то есть когда они непрерывно включены.


Все авторские права принадлежат Петрову Р.В, RK50.RU

Разработка автомобильной электроники, модуль управления ПТ-фарами

Разработан модуль управления противотуманными фарами на микроконтроллере AVR. Схема работающая, работает уже два года, выдержала 30 градусные морозы. Снимал для доработки программного кода, а именно возврат в начало программы при 35 секундном удержании кнопки, что удобно для быстрого завершения программы Раньше нужно было пройти весь цикл, пять подпрограмм.


Все авторские права принадлежат Петрову Р.В, RK50.RU

Модуль управления ПТФ на микроконтроллере AVR

Выполнена доработка программного кода, а именно добавлен быстрый возврат в начало программы, когда потушены ПТФ при удержании кнопки более чем 35 секунд.
Это создает удобство, когда нужно выйти из подпрограммы не перебирая все последовательно рабочие режимы ПТФ.


Все авторские права принадлежат Петрову Р.В, RK50.RU

Разработка и модернизация программного обеспечения для AVR-микрокотроллеров

Пример разработки и модификации программного обеспечения для микроконтроллера AVR, используемого для управления радиостанцией ICOM IC-F211 в режиме радиомаяка.


Все авторские права принадлежат Петрову Р.В, RK50.RU

Цифровая радиосвязь, пример декодирования тоновой посылки на примере эхо-репитера

Привожу пример, декодирования одной из тоновых посылок в формате Азбуки Морзе, передаваемой «Эхо-репитером» каждые 15 минут при его бездействии.


Все авторские права принадлежат Петрову Р.В, RK50.RU

«Эхо-репитер» -последняя модернизация

АЛГОРИТМ РАБОТЫ

Инициализация: тоновая посылка в формате Азбуки Морзе: «rk50.ru 79031423721 Petrov Roman»
Основной режим: Ожидание сигнала → Отсчет тайм-аута в 15 минут.
Если сигнал не появился, то через 15 минут тоновая посылка в формате Азбуки Морзе «слово 1», если эхо-репитер не используется, то по истечение 15 минут в эфир передернется следующее «слово 2» в формате Азбуки Морзе, потом «слово 3» и «слово 4».
Далее цикл начинается заново.

    Формат слов:

  • «info_1:» ТОН (79031423721 Petrov Roman) ТОН
  • «info_2:»ТОН ТОН (rk50.ru 79031423721) ТОН ТОН
  • «info_3:» ТОН ТОН ТОН (rk50.ru Petrov Roman)ТОН ТОН ТОН
  • «info_4:» ТОН ТОН ТОН ТОН (rk50.ru) ТОН ТОН ТОН ТОН

Длительность тоновой посылки составляет 111 мСек.

Если сигнал появился, то записываем, если запись превышает тайм-аут, то ограничиваем длительностью в 10.25 сек.
После окончания сигнала, воспроизводим с задержкой после подачи несущей в 500 мС.
Таким образом, гарантированно передаем начало первых букв в слове.

МОДИФИКАЦИЯ ЭХО-РЕПИТЕРА, ЭХО-РЕПИТЕР В г. ПУШКИНЕ
МОДИФИКАЦИЯ ЭХО-РЕПИТЕРА, ЭХО-РЕПИТЕР В г. ПУШКИНЕ

МОДИФИКАЦИЯ ЭХО-РЕПИТЕРА, ЭХО-РЕПИТЕР В г. ПУШКИНЕ
МОДИФИКАЦИЯ ЭХО-РЕПИТЕРА, ЭХО-РЕПИТЕР В г. ПУШКИНЕ

Эхо-репитер, г. Пушкино, rk50.ru
Эхо-репитер, г. Пушкино, rk50.ru

Эхо-репитер, г. Пушкино, rk50.ru
Эхо-репитер, г. Пушкино, rk50.ru

Рабочие прошивки для микроконтроллера AVR ATTINY13A:

    Исходный код последней модификации программы для микроконтроллера AVR ATTINY13A:

    Программа полностью рабочая и отлажена 5 февраля 2015 года.
    ;########################################################
    ;# 25 января 2015 года
    ;# УПРАВЛЕНИЕ ЭХОРЕПИТЕРОМ
    ;# PB4-управление передачей TX
    ;# PB0 — тоновый выход TONE
    ;# PB2 -индикатор состояния LED
    ;# PB3 — вход детектора IN
    ;# АЛГОРИТМ РАБОТЫ:
    ;# 1.1ТОН 3 СЕК.-> ПАУЗА 3 СЕК -> ИНФОРМАЦИЯ 1 -> ТАЙАУТ 15 МИНУТ
    ;# 1.2 -> ТОН 3 СЕК. -> ПАУЗА 3 СЕК ТАЙМАУТ 15 МИНУТ
    ;# 1.3 ->ТОН 3 СЕК. -> -> ПАУЗА 3 СЕК -> ТАЙАУТ 15 МИНУТ
    ;# 1.4 ->ТОН 3СЕК -> ПАУЗА 3 СЕК -> ИНФОРМАЦИЯ 2 …
    ; Добавлены 3-ре тоновые посылки в формате Азбуки Морзе в период 15, 30, 45 и 60 мин — 24 февраля 2015 год.
    ; добавлена функция воспроизведения ранее записанной фрпазы после первого там-аута в минут.
    ; Оканчательно доработана с устранением всех ошибок.
    ;########################################################

    .include «tn13def.inc»
    .list

    .def tmp = r16;
    .def tmpa = r17;
    .def tmp_1 = r18; сотояние порта PORTB
    .def short = r19; регистр для формирования длинной задержки
    .def long = r20; регистр для осчета времени сторожевым таймером
    .def tmp_2 = r21; время запис ограниченное 10сек
    .def tmp_3 = r22;
    .def counter = r23;
    .def vtmp_2 = r24; время записи, используется для повоторного воспроизведения ранее записанной радиопосылки
    .equ tx = 4 ; PB0 TX
    .equ led = 2 ; PB1 LED
    .equ tone = 0 ; PB2 TONE
    .equ det = 3 ; PB3 IN — вход детектора
    .equ play_rec = 1; PB1 управление записью и чтением

    .equ t_1 = 255
    .equ t_2 = 3 ; задержка d1000 1 mS
    .equ t_3 = 12; задержка d3000 3S
    .equ t_30min = 16; 31 задержка длинная 30 минут
    .equ t_4 = 1 ; задержка 1 мС для формирования тона генератора
    .equ t_10s = 42 ; задержка 10.25 Сек T=(42-1)*0.25=10.25S
    .equ wait_point = 63; задержка для формирования точки +
    .equ wait_point_tone = 32 ; задержка для формирования тоновой точки
    .equ counter_info = 4 ; счетчик информации
    .cseg
    .org 0
    ldi tmp, low(RAMEND)
    out SPL, tmp
    ;########################################################
    ;# ИНИЦИАЛИЗАЦИЯ ТАЙМЕРА
    ;########################################################

    ldi tmp, 0x05; коэффициент деления таймера-счетчика TCCR0 1024
    out TCCR0B, tmp; загрузить в регистр управления

    ;########################################################
    ;# ИНИЦИАЛИЗАЦИЯ МИКРОКОНТРОЛЛЕРВА
    ;########################################################

    ldi tmp, 0b0010111; PINB3- in, PINB0, PINB1, PINB2 -out
    out DDRB, tmp
    ldi tmp, 0xFF ; out PORTB
    out PORTB, tmp
    ldi counter, counter_info
    rcall d3000
    rcall d3000
    ;########################################################
    ;# ОСНОВНАЯ ПРОГРАММА
    ;########################################################

    start:
    ;#####################################################################
    ;# ИНИЦИАЛИЗАЦИЯ
    ;#####################################################################
    ;### Несущая 3 СЕК -> PAUSE 3S-> TONE 3S-> PAUSE 3S->INFO> PAUSE 3S-> TONE 3S-> ОТКЛЮЧЕНИЕ

    rjmp start_info; Тновая посылка в формате Азбуки Морзе RK50.RU Petrov Roman 79031423721
    end_end_info:
    ldi counter, counter_info
    end_info:

    ;######################################################################
    ;# Ветвление, отчет тай-аута при неиспользовании репитера
    ;######################################################################
    start_0:
    ldi long, t_30min; задание времени таймаута в 15 минут T=60*(16-1) = 900 S

    time_out_1:
    clr short
    dec long
    cpi long, 0
    breq start_counter_info; перейти на метку при равентсе time_long =0

    det3:; Один цикл =0.235С Полная задержка равна 60 секунд
    in tmp_1, PINB
    sbrs tmp_1, det; пропустить следующую команду, если det=1 -нет сигнала на входе тетектора
    rjmp write
    ;#######################################################################
    ; ФОРМИРОВАНИЕ ТАЙМ-АУТА в T=0.25*255 = 15 МИНУТ, ПО ИСТЕЧЕНИИ КОТОРОГО
    ;В ЭФИР ВЫДАЕТСЯ РАДИОПОСЫЛКА
    ;#######################################################################
    inc short
    cpi short, t_1; сравнить с t_1 (255)
    breq time_out_1; при равентсве перейти на метку Задержка 0.25*255 = 63,75С
    rcall d250ms
    rjmp det3

    start_counter_info:
    rjmp start_counter_info_0
    ;#########################################################################
    ; ПРОЦЕСС ЗАПИСИ И ВОСПРОИЗВЕДЕНИЯ СИГНАЛА С ОГРАНИЧЕНИЕМ ЗАПИСИ В 10.5 СЕКУНД
    ;
    ;#########################################################################
    write:
    clr tmp_2
    sbi PORTB, PLAY_REC; REC — начать запись
    write_1:
    rcall d250ms

    inc tmp_2
    cpi tmp_2, t_10s
    breq stop_write; при равенстве tmp=255 перейти на метку stop_write (T=0,218 *48 =10,5S )

    in tmp_1, PINB
    sbrs tmp_1, det ; пропустить если det = 1 — сигнал на входе пропал
    rjmp write_1 ; повторить цикл

    stop_write: ; конец записи
    ; Ждать пока не закончится сигнал
    det_1:
    in tmp_1, PINB
    sbrs tmp_1, det; пропустить если play_rec = 1 — сигнал на входе пропал
    rjmp det_1

    cbi PORTB, LED; горит светодиод
    cbi PORTB, TX; передача

    rcall d250ms; Пвуза для того, чтобы успел открытся шумоподавитель от CTCSS-сигнала
    rcall d250ms

    cbi PORTB, PLAY_REC; PLAY-начать воспроизведение ранее записанного файла

    ;#######################################################################
    ;# PLAY
    ;;#######################################################################
    play:
    rcall d250ms
    dec tmp_2
    cpi tmp_2, 0
    breq stop_play_end; при равентсве нулю tmp перейти на метку
    rjmp play
    stop_play_end:
    ; Пауза перед тоновой посылкой, т.е. концом передачи
    ldi tmp, 0x06
    pause_tone:
    dec tmp
    cpi tmp,0
    breq exit_pause
    rcall d250ms
    rjmp pause_tone
    exit_pause:
    rcall tone_3s ; тоновая посылка
    sbi PORTB, LED; не горит светодиод
    sbi PORTB, TX; передача закончена
    rjmp start_0

    ;######################################################
    ;# Пауза 3 секунды = 3000 мС
    ;# T=1MHz/1024=976,5 Hz 1,24 mS 1,024*256=261 mS
    ;# T=218 mS T=0.925 mS -1 цикл
    ;# Реальная T=1,45S
    ;######################################################
    d3000:
    push tmp
    ldi tmpa, t_3
    d3000_1:
    clr tmp
    out TCNT0, tmp

    dec tmpa
    cpi tmpa,0
    breq output
    wait_1:; 232 mS
    in tmp, TCNT0
    cpi tmp, t_1
    brlo wait_1
    rjmp d3000_1

    output:
    pop tmp
    ret

    ;################################################################
    ;# ЗАДЕРЖКА ДЛЯ ФОРМИРОВАНИЯ ТОНА T=2,34 mS F=500 Hz
    ;# ИСПОЛЬЗОВАНИЕ ТАЙМЕРА TCNT0
    ;# F=977Hz T=1,024 ms
    ;# Реальная задержка T=937 mkS

    ;################################################################

    d1000: ; ФОРМИРОВАНИЕ ЗАДЕРЖКИ в 1 МС F=1/(2T)=500 Hz для ГЕНЕРАТОРА
    push tmp
    clr tmp
    out TCNT0, tmp

    wait_2:
    in tmp, TCNT0
    cpi tmp, t_4
    brlo wait_2
    pop tmp
    ret

    ;################################################################
    ;# ЗАДЕРЖКА 250 мС
    ;################################################################

    d250ms: ; ФОРМИРОВАНИЕ ЗАДЕРЖКИ в 1 МС F=1/(2T)=500 Hz для ГЕНЕРАТОРА
    push tmp
    clr tmp
    out TCNT0, tmp

    wait_3: ; Итоговая задрежка в 1 мС
    in tmp, TCNT0
    cpi tmp, t_1; сравнить с числом t_1=255
    brlo wait_3
    pop tmp
    ret

    ;############################################################
    ;# ФОРМИРОВАНИЕ ТОНА 0,944 mS при t_2=7
    ;############################################################
    tone_3s:
    ldi tmpa, t_2; 3
    stop_1:
    dec tmpa
    cpi tmpa,0
    breq tone_stop
    ldi tmp_1, 0b111100 ; Было t_1; 255

    tone_start: ; Цикл выполняется за 0.472 Сек при tmp_1=255
    sbi PORTB, TONE
    rcall d1000; задержка в 1 мС
    cbi PORTB, TONE
    rcall d1000; задержка в 1 мС
    ;############################################################
    ;######## ОСЧЕТ 3 СЕКУНД ТОНОВОЙ ПОСЫЛКИ
    dec tmp_1
    cpi tmp_1, 0
    breq stop_1; при равенстве перейтина метку stop_1
    rjmp tone_start
    tone_stop:
    ret

    ;############################################################
    ;# ИНФОРМАЦИОННОЫЕ ПОСЫЛКИ В ПЕРИОД 15, 30, 45 и 60 минут
    ;############################################################

    start_counter_info_0:
    dec counter
    cpi counter, 3
    breq info_1
    cpi counter, 2
    breq info_2
    cpi counter, 1
    breq info_3
    cpi counter, 0
    breq info_4
    ;#############################################################
    ; ТОНОВЫЕ ПОСЫЛКИ : info_1: ТОН (79031423721 Petrov Roman) ТОН,
    ; info_2:ТОН ТОН (rk50.ru 79031423721) ТОН ТОН
    ; info_3: ТОН ТОН ТОН (rk50.ru Petrov Roman)ТОН ТОН ТОН
    ; info_4: ТОН ТОН ТОН ТОН (rk50.ru) ТОН ТОН ТОН ТОН
    ;#############################################################

    info_1: ; rk50.ru
    cbi PORTB, LED;
    cbi PORTB, TX ;
    rcall d3000; ПАУЗА 3 СЕК
    rcall tone_3s ; тоновая посылка 1
    rcall d3000; ПАУЗА 3 СЕК

    rcall word_2 ;79031423721
    rcall word_3; Petrov Roman

    rcall d3000; ПАУЗА 3 СЕК
    rcall tone_3s ; тоновая посылка 1
    rcall d3000; ПАУЗА 3 СЕК
    sbi PORTB, LED;
    sbi PORTB, TX ;
    rjmp end_info

    info_2:

    cbi PORTB, LED;
    cbi PORTB, TX ;
    rcall d3000; ПАУЗА 3 СЕК
    rcall tone_3s ; тоновая посылка 1
    rcall d250ms
    rcall tone_3s ; тоновая посылка 2
    rcall d3000; ПАУЗА 3 СЕК

    rcall word_1 ; rk50.ru
    rcall word_2 ;79031423721

    rcall d3000; ПАУЗА 3 СЕК
    rcall tone_3s ; тоновая посылка 1
    rcall d250ms
    rcall tone_3s ; тоновая посылка 2
    rcall d3000; ПАУЗА 3 СЕК
    sbi PORTB, LED;
    sbi PORTB, TX ;
    rjmp end_info

    info_3: ; rk50.ru Petrov Roman
    cbi PORTB, LED;
    cbi PORTB, TX ;
    rcall d3000; ПАУЗА 3 СЕК
    rcall tone_3s ; тоновая посылка 1
    rcall d250ms
    rcall tone_3s ; тоновая посылка 2
    rcall d250ms
    rcall tone_3s ; тоновая посылка 3
    rcall d3000; ПАУЗА 3 СЕК

    rcall word_1 ; rk50.ru
    rcall word_3 ; Petrov Roman

    rcall d3000; ПАУЗА 3 СЕК
    rcall tone_3s ; тоновая посылка 1
    rcall d250ms
    rcall tone_3s ; тоновая посылка 2
    rcall d250ms
    rcall tone_3s ; тоновая посылка 3
    rcall d3000; ПАУЗА 3 СЕК
    sbi PORTB, LED;
    sbi PORTB, TX ;
    rjmp end_info

    info_4:

    cbi PORTB, LED;
    cbi PORTB, TX ;
    rcall d3000; ПАУЗА 3 СЕК
    rcall tone_3s ; тоновая посылка 1
    rcall d250ms
    rcall tone_3s ; тоновая посылка 2
    rcall d250ms
    rcall tone_3s ; тоновая посылка 3
    rcall d250ms
    rcall tone_3s ; тоновая посылка 4

    rcall d3000; ПАУЗА 3 СЕК

    rcall word_1

    rcall d3000; ПАУЗА 3 СЕК
    rcall tone_3s ; тоновая посылка 1
    rcall d250ms
    rcall tone_3s ; тоновая посылка 2
    rcall d250ms
    rcall tone_3s ; тоновая посылка 3
    rcall d250ms
    rcall tone_3s ; тоновая посылка 4
    rcall d3000; ПАУЗА 3 СЕК

    sbi PORTB, LED;
    sbi PORTB, TX ;
    rjmp end_end_info

    start_info: ;rk50.ru 79031423721 Petrov Roman
    cbi PORTB, LED;
    cbi PORTB, TX ;
    rcall d3000; ПАУЗА 3 СЕК

    rcall word_1
    rcall word_2
    rcall word_3

    rcall d3000; ПАУЗА 3 СЕК
    sbi PORTB, LED; погасить светодиод
    sbi PORTB, TX ; выключение передачи

    rjmp end_info

    ;############################################################
    ;# ФОРМИРОВАНИЕ ТОНОВОЙ ИНФОРМАЦИОННОЙ ПОСЫЛКИ В ФОРМАТЕ АЗБУКИ МОРЗЕ
    ;############################################################

    ;############################################################
    ;# Тоновая посылка в формате Азбуки Морзе
    ;# RK50.RU PETROV ROMAN 79099119494 Первый пип и потерялся
    ;############################################################

    word_1:
    rcall symbol_R
    rcall symbol_K
    rcall symbol_5
    rcall symbol_0
    rcall symbol_point
    rcall symbol_R
    rcall symbol_U
    ret

    word_2:
    rcall pause_word
    rcall symbol_7
    rcall symbol_9
    rcall symbol_0
    rcall symbol_3
    rcall symbol_1
    rcall symbol_4
    rcall symbol_2
    rcall symbol_3
    rcall symbol_7
    rcall symbol_2
    rcall symbol_1
    ret
    word_3:
    rcall pause_word
    rcall symbol_P
    rcall symbol_E
    rcall symbol_T
    rcall symbol_R
    rcall symbol_O
    rcall symbol_V
    rcall pause_word
    rcall symbol_R
    rcall symbol_O
    rcall symbol_M
    rcall symbol_M
    rcall symbol_A
    rcall symbol_N
    ret

    ;############################################################
    ;# Таблица символов в формате Азбуки Морзе
    ;############################################################
    symbol_R :
    rcall point
    rcall tire
    rcall point
    ret
    symbol_K :
    rcall tire
    rcall point
    rcall tire
    ret
    symbol_5 :
    rcall point
    rcall point
    rcall point
    rcall point
    rcall point
    ret
    symbol_0 :
    rcall tire
    rcall tire
    rcall tire
    rcall tire
    rcall tire
    ret
    symbol_point:
    rcall point
    rcall point
    rcall point
    rcall point
    rcall point
    rcall point
    ret
    symbol_U :
    rcall point
    rcall point
    rcall tire
    ret
    symbol_P :
    rcall point
    rcall tire
    rcall tire
    rcall point
    ret
    symbol_E :
    rcall point
    ret
    symbol_T :
    rcall tire
    ret
    symbol_V :
    rcall point
    rcall point
    rcall tire
    ret
    symbol_O :
    rcall tire
    rcall tire
    rcall tire
    rcall tire
    rcall tire
    ret
    symbol_M :
    rcall tire
    rcall tire
    ret
    symbol_A :
    rcall point
    rcall tire
    ret
    symbol_N :
    rcall tire
    rcall point
    ret
    symbol_7 :
    rcall tire
    rcall tire
    rcall point
    rcall point
    rcall point
    ret
    symbol_9 :
    rcall tire
    rcall tire
    rcall tire
    rcall tire
    rcall point
    ret
    symbol_1 :
    rcall point
    rcall tire
    rcall tire
    rcall tire
    rcall tire
    ret
    symbol_4 :
    rcall point
    rcall point
    rcall point
    rcall point
    rcall tire
    ret
    symbol_2 :
    rcall point
    rcall point
    rcall tire
    rcall tire
    rcall tire
    ret
    symbol_3 :
    rcall point
    rcall point
    rcall point
    rcall tire
    rcall tire
    ret

    ;############################################################
    ;# ФОРМИРОВАНИЕ ДЛИТЕЛЬНОСТЕЙ ТИРЕ, ТОЧКА И ПАУЗ МЕЖДУ СЛОВАМИ
    ;# Тире = 3 Точкам, ПАУЗА МЕЖДУ СЛОВАМИ = 7 точкам
    ;Тире = 157 мС должно 175 мС
    ;Точка = 58,5 мС
    ;ПАуза между символами = 29.7 мс должно 58.5 мС
    ;############################################################
    point:
    ldi tmp_3, wait_point_tone ;
    start_point:
    sbi PORTB, TONE
    rcall d1000; задержка в 1 мС
    cbi PORTB, TONE
    rcall d1000; задержка в 1 мС
    dec tmp_3
    cpi tmp_3,0
    breq end_point
    rjmp start_point
    end_point:
    rcall pause_point
    ret

    ;# ФОРМИРОВАНИЕ ДЛИТЕЛЬНОСТИ ТИРЕ T=3*T (точки)
    tire:
    ldi tmp_3, 0b1100000 ;96 T=177 mS

    start_tire: ; T=1,837 mS
    sbi PORTB, TONE
    rcall d1000; задержка в 1 мС
    cbi PORTB, TONE
    rcall d1000; задержка в 1 мС
    dec tmp_3
    cpi tmp_3,0
    breq end_tire
    rjmp start_tire
    end_tire:
    rcall pause_point
    ret

    ;# ФОРМИРОВАНИЕ ДЛИТЕЛЬНОСТИ ПАУЗЫ МЕЖДУ СЛОВАМИ T=7*Tточки
    pause_word:
    ldi tmp_3, 0x06
    start_pause_word:
    rcall pause_point
    dec tmp_3
    cpi tmp_3,0
    breq end_pause_word
    rjmp start_pause_word
    end_pause_word:
    ret

    ;# ФОРМИРОВАНИЕ ДЛИТЕЛЬНОСТИ ТОЧКИ T=58,6 mS
    pause_point:
    push tmp
    clr tmp
    out TCNT0, tmp

    wait_p: ; T=0,928 mS
    in tmp, TCNT0
    cpi tmp, wait_point; N=58,5/0,928 = 63
    brlo wait_p
    pop tmp
    ret


Все авторские права принадлежат Петрову Р.В, RK50.RU