Оглавление:
- Шаг 1. Заявление об отказе от ответственности
- Шаг 2: Изготовление печатной платы с использованием метода переноса тонера
- Шаг 3: Пайка электронных компонентов
- Шаг 4: Программирование микроконтроллера STM32
- Шаг 5: Использование AODMoST 32
- Шаг 6: Обзор дизайна
Видео: Альтернативно окклюзионный дихоптический модификатор стереоскопической передачи 32 [STM32F103C8T6 + STMAV340 VGA Superimposer]: 6 шагов
2024 Автор: John Day | [email protected]. Последнее изменение: 2024-01-30 11:48
Некоторое время я работал над преемником оригинального AODMoST. Новое устройство использует более быстрый и лучший 32-битный микроконтроллер и более быстрый аналоговый коммутатор видео. Это позволяет AODMoST 32 работать с более высокими разрешениями и реализовывать новые функции. Теперь устройство также может питаться от USB-порта с напряжением 5 В.
Самая большая новая функция - это реализация простой маски с рисунком изображения для одного глаза и маски с обратным рисунком для другого, аналогичной той, которая представлена в этой статье: дихоптический просмотр фильмов лечит амблиопию у детей. Есть также больше вариантов настройки формы, положения и постоянной случайности этих параметров.
Отмечу, что не все задумки реализовал, и прошивка может быть доработана. Но я предполагаю, что из-за социально-экономических проблем я не смогу работать над этим проектом в обозримом будущем, поэтому я публикую его как есть. Прошивка теперь может работать с 3D-контентом в форматах Top - Bottom и Side by Side и была протестирована на ПК с графическим процессором Nvidia и Xbox 360.
ОБНОВЛЕНИЕ 2020-11-26: Наконец-то мне удалось создать РЕЖИМ 3: СВОБОДНЫЕ ПЛАВАЮЩИЕ ОБЪЕКТЫ. Он включен в прошивку версии 1.00. Это новое программное обеспечение также имеет несколько небольших настроек, например, теперь все режимы имеют отдельные настройки формы, маски и случайного выбора, которые сохраняются при выключении устройства. Я собираюсь сохранить старые файлы (от версии 0.50 прошивки, когда в имени файла нет информации о версии, это означает, что это старая прошивка) на случай, если версия 1.00 каким-то образом неисправна.
Вы можете скачать исходный код, схему, печатную плату, руководство пользователя и т. Д. Для этого проекта здесь:
aodmost_32_all_files_1.00.zip
aodmost_32_all_files.zip
Запасы:
Детали и материалы:
- Микроконтроллер STM32F103C8T6 (LQFP-48)
- 74AC00 четырехканальный вентиль NAND (SOIC-14, ширина 3,9 мм)
- Аналоговый видеопереключатель STMAV340 (ЦСОП-16)
- Регулятор напряжения LM1117-3.3 (ТО-263)
- 3x транзистор BC817 (СОТ-23)
- 3x белые 3мм светодиоды
- 2x желтых рассеянных светодиода диаметром 3 мм
- рассеянный красный светодиод 3 мм
- 2x рассеянных синих светодиода диаметром 3 мм
- рассеянный зеленый светодиод 3 мм
- Кристалл 8 МГц (HC49-4H)
- гнездовой разъем micro USB типа B (обратите внимание, что их много типов, и некоторые из них могут быть несовместимы с отверстиями в конструкции печатной платы, вы можете полностью пропустить USB, поскольку USB используется только как источник питания 5 В)
- 2x D-SUB 15-контактный прямоугольный гнездовой разъем VGA (обратите внимание, что существует много типов, и вам нужна более длинная версия с контактами, которые будут вырезать отверстия в печатной плате)
- 2-контактный прямой штекерный разъем 2,54 мм
- 3-контактный прямой штекер 2,54 мм
- 11x 6x6 мм тактильные кнопки переключения SMD / SMT
- 2x 10 мкФ 16 В Корпус А танталовый конденсатор 1206
- 10x 100 нФ 0805 конденсатор
- 2x 15 пФ 1206 конденсатор
- 3 подстроечных резистора 1 кОм, 6 мм
- 3x 10кОм 1206 резистор
- 4x 4k7 1206 резистор
- 3x 2k7 1206 резистор
- 2x 1k 1206 резистор
- 3x 470 Ом 1206 резистор
- 3x 75 Ом 1206 резистор
- 3х10 Ом 1206 резистор
- двухсторонняя плакированная медью плата (не менее 79,375x96,901 мм)
- несколько кусков медного провода (особенно что-то с маленьким диаметром, например 0,07 мм, может пригодиться, если вы собираетесь ремонтировать сломанную дорожку рядом с выводами микроконтроллера LQFP)
Инструменты:
- диагональный резак
- плоскогубцы
- отвертка с плоским лезвием
- пинцет
- универсальный нож
- файл
- кернер
- молоток
- маленькая игла
- Сухая / влажная наждачная бумага зернистостью 1000
- бумажные полотенца
- пила или другой инструмент, который может разрезать печатную плату
- 4 сверла 0,8 мм
- Сверло 1 мм
- Сверло 3 мм
- сверлильный станок или роторный инструмент
- персульфат натрия
- пластиковый контейнер и пластиковый инструмент, который можно использовать для извлечения печатной платы из раствора для травления
- коричневая упаковочная лента
- изолента
- мультиметр
- паяльная станция
- коническое острие паяльника
- долото паяльное жало
- припаять
- паяльный флюс (я использовал флюс класса RMA, предназначенный для сборки и ремонта SMT, в шприце 1,4 см ^ 3)
- демонтажная проволока
- лазерный принтер
- глянцевая бумага
- утюг
- крем-очиститель
- ацетон
- медицинский спирт
- постоянный производитель
- ST-LINK / V2 (или его клон) + кабели, которые могут подключить его к AODMoST 32 + программное обеспечение, которое может использовать программатор
Шаг 1. Заявление об отказе от ответственности
Использование такого устройства может вызвать эпилептические припадки или другие неблагоприятные эффекты у небольшой части пользователей устройства. Строительство такого устройства требует использования умеренно опасных инструментов и может причинить вред имуществу. Вы создаете и используете описанное устройство на свой страх и риск
Шаг 2: Изготовление печатной платы с использованием метода переноса тонера
Вам необходимо напечатать зеркальное изображение F. Cu (лицевая сторона) и нормальное изображение B. Cu (обратная сторона) на глянцевой бумаге с помощью лазерного принтера (без каких-либо настроек экономии тонера). Внешние размеры печатаемых изображений должны быть 79,375x96,901 мм (или как можно более близкими). Обрежьте печатную плату по размеру напечатанного изображения, вы можете добавить несколько миллиметров с каждой стороны печатной платы, если хотите. Мне лично нравится делать это, делая глубокий ряд по всей длине ламината с помощью универсального ножа (вам нужно разрезать по всей длине несколько раз), а затем повторять процесс с другой стороны. Когда ряды достаточно глубокие, весь ламинат легко ломается пополам. Вам нужно выполнить процесс разламывания ламината два раза, потому что вам нужно иметь правильную длину и ширину получившегося куска. Более мелкие куски ламината можно отломать с помощью плоскогубцев (не поцарапайте медь слишком сильно, используйте защитный слой бумаги, например, между плоскогубцами и печатной платой). Теперь следует сгладить кромки получившегося куска доски напильником.
Затем вам нужно будет очистить медные слои, используя влажную мелкую наждачную бумагу, а затем удалить частицы, оставленные наждачной бумагой, с помощью кремового очистителя (вы также можете использовать жидкость для мытья посуды или мыло). Затем очистите его спиртом. После этого нужно быть очень осторожным, чтобы не прикасаться пальцами к меди.
Теперь пора нарезать лист с зеркальным отображением F. Cu до более удобного размера (оставить несколько сантиметров вокруг внешнего прямоугольника) и положить его поверх утюга (тонер вверх). Вы можете держать утюг между бедрами, но будьте очень осторожны, чтобы подошва постоянно находилась вверху и ничего не касалась. Затем поместите печатную плату на глянцевую бумагу (очищенные боковые стороны от тонера) и включите утюг (используйте полную мощность). Через некоторое время бумага должна прилипнуть к печатной плате. Вы можете использовать кусок ткани или полотенце, чтобы прижать плату к бумаге и немного сдвинуть бумагу, прилипшую к печатной плате. Подождите хотя бы несколько минут, пока бумага не изменит цвет на желтый. К сожалению, вам нужно определить подходящее время для остановки процесса переноса экспериментально, поэтому в случае, если изображение на меди очень плохого качества, вам нужно будет снова очистить тонер ацетоном, песком и промыть доску и начать весь процесс с самого начала.
Когда вы думаете, что перенос тонера завершен, поместите печатную плату с бумагой в воду (вы можете добавить крем-очиститель или жидкость для мытья посуды) на 20 минут. Далее потрите бумагу с печатной платы. Если есть места, где тонер не приставал к меди, замените тонер перманентным маркером.
Теперь вам нужно отметить пробойником центры четырех пустых мест в углах печатной платы. Позже эти центры будут просверлены, а полученные отверстия будут использоваться для выравнивания обеих сторон печатной платы.
Далее необходимо обклеить обратную сторону ламината коричневой упаковочной лентой. Смешайте пресную воду с персульфатом натрия и поместите ПХБ в раствор для травления. Старайтесь держать раствор при температуре 40 ° C. Вы можете поставить пластиковый контейнер на радиатор или другой источник тепла. Время от времени перемешивайте раствор в емкости. Подождите, пока непокрытая медь полностью растворится. Когда это будет сделано, удалите ПХБ из раствора и промойте его водой. Снимите упаковочную ленту. Удалите тонер ацетоном (жидкость для снятия лака должна содержать его изрядное количество). На этом этапе вы можете приступить к устранению любых коротких замыканий канцелярским ножом.
Теперь просверлите четыре установочных отверстия сверлом 0,8 мм. Затем просверлите в бумаге соответствующие отверстия с изображением B. Cu, используя то же сверло 0,8 мм. Когда это будет сделано, отшлифуйте и очистите обратную сторону печатной платы. Затем положите плату на плоскую поверхность (очищенная медь сверху), накройте ее глянцевой бумагой с изображением B. Cu (тонером вниз) и вставьте четыре сверла 0,8 мм в отверстия (круглая часть вниз), чтобы бумага и ламинат ровный. Теперь вы должны на короткое время осторожно прикоснуться к бумаге кончиком горячего утюга, чтобы бумага и печатная плата прилипли друг к другу. Затем удалите сверла, поместите утюг между бедер, положите бумагу с ламинатом поверх утюга и повторите процедуру переноса тонера. Позже смочите бумагу в воде, чтобы удалить ее, и замените недостающий тонер перманентным маркером.
Теперь нужно закрыть лицевую сторону печатной платы упаковочной лентой, а также заднюю часть вокруг уже просверленных отверстий. Затем протравите заднюю сторону так же, как и переднюю, снимите ленту, удалите тонер и начните поиск коротких замыканий.
Также необходимо просверлить остальные отверстия в печатной плате. Есть четыре отверстия диаметром 3 мм для крепления разъемов VGA. Отверстия 1 мм используются для остальных отверстий VGA, подрезок, контактных заголовков и переходных отверстий рядом с micro USB (если вы не собираетесь использовать USB, вы можете припаять сюда другой разъем / кабели питания 5 В). Все остальные отверстия можно проделать сверлом 0,8 мм.
Шаг 3: Пайка электронных компонентов
Вы можете начать с покрытия всей меди припоем (используйте долото и выполните операцию на поверхности, уже покрытой флюсом). Если после этой операции в некоторых точках осталось чрезмерное количество припоя, удалите его с помощью проволоки для удаления припоя. Если какие-либо дорожки растворились в растворе для травления, замените их тонкими проволоками. Затем вы можете приступить к пайке других компонентов, хотя я рекомендую, что вы будете ждать с высокими и громоздкими вещами вокруг MCU до конца. При выполнении электрических соединений используйте достаточное количество флюса.
MCU в корпусе LQFP-48 припаять сложнее всего. Начните с выравнивания, припаяв только один вывод рядом с вершиной корпуса, а затем еще один вывод на противоположной стороне, чтобы закрепить MCU на своем месте. Затем покройте ряды или выводы флюсом и аккуратно припаяйте их к медным дорожкам зубилом. Убедитесь, что вы не сгибаете провода назад, в этом случае вы можете попытаться сдвинуть ряды проводов для выдувания иглы и вытолкнуть штифт наружу. Или, если вы очень этого боитесь, поместите иглу туда еще до того, как приступите к пайке. Для проверки отсутствия коротких замыканий и наличия проводящих электрических соединений простой мультиметр с тестером непрерывности должен быть адекватным (он может разрушить интегральную схему, но моя выдержала испытания). Если вы сделали короткое замыкание, поместите сверху провод для распайки и начните нагрев. Если медные дорожки на печатной плате были повреждены, замените их очень тонкой проволокой. Можно припаять проволоку непосредственно к выводам LQFP с коническим острием. Я делал это несколько раз, в основном потому, что я повредил дорожки при распайке MCU, что было безнадежно после первой попытки его припаять (это можно сделать, поддев шпильки иглой). Я искренне надеюсь, что у вас все получится с первого раза.
Другие микросхемы аналогичны и должны быть припаяны таким же образом, но у них меньшее количество более крупных выводов, поэтому они не должны создавать особых проблем. LM1117 имеет большой язычок, который должен быть припаян к меди, но его трудно должным образом нагреть с помощью обычного паяльника, поэтому, если вы заставите его приклеиться к печатной плате и покроете стороны некоторым количеством припоя, этого должно быть достаточно.
Некоторые компоненты THT нужно паять с обеих сторон платы. В случае тримпотов и светодиодов все довольно просто. При пайке разъемов штырей сдвиньте пластик выше, чем он должен быть перед этой операцией, затем припаяйте все штыри с обеих сторон, а затем сдвиньте пластик обратно в исходное положение. При пайке кристалла кварца сначала поместите его выше, чем необходимо, припаяйте выводы с обеих сторон, а затем, нагревая их снизу, опустите кристалл ниже. Обратите внимание, что я также обернул корпус кристалла проводом, а затем припаял провод к земле (большая медная заливка слева и под кристаллом). Перед тем, как паять части разъема VGA, которые входят в отверстия диаметром 3 мм, я припаял несколько проводов к меди с обеих сторон, чтобы убедиться, что оба слоя меди соединены, и только потом припаял экранирующие провода. Переходные отверстия можно сделать, поместив в отверстие более крупный провод (например, неиспользуемую длину вывода компонента THT), припаяв его с обеих сторон печатной платы, а затем отрезав ненужную часть.
При пайке USB-разъема можно использовать конический наконечник с острым концом для маленьких выводов.
Если вы думаете, что все спаяли, вам следует еще раз проверить, нет ли коротких замыканий или плохих соединений.
Шаг 4: Программирование микроконтроллера STM32
Для разработки прошивки AODMoST 32 я использовал System Workbench для STM32 (версия для Linux), который использует OpenOCD для программирования микроконтроллера. Вы можете найти подробные инструкции о том, как импортировать этот проект в SW4STM32, в файле sw4stm32_configuration_1.00.pdf.
В качестве альтернативы вы можете использовать утилиту ST-LINK (STSW-LINK004). Я тестировал версию для Windows, и она хорошо работала с aodmost_32_1.00.bin
В качестве программатора я использовал дешевый клон ST-LINK / V2, что не идеально, но сработало. Чтобы запрограммировать MCU, мне нужно было запитать AODMoST 32 от порта USB и подключить 3 соединительных кабеля с разъемами 2,54 мм к программатору с одной стороны и к порту SW-DP AODMoST 32 с другой. Вам нужно подключить GND, SWCLK и SWDIO. При программировании убедитесь, что программное обеспечение настроено на выполнение программного сброса системы.
Файлы aodmost_32_1.00.bin и aodmost_32_1.00.elf, необходимые для программирования MCU, находятся внутри архива aodmost_32_all_files_1.00.zip.
Перед программированием флэш-память MCU должна быть пустой, в противном случае некоторые старые данные, оставшиеся в последних 4 КБ, могут помешать сохранению и загрузке настроек.
Шаг 5: Использование AODMoST 32
Теперь вы можете подключить видеокарту или игровую приставку к VGA IN, подключить 3D-дисплей к VGA OUT, а источник питания 5 В - к micro USB. Когда AODMoST 32 запитан, он ожидает видеосигнала (и обнаружения поляризации синхроимпульсов). Об этом сигнализирует горящий красный светодиод НЕТ СИГНАЛА. Также должны постоянно гореть синие светодиоды. Если они мигают, это означает, что что-то не так с кристаллом HSE 8 МГц. В это время вы можете нажимать кнопки, чтобы проверить, правильно ли они подключены. Если нажата хотя бы одна кнопка, горят желтые светодиоды. При нажатии двух или более кнопок также горят белые светодиоды. При обнаружении видеосигнала начинается последовательность запуска. Он состоит из того, что каждый второй светодиод в строке загорается (0b10101010) на 300 мс, затем четыре других светодиода включаются на 300 мс (0b01010101). Это сделано, чтобы вы могли проверить правильность подключения светодиодов к MCU.
Устройство имеет 4 режима работы. По умолчанию он запускается в РЕЖИМЕ 0: ПРОХОД ВИДЕО. Также есть РЕЖИМ 1: ВЕРХНИЙ - ВНИЗ, РЕЖИМ 2: СТОРОНА - СТОРОНА и РЕЖИМ 3: СВОБОДНО ПЛАВАЮЩИЕ ОБЪЕКТЫ. Всего 6 страниц настроек. Те с номерами 0 и 3 содержат настройки частоты / периода, скорости окклюзии, включения / выключения объектов и т. Д. Страницы 1 и 4 содержат настройки положения, а страницы 2 и 5 содержат настройки размера. Нажимая кнопки MODE + PAGE, вы восстанавливаете настройки по умолчанию во всех режимах. Существуют также варианты изменения формы объекта, введения шаблона маски и рандомизации некоторых настроек. Вы можете прочитать больше о настройке AODMoST 32 в manual_1.00.pdf
Одним из возможных источников 3D-контента в форматах Top-Bottom или Side By Side являются компьютерные игры. Если вы используете видеокарту GeForce, многие игры из этого списка можно изменить для вывода в совместимом формате. По сути, вам нужно использовать моды / исправления на основе 3DMigoto, которые позволяют выводить SBS / TB 3D на любой дисплей после раскомментирования «run = CustomShader3DVision2SBS» в файле конфигурации мод / исправлений «d3dx.ini». Для получения хорошего качества изображения вам также необходимо отключить оттенок 3D Vision Discover в драйверах NVIDIA. Вам необходимо изменить «StereoAnaglyphType» на «0» в «HKLM / SOFTWARE / WOW6432Node / NVIDIA Corporation / Global / Stereo3D \». Вы можете прочитать об этом здесь.
В новых версиях драйверов Nvidia необходимо заблокировать ключ реестра. Чтобы открыть редактор реестра, нажмите WIN + R, затем введите regedit и нажмите клавишу ВВОД. Для блокировки ключа вам потребуется щелкнуть его правой кнопкой мыши, выбрать «Разрешения», «Дополнительно», «Отключить наследование», подтвердить отключение наследования, вернуться в окно «Разрешения» и, наконец, установить флажки «Запретить» для всех пользователей и групп, которые могут быть отмечены, и подтвердить это с помощью нажмите кнопку ОК. Обратите внимание, что может потребоваться также изменить значения «LeftAnaglyphFilter» и «RightAnaglyphFilter». Если вы хотите внести какие-либо изменения, вам необходимо разблокировать раздел реестра, сняв отметку с этих полей или включив наследование. Если у вас возникли проблемы с включением 3D Vision в первую очередь из-за того, что мастер установки на панели управления NVIDIA дает сбой, вам необходимо изменить «StereoVisionConfirmed» на «1» в «HKLM / SOFTWARE / WOW6432Node / NVIDIA Corporation / Global / Stereo3D / ». Это включит 3D Vision в режиме обнаружения. К сожалению, Nvidia перестала поддерживать 3D Vision, поэтому последняя версия драйвера, которую можно использовать, - 425.31, но если вы действительно хотите использовать более новую версию, вы можете попробовать это.
Есть и другие способы получить 3D-игры. Вы можете попробовать SuperDepth3D, шейдер постобработки ReShade. GZ3Doom (ViveDoom) изначально поддерживает 3D и в него можно играть без какого-либо специального программного обеспечения. Версии Rise of the Tomb Raider и Shadow of the Tomb Raider для Windows имеют встроенную поддержку Side by Side 3D.
В качестве альтернативы вы также можете использовать Xbox 360, которая поддерживает вывод VGA и имеет несколько игр, поддерживающих 3D в Top - Botom или Side by Side. Здесь вы можете найти список игр для Xbox 360, поддерживающих 3D (хотя в этом списке есть некоторые ошибки, например, копия Halo: Combat Evolved Anniversary, которую я тестировал, не поддерживает Top-Bottom, ни SBS).
Конечно, вы также можете найти фильмы в форматах «Сверху - снизу» или «Бок о бок» и воспроизводить их на разнообразном оборудовании.
В галерее представлены следующие игры:
- Аватар Джеймса Кэмерона: Игра, SBS, Xbox 360
- Gears of War 3, SBS, Xbox 360
- Ведьмак 3: Дикая Охота, ТБ, ПК
- Rise of the Tomb Raider, SBS (на устройстве установлен РЕЖИМ 3: СВОБОДНО ПЛАВАЮЩИЕ ОБЪЕКТЫ), ПК
Шаг 6: Обзор дизайна
Сигнал VGA имеет 3 компонентных цвета: красный, зеленый и синий. Каждый из них передается по отдельному проводу, при этом интенсивность цвета компонента кодируется в соответствии с уровнем напряжения, который может варьироваться от 0 В до 0,7 В. AODMoST 32 рисует объекты (наложение) путем замены цветового сигнала, генерируемого видеокартой, на уровень напряжения, обеспечиваемый транзисторами Q1-Q3 в конфигурации эмиттерного повторителя, которые преобразуют импеданс напряжения на резисторе 2 кОм в подстроечный делитель напряжения 1 кОм. Коммутация сигналов осуществляется аналоговым мультиплексором / демультиплексором STMAV340.
Время этого переключения поддерживается таймером расширенного управления (TIM1) MCU, который использует все четыре своих регистра сравнения для управления выходами. Состояние этих выходов затем обрабатывается 3 быстрыми логическими элементами NAND. Работает это так: Таймеры сброса импульсов HSync Счетчик. Сравнение 1 Регистр определяет, когда начинать рисование первого объекта в строке, Сравнить 2 Регистр, когда его останавливать. «Сравнить 3 Регистр» определяет, когда начинать рисование второго объекта в строке, «Сравнить 4 Регистр» - когда его останавливать. Когда требуется третий объект, снова используются регистры сравнения 1 и 2. Шлюзы NAND подключены таким образом, что они отправляют сигнал на мультиплексор, который заменяет исходное видео, когда пара каналов сравнения сообщает ему, что рисование объекта началось, но еще не завершено.
Импульсы горизонтальной и вертикальной синхронизации различаются по уровню напряжения от 0 В до 5 В, и провода, по которым они передаются, напрямую подключены к контактам прерывания, допускающим 5 В STM32F103C8T6, сконфигурированным как входы с высоким импедансом.
Устройство потребляет примерно 75 мА.