Имитация левитации воды на Ардуино



    Добрый вечер! В этой публикации я расскажу о своей самоделке, задумал которую я достаточно давно. Но реализовал только сейчас.

    Впервые увидел этот эффект еще в детстве. Меня попросили помочь, подержать и посветить автомобильным стробоскопом на маховик двигателя автомобиля. Мотор запустили и после чего я увидел на вращающемся маховике, почти не подвижную насечку, которая стояла на одном месте, а маховик при этом вращался. После чего родилась идея сделать вентилятор и стробоскопом остановить его. Идею спустя какое то время реализовал, на лампе ИФК-120, тиристоре КУ202 с обвязкой, поигрался и закинул в дальний угол, но вот лет 6 тому назад увидел японское видео с левитацией воды. Так и родилась идея повторить этот трюк с левитацией капель. Долго не доходили до реализации руки и вот наконец то, сбылась мечта…

    Посмотрите видеоролик того, что у меня получилось:




    Как это работает


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

    1 — громоздкость конструкции(колонка, усилитель, генератор частот, стробоскоп)
    2 — низкочастотный динамик не может воспроизводить меандр, из — за своей механической конструкции и на выходе у него получается что то вроде синусоиды. В итоге вода не рассекается на капли, а извивается как змея.
    3 — Генератор частот каждый раз придется подстраиваться под частоту стробоскопа. Частота будет уплывать.

    В моей конструкции все просто и дешево. Эту конструкцию может повторить каждый желающий, в домашних условиях.

    Работает так:

    Стробоскоп и электромагнит от автомобильного реле, работают на одной частоте. Электромагнит разбивает поток воды на капли, а стробоскоп засвечивает эти капли, в определенный момент. Так как капли падают с частотой равной стробоскопу, то получается эффект висящих в воздухе капель.

    Схема


    Транзисторы КТ972 у меня были под рукой, вот я их и поставил. Вы можете поставить любые другие транзисторы рассчитанные на напряжение не менее 30В и ток не менее 2А. Резисторы в базах транзисторов ограничивают ток до 40мА, что бы не повредить выход контроллера. Светодиодный элемент я использовал из старой неисправной светодиодной лампы. Что бы уменьшить напряжение питания элемента до 24 В. Я поделил элемент на две части, разрезав одну дорожку и запараллелил эти два массива светодиодов. Так как питание светодиодного элемента осуществляется короткими импульсами, а напряжение питания равно напряжению падения на светодиодах, то ограничивать ток я не стал. Диод стоящий параллельно электромагниту, защищает от отрицательных выбросов электромагнитной катушки. Можно поставить диод из той же, разобранной LED лампы. Электромагнит сделан из автомобильного реле. Реле у меня уже было раскурочено, по этому мне пришлось использовать его таким какое оно есть. Если бы у меня было исправное реле, я бы сначала попробовал подключить китайскую палочку на якорь реле. Для обеспечения зазора между постоянным магнитом и электромагнитом, можно вложить между ними кусочек поролона, или сдвинуть палочку с магнитом в бок. Как я и сделал.



    Подробности по коду для ардуино


    Я использую Arduino Nano, потому что у меня их много и они прекрасно устанавливаются на макетной плате. Но Вы можете использовать абсолютно любой контроллер Ардуино и даже Digispark. Энкодер использует прерывание INT1. Если вращать энкодер без нажатия, то тогда регулируется частота вспышек стробоскопа и частота электромагнита, с шагом 0,1Гц. Если вращать с нажатием, то регулируется длительность вспышек светодиода, у фотографов это называется время выдержки. При этом частота не изменяется. Управление светодиодным элементом, для удобства отладки я подключил на D13, но Вы можете поменять все пины подключения, на любые другие. Только нельзя менять пин D3(INT1) энкодера.

    Скетч для Arduino
    // Выводы ЭНКОДЕРА
    #define CLK 3  // Clock Подключаем к INT1, нельзя переназначать
    #define DT 4  // второй вывод энкодера
    #define SW 5  // switch кнопка энкодера
    #define led_pin 13       // подключен светодиод
    #define coil_pin A0      // электромагнит
    
    #define Min 1 // минимальное значение 
    #define Max 20000 //максимальное значение
    
    #define step_freq 1       // шаг изменения частоты плавно 0,1Гц
    #define step_freq_rough 10   // шаг изменения частоты грубо 1Гц 
    #define step_timelght 100 // шаг приращивания в мкс
    volatile int freq = 250; // частота в Гц умноженная на 10, для более плавной настройки
    volatile uint32_t paus, time_light=2000; // время свечения светодиода в мкс по умолчанию 
    uint32_t oldcount;
    boolean DT_last; // последнее состояние энкодера
    
    void setup()  
    {
      pinMode(CLK,INPUT_PULLUP); // Clock Подключаем к INT1, нельзя переназначать
      pinMode(DT, INPUT_PULLUP); // второй вывод энкодера
      pinMode(SW, INPUT_PULLUP); // кнопка энкодера
      pinMode(led_pin, OUTPUT);    // управление симистором
      pinMode(coil_pin, OUTPUT);
    
      attachInterrupt(1, encoderTick, CHANGE); // прерывания от Энкодера
      
      DT_last = digitalRead(CLK);         // считываем положение CLK
      Serial.begin(115200);           // для отладки
    }
    
    void loop()
    {
        paus=5000000/freq;
        digitalWrite(coil_pin, 1);
        digitalWrite(led_pin, 1);
        
        oldcount = micros();
        while( (micros() - oldcount) < time_light){}   // длительность импульса выдержки          
        digitalWrite(led_pin, 0);
        while( (micros() - oldcount) < paus){}  // положительный полупериод
        digitalWrite(coil_pin, 0);
        
        oldcount = micros();
        while( (micros() - oldcount) < paus){} //отрицательный полупериод
    }
    
    //********************обработчики прерываний Энкодера*******************************
    void encoderTick() 
    {
      uint8_t DT_now = digitalRead(CLK);       // считываем текущее положение CLK
      
      if (DT_now != DT_last && digitalRead(SW))   // если предыдущее и текущее положение не равны, значит был поворот 
      {                     
        if (digitalRead(DT) != DT_now)    // если DT не равен CLK, значит вращение по часовой стрелке
        {                             
          if( freq < Max ) freq += step_freq;    // прибавить 
        } else {                                   // если DT равен CLK, значит вращение против часовой
                 if( freq > Min ) freq -= step_freq;  // убавить            
                }
      } else 
              if (DT_now != DT_last && !digitalRead(SW)) //если нажата кнопка и было вращение
              {
               if (digitalRead(DT) != DT_now)         // если DT не равен CLK, значит вращение по часовой стрелке
                {                             
                  if( time_light < paus ) { time_light += step_timelght; } // убавить длительность           
                } else  if( time_light > 0 ) time_light -= step_timelght;    // прибавить длительность импульса выдержки/
              }
              
      DT_last = DT_now;                   // сохранить положение CLK для следующей проверки
    }



    Настройка левитрона


    Основная настройка сводится к регулировке потока воды. Нужно настроить скорость потока воды таким образом, чтобы электромагнит мог стабильно разбивать поток воды на капли. Я думаю что это очень просто и Вы визуально сразу поймете где золотая середина. Также настройте частоту вспышек стробоскопа, на более комфортную для Ваших глаз. Частота вспышек влияет
    на расстояние между каплями, а если капли начнут рваться без синхронизации, то перестройте поток воды. Если хотите снять видео на камеру, то нужно подстроить стробоскоп под частоту камеры, что бы на камере не было мерцаний

    Что дальше?
    Планирую купить импульсный насос и на его основе сделать левитирующий дождь из душевой лейки. Так что будет еще одна небольшая статья и видео на тему «Левитация воды»
    Подписывайтесь что бы не пропустить новую статью и видео.

    Будут вопросы спрашивайте, не стесняйтесь.
    Я с удовольствием отвечу на них
    Поделиться публикацией
    Похожие публикации
    Никаких подозрительных скриптов, только релевантные баннеры. Не релевантные? Пиши на: adv@tmtm.ru с темой «Полундра»

    Зачем оно вам?
    Реклама
    Комментарии 42
    • +1
      Интересно. А не проще было бы сделать что-то вроде дозатора вращающегося? Шаговый мотор, на шпинделе колесо с лунками для капель, отсекатель в месте сброса (выдавливает воду из лунок на колесе).
      Как альтернатива — компрессор и силиконовый шланг с водой, клапан открывается — посередине струи воды в шланге делается пузырь воздуха, в результате частотой открытия клапана регулируется размер капли и частота. Так даже можно делать «зависший дождь», как в фильме «иллюзия обмана 2»
      • 0
        Я думаю что не проще.
        Как проще я опубликовал, а если говорить зрелищности, то можно использовать импульсный насос и металлопластиковую трубу с отверстиями. Визуально получается стена из висящих капель.
      • +1

        Очень круто. А не пробовали распылять воду или можно сделать что-то вроде фантана, чтобы вода вытекала не сверху, а снизу. Будет эффектно.

        • +1
          Можно реализовать как угодно.
          Я думаю, что скоро сниму следующее видео с импульсным насосом
          Можно и пузырьки воздуха в аквариуме за синхронизировать, так как там насос тоже импульный. Работает с частотой 50Гц
          • 0
            Если немного уменьшить частоту засветки вода и так «побежит» обратно в кран.
        • +1

          Или надо попробовать стряхивать каплю из трубочки с помощью соленоида…
          Или попробовать использовать кучу клапанов…
          Могу тебе отправить электро клапана...

          • 0
            Спасибо. Я уже нашел себе донора, старую, поломанную кофе машину.
            • +1

              У меня ща 30 на почте...

              • 0
                Если только изображения из капель составлять
                • +1

                  Так в этом и есть самый цимес

          • +7
            Напомнило:

            • 0
              Круто.
              • 0
                Жаль что только на видео можно снять, слишком маленькая частота кадров.
                • 0
                  То что на видео, так же выглядит в реальности.
                  Для того что бы снять на видео, приходится подстраивать стробоскоп под камеру, что бы устранить мерцания
                  • 0

                    Это у вас одинаково как на видео так и визуально, а в рекламном видео выше очевидно нет.

              • 0
                А если сделать небольшую рассинхронизацию частоты, то можно получить красивый эффект медленно движущихся капель. Причем капли могут двигаться как вниз, так и вверх. Попробуйте.
                • 0
                  Пробовал. В следующем видео сниму
                • +4

                  Жёлтый заголовок. Какое отношение стробоскоп имеет к левитации? Никакого! Тогда слово "левитация" надо брать в кавычки.
                  По заголовку подумалось что речь идёт об акустической левитации капель воды в генерируемых через Arduino звуковых волнах.

                  • +2
                    Отредактировал заголовок
                  • 0

                    Интересно, но "музыки мало в видео"...

                    • +2

                      Прямо как в иллюзии обмана 2

                      • –2
                        Идея очень хорошая. Патентуй эту идею для настольных фонтанчиков и продавай. На хлеб с маслом хватит.
                        • 0
                          Классный результат!
                          Но зачем тут аж Arduino? Несколько мультивибраторов можно сделать на одной микросхеме стандартной логики…
                          • +2
                            1) Например за тем, чтобы не паять микросхему стандартной логики и мелкие дискретные элементы.
                            2) Чтобы быстро поменять частоту, например
                            • +2
                              Так как для стробоскопа, кроме регулировки частоты, нужно еще подбирать длительность импульса засветки, то мне проще и быстрей было сделать это на ардуино. И как уже сказал dernuss, меньше обвеса
                              Сейчас когда все параметры известны, можно собрать и на NE555
                              • 0
                                Но на самом деле, как то мне надо было недавно реализовать software SPI. Обычно я программирую STM микроконтроллеры (и бывает fpga xilinx). Но бывают люди просят что то написать для arduino.
                                Так вот, software SPI я написал на arduino nano и он конечно наботает, но длительность импульсов не стабильная. Мне это было не важно. Но меня это немного расстроило, так как:
                                1) я не знаю почему так вышло (да и разбираться лень)
                                2) где то (например в вашем проекте) может быть важно.
                            • 0
                              В видео речь местами не разобрать из-за слишком громкой музыки.
                              • 0
                                Согласен. Но к сожалению все исходники утеряны, из-за полетевшего HDD
                                Остается только ждать нового, более зрелищного видео, с «левитирующим искусственным дождем»
                                • 0
                                  Кстати говоря. Скорость капель обычного дождя возле земли (вроде бы) примерно одинаковая. Т.е. можно попробовать ночью и с ним. Правда с записью видео могут быть проблемы (разве что каким-то образом подбирать частоту записи видео). Капли не будут висеть неподвижно (т.к. место каждый раз разное) но всё равно должно быть красиво.
                              • 0
                                Интересный эффект. Единственно, имхо, итоговое впечатление несколько портят более мелкие «паразитные» капельки, образующиеся вокруг основных. Из-за их несихронности с основными каплями, вокруг последних возникает эффект мельтешащего движения, что несколько портит общую картину. Если предполагается использовать это устройство в качестве «декора», в котором жидкость не расходуется, а циркулирует, может есть смысл использовать вместо воды более вязкие субстанции, — тот же глицерин. Возможно это поможет решить проблему образования мелких паразитных капель.
                                • 0
                                  В комментариях к видео на ютубе
                                  Подсказали:
                                  Регулировкой вязкости чернил, давлением и энергией вибрации достигают устранение паразитных мелких капелек которые летят рядом с большими каплями (их называют сателлитами). На принтерах ось вибратора и ось струи совпадают

                                  Нужно попробовать поменять ось вибратора с горизонтальной, на вертикальную. Теоретически тогда отрыв капли будет без паразитных сателлитов. Так как нет бокового воздействия на разбрызгивание воды в разные стороны
                                  • +1
                                    Пытаюсь повторить. Подскажите какой транзистор можно использовать вместо КТ972?
                                    • 0
                                      Тогда подскажите параметры Вашей LED лампы?
                                    • 0
                                      Красиво, впечатляет!
                                      А можно подробнее про расчёт:
                                      Резисторы в базах транзисторов ограничивают ток до 40мА, что бы не повредить выход контроллера.
                                      • 0
                                        Формула закона Ома!
                                        Если взять по минимуму падение напряжения на переходе 0,5В
                                        То получается напряжение питания Ардуины 5В-0,5В=4,5В, 4,5/0,04мА=112,5оМ
                                        • 0
                                          Вы уверены, что это правильный расчет для данного случая? Если я ничего не путаю, сопротивление резистора в цепи базы транзистора, работающего в ключевом режиме, должно рассчитываться с учетом коэффициента передачи тока последнего.
                                          • 0
                                            Советую прежде чем пытаться заниматься тролингом, открыть и посмотреть характеристики транзистора и если Вы внимательно посмотрите характеристики, то транзистор этот на комплементарной паре и для его полного открытия не требуется большой ток.Тока 40мА больше чем достаточно, для полного открытия транзистора.
                                            Это сопротивление в данном случаи рассчитывается не для ключа, а для защиты выхода контроллера. Об этом написано даже в приведенной Вами цитате.
                                            Режим ключа говорит о том, что транзистор работает в двух режимах – либо он полностью открыт, либо же закрыт. Как только произойдет достижение насыщения, коэффициент усиления перестает играть большую роль.
                                            • 0
                                              Благодарю за разъяснение. Вопрос закрыт.
                                              Тролингом я не занимаюсь, это видно по моим комментариям к другим статьям и вводной фразе «Если я ничего не путаю,...». Жаль, что уменьшили карму.
                                    • 0

                                      Без насоса. Сайт с первоисточником не сохранился, но я помню как оно там устроено. Капля отрываясь от крана размыкает два провода и это событие становится точкой отсчёта для микроконтроллера.

                                      Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                                      Самое читаемое