Автопортал || Авто - статьи

Сельскохозяйственная техника
Чтение RSS

Гаджет левітації на Arduino

  1. Зміст статті Серед ворогів людства окреме місце займає гравітація, і чимало людей склав голови, борючись...
  2. Магніт
  3. Джерело живлення
  4. драйвер
  5. Зворотній зв'язок
  6. Система управління
  7. Збираємо!
  8. скетч 1
  9. скетч 2

Зміст статті

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

Цей найкорисніший явище. Завдяки йому по мегаполісам квапливо шарудять поїзда на магнітній подушці, а в особливо важливих механізмах обертаються непідвладні тертю магнітні підшипники.

У цій статті я розповім, як зібрати настільний гаджет електромагнітної левітації. На жаль, літати тобі він не дозволить, але змусить парити в повітрі невеликий добре магнітящійся предмет - наприклад, крихітний глобус, або кубик, до якого можна клеїти липкі замітки, щоб вони маячили у тебе перед носом.

Як це працює?

Якщо коротко - у тебе є електромагніт, який притягує залізний предмет (наприклад, гайку) і мав би притягнути до кінця, але як тільки гайка наближається до нього надто близько, магніт відключається, і гайка починає падати. Як тільки вона опуститься нижче певного рівня - магніт знову включається і знову тягне гайку вгору. Якщо положення відстежувати точно, а з магнітом управлятися швидко, то можна потрапити в рівноважний стан, і коливання гайки будуть непомітні. Домогтися цього ефекту можна різними способами, тому розглянемо всі популярні можливості. Але в будь-якому випадку в установці буде п'ять елементів:

  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); // чекаємо, поки магніт включиться
s1 = analogRead (in1); // читаємо перший датчик Холла
s2 = analogRead (in2); // читаємо другий датчик Холла
o1 = s2 -s1; // вважаємо різницю входів
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 готовий комплект для збірки. Успіхів!

Як це працює?