В продолжение статей
Мной разработан метод, позволяющий организовать "дальнобойное" стереофоническое вещание в диапазонах длинных, средних и коротких волн (0,14 - 26 мегагерц), основанный на широтно-импульсной модуляции с малым заполнением каждого канала и временным разделением стереоканалов в суммарном ШИМ сигнале (pulse width modulation with low filling of each channel and time division of stereo channels in the total PWM signal).
ШИМ сигналы одной частоты правого и левого каналов чередуются друг с другом, что приводит к удвоенной по частоте ШИМ суммарного сигнала, идущего на генератор высокой частоты для модуляции. В качестве генератора ВЧ использован стандартный кварцевый генератор MX045HS на 1.544 мегагерца. Управление генератором осуществлено подключением вывода PB1 Attiny13 через резистор 330 ом к выводу плюса питания MX045HS.
Нагрузочной способности вывода Attiny13 в 40 ма с запасом хватает для прямого управления кварцевым генератором на 1,544 мгц с максимальным током потребления 26 ма.
Технической оценка параметров осуществлена DeepSeek, он же под моим руководством переписал код, приспособив его для получение стереофонической ШИМ на Attiny13. Код можно скачать по ссылке
Нюансы кода
Увеличение PWM_TARGET_FREQ приводит к уменьшению искажений, но расширяет полосу излучаемого ВЧ сигнала. Работает и на 360000 герцах, дальше частоту ШИМ повышать не стал, вполне хватает 250000 герц при полосе модулированного сигнала на выходе кварцевого генератора в пределах 10 килогерц. Что вполне укладывается в нормативы для АМ вещания.
Получаемое значение PWM_TOP выгружается в регистр OCR0A, в данном коде регулирующем частоту суммарного ШИМ на выводе PB1.
Основная часть кода - переключаемое двухканальное АЦП и получение суммарного ШИМ. Схема аналоговой части подачи сигнала на АЦП, такая же как в статье Передача голоса "морзянкой" CW voice в средневолновом диапазоне, только в "стереоварианте" - на выводы PB3 и PB4 Attiny13.
digitalWrite(PB0, HIGH) добавлен как индикатор работоспособности, не более. У Attiny13 осталось ещё два свободных вывода, которые можно совместно с занятым под светодиод PB0 приспособить, например, для управления значением PWM_TARGET_FREQ с индикацией. Внеся, разумеется, соответствующие добавки в код.
Работоспособность передачи стерео ШИМ с чередованием каналов (почти аналог TDMA сетей GSM) была проверена подачей разных аудиосигналов на правый и левый канал по отдельности с помощью известного сайта
Убираем громкость правого канала в ноль, нажимаем Left - в динамике любого АМ приёмника (проверено на советском супергетеродине и китайском SDR), настроенного на частоту 1,544 МГц слышно "Left". Аналогично с правым каналом. При равной громкости каналов слышны оба названия.
Вот как оценил DeepSeek предложенный способ ШИМ-вещания с по сравнению с традиционным АМ
Плюс возможность организовать передачу стерео сигнала или создать защищённый канал связи, подавая по одному из каналов "забивающий" сигнал. Плюс изменяющаяся частота ШИМ, да много что ещё можно придумать.
Как уже говорилось и демонстрировалось (видео ниже) стереофонический ШИМ сигнал в суммарном монорежиме принимает любой аналоговый и даже SDR приёмник. Для стереовещания надо в радиоприёмнике организовать переключение сигнала ПЧ на два раздельных тракта детектирования (фактически деление на 2 при получении ВЧ импульса), а в SDR модернизировать прошивку.
Другие возможные варианты использования данного метода "укладки" двух и более каналов в ШИМ:
- цифровая связь - устойчивость к помехам, возможность защитного кодирования, высокий КПД передатчика
- полнодуплексный цифровой/аналоговый канал связи на одной частоте - с взаимной синхронизацией по фронтам ШИМ или сверхточным часам.
Конечно, весьма простой ШИМ модулятор на Attiny13 выдаёт сигнал не слишком высокого качества - присутствует шум, ограничен динамический диапазон. Для качественного вещания, разумеется, необходимы профессионально разработанные и изготовленные устройства.
На аналогичном принципе переключения каналов построен код стереодекодера , транслирующего состояние входа PB4 Attiny13 попеременно на PB0/PB1
1. При запуске на выходах PB0/1 устанавливается LOW, бинарный указатель канала демультиплексирования установлен в 0 - канал PB0
2. При поступлении входящего фронта 0->1 на PB4 устанавливается HIGH на PB0
3. При поступлении падающего фронта 1->0 на PB4 устанавливается LOW на PB0
4. Бинарный указатель канала демультиплексирования устанавливается в 1 - канал PB1
5. При поступлении входящего фронта 0->1 на PB4 устанавливается HIGH на PB1
6. При поступлении падающего фронта 1->0 на PB4 устанавливается LOW на PB1
7. Бинарный указатель канала демультиплексирования устанавливается в 0 - канал PB0
далее в коде повторяются пункты 2-7
Видео работы стереофонического ШИМ передатчика