user6526311

user6526311

На Пикабу
Дата рождения: 19 апреля
14К рейтинг 559 подписчиков 6 подписок 64 поста 45 в горячем
Награды:
В 2026 год с Пикабу!
7

Самодельная система smell-o-vision

Пост состоит из 2 частей. Общая система управления для 5D кинотеатра и исполнительная часть smell-o-vision.

Для управления внешними устройствами используется программа MultiFunPlayer. Пока про нее не узнал планировал использовать писк в правом канале аудиодорожки. Для воспроизведения используется MultiFunPlayer версии 1.31.3 и MPC-BE версии 1.7.3. В настройках MPC-BE нужно включить дистанционное управление.

Для аудио/видеофайла должен быть составлен файл funscript. Аудио/видеофайл воспроизводится MPC-BE. MultiFunPlayer синхронизируется с MPC-BE и подхватывает funscript с темже именем файла и лежащий в тойже папке. MultiFunPlayer в нужный момент времени отправляет команды в COM порт.

Пример funscript.

{

"version": "1.0",

"inverted": false,

"range": 90,

"actions": [

{ "at": 0, "pos": 0 },

{ "at": 1000, "pos": 10 },

{ "at": 2000, "pos": 20 },

{ "at": 3000, "pos": 30 },

{ "at": 4000, "pos": 40 },

{ "at": 5000, "pos": 50 },

{ "at": 6000, "pos": 0 },

{ "at": 7000, "pos": 0 },

]

}

После "at": указывается таймкод в миллисекундах. После "pos": указывается значение от 0 до 100 которое будет отправлено внешнему устройству. Первая и последняя строка могут быть не выполнены. Если устройств несколько то для управления каждым используется свой файл funscript и к названию файла дописывается канал (еще не пробовал использовать). По умолчанию используется канал L0. Чтобы MultiFunPlayer не давал лишние команды нужно переключить интерполяцию в Step и отключить Auto-home.

MultiFunPlayer отправляет в COM порт команды на языке T-code. Я использую настройки COM порта типичные для устройств на Arduino: скорость 9600, формат данных 8N1.

Пример строки T-code:

L01000I100

L0 канал (L группа каналов, 0 номер канала в группе), 1000 значение(от 0000 до 9999), I100 время выполнения(не используется).

"pos": 0 соответствует L00000

"pos": 10 соответствует L01000

"pos": 20 соответствует L02000

"pos": 90 соответствует L09000

"pos": 100 соответствует L09999

Для упрощения прошивки Arduino я жду по UART букву L, R, V или A (группа каналов) и читаю следующие за ними 2 цифры (номер канала и 1 разряд значения). Так на каждый канал можно получить 10 дискретных значений.

"pos": 0 соответствует L00

"pos": 10 соответствует L01

"pos": 20 соответствует L02

"pos": 90 соответствует L09

Во время инициализации MultiFunPlayer и Arduino возможны ложные команды поэтому нужно предусмотреть выключатель блокирующий работу исполнительных устройств.

Исполнительная часть smell-o-vision.

Прошивка написана в ArduinoIDE 1.8.19 (последняя версия не требующая интернет для установки и работы). 3D модели делались в OpenSCAD

Состоит из 5 вентиляторов направленных в сторону зрителя. Используются осевые вентиляторы 80X25 12V. Провода + вентиляторов соединены вместе. Перед вентиляторами установлены картриджи.

Держатель картриджа

Код OpenSCAD

$fn=100;

difference()

{

union()

{

translate([-45,-45,0])

cube([90,90,4]);

}

union()

{

union()

{

translate([-71.5/2,-71.5/2,0])

cylinder(d=5.5,h=4);

translate([71.5/2,-71.5/2,0])

cylinder(d=5.5,h=4);

translate([-71.5/2,71.5/2,0])

cylinder(d=5.5,h=4);

translate([71.5/2,71.5/2,0])

cylinder(d=5.5,h=4);

}

cylinder(d=78,h=4);

}

}

difference()

{

cylinder(d=87,h=20);

cylinder(d=83,h=20);

}

Средний соединитель вентиляторов

Код OpenSCAD

$fn=100;

difference()

{

union()

{

translate([-45,-75,0])

cube([110,150,4]);

}

union()

{

union()

{

translate([-71.5/2,-71.5/2,0])

cylinder(d=5.5,h=4);

translate([71.5/2,-71.5/2,0])

cylinder(d=5.5,h=4);

translate([-71.5/2,71.5/2,0])

cylinder(d=5.5,h=4);

translate([71.5/2,71.5/2,0])

cylinder(d=5.5,h=4);

cylinder(d=78,h=4);

}

translate([0,-100,0])

union()

{

translate([-71.5/2,-71.5/2,0])

cylinder(d=5.5,h=4);

translate([71.5/2,-71.5/2,0])

cylinder(d=5.5,h=4);

translate([-71.5/2,71.5/2,0])

cylinder(d=5.5,h=4);

translate([71.5/2,71.5/2,0])

cylinder(d=5.5,h=4);

cylinder(d=78,h=4);

}

translate([0,100,0])

union()

{

translate([-71.5/2,-71.5/2,0])

cylinder(d=5.5,h=4);

translate([71.5/2,-71.5/2,0])

cylinder(d=5.5,h=4);

translate([-71.5/2,71.5/2,0])

cylinder(d=5.5,h=4);

translate([71.5/2,71.5/2,0])

cylinder(d=5.5,h=4);

cylinder(d=78,h=4);

}

translate([55,-57,0])

cylinder(d=4.5,h=4);

translate([55,57,0])

cylinder(d=4.5,h=4);

}

}

Крайние соединители вентиляторов

Код OpenSCAD

$fn=100;

difference()

{

union()

{

translate([-45,-25,0])

cube([90,50,4]);

}

union()

{

translate([0,-50,0])

union()

{

translate([-71.5/2,-71.5/2,0])

cylinder(d=5.5,h=4);

translate([71.5/2,-71.5/2,0])

cylinder(d=5.5,h=4);

translate([-71.5/2,71.5/2,0])

cylinder(d=5.5,h=4);

translate([71.5/2,71.5/2,0])

cylinder(d=5.5,h=4);

cylinder(d=78,h=4);

}

translate([0,50,0])

union()

{

translate([-71.5/2,-71.5/2,0])

cylinder(d=5.5,h=4);

translate([71.5/2,-71.5/2,0])

cylinder(d=5.5,h=4);

translate([-71.5/2,71.5/2,0])

cylinder(d=5.5,h=4);

translate([71.5/2,71.5/2,0])

cylinder(d=5.5,h=4);

cylinder(d=78,h=4);

}

}

}

Картриджи сделаны из фильтров респиратора Исток. От фильтра оставлен только корпус и пластмассовые решетки. Внутри лежит ватный диск пропитанный ароматизатором. Картриджи нужно хранить в герметичных контейнерах. Экспериментально выяснено что в корпусе должно быть много свободного места и свободный проход воздуха.

Прошивка Arduino. Для управления вентиляторами использован релейный модуль с инверсными входами. HIGH выключение вентилятора, LOW включение вентилятора.

void setup()

{

Serial.begin(9600);

pinMode(13, OUTPUT); //fan1

pinMode(12, OUTPUT); //fan2

pinMode(11, OUTPUT); //fan3

pinMode(10, OUTPUT); //fan4

pinMode(9, OUTPUT); //fan5

digitalWrite(13, HIGH);

digitalWrite(12, HIGH);

digitalWrite(11, HIGH);

digitalWrite(10, HIGH);

digitalWrite(9, HIGH);

}

byte key=0;

byte group=0;

byte channel=4;

void loop()

{

if (Serial.available())

{

byte in = Serial.read();

if(in=='L')

{

key=1;

group=1;

}

if(key==1)

{

if(in=='0')

{

key=2;

channel=0;

}

}

else if(key==2)

{

key=3;

if(group==1&channel==0)

{

//smell-o-vision code

if(in=='0')

{

digitalWrite(13, HIGH);

digitalWrite(12, HIGH);

digitalWrite(11, HIGH);

digitalWrite(10, HIGH);

digitalWrite(9, HIGH);

}

if(in=='1')

{

digitalWrite(12, HIGH);

digitalWrite(11, HIGH);

digitalWrite(10, HIGH);

digitalWrite(9, HIGH);

digitalWrite(13, LOW);

}

if(in=='2')

{

digitalWrite(13, HIGH);

digitalWrite(11, HIGH);

digitalWrite(10, HIGH);

digitalWrite(9, HIGH);

digitalWrite(12, LOW);

}

if(in=='3')

{

digitalWrite(13, HIGH);

digitalWrite(12, HIGH);

digitalWrite(10, HIGH);

digitalWrite(9, HIGH);

digitalWrite(11, LOW);

}

if(in=='4')

{

digitalWrite(13, HIGH);

digitalWrite(12, HIGH);

digitalWrite(11, HIGH);

digitalWrite(9, HIGH);

digitalWrite(10, LOW);

}

if(in=='5')

{

digitalWrite(13, HIGH);

digitalWrite(12, HIGH);

digitalWrite(11, HIGH);

digitalWrite(10, HIGH);

digitalWrite(9, LOW);

}

//smell-o-vision code end

}

}

}

}

Соответствие команд и вентиляторов

"pos": 0 выключает все вентиляторы

"pos": 10 включает вентилятор 1

"pos": 20 включает вентилятор 2
"pos": 30 включает вентилятор 3
"pos": 40 включает вентилятор 4
"pos": 50 включает вентилятор 5

Между включение вентилятора и тем как воздух дойдет до лица есть задержка. Решить эту проблему можно включая вентилятор заранее или расположив более компактный вариант исполнительного устройства ближе к лицу (работа над этим уже идет). Планирую сделать и другие устройства работающие синхронно с видео (имитатор климата, трясущееся кресло ...)

Если захотели повторить и код из поста не работает попробуйте его не скопировать а перепечатать.

Показать полностью 6
9

Несколько интересных USB устройств

USB переключатель.

Позволяет переключать USB устройства между четырьмя компьютерами

Я подключал через USB hub клавиатуру и мышь.

Механическая клавиатура запускается дольше чем мембранная.

Внутри переключатель немного похожий на П2К.

Переключаются все 4 контакта разъема USB.

У этого устройства есть недостаток.Если нажать одновременно несколько кнопок входы будут закорочены между собой.

То что устройство работает значит что можно делать такие самодельные.

USB регулятор громкости.

Подключается к компьютеру через USB A-USB C кабель.

Прикидывается кнопками громкости на клавиатуре.

Вращение ручки регулирует громкость.

Нажатие выключает звук.

У него есть подсветка.для ее выключения нужно зажать ручку на 3 секунды.состояние запоминается.

Для разборки нужно снять ручку и выкрутить 4 винта.

Плату будет легко встроить в самодельный корпус.

Сторона платы 30 мм.

Диаметр ручки 39.5 мм.

Диаметр корпуса 50мм.

флюс плохо смыли

флюс плохо смыли

Регулировать громкость крутилкой намного удобнее чем кнопками.

Бывают механические клавиатуры со встроенной крутилкой громкости.

Компьютерная мышь logitech b100.

Она недорогая но некоторые детали сделаны лучше чем у более дорогих мышей.

Она проводная!

Снизу настоящие ножки и открытый шуруп для разборки.

После откручивания корпус не разваливается.

Плата и кабель закреплены выступами на корпусе.

Кабель можно заменить без пайки.

Кабель с экранированный.

Под колесом микрик с такой-же конструкцией как у кнопок.

У колеса мягкая шина.

При нажатии колесо опускается на направляющих и у него оптический энкодер!

У многих более дорогих мышей механический энкодер(который изнашивается) и при нажатии изгибается ось колеса.

Диск оптического энкодера

Диск оптического энкодера

Линза закреплена на плате.

Еще одна мышь.

Я искал проводной аналог трекбола logitech m575.

Маленькая кнопка переключает DPI (600,800,1200,1600)

Маленькая кнопка переключает DPI (600,800,1200,1600)

Диаметр шара у этого трекбола 40мм.

Диаметр шара m575 34мм.

Для вытаскивания шаров распечатал съемник на 3D принтере.

Для разборки нужно выкрутить 5 шурупов на дне.

Кабель и сенсор отключаются без пайки.

Стоят тихие свитчи(мне они не понравились).

Футпринт на плате позволяет поставить обычные.

Обычная конструкция колеса.

Механический энкодер и изгибающаяся ось.

На колесе мягкая шина.

Возможно для этой мыши я распечатаю новый корпус.

Можно будет попробовать поставить оптические свитчи и оптический энкодер(механизм колеса взять от b100)

У платы сенсора удобное крепление и форма.

плата сенсора

плата сенсора

Подсветка сенсора SMD светодиодом(первый раз такое встретил)

С завода у этой мыши затирал шар.

Я полностью разобрал рабочую камеру и подложил тонкую пластмассу под нижнюю опору шара.

Рабочая камера трекбола

Рабочая камера трекбола

Показать полностью 23
14

Финальная версия редуктора для мотора 540

Этот редуктор можно собрать с передаточным числом 1/3 , 1/4 , 1/9 , 1/12 , 1/16.

Изменение формы корпуса позволило немного уменьшить габариты и освободить место для крепежных отверстий.Крепежные винты стягивают части корпуса.

Для выходного вала использован подшипник 6700.Он намного меньше чем 608.При этом диаметр выходного вала 10 mm вместо 8.Все остальные подшипники 604.

Изначально планировалась возможность сборки 3 ступенчатого редуктора.Но когда получилось сделать передачу 1/4 (15/60) в одну ступень остановился на 2 ступенчатом варианте.

Это упростило конструкцию.Все детали печатаются без поддержек.мосты стали короче.

Шестеренки сгенерированы на основе этого scad файла https://www.thingiverse.com/thing:4194148

Все варианты всех печатных деталей.

Основание имеет 3 варианта

base1 мотор находится соосно с выходным валом.расстояние между осями выходного вала и промежуточной шестеренки 40 mm.

base2 мотор сдвинут к промежуточной шестеренке на 2.5 mm.расстояние между осями выходного вала и промежуточной шестеренки 40мм.

base3 мотор находится соосно с выходным валом.расстояние между осями выходного вала и промежуточной шестеренки 37.5 mm.

мотор прикручивается к основанию(base) двумя винтами m3x6 с потайной головкой.на вал мотора напрессовывается шестеренка(motorgear).

В одноступенчатом варианте на основание ставится выходная шестеренка(outgear) и закрывается крышка(cover).с нижней стороны выходной и промежуточной шестеренки углубление для подшипника 604.

В одноступенчатом варианте на основание ставится выходная шестеренка(outgear) и закрывается крышка(cover).с нижней стороны выходной и промежуточной шестеренки углубление для подшипника 604.

В двухступенчатом варианте на основание ставится промежуточная шестеренка(intgear) и закрывается корпусом первой ступени(intcover).на корпус первой ступени ставится выходная шестеренка и закрывается крышкой.в крышке находится верхний подшипник промежуточной шестеренки(604) и подшипник выходного вала(6700).

Необходимые детали для сборки редукторов с разными передаточными числами

1:3 base1 , motorgear1, outgear , cover1 .

1:4 base2 , motorgear2 , outgear , cover1 .

1:9 base1 , motorgear1 , intgear1, intcover1 , outgear , cover1 .

1:12 base2 , motorgear2 , intgear1 , intcover1 , outgear , cover1.

1:16 base3 , motorgear2 , intgear2 , intcover2 , outgear , cover2 .

Старая версия редуктора была шумной из-за большого количества соплей и провисших мостов которые цепляли шестеренку.

Эта версия работает намного тише.

Применение шевронных шестеренок не сделало редуктор еще тише.при этом собирать рудуктор на шевронных шестеренках намного сложнее.

STL и SCAD файлы можно скачать отсюда https://www.thingiverse.com/thing:6637811

Для тестирования под нагрузкой будет собрана колесная платформа и поставлены более мощные моторы для RC машинок.

Показать полностью 12
5

Ременной редуктор для 540 мотора

Конструкция основания как у предыдущего шестерёнчатого.

На вал мотора насажена втулка с внешним диаметром 5мм.

На втулку одевается шкив и фиксируется винтами.

Для пробного образца я не стал делать натяжитель и подобрал межосевое расстояние.

Ремень GT2 шириной 6мм и длинной 100 зубьев.

Подшипник выходного вала держится в верхней крышке.

В реальном устройстве нужно будет делать натяжитель с возможностью выбрать лишнюю длину слишком длинного ремня.

У меня не получилось сделать редуктор на конических шестеренках.

Ременной редуктор оказался самый тихий но ремни с нужной длиной не всегда легко купить и такой редуктор требует регулировку натяжения ремня.

Мне больше всего понравился простой редуктор на шестеренках.

В комментариях были предложения по использованию косозубых шестеренок и болта в качестве выходного вала.

Я попробую эти варианты если мне понадобится редуктор вращающийся в одну сторону.

Есть опасения по поводу откручивания болта и слезания ведущей шестеренки с вала мотора при вращении под нагрузкой в обратную сторону.

Для тестирования этого варианта редуктора я сделаю тестовое колесное шасси и попробую несколько модификаций

1 шевронные шестеренки

2 более компактный подшипник выходного вала

3 квадрат для дверной ручки в качестве выходного вала

4 мотор для радиоуправляемых машинок с большими оборотами

5 модульная конструкция позволяющая собирать несколько ступеней

Если все получится выложу на Thingiverse вместе с OpenSCAD исходниками.

Показать полностью 4
12

Редуктор на 3D принтере.Другая конструкция

Сделал еще один редуктор для мотора R540 33110.

Две ступени с общим передаточным числом 1 к 9.

Ведущая шестеренка насажена на вал мотора.

В месте крепления мотора есть вентиляционные каналы для охлаждения.

Шестеренки вращаются на подшипниках.

Корпус состоит из 3 частей.Ребристые поверхности после печати работают как защелки.

Выходной вал проходит через 608 подшипник.Все остальные подшипники 604.

Первая и вторая ступени одинаковые 20 к 60.

Выходной вал 8мм с шестигранником.

Очень легко сломать если не аккуратно надевать или снимать подшипник.

Шестеренки из PETG с модулем 1 выдерживают работу с этим моторчиком.

Мотор можно остановить и шестерни не слижет.

Этот редуктор получился тише чем предыдущий планетарный.

Если делать редуктор частью другого механизма его можно сделать меньше.

Собираюсь попробовать еще несколько конструкций

{

Червячный с использованием винта TR8,

На зубчатом ремне GT2 с печатным ведомым шкивом,

На конических шестернях.

}

На самой понравившейся конструкции соберу тестовую колесную платформу для робота.

Еще попробую другие моторчики(и не только моторчики).

Детали моделировались в программе OpenSCAD.

Показать полностью 7
16

Редуктор на 3D принтере

Распечатал планетарный редуктор для мотора R540 33110.

Передаточное число 4 , количество сателлитов 4 , количество зубьев солнца и сателлитов 20 , количество зубьев короны 60 , модуль 1.

Материал PETG MAKO , слой 0.2mm , линия 0.4mm (на первом слое 0.6mm) , скорость первого слоя и внешних периметров 20mm/s , скорость в остальных местах 50mm/s.

Сателлиты на подшипника 604RS зафиксированных стопорным кольцом.

Водило собрано из верхней и нижней половинки.

в центре подшипник 604RS.

Мотор закреплен на 2 потайных винта M3x6 под шестигранник.

Солнечная шестерня насажена на вал мотора , диаметр отверстия выставлен 3.2mm.

Половинки корпуса соединены на шлицах.

Выходной вал 8mm с шестигранником , подшипник выходного вала 608RS.

Размер фланца получился 70mm , длинна корпуса 40mm.

Корпус набил смазкой ВМП Рубин . За несколько недель с пластиком ничего не случилось.

Редуктор делался для будущих самодельных механизмов. 6000RPM мне показалось очень большим числом.на выходе получается 1500RPM.

Редуктор получился очень шумный. В ближайшее время попробую ещё несколько конструкций.

Показать полностью 6
Отличная работа, все прочитано!

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества

Недвижимость и ремонт

Теги

Популярные авторы

Сообщества