http://arduino.ru/
Сразу оговорюсь, что пользуюсь разработчиком на английском языке и с терминологией на русском знаком поскольку-постольку, тоесть не ахти как.
Недавно начал я приглядываться к автоматике. Купить готовую у нас можно но ценник от 700 американских
рублей навел на мысль сообразить автоматику самому и так чтоб не сильно дорого было и главное доступно большинству
желающих автоматизировать свой аппарат.
Начну с клапана, поначалу думал использовать электромагнитный клапан, вот такой
а что, открывается и закрывается он моментально.
Подключил, погонял и решил убрать его, именно из-за того, что он быстро открывается происходит резкий скачок давления в системе охлаждения. Может комуто и нравится ,что вся система сотрясается но мне как-то не очень. Поменял его на моторизированный клапан
Он плавно открывается и плавно зарывается и самое примечательное если его использовать в паре с цифровым термометром то его можно открыть именно настолько насколько нужно.
Контролируется он легко с помощью L298N Dual H Bridge DC For Arduino
Управлять эта штука может сразу двумя электро-моторами до 35 вольт постоянного тока или с ее помощью можно управлять двумя шаговыми моторами.
Так-же нужен термометр (термопара)
и цифровой температурный модуль MAX6675 для Ардвино
собственно "мозг" системы Arduino UNO
Во что мне все это обошлось (в долларах США)
Arduino UNO - 3,82
моторизированный клапан - 20
L298N (управление мотором клапана)- 6,54
Термометр - 5,40
Цифровой температурный модуль - 7,03
12 вольтовый блок питания - 2
И того = 44,79
Если кому интересно могу дать ссылки на детали или если кто знает где их взять дешевле, не стесняйтесь, делитесь
Написал две коротеньких программы для чтения температуры и для управления мотором. Прикреплю их в следующих публикациях.
По отдельности все отлично работает. Теперь дело за малым, програмно привязать термометр к мотору и дело в шляпе.
фотка с термометром -
и фотка с мото-клапаном
Arduino или дешевая автоматика
Бугор
Магистр
Город Герой Магадан, St. Louis
211 103
09 Сент. 15, 01:35
max-yu
Специалист
Москва
192 82
Отв.1 09 Сент. 15, 11:16
Я эту проблему решил немного другим способом, но с Ардуино тоже.Вначале пошел таким путем, как у тебя, потом переделал.
Получилось дешевле... Стабильнее и удобнее. Меньше деталей.
Уже работает несколько месяцев, полет отличный...
Это автономка.
[Автономная система охлаждения. Страница 261]
Получилось дешевле... Стабильнее и удобнее. Меньше деталей.
Уже работает несколько месяцев, полет отличный...
Это автономка.
[Автономная система охлаждения. Страница 261]
gdv2002
Кандидат наук
Зауралье
466 109
Отв.2 09 Сент. 15, 11:25, через 10 мин
Буду следить.
Первый
Кандидат наук
СССР
370 46
Отв.3 09 Сент. 15, 11:56, через 32 мин
Нужно
что он быстро открывается происходит резкий скачок давления в системе охлажденияБугор, 09 Сент. 15, 01:35Кран или дросселированное отверстие после клапана плюс рессивер сгладят броски давления. Китайский термостат KSD301 откроет клапан когда нужно. Ставить Ардуину для открытия воды ИМХО расточительно.
Бугор
Магистр
Город Герой Магадан, St. Louis
211 103
Отв.4 09 Сент. 15, 17:08
есть разные методы програмной калибровки термопары. Здесь я опишу калибровку используя две крайние точки диапозона температуры, например замерзание воды и кипения без учета атмосферного давления, тоесть дипазон от ~0 до ~100 градусов
Для выполнения калибровки датчика температуры по двум крайним точкам :
Возьмите два измерения с вашим датчиком: один возле нижнего конца диапазона измерения и один возле верхнего конца диапазона измерения .
Запишите эти показания как "RawLow" и "RawHigh"
Повторите эти измерения с эталонным(калиброванным) прибором . Запишите эти показания как "ReferenceLow" и "ReferenceHigh"
Рассчитать "RawRange" = RawHigh - RawLow .
Рассчитать "ReferenceRange" = ReferenceHigh - ReferenceLow
В вашем коде посчитайте правильное значение "CorrectedValue" используя формулу ниже:
CorrectedValue = ((( RawValue - RawLow ) * ReferenceRange ) / RawRange ) + ReferenceLow
Для выполнения калибровки датчика температуры по двум крайним точкам :
Возьмите два измерения с вашим датчиком: один возле нижнего конца диапазона измерения и один возле верхнего конца диапазона измерения .
Запишите эти показания как "RawLow" и "RawHigh"
Повторите эти измерения с эталонным(калиброванным) прибором . Запишите эти показания как "ReferenceLow" и "ReferenceHigh"
Рассчитать "RawRange" = RawHigh - RawLow .
Рассчитать "ReferenceRange" = ReferenceHigh - ReferenceLow
В вашем коде посчитайте правильное значение "CorrectedValue" используя формулу ниже:
CorrectedValue = ((( RawValue - RawLow ) * ReferenceRange ) / RawRange ) + ReferenceLow
Бугор
Магистр
Город Герой Магадан, St. Louis
211 103
Отв.5 09 Сент. 15, 17:14, через 7 мин
Ставить Ардуину для открытия воды ИМХО расточительноПервый, 09 Сент. 15, 11:56микропроцессор спсобен управлять несколькими процессами одновременно
тоесть можно регулировать охлаждение пара и нагрев куба, в моем случае с точностью до 0,25 градуса.
Бугор
Магистр
Город Герой Магадан, St. Louis
211 103
Отв.6 09 Сент. 15, 17:32, через 18 мин
для тех кому интересно но програмировать сами не могут
первым делом вам понадобится Среда разработки Arduino http://arduino.ru/Arduino_environment
Простая програмка цифрового термометра (без калибровки)
две наклонных палочки // означают коментрарий, тоесть вы можете написать памятку/пояснение себе или кому другому непосредственно в вашем коде или отключить линию кода попросту поставив перед ней //
первым делом вам понадобится Среда разработки Arduino http://arduino.ru/Arduino_environment
Простая програмка цифрового термометра (без калибровки)
две наклонных палочки // означают коментрарий, тоесть вы можете написать памятку/пояснение себе или кому другому непосредственно в вашем коде или отключить линию кода попросту поставив перед ней //
//Загрузите библиотеку https://github.com/adafruit/MAX6675-library
//и распакуйте ее в C:\Program Files (x86)\Arduino\libraries
// Примитивный скетч для модуля MAX6675
#include "max6675.h"
int thermo_vcc_pin = 13;
int ktcSO = 12;
int ktcCS = 11;
int ktcCLK = 10;
MAX6675 ktc(ktcCLK, ktcCS, ktcSO);
void setup() {
Serial.begin(9600);
// дадим нашему модулю пол секунды на стабилизацию
delay(500);
pinMode(thermo_vcc_pin, OUTPUT);
digitalWrite(thermo_vcc_pin, HIGH);
}
void loop() {
// тест
Serial.print("Deg C = ");
Serial.println(ktc.readCelsius());
delay(1000);
}
Бугор
Магистр
Город Герой Магадан, St. Louis
211 103
Отв.7 09 Сент. 15, 17:52, через 20 мин
собственно подключение модуля MAX6675 к Ардвино, белую точку я поставил сам чтобы виднее было GND, глаза уже не те
так должно выглядеть с подключеным USB и термопарой. Как определить правильность подключения вашей термопары? -
Если при повышении температуры ваша система показывает понижение, попросту поменяйте местами два провода идущие от термопары к модулю MAX6675.
Кстати, в данном случае дополнительное питание не нужно, Ардвино будет запитано от USB, что очень удобно в процессе доработки потому, что и микропроцессор получит достаточно питания и команда Serial.begin(9600); даст волзможность читать показания вашего термометра используя монитор серийного порта. (без паники, это просто звучит сложно но я все покажу)
Позже, когда ваша система будет подключена к постоянному месту работы можно использовать блок питания постоянного тока от 5В до 12В.
так должно выглядеть с подключеным USB и термопарой. Как определить правильность подключения вашей термопары? -
Если при повышении температуры ваша система показывает понижение, попросту поменяйте местами два провода идущие от термопары к модулю MAX6675.
Кстати, в данном случае дополнительное питание не нужно, Ардвино будет запитано от USB, что очень удобно в процессе доработки потому, что и микропроцессор получит достаточно питания и команда Serial.begin(9600); даст волзможность читать показания вашего термометра используя монитор серийного порта. (без паники, это просто звучит сложно но я все покажу)
Позже, когда ваша система будет подключена к постоянному месту работы можно использовать блок питания постоянного тока от 5В до 12В.
Бугор
Магистр
Город Герой Магадан, St. Louis
211 103
Отв.8 09 Сент. 15, 21:16
небольшая програмка для открывания/закрывания крана с мотором
/* подробнее читать тут http://tronixlabs.com/...2a-and-arduino/
* Эксперимент , регулировка открытия/закрытия моторизированного клапана с заданым интервалом
* Motor Controller - Stepper Motor Drive Controller Board Module L298N Dual H Bridge DC For Arduino
*/
//Motorized Valve
int myMotorSpeed = 9;
int Direction_01 = 8;
int Direction_02 = 7;
int valveOpen = 6;
int ValveClosed = 5;
int vOpen = 1;
int vClosed = 1;
void setup()
{
Serial.begin(9600);
// set the motor control pins to outputs
pinMode(myMotorSpeed, OUTPUT);
pinMode(Direction_01, OUTPUT);
pinMode(Direction_02, OUTPUT);
}
void ValveController()
{
// open and close the valve
//Open
start=millis(); //начало цикла
digitalWrite(Direction_01, HIGH);
digitalWrite(Direction_02, LOW);
delay(2500); // интервал
finished=millis(); //окончание цикла
elapsed=finished-start; //затраченное время в милисекундах
Serial.print ("Valve Open = " ); //vOpen считает сколко раз кран был открыт
Serial.print(vOpen);
Serial.print("\t Time to open = "); //интересно было посмотреть, на самом ли деле тратится 2,5 секунды
Serial.println(elapsed);
vOpen = vOpen + 1; // плюс один к счетчику
// скорость с которой наш мотор будет вращаться = 250 из возможного диапозона 0~255
//тут можно повозится созначением. Так же можно написать модуль для плавного зауска/остановки мотора
//это будет хорошо видно с мотором без понижающего редуктора
analogWrite(myMotorSpeed, 250);
delay(500);
// now change motor directions
//Close
start=millis();
digitalWrite(Direction_01, LOW);
digitalWrite(Direction_02, HIGH);
delay(2500); // интервал
finished=millis();
elapsed=finished-start;
Serial.print ("Valve Closed = " ); //vClosed считает сколко раз кран был закрыт
Serial.print(vClosed);
Serial.print("\t Time to close = ");
Serial.println(elapsed);
vClosed = vClosed + 1; // плюс один к счетчику
// выключить мотор
digitalWrite(Direction_01, LOW);
digitalWrite(Direction_02, LOW);
}
//Run application
void loop()
{
ValveController();
delay(1000); // интервал
}
Отв.9 11 Сент. 15, 06:35
Говорила мне мама: Учись сынок!
Ну,допустим, я не знаком с Ардуино, можно же как-то эту вещь прикрутить к ПИД регулированию. К ТРМке, датчик будет стоять в 1/3 колонны, а клапанок на своём месте.
Ну,допустим, я не знаком с Ардуино, можно же как-то эту вещь прикрутить к ПИД регулированию. К ТРМке, датчик будет стоять в 1/3 колонны, а клапанок на своём месте.
Бугор
Магистр
Город Герой Магадан, St. Louis
211 103
Отв.10 11 Сент. 15, 18:30
так-с, обновленный скеч управления моторизированным краном в зависимости от заданной температуры
#include "max6675.h"
//Temperature
int thermo_vcc_pin = 13;
int ktcSO = 12;
int ktcCS = 11;
int ktcCLK = 10;
//Motorized Valve
int myMotorSpeed = 9;
int Direction_01 = 8;
int Direction_02 = 7;
int valveOpen = 6;
int ValveClosed = 5;
//int vOpen = -1;
//int vClosed = -2;
MAX6675 ktc(ktcCLK, ktcCS, ktcSO);
void setup()
{
Serial.begin(9600); // связь с компом что-бы посмотреть на процессы
// дадим нашему модулю пол секунды на стабилизацию
delay(500);
pinMode(thermo_vcc_pin, OUTPUT);
digitalWrite(thermo_vcc_pin, HIGH);
// set the motor control pins to outputs
pinMode(myMotorSpeed, OUTPUT);
pinMode(Direction_01, OUTPUT);
pinMode(Direction_02, OUTPUT);
//Valve position pins
// pinMode(valveOpen, INPUT);
// pinMode(ValveClosed, INPUT);
}
void ValveController()
{
// Блок управление краном - открыт/закрыт
//Открыть кран если температура поднялась выше верхнего допустимомго уровня.
if (ktc.readCelsius() > 27){ //по необходимости поменять температуру с 27 на другоеб нужноеб значение
digitalWrite(Direction_01, HIGH);
digitalWrite(Direction_02, LOW);
delay(2500); // дадим нашему модулю пол секунды на стабилизацию
// выключаем мотор
digitalWrite(Direction_01, LOW);
digitalWrite(Direction_02, LOW);
Serial.print("Deg C = "); // пишем
Serial.print(ktc.readCelsius());
Serial.print("\t Valve Open = ");
Serial.println("True");
}
// скорость с которой наш мотор будет вращаться = 250 из возможного диапозона 0~255
//тут можно повозится со значением. Так же можно написать модуль для плавного зауска/остановки мотора
//это будет хорошо видно с мотором без понижающего редуктора
analogWrite(myMotorSpeed, 255);
delay(500);
//Закрываем кран, температура равна изи опустилась ниже допустимого верхнего уровня
if (ktc.readCelsius() <= 27){
// меняем полярность мотора
digitalWrite(Direction_01, LOW);
digitalWrite(Direction_02, HIGH);
delay(2500); //дадим нашему модулю пол секунды на стабилизацию
// turn the motor off
digitalWrite(Direction_01, LOW);
digitalWrite(Direction_02, LOW);
Serial.print("Deg C = "); //пишем
Serial.print(ktc.readCelsius());
Serial.print("\t Valve Open = ");
Serial.println("False");
}
}
//Run application
void loop()
{
ValveController();
delay(1000);
}
Бугор
Магистр
Город Герой Магадан, St. Louis
211 103
Отв.11 11 Сент. 15, 18:49, через 20 мин
первым делом, конечно, необходимо загрузить и установить среду разработки Arduino, редактор. Сcылка дана выше по тексту.
После того как редактор включен надо подключить Arduino с помощью USB шнура к компьютеру
Редактор немного туповат и не всегда сам обнаруживает к какому порту подключен Arduino, возможно придется выбирать порт вручную
P.S. Думаю есть смысл поискать в сети настройки и описание редактора, если не найду то сделаю сам, не все же могут свободно на инглише понимаешь ли
После того как редактор включен надо подключить Arduino с помощью USB шнура к компьютеру
Редактор немного туповат и не всегда сам обнаруживает к какому порту подключен Arduino, возможно придется выбирать порт вручную
P.S. Думаю есть смысл поискать в сети настройки и описание редактора, если не найду то сделаю сам, не все же могут свободно на инглише понимаешь ли
Бугор
Магистр
Город Герой Магадан, St. Louis
211 103
Отв.12 11 Сент. 15, 19:01, через 13 мин
и так, вы скопировали или сами написали или внесли изменения в ваш скеч (меня немного бесит это название, 20 лет програмистом работаю и тут вместо "кода" какойто "скеч" бля)
у редактора есть две опции
№1 - проверка вашего кода на граматические ошибки (обратите внимание, логические ошибки, а они будут, вам придется искать самому или просить кого-то найти их)
№2 - компиляци вашего кода и отправка его в микропросессор, если есть ошибки то процес будет остановлен
у редактора есть две опции
№1 - проверка вашего кода на граматические ошибки (обратите внимание, логические ошибки, а они будут, вам придется искать самому или просить кого-то найти их)
№2 - компиляци вашего кода и отправка его в микропросессор, если есть ошибки то процес будет остановлен
Бугор
Магистр
Город Герой Магадан, St. Louis
211 103
Отв.13 11 Сент. 15, 19:32, через 31 мин
"Ошибка" - очень вредное не прносяще удовольствия стечение обстаятельств.
и так, три основных типа ошибок
Первый, вы думали, что Arduino подключено к компу, вот оно, лампочками мигает, но на самом деле это блок питания подключен, с каждым бывает, ничего страшного, не надо перелопачивать ваш код и перезагружать ваш комп.
Помню у нас в Армии, в мастерской автоколонны висел плакат (не дословно) - Если двигатель не запускается, не разбирай его сразу, убедись на наличие горючего в баке.
Редактор вам подскажет об этом
Вторй тип ошибок, это синтаксическая ошибка в вашем коде. Еще раз оговорюсь, логическую ошибку редактор не заметит; тоесть, если вы хотели разделить а на самом деле умножили это логическая ошибка и редактор понятия не имеет, что это не то, что вы имели в виду ... ферштейн?
У С++ есть древняя закавыка, "высвечивать" не саму ошибку а линию кода гдето ниже самой ошибки, к этому просто надо привыкнуть.
Как например, пропущена точка-с-запятой ";" на 19 линии, но редактор подсветил 20-ю линию
И третий, самый на мой взгляд противный тип, написанная вами программа не помещается в Arduino, памяти не хватает. Придется либо переписывать код, либо присоеденять память, что не сосвсем интуитивно и понятно ... памяти как таковой добавить ни как нельзя, но можно подключить котроллер для интернета или TFT монитора в них обычно встроено гнездо для SD карты и ваши настроечные параметры можно будет записать туда в какой нибудть *.ini файл или придется покупать другую большую по размеру Arduino Mega вместо более дешовой Arduino UNO или маленькой Arduino Nano.
для всех них есть место быть и выбор зависит от вашего проекта. Но и это не преграда, потому, что клоны Arduino невероятно дешевы.
и так, три основных типа ошибок
Первый, вы думали, что Arduino подключено к компу, вот оно, лампочками мигает, но на самом деле это блок питания подключен, с каждым бывает, ничего страшного, не надо перелопачивать ваш код и перезагружать ваш комп.
Помню у нас в Армии, в мастерской автоколонны висел плакат (не дословно) - Если двигатель не запускается, не разбирай его сразу, убедись на наличие горючего в баке.
Редактор вам подскажет об этом
Вторй тип ошибок, это синтаксическая ошибка в вашем коде. Еще раз оговорюсь, логическую ошибку редактор не заметит; тоесть, если вы хотели разделить а на самом деле умножили это логическая ошибка и редактор понятия не имеет, что это не то, что вы имели в виду ... ферштейн?
У С++ есть древняя закавыка, "высвечивать" не саму ошибку а линию кода гдето ниже самой ошибки, к этому просто надо привыкнуть.
Как например, пропущена точка-с-запятой ";" на 19 линии, но редактор подсветил 20-ю линию
И третий, самый на мой взгляд противный тип, написанная вами программа не помещается в Arduino, памяти не хватает. Придется либо переписывать код, либо присоеденять память, что не сосвсем интуитивно и понятно ... памяти как таковой добавить ни как нельзя, но можно подключить котроллер для интернета или TFT монитора в них обычно встроено гнездо для SD карты и ваши настроечные параметры можно будет записать туда в какой нибудть *.ini файл или придется покупать другую большую по размеру Arduino Mega вместо более дешовой Arduino UNO или маленькой Arduino Nano.
для всех них есть место быть и выбор зависит от вашего проекта. Но и это не преграда, потому, что клоны Arduino невероятно дешевы.
Sasha_26
Доцент
СКФО
1.7K 310
Отв.14 11 Сент. 15, 19:41, через 10 мин
А как правильно Ардуино или Ардвино ? Ни чего личного, просто не знаю как правильно.
Bиkтop
Специалист
Долгоруково
176 79
Отв.15 11 Сент. 15, 19:54, через 13 мин
Давай учи по Ардуино дальше, пока все понятно, а то время идет, а электроника пока кучкой лежит.
Бугор
Магистр
Город Герой Магадан, St. Louis
211 103
Отв.16 11 Сент. 15, 20:44, через 51 мин
электроника пока кучкой лежитBиkтop, 11 Сент. 15, 19:54подсоединяй, показывай
Бугор
Магистр
Город Герой Магадан, St. Louis
211 103
Отв.17 11 Сент. 15, 21:05, через 22 мин
Serial Monitor очень удобная штука в процессе разработки и проверки вашего устройства
загружаете ваш код в Arduino (наверное правильно произносить с итальянским акцентом :) )
включаете монитор и при условии того что в вашем коде есть
void setup()
{
Serial.begin(9600);
.
.
.
.
}
Serial.print("Deg C = ");
Serial.print(ktc.readCelsius());
вы увидите то, что вы запланировали (повторюсь с картинкой)
непосредственно над Arduino открыт Serial Monitor который показывает температуру в Целсии и в Фаренгейте
загружаете ваш код в Arduino (наверное правильно произносить с итальянским акцентом :) )
включаете монитор и при условии того что в вашем коде есть
void setup()
{
Serial.begin(9600);
.
.
.
.
}
Serial.print("Deg C = ");
Serial.print(ktc.readCelsius());
вы увидите то, что вы запланировали (повторюсь с картинкой)
непосредственно над Arduino открыт Serial Monitor который показывает температуру в Целсии и в Фаренгейте
Бугор
Магистр
Город Герой Магадан, St. Louis
211 103
Отв.18 11 Сент. 15, 21:29, через 25 мин
это конечно здорово и Serial Monitor удобная фишка и если вас не напрягает подлючать Arduino к компу и запускать все это в производство то и ладно, главное чтобы работало и можно было посмотреть , что оно там делает.
Но не всегда есть возможность или желание таскать комп туда сюда и возникает желание подключить дисплей - удобно, компактно и автономно
немного о дополниельных устройствах. Если вы занимаетесь электроникой, то у вас наверняка есть куча всяких полезных штук начиная от паяльника и зканчивая тем о чем я понятия не имею. Если же вы только начали осваивать это дело или хотите деток своих приобщить к полезным занятиям то я бы посоветовал первым делом приобрести набор Arduino.
Наборов разных много и цены естественно разные, в наборе будет кокойто Arduino, кой-какаие сенсоры и вспомогательные детали и колодка для разработки систем, внимательно почитайте описание.
Парочка примеров -
с ебая
http://www.ebay.com/itm/221451495178?_trksid=p2057872.m2749.l2648&ssPageName=STRK%3AMEBIDX%3AIT
с АлиЭкспересс
http://www.aliexpress.com/...1902960181.html
Так-же вам понадобится паяльник
но не такой
а несколько меньше и пригодный для пайки электроники, вариантов множество ...
у меня вот такой и я им вполне доволен http://www.amazon.com/gp/product/B00RL9YWQG?psc=1&redirect=true&ref_=oh_aui_detailpage_o01_s00
Но не всегда есть возможность или желание таскать комп туда сюда и возникает желание подключить дисплей - удобно, компактно и автономно
немного о дополниельных устройствах. Если вы занимаетесь электроникой, то у вас наверняка есть куча всяких полезных штук начиная от паяльника и зканчивая тем о чем я понятия не имею. Если же вы только начали осваивать это дело или хотите деток своих приобщить к полезным занятиям то я бы посоветовал первым делом приобрести набор Arduino.
Наборов разных много и цены естественно разные, в наборе будет кокойто Arduino, кой-какаие сенсоры и вспомогательные детали и колодка для разработки систем, внимательно почитайте описание.
Парочка примеров -
с ебая
http://www.ebay.com/itm/221451495178?_trksid=p2057872.m2749.l2648&ssPageName=STRK%3AMEBIDX%3AIT
с АлиЭкспересс
http://www.aliexpress.com/...1902960181.html
Так-же вам понадобится паяльник
но не такой
а несколько меньше и пригодный для пайки электроники, вариантов множество ...
у меня вот такой и я им вполне доволен http://www.amazon.com/gp/product/B00RL9YWQG?psc=1&redirect=true&ref_=oh_aui_detailpage_o01_s00
Бугор
Магистр
Город Герой Магадан, St. Louis
211 103
Отв.19 11 Сент. 15, 21:36, через 8 мин
описывать подключение дисплея дело довольно таки трудоемкое, поэтому я постараюсь перевести то, что уже написано специалистами в этом вопросе https://learn.adafruit.com/character-lcds/overview
всю эту фигню переводить я не буду, сконцентируюсь непосредственно на подключении дисплея
и фотки тоже у них спионерю
всю эту фигню переводить я не буду, сконцентируюсь непосредственно на подключении дисплея
и фотки тоже у них спионерю