Разбираем Датчик Вращения Lego

Важное примечание:
Датчик вращения склеен, поэтому при попытке открыть его вы можете повредить датчик. Я за это ответственности не несу.
Заботьтесь о ваших пальцах также...

Датчик вращения Lego - миленькое устройство, которое позволяет мерить RCX осевую скорость. К сожалению, есть проблема: если скорость вращения низкая, то значение может подскакивать на 1-2 единицы!. Я решил узнать почему. Вот что я обнаружил:

Работа датчика

Датчик вращения распознается   RCX через две фазы: в течение 2.9ms, датчик RCX (+8V), затем в течение приблизительно 100µs RCX читает значение, возвращенное датчиком. В течение этой фазы, датчик не обеспечивается питанием, и он  использует “собственный запас”. Резистор  10 Ом внутренее  напряжение RCX  датчика к +5V, он должен сбить напряжение до нужного.

Работа датчика

Вот Этапы вращения датчика. Вы можете видеть пошаговое вращение датчика и показания по ним. Датчик общается с RCX через 4 кодовых уровня. Вот Напряжения, которые я измерил для каждого шага:
Шаг 1
1.3 V
Шаг 2
3.3 V
Шаг 3
2.0 V
Шаг 4
4.5 V

Вот Этапы вращения датчика.  Вы можете видеть пошаговое вращение датчика  и показания по ним. Датчик общается с RCX через 4 кодовых  уровня.  Вот Напряжения, которые я измерил для каждого шага.
Эти значения кажутся немного низковатыми по сравнению с Майклом Гаспери (см. его страницу датчика вращения), возможно мои батарейки были старыми. Вы можете также видеть, что есть некоторое колебание продолжительной фазы (между 90µs и 125µs)
Дик Сван предложил мне увеличить точность. Посмотрите здесь.

Поскольку ось вращается по часовой стрелке, циклы шагов 1> 2> 3> 4> 1, и через шаги 1> 4> 3> 2> 1 когда вращается против часовой стрелки. Это позволяет RCX определить направление вращения.
Как указано тут Юргеном Стубером, здесь видна первая проблема датчика вращения: в течение перехода между шагом 3 и 4, выпуск пересекает напряжение уровня 2, и между шагом 1 и 2, напряжение пересекается с уровнем 4. Так как этот переход занимает время, есть вероятность, что это случается как раз в то самое время, когда образцы RCX оценивают скорость. Я пробовал определить время осуществления выборки, это, кажется, 60мс от начала фазы.

Дик Сван сделал эксперимент, показывая, что шаг 1 более длинен, чем  три других. Смотрите здесь его объяснение.

Такой переход между шагом 3 и шагом 4. Мы можем видеть.Время перехода через напряжение в  3.3V (шаг 2) может быть оценено к 1мс.
Некоторые альтернативные языки программирования RCX (legOS и leJOS) почти устраняют эту проблему за счет деления на два максимальной скорости вращения.

Но эта проблема не зависит от скорости вращения.

Проблемы при низкой скорости

Чтобы получить эту диаграмму, я просто вращал датчик вручную очень медленно, пока я не достиг перехода между фазами.  Скачка не было. И  только медленно вращая   своей рукой я мог уловить этот  переход. Кажется, что очень близко к положению перехода, есть синхронизация , что  приводит цикл в действие , и это увеличивает предыдущую проблему: есть много переходов , но их очень трудно уловить.

Разбираем датчик

Чтобы пойти дальше, я должен был заглянуть в датчик. Но это ничего не дало. Сначала я поддел серую пластинку, но датчик не открывался. Кажется, что части склеены или  спаяны при высокой температуре, поэтому мне пришлось приложить силу.
Если кто-то найдёт более разумный метод открывания -сообщите мне

(Благодарен за фотографии Андреас Питера)

 

Содержимое датчика

лучше показать, чем описать...

Схемные решения монтажной платы и анализ

D1, D2 направляют электропитание, C1 фильтрует его. K1 и K2 - две вилки, одна сторона содержит  инфракрасный LED , другая сторона фототранзистор. Лопасти  в виде пропеллера  толщенной в лезвие  прерывают инфракрасный луч K1, K2, обоих или ни одного, обеспечивая четыре фазы возвращения значения. Имея  4 лопасти, мы получаем 16 шагов за оборот. IR диод получает питание  через R1 ( 5mA). Узел между R1 и  K1 LED имеет  постоянное напряжение в 2.2V.Вывод   фототранзисторов усилен  (Q1, Q2) и (Q3, Q4). Их выпуск даёт  основу для Q5иQ6, основа которого поляризована к предыдущему 2.2V через R4 и R5. Через D3, Q5 и Q6 поглощают поток, обеспеченный резистором 10 Ом внутри RCX, и производят эти 4 измерения:

Напряжение
Q5
Q6
Шаг 1
1.3 V
вкл
вкл
Шаг 2
3.3 V
выкл
вкл
Шаг 3
2.0 V
вкл
выкл
Шаг 4
4.5 V
выкл
выкл

 Иан Дэвис нашёл у меня ошибку, недостающее звено между эмитентом Q5/Q6 и основы Q1/Q4. Это соединение, кажется, обеспечивает некоторую обратную связь и помогает получению правильных напряжений на выходе.

Решение проблемы

Радикальный метод должен был бы предотвратить переход, в то время как RCX считывает данные. Если бы пространство в кубике не было бы полностью заполнено датчиком вращения ,то  эту проблему можно  было бы  легко решить вставив D-типом (CD4013) между Дарлингтонской базой и базами  выпусками и основаниями Q5и Q6, показанными в конце прочитанной фазы данных. Но здесь это почти невозможно, и так или иначе на разумной скорости проигываешь, показатели очень низкие. Поэтому я пробовал улучшить только поведение низкой скорости.
Так как проблема вызвана синхронизацией между поставкой и порогом усилителя, я пробовал увеличить фильтрацию электропитания. Я добавил  22µF 10V конденсатор параллельно с C1 и пробовал мой измененный датчик... Ура! он теперь работает правильно даже при низкой скорости вращения.

 Фотографии изменённого датчика

Дэн Волковский послал мне фотографии датчика вращения – другая модель.

... и я повторяю правовую оговорку:

Важное примечание:
Датчик вращения склеен, поэтому при попытке открыть его вы можете повредить датчик. Я за это ответственности не несу.
Заботьтесь о ваших пальцах также...

 

     

LEGO, the LEGO logo, DUPLO, BIONICLE, MINDSTORMS, the BELVILLE, CLIKITS, KNIGHTS’ KINGDOM and EXO-FORCE logos,
the Brick and Knob configurations and the Minifigure are trademarks of the LEGO Group.
© 2007 The LEGO Group. All rights reserved. Use of this site signifies your agreement to the terms of use.