Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Manufacturing Technology >> Производственный процесс

Магнитная левитация с Arduino

Компоненты и расходные материалы

Arduino Nano R3
Вы можете использовать любой Arduino, но щит сделан для Nano.
× 1
Электромагнит 12v диаметром 25 мм.
× 1
Датчик линейного эффекта Холла 49E
Не используйте переключатель эффекта Холла.
× 1
Транзистор высокой мощности Дарлингтона
СОВЕТ 120
× 1
Резистор 1 кОм
× 1
1N4007 - высоковольтный диод с высоким номинальным током
× 1
Блок питания 12 В, 1 А
× 1
Макет (общий)
× 1
Кнопочный переключатель SparkFun, 12 мм
× 2
Перемычки (общие)
× 1

Приложения и онлайн-сервисы

IDE Arduino

Об этом проекте

Левитатор с Arduino.

Вы можете распечатать тело на 3D-принтере или нет.

https://www.thingiverse.com/thing:1392023

  • Легко распечатать и установить (только немного клея, без винтов).
  • Просто установите прошивку (Levitator.ino) на плату Arduino.
  • Не нужен компьютер, только блок питания 12 В после установки прошивки.
  • Используйте переключатели, чтобы отрегулировать положение постоянного магнита.
  • Используйте монитор последовательного порта Arduino, чтобы увидеть правильное значение для вас.
  • Вы можете жестко запрограммировать правильное значение в своей игрушке.

Вы можете использовать макетную плату или сделать свою плату (Arduino Nano).

http://www.thingiverse.com/thing:1392530

Или просто купите один:

https://oshpark.com/shared_projects/kxH3Ak1b

Внимание:

  • Поместите датчик Холла в нижнюю часть наконечника (top_sensor.stl), чтобы увидеть изображения;
  • Для правильной работы датчик Холла должен находиться на расстоянии не менее 5 мм от электромагнитного поля;
  • Вы можете использовать другой линейный датчик Холла . (не используйте переключатель датчика холла );
  • Используйте неодимовые постоянные магниты (с обычными магнитами работать не будет);
  • Тяжелые предметы более устойчивы;

См. Мои модели в Thingiverse для получения дополнительных сведений и советов.

Левитатор на 3D-принтере:

https://www.thingiverse.com/make:201394

Щиток для Arduino Nano:

https://www.thingiverse.com/make:201420

Это просто.

Код

  • Levitator.ino
  • Levitator_PID.ino
Levitator.ino Arduino
Код для игрушки Магнитная левитация с Arduino.
Легко (без PID)
 // =========================================================| // Ekobots Innovation Ltda - www.ekobots.com.br | // Хуан Сиргадо и Антико - www.jsya.com.br | // - -------------------------------------------------- ------ | // Программа Магнитный Левитатор - 06.02.2016 | // Все права защищены 2016 | // =========================================================| int anaPin =1; // Аналоговый вывод Arduino 1; int digPin =5; // Цифровой вывод Arduino 5; int subPin =7; // Цифровой вывод 7 Arduino; int addPin =8; // Цифровой вывод 8 Arduino; // int anaVal =0; // Значение аналогового считывания (датчик Холла); логическое значение digVal =0; // Значение цифровой записи (электромагнита); // int levVal =228; // Значение левитации; int dlyVal =250; // Значение задержки в микросекундах; // ----------------------------------------- ---------------- | void setup () {// Инициализация левитатора Begin; Serial.begin (57600); Serial.println («Левитатор от JSyA»); Serial.println ("Запускается ..."); // Настройка режима работы цифровых выводов; pinMode (digPin, ВЫХОД); pinMode (subPin, INPUT_PULLUP); pinMode (addPin, INPUT_PULLUP); // Инициализация левитатора End; Serial.println ("Запущено.");} // ------------------------------------- -------------------- | void loop () {// Считывание датчика Холла (интенсивность магнитного поля); anaVal =analogRead (anaPin); // Увеличиваем значение точки левитации; если (digitalRead (addPin) ==LOW) {levVal ++; значение_log (); задержка (250); } // Уменьшаем значение точки левитации; если (digitalRead (subPin) ==LOW) {levVal--; значение_log (); задержка (250); } // Проверяем точку левитации; если (anaVal  levVal) {digVal =HIGH; } // // Включение / выключение электромагнита; // На основе значения датчика и точки левитации; digitalWrite (digPin, digVal); delayMicroseconds (dlyVal);} // ------------------------------------------ --------------- | void value_log () // Аналоговые / цифровые / левитационные значения Печать; {// Показать значение датчика Холла; Serial.print ("anaVal =["); Serial.print (анавал); Serial.print ("] -"); // Показать состояние электромагнита On =1 / Off =0; Serial.print ("digVal =["); Serial.print (digVal); Serial.print ("] -"); // Показать значение точки левитации; Serial.print ("levVal =["); Serial.print (levVal); Serial.println ("];");} // ===========================================================| 
Levitator_PID.ino Arduino
Код для игрушки Магнитная левитация с Arduino.
Hard (версия PID)
 // =========================================================| // Ekobots Innovation Ltda - www.ekobots.com.br | // Хуан Сиргадо и Антико - www.jsya.com.br | // - -------------------------------------------------- ------ | // Программа PID магнитного левитатора - 2016/10/06 | // Все права защищены 2016 | // =========================================================| int anaPin =1; // Аналоговый вывод Arduino 1int digPin =5; // Цифровой вывод Arduino 5int subPin =7; // Цифровой вывод Arduino 7int addPin =8; // Цифровой вывод 8 Arduino // int anaVal =0; // Аналогичный Valieint digVal =0; // Цифровое значение // int levVal =262; // Левитация Valueint dlyVal =10; // Значение задержки // с плавающей запятой timVal =0; // Временная стоимость // -------------------------------------------- ------------- | // Значения ПИД-регулятора уставка с плавающей запятой =0; с плавающей запятой измеряемого_значения =0; с плавающей точкой на выходе =0; с плавающей запятой =0; с плавающей запятой =0; с плавающей запятой =0; с плавающей точкой с предыдущей_ошибкой =0; float dt =0.1; float Kp =1.0; float Ki =0.1; float Kd =0,01; // -------------------------- ------------------------------- | void setup () {// Инициализация левитатора Begin; Serial.begin (57600); Serial.println («Левитатор от JSyA»); Serial.println ("Запускается ..."); // Настройка режима работы цифровых выводов; pinMode (digPin, ВЫХОД); pinMode (addPin, INPUT_PULLUP); pinMode (subPin, INPUT_PULLUP); // timVal =millis (); уставка =levVal; // Инициализация левитатора End; Serial.println ("Запущено.");} // ------------------------------------- -------------------- | void loop () // PID {// Считывание датчика Холла (интенсивность магнитного поля); anaVal =analogRead (anaPin); // Расчеты ПИД-регулятора измеренное_значение =anaVal; ошибка =заданное значение - измеренное_значение; интеграл =интеграл + ошибка * dt; производная =(ошибка - предыдущая_ошибка) / dt; вывод =(-Kp * ошибка) + (-Ki * интеграл) + (-Kd * производная); previous_error =ошибка; // Настройка окончательного значения digVal + =output; // Проверяем значение точки левитации; если (digVal <0) digVal =0; если (digVal> 255) digVal =255; // Увеличить / Уменьшить значение для электромагнита; // На основе значения датчика и точки левитации; analogWrite (digPin, digVal); // Показывать значения журнала для отладки; // if ((millis () - timVal)> 500) // {// value_log (); // timVal =millis (); //} // Увеличиваем значение точки левитации; если (digitalRead (addPin) ==LOW) {заданное значение ++; значение_log (); задержка (250); } if (digitalRead (subPin) ==LOW) {заданное значение--; значение_log (); задержка (250); } // Время между изменениями состояния электромагнита; delayMicroseconds (dlyVal);} // ------------------------------------------ --------------- | void value_log () // Аналоговые / цифровые / левитационные значения Печать; {// Показать значение датчика Холла; Serial.print ("anaVal =["); Serial.print (анавал); Serial.print ("] -"); // Показать состояние электромагнита On =1 / Off =0; Serial.print ("digVal =["); Serial.print (digVal); Serial.print ("] -"); // Показываем значение точки левитации; Serial.print ("заданное значение =["); Serial.print (заданное значение); Serial.println ("];");} // ===========================================================| 

Схема

Fritzing IDE

Производственный процесс

  1. Самодельные простейшие часы Numitron IV9 с Arduino
  2. Мониторинг CO2 с помощью датчика K30
  3. Слепоглухое общение с 1Sheeld / Arduino
  4. Управление монетоприемником с помощью Arduino
  5. Arduino с Bluetooth для управления светодиодом!
  6. Емкостной датчик отпечатков пальцев с Arduino или ESP8266
  7. Игра с дисплеем Nextion
  8. Роботизированная рука, управляемая нунчук (с Arduino)
  9. Отталкивающая электромагнитная левитация Arduino
  10. Измерение солнечной радиации с помощью Arduino