Форум обсуждения систем  

Вернуться   Форум обсуждения систем "Умный дом", проектов Ардуино, OpenWRT и других DIY устройств > Форум умного дома > Сделай сам

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
Старый 01.04.2018, 01:17   #1
Admin
Administrator
 
Аватар для Admin
 
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,616
Вес репутации: 9820
Admin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant future
По умолчанию Фокус с левитацией на Ардуино

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


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

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

PHP код:
//Скетч от Cyber-Place.ru
// Выводы ЭНКОДЕРА
#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 paustime_light=2000// время свечения светодиода в мкс по умолчанию 
uint32_t oldcount;
boolean DT_last// последнее состояние энкодера

void setup()  
{
  
pinMode(CLK,INPUT_PULLUP); // Clock Подключаем к INT1, нельзя переназначать
  
pinMode(DTINPUT_PULLUP); // второй вывод энкодера
  
pinMode(SWINPUT_PULLUP); // кнопка энкодера
  
pinMode(led_pinOUTPUT);    // управление симистором
  
pinMode(coil_pinOUTPUT);

  
attachInterrupt(1encoderTickCHANGE); // прерывания от Энкодера
  
  
DT_last digitalRead(CLK);         // считываем положение CLK
  
Serial.begin(115200);           // для отладки
}

void loop()
{
    
paus=5000000/freq;
    
digitalWrite(coil_pin1);
    
digitalWrite(led_pin1);
    
    
oldcount micros();
    while( (
micros() - oldcount) < time_light){}   // длительность импульса выдержки          
    
digitalWrite(led_pin0);
    while( (
micros() - oldcount) < paus){}  // положительный полупериод
    
digitalWrite(coil_pin0);
    
    
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 time_light -= step_timelght;    // прибавить длительность импульса выдержки/
          
}
          
  
DT_last DT_now;                   // сохранить положение CLK для следующей проверки



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

Будут вопросы спрашивайте здесь не стесняйтесь. В лику вопросы по теме прошу не присылать
Admin вне форума   Ответить с цитированием
Старый 01.04.2018, 22:45   #2
Tohin
Moderator
 
Регистрация: 20.07.2014
Адрес: МСК
Сообщений: 991
Вес репутации: 1030
Tohin is a jewel in the roughTohin is a jewel in the roughTohin is a jewel in the rough
По умолчанию

То есть релюха трясет кран вызывая обрыв струи? А если на кран одеть 1 см силиконового шланга и его трясти?
А еще можно попросить примерный график (в пэйнте) импульсов релюха-светодиод один под другим при разных положения энкодера? А то я чего-то туго воспринял про скважинность и одновременность.
И еще посмотреть бы как поток воды выглядит без освещения стробоскопом, но с релюшкой.
Не могу отзыв к сообщеню оставить - "Спасибо за занимательную оптику!"
Tohin вне форума   Ответить с цитированием
Старый 01.04.2018, 23:46   #3
Admin
Administrator
 
Аватар для Admin
 
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,616
Вес репутации: 9820
Admin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant future
По умолчанию

Цитата:
То есть релюха трясет кран вызывая обрыв струи?
Да

Цитата:
А если на кран одеть 1 см силиконового шланга и его трясти?
Если кран жестко закреплен, то конечно нужно трубку одеть

Цитата:
А еще можно попросить примерный график (в пэйнте) импульсов релюха-светодиод один под другим при разных положения энкодера? А то я чего-то туго воспринял про скважинность и одновременность.
Частота для релюхи и светодиода одна и та же всегда. Крутим энкодер по часовой стрелке, частота увеличивается с каждым тактом. Крутим против часовой частота уменьшается. Крутим энкодер с нажатием , частота не меняется, а меняется только длительность импульса светодиода, софтовый ШИМ

Цитата:
И еще посмотреть бы как поток воды выглядит без освещения стробоскопом, но с релюшкой.
Обычная струйка, даже капель не видно. Капли летят и по всей длине полета засвечены. Учитывая тот факт что они летят с временным интервалом 15-20 мс, то глаз видит только струю
Если засвечивать стробоскопом в дневное время, то получается видно висячие капли, но они как бусы на леске висят. У меня есть видео снятое днем, если что могу выложить

Цитата:
Не могу отзыв к сообщеню оставить - "Спасибо за занимательную оптику!"
Лучше в Youtube комментарий напиши. Если не затруднит
Admin вне форума   Ответить с цитированием
Ответ

Метки
фокус с левитацией, левитация, левитация воды, левитация на ардуино


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Текущее время: 00:42. Часовой пояс GMT +3.


Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Яндекс.Метрика