Отталкивающая электромагнитная левитация Arduino
Компоненты и расходные материалы
| | × | 1 | |
| | × | 1 | |
| | × | 1 | |
| Линейный датчик на эффекте Холла UGN3503 | | × | 1 | |
| Средний соленоид RobotGeek | | × | 1 | |
| | × | 1 | |
Приложения и онлайн-сервисы
Об этом проекте
Несколько лет назад я пытался создать устройство для отталкивающей магнитной левитации, но все схемы, которые у меня были, были сложными, и настройка была очень сложной.
После нескольких неудачных и полууспешных попыток я купил левитатор, который вы видите на картинке, но сделать его дома (сделай сам) практически невозможно.
Теперь я представлю вам отталкивающий левитатор, который, помимо платы Arduino, содержит всего несколько дополнительных компонентов, и его очень легко сделать своими руками:
- Любой транзистор средней мощности:в моем случае BD241
- Универсальный диод 1Н4001
- Резистор 1 кОм
- Датчик Холла UGN3503 (можно использовать любой РАТИОМЕТРИЧЕСКИЙ датчик Холла 5 В)
- Магнит Torus от старого динамика (диаметром от 9 см до 11 см и более).
- Вместо большого торического магнита можно использовать группы небольших неодимовых магнитов, развернутых в виде правильного шестиугольника, как в коммерческих устройствах.
- Соленоид состоит примерно из 200 обмоток изолированного медного провода 30AWG. В этом случае я использовал соленоид, снятый со старого денежного ящика.
Схема очень простая и представлена ниже на картинке. Arduino по умолчанию питается от 5 В, а соленоид через транзистор с напряжением 12-20 В. Оба имеют общую землю. Полярность магнитов и соленоида показана на рисунке. Для настройки вам потребуется немного терпения и времени, и на самом деле есть Удовольствие от изготовления устройства. Датчик Hal должен быть вверху над соленоидом. Над ним размещен магнит, который должен плавать. В моем случае настройка заключалась в перемещении торического магнита вверх и вниз. также является настройкой в коде, изменяя значение первой строки в коде и может варьироваться от 200 до 350. С комбинацией этих двух настроек мы получаем наилучшие результаты.
Код
Файл без названия Arduino
int set_point =250; // настройки int sensorPin =A1; int output_pin =2; int sensorValue =0; void setup () {Serial.begin (9600); pinMode (output_pin, OUTPUT);} пустая петля () {sensorValue =analogRead (sensorPin); //Serial.println(sensorValue); если (sensorValue <=set_point) digitalWrite (output_pin, LOW); иначе digitalWrite (output_pin, HIGH); }
Схема