Программирование микроконтроллеров - это увлекательно!
Учитывая, что в "вот это вот всё" я убежал, чтобы развлечься во время, свободное от корпоративщины с дотнетом, сиквелом, иисом и прочими жирными технологиями на много юнитов рэковой стойки, то и на полноценной ардуиновской атмеге328 я надолго не задержался. Купил горстку attiny 13 и 85 и программатор, наговнокодил, пару батареек подключил и "Лампочка горит, дурачок радуется!"
Моему Wall-e уже 9 лет
Всем привет, моему Wall-E уже почти 9 лет и он уже давно пылится на полке, но интерес к нему все еще есть!! Это радует! Что же, если это кому то поможет или подтолкнет к каким-то своим поделкам я буду очень рад.
Я выложу в доступ все что у меня по нему уцелело. Там не так много материалов и нету схем, так как все это делалось интуитивно и в основном держалось в голове, но код очень прост и, местами даже с комментариями, вы без проблем сможете все воссоздать из него.
Не пугайтесь большого количества проводов - для того что показано в его техно демке многое не нужно, что то делалось на вырост, что то просто потому что было и с этим хотелось научиться работать.
Задумывалось гораздо больше возможностей, но моего запала тогда на это не хватило, а сейчас уже лучше начать с нуля.
Наверное это был один из самых интересных моих проектов, и я бы с удовольствием его продолжил, если бы это не было так затратно…
Сохранившиеся материалы - https://disk.yandex.ru/d/0jdj3X1KBP94sw
Bloxa (самое начало работ, маленькая тележка)- https://youtu.be/w3YrngF8gpA
Анимация глаз - https://youtu.be/oDjBNKMvC-0
Та самая демка которая привлекла много внимания. Демо 3- https://youtu.be/pfu-3lwulf4
Как считаете мне стоит его продолжить и сделать v2?
Что бы вы добавили- поменяли?
Готовы поддержать меня?
ESP для Новичков. Дополнение
Как оказалось, в прошлой части я не добавил схему подключения к AMS1117, исправляюсь)
Распиновка USB Type A, на всякий случай. Если не уверены, лучше протестить мультиметром, чтобы определить + -.
Помогите пожалуйста написать скетч
Здравствуйте. Достался по случаю предпусковой подогреватель Webasto termo top c, с физически убитой платой контроллера, прям сломана в нескольких местах от удара, восстановлению не подлежит. Так вот на просторах интернета была найдена схема контроллера на Ардуино для этого котла, также есть скетч к этой плате. Но если со схемой я ещё разберусь сам, подберу детали и спаяю. То вот скетч под мои задачи прошу вас помочь переработать, так как я в этом ни в зуб ногой. Задача стоит следующим образом. Исключить из скетча вывод информации на LCD экран, т.к. это не требуется. Так же надо удалить из программы все что связано с датчиком пламени, у меня в котле его нет. Работу котла контролировать по температуре Если это важно то планирую использовать Ардуино нано. Прошу комрады помощи.
#include <glcd.h>
#include <glcd_Buildinfo.h>
#include <glcd_Config.h>
//MEGA
#include <glcd.h>
#include <config/ks0108.h> // library header
#include <fonts/Arial14.h> // font definition for 14 point Arial font.
#include <fonts/SystemFont5x7.h> // system font
#include <bitmaps/ArduinoIcon.h> // bitmap
// Выходы
int Pin_CandelGlow = 3; // Свеча накала
int Pin_WaterPump = 9; // Водяной насос
int Pin_GasPump = 6; //Дозацыя горючего //10,15,20,25,30,35,40,45,50,100// Количество доз топлива, просто дозацыя.
int Pin_AirPump = 10; //Подача воздуха по ШИМ
// Входы
int Pin_StartStop = 12; // Цыфровой вход Включить или выключить установку
int Pin_VoltageMonitoring = 0; // Постоянное наблюдение за напряжением питания
int Pin_FlameMonitoring = 1; // Наблюдение состаяния пламени
int Pin_Temperatura = 2; // Аналоговае измерение температуры котла-жидкости
float VoltAnalog, Voltage, X, T_heater; // измерение напрежение источника питания
long t_1 = 0; // переменная для хранения времении работы программы в милис
long t_2 = 0; // переменная для хранения времении работы программы в милис
String inData; // переменыя читающая данные текста (текстовые команды)
int Flame, air, val, low, i, b, t, g, p, l;
boolean pauzada = false;
boolean stopp = false;
boolean pauzadaOff = false;
void setup()
{
pinMode(Pin_StartStop, INPUT);
pinMode(Pin_CandelGlow, OUTPUT);
pinMode(Pin_GasPump, OUTPUT);
pinMode(Pin_WaterPump, OUTPUT);
pinMode(Pin_AirPump, OUTPUT);
Serial.begin(9600);
delay(500);
//GLCD.Init() ; //инциализовать для рисования зажиганием пикселей (обычный вывод)
GLCD.Init(NON_INVERTED); // тоже самое
//GLCD.Init(INVERTED); // инциализовать для рисования выключением пикселей (инверсный вывод)
GLCD.ClearScreen(); // погасить все пиксели (если режим NORMAL , если INVERTED - зажечь)
GLCD.ClearScreen(WHITE); // тоже самое
//GLCD.ClearScreen( BLACK); // зажечь все пиксели
GLCD.SetFontColor( BLACK); // печатаем "цветом" BLACK
//*****ТЕКСТОВЫЕ*КОМАНДЫ*****
// test
// tempr
// airon
// airoff
// wateron
// wateroff
// gason -> 5,10,15,20,25,30,35,40,45,50
// glowon сам выллючется
// flame
// start
// stop
}
void test() // кластер тестирования всех мехонизмов и сенсоров
{
digitalWrite(Pin_CandelGlow, HIGH);
Serial.println("Pin_CandelGlow: On Off");
delay(5000);
digitalWrite(Pin_CandelGlow, LOW);
delay(1000);
digitalWrite(Pin_WaterPump, HIGH);
Serial.println("Pin_WaterPump: On Off");
delay(5000);
digitalWrite(Pin_WaterPump, LOW);
delay(1000);
digitalWrite(Pin_GasPump, HIGH);
Serial.println("Pin_GasPump: On Off");
delay(500);
digitalWrite(Pin_GasPump, LOW);
delay(1000);
digitalWrite(Pin_AirPump, HIGH);
Serial.println("Pin_AirPump: On Off");
delay(5000);
digitalWrite(Pin_AirPump, LOW);
delay(1000);
Serial.println(" ");
///Voltage///
volt();
///Flame///
flame();
///StartStop///
if (digitalRead(Pin_StartStop) == HIGH)
{
Serial.println("Pin_StartStop: HIGH");
}
if (digitalRead(Pin_StartStop) == LOW)
{
Serial.println("Pin_StartStop: LOW");
}
Serial.println(" ");
delay(1000);
///Temperatura///
Temperatura();
Serial.print("T_heater: ");
Serial.print(T_heater);
Serial.println(" ");
delay(1000);
}
void ReadTextComands() // читает текст
{
inData = "";
if (Serial.available() > 0)
{
int h = Serial.available();
// if you are getting escape -characters try h--; here
for (int i = 0; i < h; i++)
{
inData += (char)Serial.read();
}
// if you are getting escape -characters try Serial.read(); here
}
//print it out
Serial.println(inData);
delay(10);
}
void flame() // состояния пламени
{
Flame = analogRead(Pin_FlameMonitoring);
Flame = map(Flame, 320, 890, 0, 100);
}
// показания температуры с плавающей запятой
float floatMap(float x, float in_min, float in_max, float out_min, float out_max)
{
return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min;
}
void Temperatura() // температурa
{
int ValueTempratura = analogRead(Pin_Temperatura); // считывает показания сенсоро
T_heater = floatMap(ValueTempratura, 544, 365, 22, 52); // показания термосенсора переводит в температуру /// коректировка температуры
T_heater = constrain(T_heater, -30, 120); // граничет показания температуры от -30 до +150
/*
Serial.print("ValueTempratura: ");/// коректировка температуры
Serial.print(ValueTempratura); /// коректировка температуры
Serial.print(" T: "); /// коректировка температуры
Serial.println((T_heater), 2);
*/
}
void volt()
{
int Pin0_AnalogValue = analogRead(Pin_VoltageMonitoring);
VoltAnalog = 0.0046 * Pin0_AnalogValue;
int R1 = 29500; //30000 Om 29700
int R2 = 7430; //7500 Om 7470
X = (R2 / ((R1 + R2) * VoltAnalog)) * 100;
Voltage = (123.775 / X) * (-1); //131.25 menjatj ot 100 i vihe 132.25
// Serial.print("Voltage: ");
// Serial.print((float)(Voltage), 2);
}
void pauza() // этап паузы котла
{
delay(50);
Serial.println("Pauza");
GLCD.GotoXY(1,3);
GLCD.Puts("Pauza");
while (1)
{
flame();
delay(50);
Serial.println(Flame);
GLCD.GotoXY(1,13); //Переместить «курсор» в указанные координаты
GLCD.Puts("Flame: ");
GLCD. print(Flame,DEC);
digitalWrite(Pin_WaterPump, HIGH);
digitalWrite(Pin_CandelGlow, LOW);
digitalWrite(Pin_GasPump, LOW);
digitalWrite(Pin_AirPump, 80);
if (Flame <= 15)
{
digitalWrite(Pin_AirPump, LOW);
digitalWrite(Pin_WaterPump, LOW);
Serial.println("Pauza On");
digitalWrite(Pin_AirPump, LOW);
digitalWrite(Pin_WaterPump, HIGH);
digitalWrite(Pin_CandelGlow, LOW);
digitalWrite(Pin_GasPump, LOW);
pauzada = true;
break;
}
}
}
void stopproces() // остановкa котла
{
delay(10);
Serial.println("Stoping");
GLCD.GotoXY(1,3);
GLCD.Puts("Stoping");
while (1)
{
flame();
delay(500);
Serial.println(Flame);
GLCD.GotoXY(1,13); //Переместить «курсор» в указанные координаты
GLCD.Puts("Flame: ");
GLCD. print(Flame,DEC);
digitalWrite(Pin_WaterPump, HIGH);
digitalWrite(Pin_CandelGlow, LOW);
digitalWrite(Pin_GasPump, LOW);
analogWrite(Pin_AirPump, 80);
if (Flame <= 15)
{
digitalWrite(Pin_AirPump, LOW);
digitalWrite(Pin_WaterPump, LOW);
for ( i = 0; i < 3 ; i++ ) // 3 коротких продува, окончательное завершение процеса
{
digitalWrite(Pin_AirPump, HIGH);
delay(1500);
digitalWrite(Pin_AirPump, LOW);
delay(1500);
}
digitalWrite(Pin_AirPump, LOW);
digitalWrite(Pin_WaterPump, LOW);
digitalWrite(Pin_CandelGlow, LOW);
digitalWrite(Pin_GasPump, LOW);
pauzadaOff = false;
pauzada = false;
Serial.println("Proces Off");
GLCD.GotoXY(1,23); //Переместить «курсор» в указанные координаты
GLCD.Puts("Proces Off");
delay(5000);
GLCD.ClearScreen(WHITE);
break;
}
}
}
void loop()
{
GLCD.SelectFont(System5x7,BLACK);
Temperatura();
volt();
GLCD.GotoXY(85,3); //Переместить «курсор» в указанные координаты
GLCD.Puts("T:");
GLCD. print((float)(T_heater)); //печатает вещественное число с двумя знаками после запятой.
GLCD.GotoXY(85,13); //Переместить «курсор» в указанные координаты
GLCD.Puts("V:");
GLCD. println((float)(Voltage));
Serial.print("T: ");
Serial.println(T_heater);
Serial.print("V: ");
Serial.println(Voltage);
/////////////////////////////////////////////
delay(2000);
ReadTextComands();
GLCD.GotoXY(1,23);
GLCD.print(inData);
Serial.print(inData);
/////////////////////////////////////////////
///Test///
if (String(inData) == "test") // начать тестирование систем
{
Serial.println("TestRun");
test();
}
///temperatura///
if (String(inData) == "tempr")
{
Temperatura();
Serial.print("T_heater: ");
Serial.println(T_heater);
}
///Air///
if (String(inData) == "airon") // включить или выключить подачу воздуха (только при полной остоновке котла)
{
Serial.println("AirOn");
digitalWrite(Pin_AirPump, HIGH);
t_1 = millis();
while ((t <= 300) || (String(inData) == "airoff")) // выключить после 5 минут работы или принудительно выключить
{
ReadTextComands();
t_2 = millis();
if (t_2 < 0)
{
(t_2)*(-1);
}
long t = (t_2 - t_1) / 1000;
delay(2000);
if ((String(inData) == "airoff") || (t >= 300))
{
Serial.println("AirOff");
digitalWrite(Pin_AirPump, LOW);
break;
}
}
}
///WaterPump///
if (String(inData) == "wateron") // включить или выключить церкулецыонный насос (только при полной остоновке котла)
{
Serial.println("WaterOn");
digitalWrite(Pin_WaterPump, HIGH);
t_1 = millis();
while ((t <= 600) || (String(inData) == "wateroff")) // выключить после 10 минут работы или принудительно выключить
{
ReadTextComands();
t_2 = millis();
if (t_2 < 0)
{
(t_2)*(-1);
}
long t = (t_2 - t_1) / 1000;
delay(500);
if ((String(inData) == "wateroff") || (t >= 600))
{
Serial.println("WaterOff");
digitalWrite(Pin_WaterPump, LOW);
break;
}
}
}
///GasOn///
if (String(inData) == "gason") // подача топлива (только при полной остоновке котла)
{
Serial.println("Enter the number of Gas doses!?");
Serial.println("5,10,15,20,25,30,35,40,45,50");
t_1 = millis();
while (1) // ждём получения команды на количество доз топлива
{
delay(100);
int val = Serial.parseInt();
if ((val == 5) || (val == 10) || (val == 15) || (val == 20) || (val == 25) || (val == 30) || (val == 35) || (val == 40) || (val == 45) || (val == 50)) //Дозацыя по команде от компютера
{
Serial.println(" ");
Serial.print("GasPumping: ");
Serial.println(val);
for (i = 0; i < val; i++) //энное раз прыскaет топливом
{
digitalWrite(Pin_GasPump, HIGH);
delay(150);
digitalWrite(Pin_GasPump, LOW);
delay(250);
}
break;
}
t_2 = millis();
if (t_2 < 0)
{
(t_2)*(-1);
}
long t = (t_2 - t_1) / 1000;
if (t > 60) // до 1 мин
{
break;
}
// ждём нужную команду до 1 мин..... на левак не реогирует
Serial.println(".");
}
}
///GlowOn///
if (String(inData) == "glowon") //включить свечу накала на 7 секунд
{
digitalWrite(Pin_CandelGlow, HIGH);
Serial.println("Pin_CandelGlow: On");
delay(7500);
digitalWrite(Pin_CandelGlow, LOW);
Serial.println("Pin_CandelGlow: Off");
}
if (String(inData) == "flame")
{
for( i=0; i<50; i++ )
{
flame();
Serial.print("Flame:");
Serial.println(Flame);
Serial.println(i);
delay(1000);
}
i=0;
}
if (T_heater >= 85) //вслучае перегрева опевещает и ждёт пока остынет при этом недаст запустится повторно
{
GLCD.ClearScreen(WHITE);
GLCD.SelectFont(System5x7,BLACK);
delay(1000);
while (1)
{
Temperatura();
delay(500);
Serial.print("DANGEROUUS CONDITION ");
Serial.println("VERY HOT, DONT START");
Serial.print(" Temperatura: ");
Serial.println(T_heater);
GLCD.GotoXY(1,13); //Переместить «курсор» в указанные координаты
GLCD.Puts("VERY HOT");
GLCD.GotoXY(1,23); //Переместить «курсор» в указанные координаты
GLCD.Puts("DANGEROUUS CONDITION");
GLCD.GotoXY(1,33); //Переместить «курсор» в указанные координаты
GLCD.Puts("Temperatura: ");
GLCD. print((float)(T_heater)); //печатает вещественное число с двумя знаками после запятой.
if (T_heater <= 70)
{
GLCD.ClearScreen(WHITE);
GLCD.SelectFont(System5x7,BLACK);
break;
}
}
}
///********ПАУЗА*ЖДЁТ*СВАЕГО*МОМЕНТА*СТAТЬ*НЕ*ПАУЗOЙ*********///
//?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
if (pauzada == true)
{
while (1)
{
Temperatura();
delay(500);
ReadTextComands(); // отослать команду если надо всё выключить
delay(500);
Serial.print("Temperatura: ");
Serial.println(T_heater);
GLCD.GotoXY(1,23); //Переместить «курсор» в указанные координаты
GLCD.Puts("Temperatura: ");
GLCD. print((float)(T_heater)); //печатает вещественное число с двумя знаками после запятой.
if ( T_heater <= 55 )
{
pauzadaOff = true;
break;
}
if ((String(inData) == "stop") || (digitalRead(Pin_StartStop) == HIGH)|| (b == 4))
{
GLCD.ClearScreen(WHITE);
GLCD.SelectFont(System5x7,BLACK);
stopproces();
break;
}
}
}
///****************************** ЗАПУСК УСТАНОВКИ ******************************///
if ((String(inData) == "start") || (digitalRead(Pin_StartStop) == HIGH) || (pauzadaOff == true))
{
if (T_heater >= 70) //вслучае перегрева опевещает и ждёт пока остынет при этом недаст запустится повторно так как тут в цыкле застрянет
{
Temperatura();
Serial.print("DANGEROUUS CONDITION ");
Serial.println("VERY HOT, DONT START");
Serial.print("Temperatura: ");
Serial.println(T_heater);
return;
}
Serial.flush();
Serial.println("StartHeating");
GLCD.ClearScreen(WHITE);
GLCD.SelectFont(System5x7,BLACK); //указать щрифт и ево робочий режим
GLCD.GotoXY(1,3); //Переместить «курсор» в указанные координаты
GLCD.Puts("StartHeating"); //STARTING,WORKING,FINISHED,ERROR
analogWrite(Pin_AirPump, 50); //вkлючон воздушный вентилятор
delay(5000);
digitalWrite(Pin_CandelGlow, HIGH);
delay(7500);
digitalWrite(Pin_CandelGlow, LOW);
delay(7500);
for ( b = 0; b < 4; b++ ) // 4 раза запускает печь
{
lable:
digitalWrite(Pin_CandelGlow, HIGH);
delay(9000);
Serial.println("Gas pumping:");
GLCD.GotoXY(1,13); //Переместить «курсор» в указанные координаты
GLCD.Puts("Gas pumping");
for ( i = 0; i < 10; i++) // 10 раз прыскнет топливом
{
digitalWrite(Pin_GasPump, HIGH);
delay(100);
digitalWrite(Pin_GasPump, LOW);
delay(300);
}
digitalWrite(Pin_CandelGlow, LOW); //выключить свечу накала
flame();
Serial.print("Flame: ");
Serial.println(Flame);
GLCD.GotoXY(1,23); //Переместить «курсор» в указанные координаты
GLCD.Puts("Flame: ");
GLCD. print(Flame,DEC);
///****************************** РАБОТА УСТАНОВКИ ******************************///
if (Flame >= 20 && i == 10 ) //если фото сенсор фиксирует пламя, то программа проходит далее
{
digitalWrite(Pin_CandelGlow, LOW); //выключить свечу накала ewo raz
analogWrite(Pin_AirPump, 50); //вkлючон воздушный вентилятор
digitalWrite(Pin_WaterPump, HIGH); //вклить воденой насос
delay(100);
digitalWrite(Pin_GasPump, HIGH);
delay(100);
digitalWrite(Pin_GasPump, LOW);
for ( l = 50; l > 0; l--) // начало разгона установки в плавном режиме
{
digitalWrite(Pin_GasPump, HIGH);
delay(100);
digitalWrite(Pin_GasPump, LOW);
delay(450);
flame();
Serial.print(l);
Serial.print(" Flame: ");
Serial.println(Flame);
GLCD.GotoXY(1,23); //Переместить «курсор» в указанные координаты
GLCD.Puts("Flame: ");
GLCD. print(Flame,DEC);
GLCD.Puts(" i: ");
GLCD. print(l);
if (Flame <= 20)
{
goto lable;
break;
}
}
GLCD.ClearScreen(WHITE); // Очистить экран
GLCD.SelectFont(System5x7,BLACK); //указать щрифт и ево робочий режим
while ((Flame >= 20) && (T_heater <= 82)) // зайдёт в цыкл если есть плымя и температура ниже 80
{
ReadTextComands();
flame();
Temperatura();
volt();
digitalWrite(Pin_WaterPump, HIGH); //вкюлить воденой насос
///*** режимы работы изменяющиеся от температуры***///
if (T_heater <= 30)
{
air = map(T_heater, 5, 30, 50, 80); //меняем подачу воздуха в зависемости от температуры
air = constrain(air, 50, 80);
t = map(T_heater, 5, 30, 450, 300); //меняем время выключенного состояния топливного дозатора в зависемости от температуры
t = constrain(t, 300, 450);
Serial.print("T<=30 ");
GLCD.GotoXY(1,13); //Переместить «курсор» в указанные координаты
GLCD.EraseTextLine(eraseFULL_LINE);
GLCD.Puts("T<=30");
}
if ((30 <= T_heater) && ( T_heater <= 60))
{
air = map(T_heater, 30, 60, 80, 120);
air = constrain(air, 80, 120);
t = 300;
Serial.print("30<=T<=60 ");
GLCD.GotoXY(1,13); //Переместить «курсор» в указанные координаты
GLCD.EraseTextLine(eraseFULL_LINE);
GLCD.Puts("30<=T<=60");
}
if ( (60 <= T_heater) && (T_heater <= 80) )
{
air = map(T_heater, 60, 80, 120 , 80);
air = constrain(air, 80, 120);
t = map(T_heater, 60, 80, 300, 600);
t = constrain(t, 300, 600);
Serial.print("60<=T<=80 ");
GLCD.GotoXY(1,13); //Переместить «курсор» в указанные координаты
GLCD.EraseTextLine(eraseFULL_LINE);
GLCD.Puts("60<=T<=80");
}
analogWrite(Pin_AirPump, air); //работа подачи воздуха
///*************************************************///
Serial.print("F: ");
Serial.print(Flame);
Serial.print(" T: ");
Serial.print(T_heater);
Serial.print(" A: ");
Serial.print(air);
Serial.print(" Low(t): ");
Serial.print(low);
Serial.print(" V: ");
Serial.println(Voltage);
digitalWrite(Pin_GasPump, HIGH);
delay(100);
digitalWrite(Pin_GasPump, LOW);
low = t;
delay(low);
GLCD.GotoXY(1,3);
GLCD.Puts("Heating");
GLCD.GotoXY(50,3); //Переместить «курсор» в указанные координаты
GLCD.Puts("Volt: ");
GLCD. print((float)(Voltage));
GLCD.GotoXY(1,23); //Переместить «курсор» в указанные координаты
GLCD.Puts("Flame: ");
GLCD. print(Flame,DEC);
GLCD.GotoXY(1,33); //Переместить «курсор» в указанные координаты
GLCD.Puts("Temperatura: ");
GLCD. print((float)(T_heater)); //печатает вещественное число с двумя знаками после запятой.
GLCD.GotoXY(1,43); //Переместить «курсор» в указанные координаты
GLCD.Puts("Air: ");
GLCD. print(air,DEC);
GLCD.GotoXY(1,53); //Переместить «курсор» в указанные координаты
GLCD.Puts("Low(t): ");
GLCD. print(t,DEC);
//****************************** ОСТАНОВКА*ПРИНУДИТЕЛЬНАЯ*ПРОПАЛО_ПЛАМЯ*ПАУЗА ******************************//
if ((String(inData) == "stop") || (digitalRead(Pin_StartStop) == HIGH) || (Flame <= 20)) // Нажата кнопка включить выключить или пропало плямя, то полная остановка.
{
GLCD.ClearScreen(WHITE); // Очистить экран
GLCD.SelectFont(System5x7,BLACK); //указать щрифт и ево робочий режим
stopp = true;
break;
}
if (T_heater >= 80)
{
GLCD.ClearScreen(WHITE); // Очистить экран
GLCD.SelectFont(System5x7,BLACK); //указать щрифт и ево робочий режим
pauzada = true;
break;
}
}
if ( stopp == true )
{
stopp = true;
break;
}
if (pauzada == true)
{
pauzada = true;
break;
}
}
if ( stopp == true )
{
stopp = true;
break;
}
if (pauzada == true)
{
pauzada = true;
break;
}
}
if (( b == 4 ) || (stopp == true)) // Остановка запуска если незапустился с 4 раза, завершить работу котла
{
stopproces();
}
if (pauzada == true)
{
pauza();
}
}
}
Схема и скетч взяты отсюда: https://forum.amperka.ru/threads/Самодельный-блок-управления-webasto.7672/
Make DIY - Роботы на Arduino Uno - Своими руками
10 свежих модулей и DIY наборов с AliExpress для любителей творческих идей
Предлагаю на ваше обозрение очередную подборку различных электронных модулей и DIY конструкторов для людей, которые ценят творческий процесс в изготовлении различных устройств своими руками.
1. Модуль индикатора уровня заряда Li-Ion аккумуляторов
Модуль индикатора емкости литиевой батареи представляет собой компактное устройство, разработанное для проверки и отображения уровня заряда Li-ion аккумуляторов.
Устройство обеспечивает удобный визуальный способ контроля за текущим состоянием батареи, что является важным аспектом эффективного использования электронных устройств.
Модуль поддерживает номинальное напряжение в диапазоне от 3.4 до 4.0 вольт для ячеек 1S литиевых батарей.
Модуль обладает простым интерфейсом и может легко интегрироваться в различные устройства. Простота подключения позволяет использовать его как в профессиональных электронных конструкциях, так и для любительских проектов.
Высококачественные компоненты обеспечивают надежную работу индикатора, а эффективная энергопотребляемость позволяет минимизировать влияние на общий расход энергии устройства.
Компактные размеры модуля обеспечивают удобство при монтаже и позволяют включать его в ограниченное пространство электронных устройств.
Модуль имеет стандартные выводы для подключения к положительному и отрицательному полюсам литиевой батареи.
У продавца в наличие индикаторы на различное напряжение сборок батарей: 1S - 4 V, 2S - 8 V, 3S - 12.4 V и 4S - 16.2 V, учитывайте это при заказе.
Цена на момент публикации - 59 ₽
2. Тестер емкости и сопротивления Li-ion аккумуляторов типоразмера 18650
Универсальный тестер и измеритель предназначен для одновременного тестирования до четырех аккумуляторов формата 18650 Li-ion, предоставляя подробную информацию о их емкости и внутреннем сопротивлении.
Устройство поддерживает одновременное тестирование до четырех аккумуляторов 18650 Li-ion, позволяя пользователям эффективно управлять большим количеством батарей.
Каждый канал может быть настроен независимо, что позволяет проводить раздельную зарядку и разрядку для точного контроля процессов.
Устройство поддерживает до 9 циклов зарядки и разрядки в автоматическом режиме, что особенно полезно для тестирования циклических характеристик аккумуляторов.
Встроенный вентилятор обеспечивает активное охлаждение, предотвращая перегрев и обеспечивая стабильность работы устройства в течение продолжительных тестов с нагрузкой.
Для измерения внутреннего сопротивления аккумуляторов используется двухпроводный метод, обеспечивая точные результаты.
Минусы устройства: не поддерживает зарядку литий-железо-фосфатных аккумуляторов, а также используемые холдеры дают возможность тестировать только аккумуляторы с плоским контактом.
Обеспечивает безопасность использования аккумуляторов, предотвращая перегрев и предоставляя подробную информацию о состоянии каждого аккумулятора. Пользователи должны соблюдать указания по безопасности, предоставленные производителем.
Цена на момент публикации - 982 ₽
3. Цифровой измеритель емкости конденсаторов DIY
Комплект представляет собой эффективное устройство для точного измерения емкости конденсаторов.
Компактный и легко собираемый измеритель подходит для тех, кто интересуется электроникой и желает создать собственный прибор для измерения емкости.
Напряжение питания прибора варьируется в диапазоне от 8 до 16 вольт, что обеспечивает устойчивую работу измерителя при различных источниках питания.
Низкое энергопотребление с током в 30 мА делает прибор энергоэффективным и подходящим для длительного использования с минимальным воздействием на ресурсы батарей.
Автоматическое переключение диапазона обеспечивает универсальность в измерении емкости конденсаторов. Диапазон измерений варьируется от 1 пикофарада до 500 микрофарад, позволяя работать с различными типами конденсаторов.
Четырехразрядный светодиодный дисплей обеспечивает яркое и четкое отображение измеренных значений емкости.
Присутствие функции калибровки позволяет пользователю корректировать и точно настраивать измеритель для достижения высокой точности результатов.
Набор предоставляет электронщикам и радиолюбителям возможность создать свой собственный цифровой измеритель емкости и расширить свои навыки в области электроники.
Прибор может использоваться для тестирования конденсаторов при создании, обслуживании и ремонте электронных устройств.
DIY комплект включает в себя все необходимые компоненты и подробные инструкции по сборке, что обеспечивает простоту в создании и настройке измерителя.
Цена на момент публикации - 1 333 ₽
4. Логический тестер уровня сигнала
Логический пробник, с помощью которого можно определить присутствие сигналов высокого или низкого уровня в электронных приборах, контролировать состояние выходов микросхем, что поможет лучше понять протекающие в устройствах процессы.
При настройке разных устройств не всегда требуется знать точные параметры, а достаточно лишь проверить наличие сигналов.
Логический тестер уровня сигнала представляет собой отличный инструмент для эффективного тестирования цифровых схем, обеспечивая быстрое и точное определение присутствия сигналов высокого или низкого уровня в электронных устройствах.
Логический пробник становится незаменимым помощником при контроле состояния выходов микросхем и настройке различных устройств:
Красный светодиод светится при обнаружении высокого уровня сигнала (>2.4V), указывая на логическую единицу;
Зеленый светодиод горит при обнаружении низкого уровня сигнала (<0.6V), указывая на логический ноль;
Синий светодиод индицирует высокое сопротивление.
Благодаря интуитивно понятной индикации светодиодами, тестер легко воспринимается даже пользователями без специальных знаний.
Тестер позволяет проводить проверку уровня сигнала без необходимости использования сложных и дорогих измерительных приборов.
Логический тестер уровня сигнала является надежным помощником для электронщиков и радиолюбителей, обеспечивая оперативное тестирование и анализ цифровых схем.
Цена на момент публикации - 70 ₽
5. Arduino Make Your Uno Kit
Набор представляет собой увлекательный и образовательный комплект, который позволяет поклонникам Arduino самостоятельно собрать и настроить свою собственную плату с функциональным синтезатором звука.
Набор идеально подходит для тех, кто желает глубже понять структуру и работу популярной микроконтроллерной платформы.
В набор входят печатные платы для Arduino и синтезаторов, последовательный адаптер с подключением USB-C, резонатор 16 МГц, микроконтроллер ATMega 328p, светодиоды, резисторы, конденсаторы, разъемы ввода/вывода, печатные платы для пайки и отладочных тестов.
Набор обеспечивает не только практический опыт по сборке электроники, но и позволяет создать музыкальный инструмент, который может генерировать звуки.
Для тех, кто интересуется Arduino и хочет расширить свои знания, этот набор представляет собой увлекательное и образовательное приключение.
Набор "Arduino Make Your Uno" отличается своей доступностью и является отличным выбором для тех, кто хочет погрузиться в мир Arduino и создать что-то уникальное собственными руками.
Цена на момент публикации - 11 687 ₽
6. Электромагнитная пушка "Имитация Гаусса"
Набор "Сделай Сам", представляет собой увлекательный и образовательный комплект, который позволяет создать простое устройство, иллюстрирующее принцип работы электромагнитных ускорителей, аналогичных пушкам Гаусса.
Набор идеально подходит для изучения основ электронных технологий и преобразования электрической энергии в магнитную.
Пушка моделирует устройство, которое использует электромагнитные силы для ускорения металлических снарядов.
Пушка предоставляет возможность увлекательной и практической деятельности для понимания принципов работы электромагнитов и магнитных полей. Идеально подходит для обучения основам электроники и физики.
Набор работает от батареек с напряжением 3 вольта, обеспечивая безопасность и простоту использования.
Важно отметить, что электромагнитная пушка, созданная с помощью этого набора, предназначена исключительно для демонстрационных и образовательных целей.
Цена на момент публикации - 1 132 ₽
7. Развивающая игрушка для детей робот-скалолаз
Робот-скалолаз - это увлекательный DIY-набор, созданный для развития моторики рук и стимулирования интереса детей к научным и инженерным принципам.
Игрушка обладает не только образовательными, но и развивающими характеристиками, а также изготовлена из высококачественных и экологически чистых материалов, обеспечивая безопасность и долговечность.
Длина робота-скалолаза составляет 12 см, ширина - 5 см, а высота - 4 см. Конструкция разработана с учетом безопасности и простоты сборки, что делает ее идеальной для детей.
Игра с конструктором позволяет детям не только создавать увлекательные модели, но и погружаться в мир науки. Работа с простыми механизмами стимулирует интерес к физике и механике.
Набор поставляется с подробной инструкцией, что позволяет ребенку самостоятельно собрать робота-скалолаза без использования дополнительных инструментов.
Робот-скалолаз является отличным подарком для детей, способствуя их увлечению наукой и технологией.
Важно обеспечить помощь детям в процессе сборки и игры для максимальной безопасности и полного понимания процесса.
Цена на момент публикации - 125 ₽
8. Солнечная электростанция
Набор представляет собой увлекательный комплект, спроектированный для сборки солнечной электростанции, использующей возобновляемую энергию солнца для зарядки гаджетов.
Учебный набор включает в себя разнообразные электронные модули, датчики и другие компоненты, предоставляя возможность создания 11 увлекательных проектов.
В комплект входят: 4 датчика освещения, 2 сервопривода, панель солнечных батарей, модули зарядки смартфона, датчика температуры и влажности, датчика света ВН1750, зуммер, дисплей LCD1602, кнопочный модуль и другие детали, необходимые для сборки солнечной электростанции.
Идеально подходит для обучения детей и подростков основам энергосберегающих технологий и возобновляемых источников энергии.
Модули зарядки смартфона добавляют функциональность, позволяя использовать собранную электростанцию для зарядки различных устройств.
Набор способствует лучшему пониманию программирования и электронных технологий, развивая логическое мышление и творческий потенциал.
Детали комплекта легко соединяются, а подробные инструкции делают сборку доступной для широкого круга пользователей.
Набор "Солнечная Электростанция" - это не только образовательная, но и вдохновляющая игрушка, которая совмещает в себе обучение и увлечение мира технологий.
Цена на момент публикации - 6 340 ₽
9. Генератор ШИМ для управления шаговым двигателем
Генератор представляет собой эффективное устройство для управления шаговыми двигателями.
Разработанный специально для использования с драйверами шаговых моторов, этот модуль предоставляет простое и надежное решение для тех, кто не желает заморачиваться с программированием для Arduino или не имеет специализированных плат 3D принтеров.
Переключение между режимами производится с использованием джампера. Модуль предоставляет два режима генерации сигналов: импульсные сигналы или ШИМ сигналы.
Поддерживает шаговые двигатели с напряжением питания от 5 до 35 вольт. Обеспечивает гибкость и применимость к различным моделям шаговых моторов.
Подходит для контроля за двумя шаговыми двигателями одновременно или независимо друг от друга. Обеспечивает высокий уровень мощности и контроля.
Идеально подходит для создания мобильных робототехнических устройств и других автоматизированных систем. Применим в проектах DIY (сделай сам) и экспериментах.
Не требует сложной настройки или программирования, что делает его доступным для широкого круга пользователей.
Представленный генератор ШИМ - это надежное устройство, спроектированное для облегчения управления шаговыми двигателями, что делает его идеальным компонентом для создания электронных проектов, требующих точного и надежного управления движением.
Цена на момент публикации - 184 ₽
10. Электродвигатель с редуктором
Электродвигатель с металлическим редуктором N20 – это высокопроизводительное устройство, предназначенное для широкого спектра применений в DIY творчестве, робототехнике и других электронных проектах.
Снабженный коллекторным электрическим двигателем и эффективным металлическим редуктором, он обеспечивает надежную и точную работу.
Рабочий диапазон напряжения от 3V до 12V делает этот электродвигатель гибким и применимым в различных проектах.
Диапазон скорости вращения от 30 до 140 оборотов в минуту обеспечивает разнообразные возможности для различных проектов.
Потребляемый ток при номинальном напряжении 6V составляет 35мА, что обеспечивает эффективное и экономичное использование энергии.
Обладает значительным крутящим моментом для своих размеров в 0,25Нм, что делает его подходящим для проектов, требующих механических усилий.
Идеально подходит для DIY творчества, робототехнических проектов, электромеханических устройств и других сфер.
Металлический редуктор N20 обеспечивает надежность и долгий срок службы, даже при интенсивном использовании.
Легкость интеграции в различные конструкции и проекты благодаря компактным размерам и универсальному дизайну.
Электродвигатель с редуктором N20 – это идеальное решение для тех, кто ищет эффективный и надежный мотор с высоким крутящим моментом для своих DIY проектов.
От простых механических устройств до сложных робототехнических систем – этот электродвигатель подарит новые возможности вашим творческим идеям.
Цена на момент публикации - 251 ₽