HeadTracker: Как побороть наводки от передатчика на гироскоп?
Уважаемые радиоэксперты, прошу помочь с проблемой.
Пытаюсь сделать HeadTracker на двухосевом гироскопе IDG-300 www.sparkfun.com/…/IDG-300_Datasheet.pdf. Гиро у меня уже на маленькой платке с фильтрами питания и выходными LPF (фильтры, срезающие высокие частоты). Уже и с дрифтом разобрался, и с интегрированием - все отлично рабтает от батарейки. Но как только пытаюсь подключить к передатчику через тренерский разъем, чтобы взять оттуда питание и сервосигналы, так начинаются сущая свисопляска в показаниях гироскопа. Причем, они не прекращаются даже при вынутом кварце передатчика.
Во первых, выходное опорное напряжение гироскопа VRef=1.23V, которое я, в принципе, не использую, начинает метаться от 1.26 до 1.32. Оно ДОЛЖНО быть стабильным и не зависящим от напряжения питания гироскопа 3.3V. Все мерял китайским мультиметром со скрученными проводами, чтобы минимизировать наводки от передатчика.
Во вторых, что в общем-то связано c первым, выходное напряжение гироскопа в неподвижнос состоянии, преобразованное АЦП, составляет 570(X) и 561(Y), при этом при питании не от передатчика, а от батарей, оно 553(X) и 484(Y).
И главное, дрожание выходных напряжение неподвижного гироскопа достигает ±5 отсчетов АЦП, а при питании от батарей ±1 или меньше.
Ниже показана схема цепей питания (извините за качество картинки!). Используются 5V и 3.3V стабилизаторы, контроллер PIC16F688 со встроенным генератором питается от 5V, а гиро от 3.3V. АЦП контроллера использует напряжение 3.3V в качестве своего опорного.
Есть у меня мысли, что надо бы сделать более грамотную разводку земли. Но других идей нет…
Но как только пытаюсь подключить к передатчику через тренерский разъем, чтобы взять оттуда питание и сервосигналы, так начинаются сущая свисопляска в показаниях гироскопа. Причем, они не прекращаются даже при вынутом кварце передатчика.
А РРМ как заведен на процессор? Может быть, он дергает питание вверх через защитные диоды входа? И надо бы осциллографом проверить, нет ли возбуждения стабилизаторов в условиях питания от пульта.
Там ещё с пульта, с тренерского разъёма, РРМ сигнал идёт с размахом 10V. Это нужно учесть.
Если вытаскиваешь кварц, и помеха не пропадает, наводки от передатчика, тут не при чём.
Спасибо огромное 😃 , действительно дело было в уровне сигнала. А я-то думал, что там 5V идет! В общем, поставил оптрон чтобы вообще не думать об его амплитуде, и помехи исчезли. 😃
Ну опять засада. У меня в программе обработчик прерывания (PIC16F688) использовался для определения фронтов сервоимпульса (INT) и для формирования и врезки своих каналов по таймеру (TMR1). Все работало отлично. Но с приходом гироскопа я поюзал еще и прерывания TMR0 (чтобы замерять время между опросами гироскопа), чтобы сделать из 8 бит таймера 16 бит - просто в прерывании TMR0 я инкрементирую переменную, в которой хранится старший байт. Но из-за этого стали дергаться сервы. Периодически возникающие раз в 256 ms прерывания TMR0 могут на несколько десятков us менять длительности всех сервоимпульсов, и сервы дергаются.
Вижу несколько решений:
- Перейти на 20 MHz с 4 MHz - эффект ослабнет в 5 раз; Но ног для кварца хватает;
- Перейти на PIC18 - сразу с 28 ногами (у меня есть PIC18F252). У него есть TMR3, и два уровня прерываний; Там же можно переделать программу под использование CCP модулей - будет вероятно точнее длительность импульсов замеряться и генерироваться.
Может кто-нибудь предложит другие решения?
Честно говоря я до конца не понял проблемку, а в таймере уже стоит максимальный предделитель?
Честно говоря я до конца не понял проблемку, а в таймере уже стоит максимальный предделитель?
Нет, ибо мне надо точно засекать время. Но я уже вроде бы подбираюсь к решению - просто использую TMR1 для двух целей - и для формирования сервоимпульсов через прерывание, и для замера времени, считывая его значение. Некрасиво и сложно отследить все задержки на перезагрузку таймера, но можно. Придется симулятор осваивать наверное.
Нет, ибо мне надо точно засекать время.
Не знаю, как в Вашем процессоре, а в PIC 16F876 (4, 5 ноги) существуют два аппаратных входа для ШИМ и два таких же выхода(15, 16).
И если Вам надо точно мерять длину канального импульса и точно его генерить- посоветовал бы работать именно по этим ногам.
А потом, судя по картинке- у вас очень “развесистый” монтаж- тут тоже могут быть проблемы…
Не знаю, как в Вашем процессоре, а в PIC 16F876 (4, 5 ноги) существуют два аппаратных входа для ШИМ и два таких же выхода(15, 16).
И если Вам надо точно мерять длину канального импульса и точно его генерить- посоветовал бы работать именно по этим ногам.
А потом, судя по картинке- у вас очень “развесистый” монтаж- тут тоже могут быть проблемы…
Извиняюсь, вкралась опечатка: номера ног соответствуют AtMega-8!