====== Соленоиды: подключение, управление, примеры работы ======
Используйте соленоиды [[amp>product/solenoid-tau-0520t-12v?utm_source=man&utm_campaign=solenoid&utm_medium=wiki|TAU-0520T]] или [[amp>product/solenoid-tau-0530t-12v?utm_source=man&utm_campaign=solenoid&utm_medium=wiki|TAU-0530T]] для изготовления электрозамков, музыкальных инструментов и даже [[https://ru.wikipedia.org/wiki/%D0%9F%D1%83%D1%88%D0%BA%D0%B0_%D0%93%D0%B0%D1%83%D1%81%D1%81%D0%B0|пушки Гаусса]]{{ :продукты:solenoid-tau:solenoid-tau_overview.jpg |}}
===== Видеообзор =====
{{youtube>RWZVB5Q_4UE?large}}
===== Общие сведения =====
Соленоид — это цилиндрическая обмотка, длина которой значительно превышает ее диаметр. Слово соленоид образовано сочетанием двух слов — «solen» и «eidos», первое из которых переводится как труба, второе — подобный. То есть соленоид — это катушка, по форме напоминающая трубу.
Соленоиды — обычная катушка индуктивности, внутри которой при подаче напряжения возникает магнитное поле. Это поле втягивает в катушку магнитный сердечник, который и совершает механическую работу, например открывает замок или меняет положение клапана.
===== Подключение и настройка =====
Соленоид срабатывает при появлении на его обмотки напряжения 12 вольт, поэтому подключайте его к управляющей плате через [[amp>product/troyka-mosfet-n-channel-v3?utm_source=man&utm_campaign=solenoid&utm_medium=wiki|силовой ключ]] или [[amp>product/troyka-mini-relay?utm_source=man&utm_campaign=solenoid&utm_medium=wiki|реле]].
При подключении к [[amp>collection/arduino?utm_source=man&utm_campaign=solenoid&utm_medium=wiki|Arduino]] или [[amp>product/iskra-js?utm_source=man&utm_campaign=solenoid&utm_medium=wiki|Iskra JS]] удобно использовать [[amp>product/arduino-troyka-shield?utm_source=man&utm_campaign=solenoid&utm_medium=wiki|Troyka Shield]].
{{ :продукты:solenoid-tau:solenoid_troykashield.png |}}
С [[amp>product/arduino-troyka-slot-shield?utm_source=man&utm_campaign=solenoid&utm_medium=wiki|Troyka Slot Shield]] можно обойтись без лишних проводов.
{{ :продукты:solenoid-tau:solenoid_troykaslotshield.png |}}
===== Примеры использования =====
Рассмотрим несколько примеров работы соленоидов.
==== Соленоидный Blink ====
В качестве примера будем включать и выключать соленоид раз в секунду, подключенный через силовой ключ к ''4'' пину.
void setup()
{
// настраиваем пин 4 в режим выхода
pinMode(4, OUTPUT);
}
void loop()
{
// подаём на пин 4 «высокий сигнал»
digitalWrite(4, HIGH);
// ждём 1 секунду
delay(1000);
// подаём на пин 4 «низкий сигнал»
digitalWrite(4, LOW);
// ждём 1 секунду
delay(1000);
}
==== Электромеханический ксилофон ====
Автоматизируем детский музыкальный ксилофон.
=== Как собрать ===
В качестве источника звука возьмём детский ксилофон на семь нот.
{{ :продукты:solenoid-tau:solenoid_xylophone.jpg |}}
Соленоиды буду играть роль ударной палочки, следовательно понадобится семь [[amp>product/solenoid-tau-0520t-12v?utm_source=man&utm_campaign=solenoid&utm_medium=wiki|соленоидов]] и семь [[amp>product/troyka-mosfet-n-channel-v3?utm_source=man&utm_campaign=solenoid&utm_medium=wiki|силовых ключей]]. Ключи подключим с помощью двух [[amp>product/troyka-pad-1x4?utm_source=man&utm_campaign=solenoid&utm_medium=wiki|Troyka Pad 1×4 (Troyka-модуль)]] к управляющей плате [[amp>product/iskra-neo?utm_source=man&utm_campaign=solenoid&utm_medium=wiki|Iskra Neo]] через [[amp>product/troyka-shield?utm_source=man&utm_campaign=solenoid&utm_medium=wiki|Troyka Shield]].
Подключим ''Troyka Pad 1×4'' к ''Troyka Shield''
{{ :продукты:solenoid-tau:solenoid_pad_connect.png?direct |}}
После этого установим силовые ключи и кнопку на ''Troyka Pad 1×4'' и подключим к ним соленоиды
{{ :продукты:solenoid-tau:solenoid_music.png?direct |}}
Подключим 12 В через разъем внешнего питания к плате Iskra Neo.
=== Принцип работы ===
Контроллер понимает мелодии в формате [[https://en.wikipedia.org/wiki/Ring_Tone_Transfer_Language|рингтонов Nokia RTTTL]] и конвертирует их в семинотную мелодию.
=== Исходный код ===
// пины соленоидов
#define SOLENOID_1_PIN 0
#define SOLENOID_2_PIN 1
#define SOLENOID_3_PIN 2
#define SOLENOID_4_PIN 3
#define SOLENOID_5_PIN 4
#define SOLENOID_6_PIN 5
#define SOLENOID_7_PIN 6
// пин кнопки
#define BUTTON_PIN 7
// массив пинов соленоидов
int solenoids[] = {SOLENOID_1_PIN, SOLENOID_2_PIN, SOLENOID_3_PIN,
SOLENOID_4_PIN, SOLENOID_5_PIN, SOLENOID_6_PIN, SOLENOID_7_PIN};
// мелодия в формате RTTTL
unsigned char melodyRTTTL[] = "Impossible:d=16,o=5,b=100:32d,32d#,32d,32d#,32d,32d#,"
"32d,32d#,32d,32d,32d#,32e,32f,32f#,32g,g,8p,g,8p,a#,p,"
"c6,p,g,8p,g,8p,f,p,f#,p,g,8p,g,8p,a#,p,c6,p,g,8p,g,8p,"
"f,p,f#,p,a#,g,2d,32p,a#,g,2c#,32p,a#,g,2c,p,a#4,c";
// вычисление размера массива при компиляции
const int N = sizeof(melodyRTTTL) / sizeof(char);
// имя мелодии
char name[12];
// длительность ноты по умолчанию
char duration[8];
// октава по умолчанию
char octave[8];
// темп / скорость в минуту
char bpm[8];
char melodyNotes[N];
int melodyNotesInt[N];
void setup()
{
// открываем Serial-порт
Serial.begin(9600);
// назначаем пины соленоидов в режиме выхода
for (int i = 0; i < 7; i++) {
pinMode(solenoids[i], OUTPUT);
}
}
void loop()
{
// если нажата кнопка
if (!digitalRead(BUTTON_PIN)) {
// парсим мелодию RTTTL
if (parsingMelody()) {
// если парсинг мелодии формата RTTTL прошёл успешно
// выводим имя мелодии
Serial.println("Parsing is OK");
Serial.println(name);
// выводим длительность мелодии по умолчанию
Serial.println(duration);
// выводим октаву мелодии по умолчани
Serial.println(octave);
// выводим темп мелодии
Serial.println(bpm);
// длина массива мелодии нот
int len = strlen(melodyNotes);
// Serial.println(melodyNotes);
// преобразуем ноты в числовые значения
parsingIntNotes();
// играем музыку соленоидами
playSolenoids(len);
} else {
Serial.println("Error");
}
}
}
// парсинг мелодии формата RTTTL
bool parsingMelody() {
int i = 0;
int j = 0;
// поиск названия мелодии
while (melodyRTTTL[i] != ':') {
name[j++] = melodyRTTTL[i++];
if(j > 12) {
return false;
}
}
// пропуск «:»
i++;
name[j] = '\0';
// поиск длительности ноты
j = 0;
while (melodyRTTTL[i] != ',') {
duration[j++] = melodyRTTTL[i++];
if(j > 4) {
return false;
}
}
// пропуск «,»
i++;
duration[j] = '\0';
// поиск октавы
j = 0;
while (melodyRTTTL[i] != ',') {
octave[j++] = melodyRTTTL[i++];
if(j > 4) {
return false;
}
}
// пропуск «,»
i++;
octave[j] = '\0';
// поиск темпа мелодии
j = 0;
while (melodyRTTTL[i] != ':') {
bpm[j++] = melodyRTTTL[i++];
if(j > 5) {
return false;
}
}
// пропуск «:»
i++;
bpm[j] = '\0';
// запись мелодии нот
j = 0;
while (melodyRTTTL[i] != '\0') {
if (isalpha(melodyRTTTL[i])) {
melodyNotes[j++] = melodyRTTTL[i++];
} else {
i++;
}
}
melodyNotes[j] = '\0';
return true;
}
// функция преобразование буквенных нот мелодии: d, e, f, g, a, b, p
// в числовые значения от 0 до 7
void parsingIntNotes() {
int i = 0;
int j = 0;
while (melodyNotes[i] != '\0') {
if (melodyNotes[i] == 'c') {
melodyNotesInt[j++] = 0;
} else if (melodyNotes[i] == 'd') {
melodyNotesInt[j++] = 1;
} else if (melodyNotes[i] == 'e') {
melodyNotesInt[j++] = 2;
} else if (melodyNotes[i] == 'f') {
melodyNotesInt[j++] = 3;
} else if (melodyNotes[i] == 'g') {
melodyNotesInt[j++] = 4;
} else if (melodyNotes[i] == 'a') {
melodyNotesInt[j++] = 5;
} else if (melodyNotes[i] == 'b') {
melodyNotesInt[j++] = 6;
} else if (melodyNotes[i] == 'p') {
melodyNotesInt[j++] = 8;
}
i++;
}
}
void playSolenoids(int len) {
for(int i = 0; i < len; i++) {
int speed = 100;
Serial.println(melodyNotesInt[i]);
digitalWrite(solenoids[melodyNotesInt[i]], HIGH);
delay(speed);
digitalWrite(solenoids[melodyNotesInt[i]], LOW);
delay(speed);
}
}
===== Характеристики =====
**Соленоид TAU-0520T**
* Рабочее напряжение: 12 В
* Потребляемый ток: до 300 мА
* Сопротивление: 21 Ом
* Ход штока: 10 мм
* Диаметр штока: 6 мм
* Габариты: 20×16×13 м
* Вес: 20 г
**Соленоид TAU-0530T**
* Рабочее напряжение: 12 В
* Потребляемый ток: до 1 А
* Сопротивление: 8 Ом
* Ход штока: 10 мм
* Диаметр штока: 6 мм
* Габариты: 30×16×13 мм
* Вес: 32 г
===== Ресурсы =====
* [[amp>product/solenoid-tau-0520t-12v?utm_source=man&utm_campaign=solenoid&utm_medium=wiki|Соленоид TAU-0520T]] в магазине
* [[amp>product/solenoid-tau-0530t-12v?utm_source=man&utm_campaign=solenoid&utm_medium=wiki|Соленоид TAU-0530T]] в магазине
* [[https://github.com/amperka/hardware-drawings/blob/master/solenoid-tau-0520t-12v.svg|Векторное изображение cоленоида TAU-0520T]]
* [[https://github.com/amperka/hardware-drawings/blob/master/solenoid-tau-0530t-12v.svg|Векторное изображение соленоида TAU-0530T]]