Левитрон На Ардуино

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

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

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

Поскольку я мало что понимаю в аналоговой технологии, я решил «изобрести» левитрон.

Для экспериментов у меня под рукой была Arduino Uno. Заказал линейный датчик Холла в Китае (что такое эффект Холла ), а именно UGN3503UA, собрал несколько старых трансформаторов для намотки тестовых катушек и начал эксперименты.

Вот что из этого вышло:

Левитрон на Ардуино

Как это работает. Внизу катушки по центру установлен датчик Холла, измеряющий расстояние до неодимового магнита, который приклеен к «левитирующему» штекеру.

Датчик имеет три выхода — питание 5В и аналоговый выход, который подключается к АЦП Arduino.

Левитрон на Ардуино

Схема управления соленоидом собрана на полевом транзисторе.



Левитрон на Ардуино



Левитрон на Ардуино

Соленоид подключен к контактам J1, контакт 1 разъема J2 к ШИМ Arduino. Подключение датчика Холла к входу АЦП на схеме не показано, но затруднений здесь возникнуть не должно.

Количество витков катушки сказать не могу, так как в ходе экспериментов я делал 3 или 4 катушки и наматывал их по принципу «сколько провода еще осталось на трансформаторе».

Остальные параметры: сопротивление катушки около 12 Ом, диаметр 30 мм, высота 10 мм, толщина провода 0,3 мм, катушка без сердечника.

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

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

Прошивка

   

#define sensorPin A0 #define pwmPin 6 int sensorValue = 0; int levitPoint = 370; int deltaLevit = 5; int maxL, minL; byte induction = 128; void setup() { pinMode(pwmPin, OUTPUT); maxL = levitPoint - deltaLevit; minL = levitPoint + deltaLevit; } int sensorRead(int sensorPin) { int s = 0; for(byte i =0; i < 5; i++) {s += analogRead(sensorPin);} return s/5; } void loop() { sensorValue = sensorRead(sensorPin); if (sensorValue < 490) { if (sensorValue < maxL) induction = 0; if (sensorValue > minL) induction = 250; if (sensorValue >= maxL and sensorValue <= minL) induction = ((sensorValue - maxL)*25); } else induction = 0; analogWrite(pwmPin, induction); }

Схема питается от напряжения 12В, датчик питается от встроенного стабилизатора Arduino. Потребление в максимальном режиме около одного Ампера, в режиме висения 0,3-0,4 А.

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

В будущем планирую переделать соленоид и переделать схему на 5-вольтовый блок питания, установить более мощный транзистор с радиатором.

Что ж, замените Arduino на ATiny. Также не помешало бы поставить на входные цепи большой конденсатор или даже батарею конденсаторов для защиты блока питания (первый блок питания на 1,5А сгорел через 10 секунд работы из-за скачков нагрузки).

Пожалуй, на этом закончу, спасибо за внимание.

Теги: #Сделай сам или Сделай сам #поделки #маглев #arduino #levitron

Вместе с данным постом часто просматривают:

Автор Статьи


Зарегистрирован: 2019-12-10 15:07:06
Баллов опыта: 0
Всего постов на сайте: 0
Всего комментарий на сайте: 0
Dima Manisha

Dima Manisha

Эксперт Wmlog. Профессиональный веб-мастер, SEO-специалист, дизайнер, маркетолог и интернет-предприниматель.