Теперь расскажу
Masik-у как мы боремся с помехами... если он ещё не понял. В самом приёмнике мы ничего не фильтруем.. это делает МК:
программная часть:
Простой пример: (обяснение "на пальцах") ))) Расстояния даны условно. Просто для понимания процесса.
1-берём радиотелефон (или рацию)... включаем телефон.. слышим сигнал станции. Сигнал чёткий. Шума (шипения) в трубке нет.
2-отходим на 100 метров.. слышим сигнал и слабый шум (шипение) в трубке.
3-отходим на 200 метров... слышим сигнал станции и сильный шум (шипение) в трубке...
4-отходим на 400 метров... слышим только шум (шипение) в трубке. Сигнал станции уже не слышим.
Точно так же работает наш приёмник в кораблике. Теперь, если мы добавим в наш приёмник шумоподавитель по уровню сигнала (БШН) или шумоподавитель по уровню шума (как в рации) или цифровой шумоподавитель... или просто настроим наш компаратор в приёмнике так, чтобы он работал только от сильного сигнала (как у
botchin), то что получим? Кораблик у нас проплывёт 200 метров... а дальше сработает БШН и на выходе ХА6 будет тишина... или просто перестанет работать компаратор (как у
botchin)... в любом случае кораблик остановится. 200 метров (условно) - это макисмальная дальность, ограниченая БШН или компаратором по уровню.
С самого начала мы хотели сделать кораблик с
максимальной дальностью. Как это сделать? Как сделать так чтобы наш кораблик плавал на 300 метров? Или ещё дальше? На 400 метров? Для этого можно повысить мощность передатчика... или повысить чувствительность приёмника. Но! Если повысить мощность передатчика, то быстро сядут аккумуляторы... А повысить чувствительность приёмника мы не можем... она и так уже на пределе. Остаётся последний вариант: убираем всякие БШН, компараторы по уровню... (и все другие шумоподавители). Усиливаем и ограничиваем сигнал в приёмнике на уровне 5 вольт, простым усилителем-ограничителем и затем подаём этот сигнал прямо на вход МК. Теперь на расстоянии 300 метров, у нас на вход МК поступает полезный сигнал вместе с шумами.
Вот пример сигнала при разной дальности кораблика 100...300 метров (условно). Смоделировано в протеусе для наглядности.
Вот наш кораблик отплыл на
100 метров. Шума нет. Видим, что импульсы на выходе приёмника ровненькие:
А вот наш кораблик отплыл на
300 метров. Появилься сильный шум. Видим, что импульсы на выходе приёмника у нас под действием шума получились "размазанные":
При таких "размазанных" импульсах наш кораблик плавать не может... если только не принять специальных мер.
Теперь наша задача отфильтровать шум в самом МК и выделить полезный сигнал из этого "мусора". Это мы делаем программно. Для этого мы сначала оцифровываем наш сигнал. для этого мы используем простой программный АЦП.
https://ru.wikipedia.org/wiki/Аналого-ц ... разователь
Измеряем напряжение на входе МК через равные промежутки времени... и приводим к двум уровням:
Если напряжение на входе больше 2,5 вольт, то записываем в память логическую "1".
Если напряжение на входе меньше 2,5 вольт, то записываем в память логическую "0".
Т.е. простая дискретизация или квантование по уровню.
https://ru.wikipedia.org/wiki/Дискретизация
Ну, а далее уже у нас идёт чистая математика - обработка сигнала в цифровом виде.
Вся программа постоена на простых цифровых фильтрах...
https://ru.wikipedia.org/wiki/Цифровой_фильтр ... у нас упрощённый вариант...
Вообще... вся программа МК декодера у нас состоит из блоков:
1-блок синхронизации. Отвечает за синхронизацию приёма наших пакетов. Синхронизация у нас по синхропаузе между пакетами. Блок синхронизации фильтрует каждый входящий импульс "на лету" и ищет синхропаузу. Как только находим синхропаузу, программа переходит к следующему блоку.
2-блок фильтрации и записи входящих импульсов кода. Фильтрует каждый входящий импульс кода "на лету" и записывает в приёмный буфер и переходит к следующему блоку.
3-блок фильтрации манчестера. Удаляет из приёмного буфера все "поврежденные" пакеты и передаёт пакеты дальше верификатору.
4-блок верификации принятых данных по совпадению. Принятые данные вступают в силу, только после проверки на совпадение трёх одинаковых пакетов данных, причём в любой последовательности.