Вращаюшийся глобус на базе Arduino
В проекте описано, как обновить глобус до моторизованной версии. Медленно вращающийся глобус смотрится на полке намного лучше, и любая демонстрация вашим детям (чтобы объяснить цикл день/ночь или времена года) вызовет интерес и будет более наглядной. Добавим мотор и вам не придется вращать земной шар рукой, нелепо удерживая фонарик зубами.
В проекте используются материалы, которые были в моем распоряжении, поэтому их, возможно, придется адаптировать к тем, которые есть в наличии у вас.
Необходимые материалы:
- Непосредственно глобус
- Шаговый двигатель + драйвер к нему.
- Arduino (или другой микроконтроллер)
- Какая-то ось + колесо из лего коробки или что-то в этом роде. Ось, которую я использую, имеет диаметр ~ 1/4 дюйма
- Различные инструменты, такие как пила или нож, дрель, клей и т.п.
- Прочная эпоксидная смола, которая быстро схватывается
В статье не описывается работа двигателя, так как эта тема хорошо раскрыта здесь Если вы раньше не работали с шаговыми двигателями, лучше ознакомьтесь с этим гайдом - это одно из необходимых основ для реализации нашего вращающегоя глобуса.

Обрабатываем ось вращения глобуса
Глобус опирается на пластину, которую можно вынуть. Вынимаем ее. Большую выступающую ось надо обрезать так, чтобы пластина находилась на одном уровне с ней, когда вы вставите ее на свое месте. После того, как вы обрежете ось (оставив 2-3 мм выступа), снова установите пластину на подставку. Глобус должен свободно вращаться. Если нет, срежьте ножом мелкие пластиковые волокна (оставшиеся в месте отрезания).






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




Устанавливаем новую ось для вращения глобуса
Установите колесо на ось. Затем вставьте ось в отверстие через пластину. Глобус должен вращаться свободно, но без сильного люфта.
В этот момент вы можете приклеить колесо к пластине. Я использовал горячий клей, на случай, если я захочу вынуть колесо обратно, но несколько капель эпоксидной смолы тоже вполне спарвятся с этой задачей.





Крепим оси с помощью эпоксидной смолы
Это сложный и важный шаг. Обычно склеивание двух осей встык - не лучшая идея, поскольку в этот момент может возникнуть большой крутящий момент и вытекающие отсюда ограничения. Вот почему нам нужна очень прочная эпоксидная смола, которая затвердеет и превратится в прочный кусок полимера, надежно прикрепив ось двигателя к оси колеса.
Нам нужно использовать эпоксидную смолу которая быстро застывает. В течение короткого периода времени (~ 1 минута) мы сможем отрегулировать две детали вдоль одной оси, вставив все еще твердеющий узел в ось шара.
- Выложите равные части эпоксидных компонентов на лист бумаги и тщательно перемешайте палочкой. Протрите палочку и продолжайте помешивать. Это гарантирует, что вы избавитесь от несмешанных компонентов, которые остаются вокруг палки и могут сильно ослабить этот мощный твердый полимер.
- Окуните один конец оси в клей. С помощью палки нанесите немного клея на углы оси, чтобы обеспечить хорошее закрепление. Клей должен покрывать примерно 1/4 дюйма наконечника. Сотрите излишки клея, выступающие за диаметр оси (так как позже ему нужно будет свободно вращаться в только что просверленном отверстии).
- Окуните конец оси двигателя в эпоксидную смолу. Он почти не должен капать. Избегайте попадания клея на двигатель, потому что, если он попадет в шестерни, двигатель придется просто напросто выбросить.
- Удерживая вровень нашу ось и ось двигателя, прижмите их друг к другу.
- В какой-то момент вы почувствуете, что клей становится тверже с каждой секундой. В этот момент вы можете попросить кого-нибудь помочь вам, аккуратно размешав остатки клея на листе бумаги. Когда клей станет трудно размешивать на бумаге, у вас будет меньше минуты, чтобы сделать следующий шаг.
- Вставьте ось + ось в глобус так, чтобы двигатель был заподлицо с глобусом. Вставьте опорную пластину в ось и плотно удерживайте всю установку одной рукой, например, нажимая на двигатель большим пальцем, а на колесо и его ось в противоположном направлении - другими пальцами.
- Другой рукой вы можете осторожно вращать глобус. Это гарантирует, что клей не прилипнет к оси шара и ось установится в положение с соблюдением соосности, которое позволяет вращение без ограничений.
- Держите так в течение нескольких минут, затем осторожно нажмите на ось (через колесо) и выньте только что собранную ось + ось.





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


Скетч для Arduino, который вы можете использовать приведен ниже
#define IN1 8
#define IN2 9
#define IN3 10
#define IN4 11
void setup() {
pinMode(IN1, OUTPUT);
pinMode(IN2, OUTPUT);
pinMode(IN3, OUTPUT);
pinMode(IN4, OUTPUT);
}
uint64_t timeMultiplier = 24 * 60 * 1; // это обеспечивает ~ один проворот в минуту.
uint64_t msPerDay = 24ULL * 3600ULL * 1000ULL;
uint64_t divideForStep = 64ULL * 48ULL * timeMultiplier;
double nextTimeStep = 0;
void loop() {
static unsigned long zeroTime = millis();
uint64_t curTime = millis() - zeroTime;
if(curTime * divideForStep > nextTimeStep) {
nextTimeStep += msPerDay;
stepper(true);
}
}
inline void stepper(bool normalRotation) {
static int Steps = 0;
Steps += 8 + (normalRotation ? 1 : -1);
Steps %= 8;
switch(Steps) {
case 0:
digitalWrite(IN1, LOW);
break;
case 1:
digitalWrite(IN3, HIGH);
break;
case 2:
digitalWrite(IN4, LOW);
break;
case 3:
digitalWrite(IN2, HIGH);
break;
case 4:
digitalWrite(IN3, LOW);
break;
case 5:
digitalWrite(IN1, HIGH);
break;
case 6:
digitalWrite(IN2, LOW);
break;
case 7:
digitalWrite(IN4, HIGH);
break;
default:
break;
}
}
Глобус, вращающийся автоматически с помощью Arduino и шагового двигателя в сборе показан на видео ниже. Надеемся, проект был вам интересен!