Ардуино
Запись от flanker размещена 09.04.2015 в 12:03
Заправив кондиционер, появился очередной бзык. Кондиционер у меня старый, покупал комплект «Фрост» у которого не было даже дополнительного вентилятора, соответственно датчик давления у меня предназначен только для безопасности (нет, фреона не включится, большое давление с магистрали высокого давления – выключится.)
Сначала хотел купить четырех проводной датчик давления (590руб.), но это не интересно решил попробовать управлять дополнительным вентилятором при помощи ардуино.
Суть заключается в следующем: из предыдущей записи в дневнике ясно, что давление хладагента в магистрали высокого давления напрямую зависит от температуры, т.е. больше давление, больше температура. Решил при помощи цифрового датчика температуры http://magazin48.ru/Detal39533606.html DS18B20 измерять температуру на трубке высокого давления кондиционера, и в зависимости от этой температуры плавно при помощи ШИМ, изменять обороты дополнительного вентилятора. К примеру, при давлении в системе 14бар температура будет 55 градусов это 50% ШИМ т.е. вентилятор крутится 50% своих оборотов, а при давлении 17бар t = 65 гр. ШИМ 100% вентилятор на полную. Естественно погрешности будут, но чем хорош ардуино, что изменения (калибровку) в программу можно вносить прямо на машине, подключил ноут к ардуино, подключил манометрическую станцию и вноси по ходу изменения в программу.
На подходе у меня очередной бзык: так как собрал турбомотор из своего старого 1,4, думаю попробовать сделать на базе этого ардуино еще одну байду. При достижении температуры интеркулера к примеру 70 градусов через форсунки стеклоочистителя стоящие на бампере распыляется вода из бачка омывателя 3 раза по 2 секунды (все эти переменные можно подобрать экспериментально. Но это все планы.
Получил ардуино http://magazin48.ru/Detal39559306.html и датчик температуры качаем прогу http://arduino.cc/en/Main/Software качаем библиотеку http://www.pjrc.com/teensy/arduino_l...es/OneWire.zip Устанавливаем данную библиотеку в ардуино. Далее запускаем ардуино и делаем как на фото №1. Это костяк программы для данного датчика, немного поправляем, и программа готова. На 2и 3 фото уже так называемая написанная программа, тут писать можно много, но кому интересно по этим вопросам очень много литературы и форумов. Опишу основное: формула ее видно на фото №3; DT=(Tc_100-30)*10; означает если температура (Тс_100) к примеру равна 30 градусам, то (30-30)*10 =0. т.е. DT (ДТ это ШИМ) =0; если к примеру температура равна 43 градуса (43-30)*10= 133 получается DT=133 это чуть более 50% ШИМ т.е. двигатель вращается примерно 50% от полной мощности, соответственно при температуре 55 градусов двигатель будет вращаться на полную мощность. На эти цифры можно внимание не обращать, это я записал для опытов. Вместо вентилятора кондиционера подключил вент с компа а к датчику температуры подносил паяльник и смотрел как все работает. Цифрами можно играться как хочешь, к примеру при давлении в трубке 14 бар у меня температура трубки должна быть 55 градусов, (вентилятор вращается 50%) а при 65 градусах давление 17бар) должен вращаться 100% тогда формула должна выглядеть так: DT=(Tc_100-40)*10; 55-40=15*10=150 – это чуть больше 50% ШИМ (ШИМ меняется от 0 до 255, это от 0 до 100%) при температуре 65 получается 65-40=25*10=250 это почти 100%, думаю принцип понятен.
Следующая строчка if (DT>255){DT=255;} тут объяснять нечего, к примеру, температура 70 это ШИМ 300 у нас все равно будет 255 (мотор 100%)
Ниже 2 строки
if(Tc_100>30){analogWrite(LEDR,DT);}
if (Tc_100<30){analogWrite(LEDR,0);} означает что при температуре менее 30 у меня ШИМ=0 а более равен уже данным полученной из формулы, на вентилятор кондиционера нужно писать примерно так: if(Tc_100>55){analogWrite(LEDR,DT);}
if (Tc_100<55){analogWrite(LEDR,0);}
Нижняя строка Serial.print(" T = ");Serial.print(Tc_100);Serial.print(" shim=");Serial.print(DT); означает что когда вы захотите вывести на экран монитора данные т.е. в программе нажмете «сервис» «монитор порта» на экране у вас будут выводить значение температуры и ШИМ.
На рис. №4 принципиальная схема (если так можно назвать) датчик питается 5В от ардуино и сигнал с датчика температуры приходит к 10 входу ардуино. С 6 выхода идет ШИМ и поступает на силовой полевой транзистор, который и управляет вентилятором. Параллельно вентилятору стоит диод VD- 1 у него защитная функция транзистора, подойдет любой (не стеклянный) диод с током порядка 3 А. К датчику температуры провод взял от старой мышки, сам датчик решил к трубке высокого давления крепить при помощи двух медных полуколец скрепленных двумя винтами, на фото все видно. Начал проводить эксперименты «на столе», все получается очень не плохо, потеплеет, попробую все установить и проверить работу уже в боевых условиях. Ардуино пока только начал изучать, очень интересно.
Сначала хотел купить четырех проводной датчик давления (590руб.), но это не интересно решил попробовать управлять дополнительным вентилятором при помощи ардуино.
Суть заключается в следующем: из предыдущей записи в дневнике ясно, что давление хладагента в магистрали высокого давления напрямую зависит от температуры, т.е. больше давление, больше температура. Решил при помощи цифрового датчика температуры http://magazin48.ru/Detal39533606.html DS18B20 измерять температуру на трубке высокого давления кондиционера, и в зависимости от этой температуры плавно при помощи ШИМ, изменять обороты дополнительного вентилятора. К примеру, при давлении в системе 14бар температура будет 55 градусов это 50% ШИМ т.е. вентилятор крутится 50% своих оборотов, а при давлении 17бар t = 65 гр. ШИМ 100% вентилятор на полную. Естественно погрешности будут, но чем хорош ардуино, что изменения (калибровку) в программу можно вносить прямо на машине, подключил ноут к ардуино, подключил манометрическую станцию и вноси по ходу изменения в программу.
На подходе у меня очередной бзык: так как собрал турбомотор из своего старого 1,4, думаю попробовать сделать на базе этого ардуино еще одну байду. При достижении температуры интеркулера к примеру 70 градусов через форсунки стеклоочистителя стоящие на бампере распыляется вода из бачка омывателя 3 раза по 2 секунды (все эти переменные можно подобрать экспериментально. Но это все планы.
Получил ардуино http://magazin48.ru/Detal39559306.html и датчик температуры качаем прогу http://arduino.cc/en/Main/Software качаем библиотеку http://www.pjrc.com/teensy/arduino_l...es/OneWire.zip Устанавливаем данную библиотеку в ардуино. Далее запускаем ардуино и делаем как на фото №1. Это костяк программы для данного датчика, немного поправляем, и программа готова. На 2и 3 фото уже так называемая написанная программа, тут писать можно много, но кому интересно по этим вопросам очень много литературы и форумов. Опишу основное: формула ее видно на фото №3; DT=(Tc_100-30)*10; означает если температура (Тс_100) к примеру равна 30 градусам, то (30-30)*10 =0. т.е. DT (ДТ это ШИМ) =0; если к примеру температура равна 43 градуса (43-30)*10= 133 получается DT=133 это чуть более 50% ШИМ т.е. двигатель вращается примерно 50% от полной мощности, соответственно при температуре 55 градусов двигатель будет вращаться на полную мощность. На эти цифры можно внимание не обращать, это я записал для опытов. Вместо вентилятора кондиционера подключил вент с компа а к датчику температуры подносил паяльник и смотрел как все работает. Цифрами можно играться как хочешь, к примеру при давлении в трубке 14 бар у меня температура трубки должна быть 55 градусов, (вентилятор вращается 50%) а при 65 градусах давление 17бар) должен вращаться 100% тогда формула должна выглядеть так: DT=(Tc_100-40)*10; 55-40=15*10=150 – это чуть больше 50% ШИМ (ШИМ меняется от 0 до 255, это от 0 до 100%) при температуре 65 получается 65-40=25*10=250 это почти 100%, думаю принцип понятен.
Следующая строчка if (DT>255){DT=255;} тут объяснять нечего, к примеру, температура 70 это ШИМ 300 у нас все равно будет 255 (мотор 100%)
Ниже 2 строки
if(Tc_100>30){analogWrite(LEDR,DT);}
if (Tc_100<30){analogWrite(LEDR,0);} означает что при температуре менее 30 у меня ШИМ=0 а более равен уже данным полученной из формулы, на вентилятор кондиционера нужно писать примерно так: if(Tc_100>55){analogWrite(LEDR,DT);}
if (Tc_100<55){analogWrite(LEDR,0);}
Нижняя строка Serial.print(" T = ");Serial.print(Tc_100);Serial.print(" shim=");Serial.print(DT); означает что когда вы захотите вывести на экран монитора данные т.е. в программе нажмете «сервис» «монитор порта» на экране у вас будут выводить значение температуры и ШИМ.
На рис. №4 принципиальная схема (если так можно назвать) датчик питается 5В от ардуино и сигнал с датчика температуры приходит к 10 входу ардуино. С 6 выхода идет ШИМ и поступает на силовой полевой транзистор, который и управляет вентилятором. Параллельно вентилятору стоит диод VD- 1 у него защитная функция транзистора, подойдет любой (не стеклянный) диод с током порядка 3 А. К датчику температуры провод взял от старой мышки, сам датчик решил к трубке высокого давления крепить при помощи двух медных полуколец скрепленных двумя винтами, на фото все видно. Начал проводить эксперименты «на столе», все получается очень не плохо, потеплеет, попробую все установить и проверить работу уже в боевых условиях. Ардуино пока только начал изучать, очень интересно.
Всего комментариев 2
Комментарии
-
в таких самоделках лучше использовать
http://www.ebay.com/itm/New-Pro-Mini...item1c37a1c27a
http://www.ebay.com/itm/1PCS-New-Pro...item58c0a409c8 у меня такой (кварц меньше выступает)
а Уно для отладки.
дешевле и меньше ))Запись от Machomotofan размещена 14.04.2015 в 09:20
Обновил(-а) Machomotofan 15.04.2015 в 01:53 (Добавил вариант дешевле и с надписями) -
Запись от flanker размещена 14.04.2015 в 14:57