HeadTracker: Как побороть наводки от передатчика на гироскоп?

Prikupets

Уважаемые радиоэксперты, прошу помочь с проблемой.

Пытаюсь сделать 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 в качестве своего опорного.

Есть у меня мысли, что надо бы сделать более грамотную разводку земли. Но других идей нет…

Vad64
Prikupets:

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

А РРМ как заведен на процессор? Может быть, он дергает питание вверх через защитные диоды входа? И надо бы осциллографом проверить, нет ли возбуждения стабилизаторов в условиях питания от пульта.

ubd

Там ещё с пульта, с тренерского разъёма, РРМ сигнал идёт с размахом 10V. Это нужно учесть.

Если вытаскиваешь кварц, и помеха не пропадает, наводки от передатчика, тут не при чём.

Prikupets

Спасибо огромное 😃 , действительно дело было в уровне сигнала. А я-то думал, что там 5V идет! В общем, поставил оптрон чтобы вообще не думать об его амплитуде, и помехи исчезли. 😃

Prikupets

Ну опять засада. У меня в программе обработчик прерывания (PIC16F688) использовался для определения фронтов сервоимпульса (INT) и для формирования и врезки своих каналов по таймеру (TMR1). Все работало отлично. Но с приходом гироскопа я поюзал еще и прерывания TMR0 (чтобы замерять время между опросами гироскопа), чтобы сделать из 8 бит таймера 16 бит - просто в прерывании TMR0 я инкрементирую переменную, в которой хранится старший байт. Но из-за этого стали дергаться сервы. Периодически возникающие раз в 256 ms прерывания TMR0 могут на несколько десятков us менять длительности всех сервоимпульсов, и сервы дергаются.

Вижу несколько решений:

  1. Перейти на 20 MHz с 4 MHz - эффект ослабнет в 5 раз; Но ног для кварца хватает;
  2. Перейти на PIC18 - сразу с 28 ногами (у меня есть PIC18F252). У него есть TMR3, и два уровня прерываний; Там же можно переделать программу под использование CCP модулей - будет вероятно точнее длительность импульсов замеряться и генерироваться.

Может кто-нибудь предложит другие решения?

SGordon

Честно говоря я до конца не понял проблемку, а в таймере уже стоит максимальный предделитель?

Prikupets
SGordon:

Честно говоря я до конца не понял проблемку, а в таймере уже стоит максимальный предделитель?

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

foxfly
Prikupets:

Нет, ибо мне надо точно засекать время.

Не знаю, как в Вашем процессоре, а в PIC 16F876 (4, 5 ноги) существуют два аппаратных входа для ШИМ и два таких же выхода(15, 16).
И если Вам надо точно мерять длину канального импульса и точно его генерить- посоветовал бы работать именно по этим ногам.
А потом, судя по картинке- у вас очень “развесистый” монтаж- тут тоже могут быть проблемы…

foxfly
foxfly:

Не знаю, как в Вашем процессоре, а в PIC 16F876 (4, 5 ноги) существуют два аппаратных входа для ШИМ и два таких же выхода(15, 16).
И если Вам надо точно мерять длину канального импульса и точно его генерить- посоветовал бы работать именно по этим ногам.
А потом, судя по картинке- у вас очень “развесистый” монтаж- тут тоже могут быть проблемы…

Извиняюсь, вкралась опечатка: номера ног соответствуют AtMega-8!