Как сделать Левитрон на базе Arduino. H Левитрон на Arduino Из песочницы

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

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

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

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

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

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

Это полезнейшее явление. Благодаря ему по мегаполисам торопливо шуршат поезда на магнитной подушке, а в особо важных механизмах вращаются неподвластные трению магнитные подшипники.

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

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

Если кратко - у тебя есть электромагнит, который притягивает железный предмет (например, гайку) и должен бы притянуть до конца, но как только гайка приближается к нему слишком близко, магнит отключается, и гайка начинает падать. Как только она опустится ниже определенного уровня - магнит снова включается и вновь тянет гайку вверх. Если положение отслеживать точно, а с магнитом управляться быстро, то можно попасть в равновесное состояние, и колебания гайки будут незаметны. Добиться этого эффекта можно разными способами, поэтому рассмотрим все популярные возможности. Но в любом случае в установке будет пять элементов:

  1. электромагнит - главный положительный герой, борющийся с гравитацией;
  2. источник питания, так как кушать хочется всем;
  3. драйвер постоянного тока (будет брать сигнал с управляющей схемы и включать-выключать магнит, который должен быть довольно мощным и напрямую включаться любыми логическими микросхемами не сможет);
  4. обратная связь, чтобы знать, где сейчас наша гайка, и случайно не перетянуть ее в ту или другую сторону;
  5. система управления, которая будет собирать информацию с датчиков и решать, когда и как включать электромагнит.

Теперь обо всем по порядку.

Магнит

Магнит можно получить тремя путями: сделать самому, купить готовый и достать из какого-нибудь реле или соленоида. Готовые магниты встречаются в продаже нечасто, но если нашел их в изобилии, то бери с небольшим круглым сердечником, рассчитанный на 12 В - с таким будет удобнее всего управляться. Внутреннее сопротивление должно быть не меньше 20 Ом, иначе получится лишь эффективно нагревать пространство. Это же касается и катушек реле. Если будешь использовать катушку от соленоида, то вместо подвижного внутреннего сердечника нужно будет подобрать плотно сидящий болт.

Но если поиски по магазинам и чердакам к успеху не привели, то можешь сделать магнит сам. Для этого понадобится сердечник, он должен удовлетворять противоречивым условиям: быть одновременно массивным, но не слишком большого диаметра, чтобы создаваемое поле было лучше сосредоточено. Идеально подойдет шпилька диаметром 8-10 мм и длиной около 60 мм, можно использовать и болт такой же длины.

Для обмотки нужен лакированный провод сечением не меньше 0,03 мм2 (или диаметром - 0,2 мм), его несложно найти в магазинах, но можно и добыть, разобрав трансформатор какогонибудь мелкого блока питания - вторичная обмотка скорее всего именно таким проводом и намотана. Лучше брать низкокачественные блоки питания - плохо собранные пластинчатые сердечники их трансформаторов будет легко расковырять. Теперь этот провод нужно намотать на болт. Мощность магнита измеряется в ампер-витках и зависит от произведения протекающего тока на число витков, поэтому мотать придется много, минимум 500 оборотов - так что подумай, как этот процесс можно упростить.

Я зажал болт-сердечник в патрон шуруповерта, а катушку, с которой провод сматывал, одел на ручку штатива от фотоаппарата. Дрель (а тем более блендер или миксер) использовать не советую - у них высокие обороты, и если провод в какой-то момент зацепится, то все может разлететься! Старайся укладывать витки плотно один к другому, слой за слоем, поскольку зазоры сильно снижают эффективность. После того как ты решишь, что намотал достаточно, зачисти концы проводов (лак на концах удобно сжечь зажигалкой) и померь сопротивление мультиметром, оптимум - 20-30 Ом. Подключи магнит к блоку питания и проверь, не слишком ли он греется и хорошо ли притягивает.

Источник питания

Тебе также понадобится хороший источник питания на 12 В: магнит может потреблять приличный ток, так что маленькой батарейкой здесь не отделаться. Если есть возможность - воспользуйся ATX блоком питания компьютера. Конечно, использовать тот, что стоит в компьютере, не стоит - по закону Мерфи в самый важный момент что-нибудь закоротит и блок может помереть (хотя у них есть защита от замыканий), и компьютеру может тоже не поздоровиться. Чтобы включить ATX блок питания без компа, в широком 20-пиновом разъеме соедини зеленый провод с любым черным, а питание бери с разъема жесткого диска или видеокарты, желтый провод - это +12 В, а черный - земля. Если такого блока нет, подойдет и менее мощный источник от чего-нибудь бытового - зарядника дрели, ноутбука и так далее. Можно взять и свинцовый 12-вольтовый аккумулятор от ИБП. Теперь посмотрим, как магнитом можно управлять.

Драйвер

Магнит, в зависимости от того, насколько удачным он получился, может потреблять добрую дюжину ватт мощности - соответственно, и ток будет около 1 А. Чтобы управляться с такой нагрузкой, нужен мощный транзистор. Можно использовать биполярный npn-транзистор, но для его полного открытия требуется большой ток — микроконтроллеру и не потянуть. Лучше использовать полевой транзистор (он же МОП или MOSFET) N-типа, затвор которого управляется не током, а напряжением. Какой-то заметный ток требуется только для переключения состояний, поэтому такой транзистор можно смело вешать на ножку микроконтроллера через небольшое токоограничительное сопротивление (порядка 100 Ом). Единственный момент - далеко не все МОП-транзисторы способны открыться от 5 В, которые выдает контроллер, поэтому стоит поискать тот, который сможет.

Я использовал IRL530N - это настоящий великан, способен выдерживать ток до 17 А при напряжении до 100 В. Если такого найти не удалось, то можно использовать любой другой (скажем, IR F630M), но ему для полноценного открытия на затвор нужно подать 12 В. Для этого в схему следует добавить еще небольшой транзистор, который будет служить ключом на более высокое напряжение. В моем случае это 2N3904, но можно использовать практически любой npn-транзистор.

Еще один важный момент в управлении магнитом связан с его значительной индуктивностью: пока ток включен, энергия запасается в электромагнитном поле, но если цепь разомкнуть, то ей необходимо куда-то деться, и это выльется в значительный скачок напряжения на выводах обмотки. Такого удара ни один транзистор не переживет, поэтому между выводами катушки необходимо поставить диод (у меня 1n4007) - так, чтобы во время нормальной работы он стоял против тока, а в момент размыкания цепи, когда ток начинает бежать в обратную сторону, замыкал бы катушку саму на себя. Сила, чтобы управиться с магнитом, теперь есть, и осталось понять, когда же приходит время его включать.

Обратная связь

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

Более удачный вариант (тоже оптический) - поставить инфракрасный или лазерный дальномер под магнит (хотя можно и сверху) и измерять расстояние. Но в этом случае придется модифицировать болт - приклеивать пластинку с большей поверхностью, иначе датчик его просто не увидит. Особенно можно поэстетствовать, установив не оптический, а ультразвуковой дальномер, хотя в заданных интервалах (несколько сантиметров) точность большинства из них будет невелика. Да и от мух эти варианты никак не спасают. Но недорогое и сердитое решение все-таки есть!

В природе существует замечательный эффект: если по проводящей металлической пластине пропущен ток, а поперек пластины приложено магнитное поле, то перемещающиеся по пластине заряды будут отклоняться силой Лоренца и создавать по краям пластины разность потенциалов, то есть напряжение, которое будет зависеть от величины магнитного поля. На этом эффекте работают датчики Холла. Применить их к определению положения довольно просто - прикрепи к болту магнит и все. Напряжение на выходе датчика будет зависеть от силы поля, которое зависит от расстояния до болта с магнитиком. И самое главное - летающие насекомые никак не повлияют!

В продаже существует множество датчиков, в том числе те, которые измеряют поле в нескольких плоскостях. Тебе же нужен простой аналоговый датчик, иногда в описаниях их называют линейными, с чувствительностью 400-1000 Гаусс. Я использовал SS59E, но идеальным вариантом его не назовешь - он имеет корпус SOT223 (для поверхностного монтажа), и чтобы использовать его «на весу», пришлось подпаивать довольно хлипкие проводочки. Удобнее выбрать датчик в корпусе to92 (например SS19, SS49 или SS495A). Также понадобится хороший магнит, лучше редкоземельный. Можно его достать из мотора привода CD/DVD, взять из детского магнитного конструктора Bornimago или заказать у китайцев на http://s.dealextreme.com/search/magnets , там хороший выбор и цены приемлемые.

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

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

Система управления

Как правило, управление подобными устройствами делают полностью аналоговое, на паре операционных усилителей, но можно сделать управление и на микроконтроллере. Так что если у тебя в хозяйстве есть плата Arduino, то здесь она пригодится. Я использовал свою видавшую многое Arduino Diecimila, но подойдет и любая другая пятивольтовая версия –Duemilanove, Uno и различные клоны.

Собираем!

Ключевые моменты создания гаджета мы уже рассмотрели, теперь поподробнее остановимся на том, как все это собрать, запустить и отладить. Схему можно собрать на макетной плате, но можешь попробовать обойтись без нее - элементов немного, и они вполне могут повисеть в воздухе. Для подобных «воздушных» схем удобно иметь десяток разноцветных проводов, у которых с обоих концов припаяны небольшие крокодильчики. Диод D1 можешь напаять непосредственно на выходы катушки магнита L1, а диод D2 - между стоком и истоком MOП-транзистора Q1.

Сам транзистор можно прикрепить к радиатору не столько в целях охлаждения (при этих токах он сильно греться не будет), сколько в качестве подставки. Если у тебя полевик из серии IRL, то транзистор Q1 и сопротивление R3 из схемы можешь выкинуть и закинуть сопротивление R2 на ножку D10 Arduino (или любую другую ножку с ШИМ-выходом). У полевиков в корпусах TO220 (а тебе удобней работать именно с такими) ножки нумеруются слева направо следующим образом: 1 (затвор), который нужно подключить к управляющему выходу; 2 (сток) - к минусу нагрузки, 3 (исток) - вывести на землю.

Второй выход нагрузки нужно подключить к питанию +12 Вольт. Плату Arduino также нужно от чего-нибудь запитать, лучше подсоединить ее к тому же 12-вольтовому источнику, что и магнит, но для этого тебе понадобится подходящий штекер c диаметром внутреннего штырька 2,1 мм, и внешним диаметром 5,5 мм. Можно взять питание и через USB от компьютера, но тогда не забудь соединить землю на плате с землей питания магнита. С другой стороны платы к аналоговым входам нужно подключить датчики. Выходы датчиков Холла IC1 и IC2 к пинам A0 и А1, VCC - к выходу +5 В, и GND - к земле. Датчик IC1 нужно укрепить под магнитом, а IC2 - над ним (поскольку направления полей будут противоположные, то и датчики нужно сориентировать по-разному). Скотч - самое надежное средство для крепления. Также для подстройки параметров будет полезен переменный резистор на 10 кОм (хотя величина не принципиальна). На нем должно быть 3 выхода: крайние подключи к земле и +5 В, а средний - к аналоговому входу A2.

Из железной работы осталось только к чему-нибудь подвесить магнит. К чему именно - решай исходя из подручных материалов. Это может быть, например, зажим «третьей руки», штатив или, как в моем случае, деревянный ящичек из ИКЕА. Главное - убедиться в том, что он не болтается, и можно приступать к программной начинке. Для этого гаджета потребуется создать два скетча для Arduino. При помощи первого ты измеришь параметры системы и получишь пару волшебных чисел, которые пригодятся во второй, рабочей прошивке.

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

Скетч 1

const int in1 = A0; // аналоговый вход датчика Холла 1
const int in2 = A1; // аналоговый вход датчика Холла 2
const int out1 = 10; // аналоговый выход (ШИМ) на магнит.
int s1 = 0; // значение датчика Холла 1
int s2 = 0; // значение датчика Холла 2
int o1; // Выход
void setup()
{
// будем следить за состоянием в консоли
//Serial.begin(9600);
}
void loop()
{
// запускаем программу по кругу
// читаем аналоговые входы
analogWrite(out1, 255); // записываем в выход нужное
// состоние магнита
delay(15); // ждем, пока магнит включится



Serial.print("magnet on: s1 = "); // аккуратно все выводим
// в консоль
Serial.print(s1);
Serial.print(" s2 = ");
Serial.print(s2);
Serial.print(" delta = ");
Serial.print(o1);
analogWrite(out1, 25); // записываем в выход нужное
// состояние магнита, 10% мощности
delay(15); // ждем, пока магнит выключится
s1 = analogRead(in1); // читаем первый датчик Холла
s2 = analogRead(in2); // читаем второй датчик Холла
o1 = s2 -s1; // считаем разницу входов
Serial.print("magnet off: s1 = "); // аккуратно все выводим
// в консоль
Serial.print(s1);
Serial.print(" s2 = ");
Serial.print(s2);
Serial.print(" delta = ");
Serial.println(o1); // переходим в конце на новую строку
delay(1000); // через секунду - все заново
}

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

Чтобы сократить это время, можно управлять магнитом плавно и не включать-выключать его полностью, а лишь чутка изменять мощность. На Arduino это можно сделать при помощи ШИМ-выхода. ШИМ (PWM, широтно-импульсная модуляция) - это способ плавно менять напряжение на выходе, используя лишь цифровые состояния.

То есть часть времени выход включен, а часть - выключен, но из-за инертности работает такая схема, будто выход включен постоянно, но с половинной мощностью. После запуска первой прошивки у тебя должно остаться два числа - разница при 10% и при 100% мощности.

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

Скетч 2

const int in1 = A0; //аналоговый вход датчика Холла 1
const int in2 = A1; //аналоговый вход датчика Холла 2
const int in3 = A2; //аналоговый вход переменного резистора
const int d10 = <вставь из предыдущего кода>;
//выход при 10% мощности
const int d100 = <вставь из предыдущего кода>;
//выход при 100% мощности
const int out1 = 10; //аналоговый выход (ШИМ) на магнит.
int s1 = 0; // значение датчика Холла
int s2 = 0; // значение датчика Холла
int s3 = 0; // значение переменного резистора
int o1 = 255; // состояние выхода, по умолчанию
// полностью включен
int d = 0; // поправка
int v; // итоговое значение с датчиков
void setup() {}
void loop()
{
s1 = analogRead(in1); // читаем значение датчика Холла
s2 = analogRead(in2); // читаем текущее значение
// потенциометра
d = map (o1, 25, 255, d10, d100); // считаем поправку
v = abs (s1- s2) +d ; // разница с поправкой
o1 = map (v, 0, 1024, 25, 255); // рассчитываем выход, магнит
// никогда полностью не выключен
analogWrite(out1, o1); // записываем в выход нужное
// состояние магнита.
delayMicroseconds(100); // ждем некоторое время, пока АЦП
// вновь будет готов считывать данные

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

Ведь конечная цель - полет даже более завораживающий, чем у птиц в небе, а к этому человечество стремилось не одну сотню лет. Так что постарайся! Но если и после всех стараний результат нулевой, то можешь заказать на сайте zeltom.com/emls.aspx готовый комплект для сборки. Удачи!

На идею этого урока натолкнул проект краудфандинговой платформы Kickstarter под названием "Air Bonsai", действительно красивый и загадочный, который сделали японцы.

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

Мы выяснили, что схема устройства на Кикстартере была довольно сложной, без какого-либо микроконтроллера. Не было возможности найти её аналоговую схему. На самом деле, если посмотреть более внимательно, принцип левитации довольно прост. Нужно сделать магнитную деталь, "плавающую" над другой магнитной деталью. Основная дальнейшая работа заключалась в том, чтобы левитирующий магнит не падал.

Было также предположение, что сделать это с Arduino на самом деле намного проще, чем пытаться понять схему японского устройства. На самом деле всё оказалось намного проще.

Магнитная левитация состоит из двух частей: базовой части и плавающей (левитирующей) части.

Основание

Эта часть находится внизу, которая состоит из магнита для создания круглого магнитного поля и электромагнитов для управления этим магнитным полем.

Каждый магнит имеет два полюса: север и юг. Эксперименты показывают, что противоположности притягиваются и одинаковые полюса отталкиваются. Четыре цилиндрических магнита помещаются в квадрат и имеют одинаковую полярность, образуя круглое магнитное поле вверх, чтобы вытолкнуть любой магнит, который имеет один и тот же полюс между ними.

Есть четыре электромагнита вообще, они помещены в квадрат, два симметричных магнита - пара, и их магнитное поле всегда противоположно. Датчик Холла и цепь управляют электромагнитами. Создаем противоположные полюса на электромагнитах током через них.

Плавающая деталь

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

Магнит сверху поднимается магнитным полем нижних магнитов, потому что они с одинаковыми полюсами. Однако, как правило, он склоняется к падению и притягиванию друг к другу. Чтобы предотвратить переворот и падение верхней части магнита, электромагниты создадут магнитные поля, чтобы толкать или тянуть, дабы сбалансировать плавающую часть, благодаря датчику Холла. Электромагниты управляются двумя осями X и Y, в результате чего верхний магнит поддерживается сбалансированным и плавающим.

Контролировать электромагниты нелегко, требуется ПИД-регулятор, который подробно обсуждается на следующем шаге.

Шаг 2: ПИД-регулятор (PID)

Из Википедии: "Пропорционально-интегрально-дифференцирующий (ПИД) регулятор - устройство в управляющем контуре с обратной связью. Используется в системах автоматического управления для формирования управляющего сигнала с целью получения необходимых точности и качества переходного процесса. ПИД-регулятор формирует управляющий сигнал, являющийся суммой трёх слагаемых, первое из которых пропорционально разности входного сигнала и сигнала обратной связи (сигнал рассогласования), второе - интеграл сигнала рассогласования, третье - производная сигнала рассогласования."

В простом понимании: «ПИД-регулятор вычисляет значение «ошибки» как разность между измеренным [Входом] и желаемой установкой. Контроллер пытается свести к минимуму ошибку, отрегулировав [выход]».

Итак, вы указываете PID, что измерить (Вход), какое значение вы хотите и переменную, которая поможет иметь это значение на выходе. Далее ПИД-регулятор настраивает выходной сигнал, чтобы сделать вход равным установке.

Для примера : в автомобиле у нас три значения (Вход, Установка, выход) будут - скорость, желаемая скорость и угол педали газа, соответственно.

В данном проекте:

  1. Вход представляет собой текущее значение в реальном времени от датчика холла, которое обновляется непрерывно, поскольку положение плавающего магнита будет меняться в реальном времени.
  2. Заданное значение - это значение от датчика холла, которое измеряется, когда плавающий магнит находится в положении баланса, в центре основания магнитов. Этот индекс фиксирован и со временем не изменяется.
  3. Выходной сигнал - скорость для управления электромагнитами.

Стоит поблагодарить сообщество любителей Arduino, которое написало PID-библиотеку и которая очень проста в использовании. Дополнительная информация об Arduino PID есть на официальном сайте Arduino . Нам нужно использовать пару ПИД-регуляторов под Arduino, один для оси X и другой для оси Y.

Шаг 3: Комплектующие

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


Шаг 4: Инструменты

Вот список инструментов, наиболее часто используемых:

  • Паяльник
  • Ручная пила
  • Мультиметр
  • Дрель
  • Осциллограф (по желанию, можете использовать мультиметр)
  • Настольное сверло
  • Горячий клей
  • Плоскогубцы

Шаг 5: LM324 Op-amp, L298N драйвер и SS495a

LM324 Op-amp

Операционные усилители (op-amp) являются одними из наиболее важных, широко используемых и универсальных схем, используемых сегодня.

Мы используем операционный усилитель для усиления сигнала от датчика Холла, цель которого - увеличить чувствительность, чтобы ардуино легко распознало изменение магнитного поля. Изменение нескольких мВ на выходе датчика холла, после прохождения усилителя может измениться на несколько сотен единиц в Arduino. Это необходимо для обеспечения плавного и стабильного функционирования ПИД-регулятора.

Обычным операционным усилителем, который мы выбрали, является LM324, это дешево, и вы можете купить его в любом магазине электроники. LM324 имеет 4 внутренних усилителя, которые позволяют гибко его использовать, однако в этом проекте нужны только два усилителя: один для оси X, а другой для оси Y.

Модуль L298N

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

Существует также встроенный регулятор 5V, поэтому, если напряжение питания до 12 В, вы также можете подключить источник питания 5 В от платы.

В этом проекте использован L298N для управления двумя парами катушек электромагнита и использован выход 5 В для питания Arduino и датчика холла.

Распиновка модулей:

  • Out 2: пара электромагнитов X
  • Out 3: пара электромагнитов Y
  • Входное питание: вход постоянного тока 12 В
  • GND: Земля
  • Выход 5v: 5v для датчиков Arduino и холла
  • EnA: Включает сигнал PWM для выхода 2
  • In1: Включить для выхода 2
  • In2: Enable for Out 2
  • In3: Включить для выхода 3
  • In4: Включить для выхода 3
  • EnB: Включает PWM-сигнал для Out3

Подключение к Arduino: нам нужно удалить 2 перемычки в контактах EnA и EnB, затем подключить 6 контактов In1, In2, In3, In4, EnA, EnB к Arduino.

SS495a Датчик Холла

SS495a - это линейный датчик Холла с аналоговым выходом. Обратите внимание на разницу между аналоговым выходом и цифровым выходом, вы не можете использовать датчик с цифровым выходом в этом проекте, он имеет только два состояния 1 или 0, поэтому вы не можете измерить выход магнитных полей.

Аналоговый датчик приведет к диапазону напряжений от 250 до Vcc, который вы можете прочитать с помощью аналогового входа Arduino. Для измерения магнитного поля в обеих осях X и Y требуются два датчика холла.

Шаг 6: Неодимовые магниты NdFeB (неодим-железо-бор)

Из Википедии: "Неодим - химический элемент, редкоземельный металл серебристо-белого цвета с золотистым оттенком. Относится к группе лантаноидов. Легко окисляется на воздухе. Открыт в 1885 году австрийским химиком Карлом Ауэром фон Вельсбахом. Используется как компонент сплавов с алюминием и магнием для самолёто- и ракетостроения."

Неодим - это металл, который является ферромагнитным (в частности, он показывает антиферромагнитные свойства), что означает, что подобно железу его можно намагнитить, чтобы он стал магнитом. Но его температура Кюри составляет 19К (-254 ° С), поэтому в чистом виде его магнетизм проявляется только при чрезвычайно низких температурах. Однако соединения неодима с переходными металлами, такими как железо, могут иметь температуры Кюри значительно выше комнатной температуры, и они используются для изготовления неодимовых магнитов.

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

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

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

Шаг 7: Готовим основание

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

Шаг 8: 3D-печать плавающей части

Если у вас есть 3D-принтер - здорово. У вас есть возможность сделать все с помощью него. Если принтера нет - не отчаивайтесь, т.к. вы можете использовать дешевую услугу 3D-печати, которая сейчас очень популярна.

Для лазерной резки файлы также в архиве выше - файл AcrylicLaserCut.dwg (это autocad). Акриловая деталь используется для поддержки магнитов и электромагнитов, остальные - для покрытия поверхности терракотового горшка.

Шаг 9: Подготовка SS495a модуля датчика Холла

Вырежьте макет PCB на две части, одну часть, чтобы прикрепить датчик холла, а другой - к цепи LM324. Прикрепите два магнитных датчика перпендикулярно печатной плате. Используйте тонкие провода для соединения двух штырей датчиков VCC вместе, сделайте то же самое с контактами GND. Выходные контакты отдельно.

Шаг 10: Цепь Op-amp

Припаяйте гнездо и резисторы к печатной плате, следуя схеме, обратив внимание на то, чтобы поместить два потенциометра в одном направлении для более легкой калибровки позже. Присоедините LM324 к гнезду, затем подключите два выхода модуля датчиков холла к цепи op-amp.

Два выходных провода LM324 подключите к Arduino. Вход 12 В с входом 12 В модуля L298N, выход 5 В модуля L298N к 5V потенциометра.

Шаг 11: Сборка электромагнитов

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

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

Шаг 12: Сенсорный модуль и магниты

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

Следующий шаг - собрать магниты на акриловой основе. Объединяя два магнита D15*4 мм и магнит D15*3 мм вместе, чтобы сформировать цилиндр, это приведет к тому, что магниты и электромагниты будут иметь одинаковую высоту. Соберите магниты между парами электромагнитов, обратите внимание, что полюса восходящих магнитов должны быть одинаковыми.

Шаг 13: Разъем питания постоянного тока и выход L298N 5V

Припаяйте гнездо питания постоянного тока двумя проводами и используйте термоусадочную трубку. Подключенный разъем питания постоянного тока к входу модуля L298N, его выход 5 В будет подавать питание на Arduino.

Шаг 14: L298N и Arduino

Подключите модуль L298N к Arduino, следуя приведенной выше схеме:

L298N → Ардуино
5V → VCC
GND → GND
EnA → 7
В1 → 6
В2 → 5
В3 → 4
В4 → 3
EnB → 2

Шаг 15: Arduino Pro Mini программер

Поскольку у Arduino pro mini нет USB-порта для последовательного порта, вам необходимо подключить внешний программатор. FTDI Basic будет использоваться для программирования (и питания) Pro Mini.

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

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

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

Материалы и инструменты для изготовления:
- микроконтроллер Arduino UNO;
- линейный датчик Холла (модель UGN3503UA);
- старые трансформаторы (для намотки катушек);
- полевой транзистор, резисторы, конденсаторы и другие элементы (номиналы и марки указаны на схеме);
- провода;
- паяльник с припоем;
- источник питания 12В;
- пробка;
- небольшой неодимовый магнит;
- горячий клей;
- основа для наматывания катушки и материалы для создания корпуса самоделки.

Процесс изготовления левитрона:

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

Что касается количества витков в катушке, то здесь автор такую цифру не упомянул, катушка собиралась на глаз. В итоге ее сопротивление составило порядка 12 Ом, высота 10 мм, диаметр 30 мм, а толщина используемого провода должна быть 0.3 мм. Сердечника в катушке нет, если потребуется сделать более тяжелый волчок, то катушку можно оснастить сердечником.


Шаг второй. Роль датчика Холла
Для того чтобы волчок мог парить в воздухе, а не прилипал намертво к соленоиду, система нуждается в датчике, который бы мог замерить расстояние до волчка. В качестве такого элемента используется датчик Холла. Этот датчик способен улавливать магнитное поле не только постоянного магнита, но и может определять расстояние до любых металлических предметов, поскольку подобные датчики сами создают электрическое магнитное поле.
Именно благодаря этому датчику волчок всегда держится на нужном расстоянии от соленоида.



Когда волчок начинает отдаляться от катушки, система поднимает напряжение. И наоборот, когда волчок приближается к соленоиду, система понижает напряжение в катушке и магнитное поле слабнет.

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

Шаг третий. Собираем схему и устанавливаем все элементы
В качестве корпуса для самоделки можно использовать кусок бруса, к которому нужно сделать простой кронштейн для крепления катушки. Электронная схема довольно проста, все можно понять по картинке. Работает электроника от источника 12В, а так как датчику нужно 5В, он подключается через специальный стабилизатор, который уже встроен в контроллер Arduino. Максимум устройство потребляет порядка одного ампера. Когда волчок парит, идут затраты тока в пределах 0.3-0.4 А.




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

Шаг четвертый. Прошивка контроллера
Чтобы запрограммировать контроллер на нужные действия, потребуется прошивка. Работает программа очень просто. Когда значения начинают выходить из допустимого диапазона, система либо повышает ток на максимум, либо вовсе отключается. В более поздних вариантах прошивки появилась возможность плавной настройки напряжения на катушке, поэтому резкие колебания волчка прекратились.


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

Для того чтобы защитить источник питания на входные цепи нужно поставить конденсаторы большой емкости. У автора первый блок питания на 1.5 А сгорел спустя 10 секунд из-за сильных скачков напряжения.

Еще в будущем планируется перевести всю систему на источник питания в 5В.