Уже давно я мечтал освоить
Arduino. Это очень дешёвый микрокомпьютер, у которого есть 14 цифровых входов/выходов и 6 аналоговых входов. Для Arduino есть множество дополнительных модулей (датчики, клавиатуры, экраны, моторы), программы для него создаются на простом языке программирования и загружаются по USB.
Во время
большой китайской халявы позапрошлой осенью я накупил по 5 центов кучу плат и дополнительных модулей. Сегодня с утра я наконец-то начал с этим всем разбираться.
Arduino UNO удобно использовать, как платформу для разработки (плата напрямую подключается к компьютеру, а все соединения выполняются без пайки проводами с разъёмами). Такая плата на Aliexpress
стоит от $2.99. Когда разработка завершена, в готовом устройстве можно использовать гораздо меньшую по размерам и ещё более дешёвую плату
Arduino Pro Mini, обладающую теми же возможностями. Она
стоит меньше 100 рублей - $1.3.
Для меня Arduino не игрушка. Я хочу с помощью неё сделать совершенно конкретные, нужные мне устройства. Первые две вещи, которые я хочу сделать - гониофотометр и электронный ЛАТР.
Гониофотометр - устройство, позволяющее определить световой поток лампы и угол освещения. Он прокручивает мотором патрон с лампой на 360 градусов в горизонтальной плоскости, измеряя уровень освещённости в каждом положении лампы, а затем рассчитывает световой поток и угол.
Электронный ЛАТР - устройство, позволяющее получать переменное напряжение от 1 до 256 вольт с дискретностью 1 вольт. Оно пригодится для моего тестирования ламп и для регулировки скорости вентиляторов (с обычными диммерами вентиляторы гудят). Идея в том, чтобы заказать небольшой трансформатор с восемью вторичными обмотками: 1, 2, 4, 8, 16, 32, 64 и 128 вольт. Коммутируя их с помощью реле, управляемых Arduino, можно будет получать любые напряжения.
Сегодня я научился управлять шаговым мотором. Мотор 28BYJ-48 вместе с платой управления
стоит всего $1.65. У него есть встроенный редуктор и он делает полный оборот за 2048 шагов или 4096 полушагов.
Сначала я пробовал разбираться с готовыми библиотеками Stepper и AccelStepper, но потом понял, что проще обойтись без них и управлять двигателем напрямую.
Я нашёл в интернете программу управления и схему подключения. Запустил - крутится. Научился делать циклы. Потом разобрался, как создавать функции. В результате через три часа после того, как первый раз в жизни включил Arduino, я создал функцию, которая умеет делать нужное количество шагов мотора.
Вся программа, вращающая двигатель по часовой стрелке на полоборота с паузой 200 мс выглядит так:
int pins[] = {8, 9, 10, 11}; //Задаем пины по порядку
int phases = 8;
bool motorPhases[8][4] = { // [phase][pin]
// -------- pins ----------
// Winding A B A B
// Motor Pin 1 2 3 4
// Color Bl Pi Ye Or
{ 1, 1, 0, 0},
{ 0, 1, 0, 0},
{ 0, 1, 1, 0},
{ 0, 0, 1, 0},
{ 0, 0, 1, 1},
{ 0, 0, 0, 1},
{ 1, 0, 0, 1},
{ 1, 0, 0, 0}
};
void setup() {
for (int i = 0; i < 4; i++) pinMode(pins[i], OUTPUT);
}
int phase = 0;
int _step = 1; // Если у шага поменять знак, на -1 - изменится направление вращения.
void loop() {
int a = 2047;
step (a);
delay(200);
}
void step(int x){
int i;
for(i = 0; i
{
phase += _step;
if (phase > 7) phase = 0;
if (phase < 0) phase = 7;
for (int i = 0; i < 4; i++) {
digitalWrite(pins[i], ((motorPhases[phase][i] == 1) ? HIGH : LOW));
}
// Пауза на вращение на один полушаг
delay(2);
}
digitalWrite(pins[0], LOW);
digitalWrite(pins[1], LOW);
digitalWrite(pins[2], LOW);
digitalWrite(pins[3], LOW);
}
Конечно, предстоит разбираться ещё с очень многим, но успешное начало положено. :)
Сегодня я заказал ещё модуль двухстрочного ЖК-экрана с шестью кнопками
за $2.60, пару модулей с четырьмя силовыми реле
по $1.95 (есть модули и с восемью реле, но я решил, что два модуля по 4 реле удобней), четырёхкнопочную мембранную клавиатуру
за $0.53, четырёхразрядный индикатор
за $1.4. Ещё заказал два разных датчика освещённости
за $0.4 и
за $0.6, но с ними я промахнулся - они пороговые и используются для включения освещения в тёмное время суток. Но ничего, пригодятся. Заказал хитрый датчик с двумя фотодиодами и двумя АЦП
за $1.75 и простенький датчик с аналоговым выходом
за $0.9.
© 2017, Алексей Надёжин
Основная тема моего блога - техника в жизни человека. Я пишу обзоры, делюсь опытом, рассказываю о всяких интересных штуках. А ещё я делаю репортажи из интересных мест и рассказываю об интересных событиях.
Добавьте меня в друзья
здесь. Запомните короткие адреса моего блога:
Блог1.рф и
Blog1rf.ru.
Второй мой проект -
lamptest.ru. Я тестирую светодиодные лампы и помогаю разобраться, какие из них хорошие, а какие не очень.