Регулятор влажности ch-3800

Visits: 1377   И еще один проект на плате ch-c3xxx –  универсальный регулятор влажности ch-3800. Регулятор позволяет работать как в режиме индикатора влажности, так и в режиме регулятора. Рабочий диапазон измеряемой относительной влажности от 0 до 100%. Регулирование влажности возможно как в режиме осушения воздуха, так и в режиме увлажнения. Регулировка выполняется по дискретному закону …
Читать далее Регулятор влажности ch-3800

Измерение относительной влажности

Visits: 1389


Измерение относительной влажности. Использование аналоговых датчиков фирмы honeywell (HIH-36xx, HIH-40xx)  (проект использует для программирования Serial Bootloader AN1310).  большая корпорация, одним из направления деятельности – есть производство разнообразных сенсоров. Одни из которых, это аналоговые датчики относительной влажности. Аналоговый – говорит, что датчик преобразует измеряемую относительную влажность в напряжение.

HIH-4000_150x130

Получить полную техническую информацию по датчикам влажности можно на сайте http://sensing.honeywell.com. Остановимся на основных параметрах датчика. Для проекта мы будем использовать Датчик HIH-4000 (хотя с успехом подойдут любые датчики из серий HIH-36xx или HIH-40xx).

Датчики предназначены для определения относительной влажности. Дятчики имеют три вывода, два из которых это питание датчика, третий выход аналогового напряжения пропорционального измеряемой влажности.

honeywell_illissi_01

На рисунки приведены габаритные размеры датчиков. Обратите внимание на назначение выводов. Левая ножка, -ve – это минус питания, права, +ve – это плюс питания, по центру OUT – аналоговый выход датчика. Величина напряжения питания 5 вольт (если датчики поставляются с калибровочной ведомостью, то именно под это напряжение они калибруются). Хотя можно использовать и при более низком напряжении питания.

Диапазон измеряемой относительной влажности составляет от 0 до 100%.

Обратите внимание на диапазон рабочих температур.

honeywell_illissi_02

Важно понимать о ресурсе жизни датчика, обратите внимание на рекомендуемые зоны эксплуатации. Еще, на чтобы хотелось обратить внимание, этот тип датчика – не влагозащищенный. Что это значит? Не допускается попадание капель воды на чувствительный элемент датчика.

Основные электрические параметры датчика.

honeywell_illissi_03

Зависимость напряжения от относительной влажности имеет практически линейную характеристику. Для нас как для разработчика измерителя влажности будет интересовать два параметра датчика, это величина напряжения на выходе датчика при 0% влажности и наклон (крутизна) характеристики. Если вы приобретаете датчик с калибровочной ведомостью, то эти параметры мы берем из нее. Обозначаются они так: Vout @0%RH (или Zero Offset) – напряжение 0% влажности и Slope – наклон характеристики. Если вам попался датчик без калибровки, то данные можно взять с нашего проекта, при этом точность будет не хуже 4-5%, что для бытовых применений вполне приемлемо.


Схема подключения датчика с использованием PIC-контроллера.

honeywell_illissi_04

Для подключения датчика нам потребуется всего один нагрузочный резистор. Нагрузочная способность датчика не менее 80 кОм. Мы выберем сопротивление из стандартного ряда 100 кОм.

Для реализации проекта мы будем использовать плату ILLISSI-4B-09-primum и плату индикации ILLISSI-4С-02-secundo.

Для того чтобы подключить датчик влажности к нашей платы на плате необходимо запаять два резистора R30 – 100 кОм и R26 – 0 Ом (перемычка). Сам датчик подключается к выводам платы (верхнего дополнительного соединителя).

honeywell_illissi_05honeywell_illissi_06

Как видно из рисунков схема подключения очень простая. Но простота схемы подключения накладывает определенные нагрузки на программу. В чем заключается проблема.

Во первых  – у нас аналоговый сигнал. А в зависимости от удаления датчика, на кабель соединяющий датчик и контроллер, будут влиять электромагнитные помехи которыми богато наша окружающая среда современной эпохи. Также надо учитывать, что чувствительный элемент датчика постоянно “бомбардируют” молекулы воды находящиеся в воздухе. Все это выльется, что напряжение на выходе датчика и т.е. значит и на входе АЦП контроллера будет иметь некоторую шумовую составляющею, которая при обработке сигнала приобретет в “дрожание показаний”. Это будет иметь вид когда на индикаторе одновременно будет пытаться индицироваться несколько значений. И сама цифровая индикация будет смазана.

Какие в этом случае могут быть методы борьбы, чтобы отфильтровать помеху и “сгладить” сигнал датчика. Если у нас был простой АЦП (без контроллера), то мы пошлибы по следующему пути:

1. Применили экранирование датчика.

2. Применили бы экранированный кабель соединяющий датчик и контроллер.

3. Поставили в цепи данных датчика фильтрующие конденсаторы.

Что мы имеем? Первое – все эти пункты это удорожание конструкции и при том без каких либо гарантий. Второе – фильтрующие конденсаторы значительно замедлили реакцию самого датчика на изменение влаги в воздухе.

Если бы и эти методы не дали результатов, то единственное решение это выполнять измерение через длительные промежутки времени (например 1 раз в секунду) и реже, и также реже выводить данные измерение на индикацию.

Но при использовании PIC-контроллера мы имеем не просто АЦП, мы имеем микроЭВМ для выполнения нашей поставленной задачи.


Программирование.

Следующим этапом после подключения датчика это написание программы. Для вывода данных на индикацию мы будем использовать библиотеку вывода информации для плат на драйвере MAX7221. Что избавит нас от головной боли как рисовать цифры на семисегментные индикаторах.

Для включения в работу АЦП необходимо в модуле инициализации контроллера “прописать” следующие строки:

Мы подключивший датчик к аналоговому порту AN1 контроллера. Это вход RA1. Настроим вход на ввод информации.

// настройка портов
 TRISA = 0b00000010; // RA1- аналоговый вход для измерение влажности

Настроим, что этот вход будет аналоговый.

ANSELA = 0b00000010;// RA1- аналоговый вход для измерение влажности

Настроим и включить АЦП.

//настройка АЦП
 ADCON2=0b10111111;//Right justified-20 TAD-FRC(1)
 ADCON1=0b00000000;
 ADCON0=0b00000101;//AN1

Кратко по последним строкам,

Выравнивание данных – вправо, количество тактов для измерения 20 (хотя можно и 12), источник тактовой частоты внутренний RC генератор, диапазон опорных напряжений – напряжение питания контроллера, АЦП подключен к аналоговому входу AN1.

Далее сам процесс измерение влажности заключается в следующем, мы должны “запустить” АЦП на измерение, по окончанию измерения сосчитать с регистров АЦП данные. Произвести над данными вычисление и вывести на дисплей значение полученной относительной влажности.

Для измерение влажности мы будем использовать так называемый “прозрачный цикл”. Что это значит? Мы не будем делать цикл ожидания окончания преобразования АЦП – это бы создало бы потерю рабочего времени контроллера, мы будем просто в основном цикле программы проверять окончание и если данные готовы, считывать их для обработки, запускать конвертирование с начала и заниматься обработкой данных. Потом весь процесс повторяется. Такое построение не дает потери машинного времени, которое может потребоваться для выполнение работы в более сложных проектах.

Основная структура измерения:

// измерение влажности
 if(GO==0)  
 {  
     // сосчитать занчение АЦП
     ADCIZ=ADRESL;  
     ADCIZ+=ADRESH<<8;  
     // начать измерение
     GO=1; 
 }

Обработку (преобразование данных АЦП во значение влажности) данных, по преобразованию значения АЦП в значение влажности, выполним используя целочисленную математику это даснам значительную экономию памяти программ.

// вычислить влажность
 ADCIZ=ADCIZ*48875; // величина = (напряжение питания/1024 * 10 000 000)
 ADCIZ=ADCIZ/100000; // 
 ADCIZ=ADCIZ-83; // ноль датчика в вольтах*100
 ADCIZ=ADCIZ*100; // 
 ADCIZ=ADCIZ/31; // наклон характеристики slope

Добавим немного комментарий к данному фрагменту. Полученное значение АЦП ADCIZ мы должны преобразовать в измеряемое напряжение. Мы знаем, что у нас 10 разрядный АЦП это значит, то весь диапазон опорного напряжения (для нас 5,0 вольт, напряжение питания контроллера) – 1024. Т.е. значение на выходе АЦП будет иметь диапазон значение от 0 до 1023. Разделив диапазон опорного напряжения на разрядность АЦП получим число ~0,004887585532… Для целочисленной математики вы возьмем первые 5 значащих цифр 48875. А далее чтобы полученное число имело “вменяемый вид” разделим его на 100000.

Из полученного значения нам необходимо отнять напряжения нуля датчика. Значение тоже будем брать только значащие цифры. Например, если в пасторте Zero Offset = 0,827260 берем только 83 (округляем). Далее опять приводим в нормальный вид умножая на 100. И следующее вычисляем влажность используя коэффициент наклона Slope, только целое значение.

Полученное значение и есть влажность в формате хх.х%. Но если мы так будем на прямую выводить на индикатор, то столкнемся с проблемой помех, которая была описана ранее и индикация при этом будет иметь в младших разрядах хаотическое значение.

Как программно, нам из “шума”, выделить полезный сигнал.

Первое будем находить среднее из 10 измерений, но делать это будем немножно по новому. Мы не будем делать 10 измерений, а потом суммировать и делить на 10. Мы будем, Брать 1/10 от измеренного сигнала и прибавлять его к значению регистра индикации, предварительно из него (регистра индикации) отняв 1/10 его хранящегося значения. Это значительно сэкономит на память ОЗУ.

// вычисление среднего из 10 измерений // 
 ADCIZ=ADCIZ/10; // 
 p_hum=p_hum-p_hum/10; // 
 p_hum=p_hum+ADCIZ; //

И последнее если нам необходимо получить, только целые значения процентов, разделим еще наши данные на 10.

p_humi=p_hum/10; //

Вычисляя среднее значение нам поможет на 90% избавиться от помех, но нас еще будут беспокоить условие когда будет переход значения, т.е. изменение показаний влажности, например, было 40%, влажность увеличивается и будет видно как начнет “блымать” на индикаторе 40/41 процент, пока значение будет находиться на границе измерений. Для решения этой проблемы применим “накапливающий интегратор”. Суть его заключается в том, когда новое значение превышает (подразумевается чаще предоставляется для индикации) старое (индицируемое) значение (по измерениям) в N раз, то только тогда происходит смена индикации. Все очень просто.

// ФИЛЬТР устранения дрожания индикации при смене показаний "накапливающий интегратор"
 if(p_humi^p_humip && timer)timer--;
 else 
 {
    p_humip=p_humi;
    timer=200;
 }

В нашем примере N=200, хотя может быть любое число (это зависит от необходимой быстроты смены индикации). Работа модуля следующая сравнивается новое и действующее (исключающее или) значение и проверяется условие накопления нового значения, если оно достигло заданного порога (200) происходит смена индикации.

После этого выводим полученные данные на индикатор.

Весь процесс измерения выглядит так:

//--------------------------- 
 // измерение влажности
 if(GO==0) // 
 { // 
 // сосчитать занчение АЦП
     ADCIZ=ADRESL; // 
     ADCIZ+=ADRESH<<8; // 
 // начать измерение
     GO=1; // 
 // вычислить влажность
     ADCIZ=ADCIZ*48875; // величина = (напряжение питания/1024 * 10 000 000)
     ADCIZ=ADCIZ/100000; // 
     ADCIZ=ADCIZ-83; // ноль датчика в вольтах*100
     ADCIZ=ADCIZ*100; // 
     ADCIZ=ADCIZ/31; // наклон характеристики slope
 // вычисление среднего из 10 измерений // 
     ADCIZ=ADCIZ/10; // 
     p_hum=p_hum-p_hum/10; // 
     p_hum=p_hum+ADCIZ; // 
     p_humi=p_hum/10; // 
 } // 
 //---------------------------
// ФИЛЬТР устранения дрожания индикации при смене показаний "накапливающий интегратор"
 if(p_humi^p_humip && timer)timer--;
 else 
 {
     p_humip=p_humi;
     timer=200;
 } 
 //---------------------------
 // вывод значение относительной влажности на индикатор
 bin_dec (p_humip,0);
 indic (0,miln,stys,dtys,tysc,sotn,dest,edin,0);

 P.s. Все эти программные навороты нам дают “стабильную” индикацию и быстроту слежения за измеряемым параметром. Эти методы можно применить для измерения и индикации в других приложениях.


Загрузка демонстрационного проекта.

Версия – 1.1

Значок

Измерение относительной влажности - v1.1 15.88 KB 675 downloads

Измерение относительной влажности. Использование...
Версия – 1.2
Значок

Измерение относительной влажности - v1.2 16.05 KB 698 downloads

Измерение относительной влажности - v1.2 ...

обновлено 04/09/12  v1.1 honeywell_illissi_07 


Это может быть интересно


  • Altium Designer first projectAltium Designer first project
    Visits: 209 Эта статья подразумевает, что у вас установлен и настроен Altium Designer как описано в статье  Altium Designer my setup system and project structure.  Обратите внимание! Библиотека постоянно обновляется, …
  • Проблемы классической светомузыкиПроблемы классической светомузыки
    Visits: 2013 Светомузыка – что это такое? Определение: Светомузыка  (жаргонное: цветомузыка)  — вид искусства, основанный на способности человека ассоциировать звуковые ощущения со световыми восприятиями. Такое явление в неврологии получило название …
  • Проект с использованием MCC часть 16Проект с использованием MCC часть 16
    Visits: 1030 Продолжим изучение EUSART. На этом этапе отработает передачи данных с ПК и получения эха. Для этого в основной цикл программы добавим код if(EUSART_DataReady) // проверим флаг готовности данных …
  • Ultrasonic Level Meters – ULM –53LUltrasonic Level Meters – ULM –53L
    Visits: 694 Измерение расстояния при помощи ультра звукового датчика ULM–53L–10. Диапазон измерения от 0,5 м до 10 м, полностью пластмассовый излучатель PVDF, механическое соединение фланцем из полиэтилена HDPE (исполнение “N”) Характеристики …
  • Altium Designer – подготовка документации для производства и сборки печатных платAltium Designer – подготовка документации для производства и сборки печатных плат
    Visits: 3588 В процессе освоения Altium Designer много возникает вопросов по подготовке документации для производства плат, а также для её сборки. Altium Designer позволяет сделать все требуемые документы, хотя скажем …
  • Сенсорный выключатель светаСенсорный выключатель света
    Visits: 9902 Хотя в настоящий момент актуальны системы управления освещением с передачей данных по электросети, но я думаю, что проекты такого рода тоже имеют право на жизнь. Анонс Три вида …
  • Altium Designer my setup system and project structure V23.3Altium Designer my setup system and project structure V23.3
    Visits: 117 Оновлення бази даних та шаблонів від березня 2023 року. Updating the database and templates from March 2023. Altium Designer my Libraries, Project templates, System settings by Catcatcat. Дивись …
  • Проект с использованием MCC часть 07Проект с использованием MCC часть 07
    Visits: 915 Модуль PWM – широтно импульсная модуляция (ШИМ). ПИК контроллеры часто на борту имеют модули ШИМ. На их основе строятся многие узлы управления электро приводами. В нашем варианте мы …
  • LM317 и светодиодыLM317 и светодиоды
    Visits: 7786 LM317 и светодиоды статья с переработанная с сайта http://invent-systems.narod.ru/LM317.htm Долговечность светодиодов определяется качеством изготовления кристалла, а для белых светодиодов еще и качеством люминофора. В процессе эксплуатации скорость деградации кристалла …
  • TM1650 драйвер LED семисегментного индикатораTM1650 драйвер LED семисегментного индикатора
    Visits: 17652 Китайский производитель Shenzhen Titan Micro Electronics Co., Ltd.  Выпускает широкую линейку драйверов управления светодиодными дисплеями, которые позволяют разгрузить микроконтроллер для основной работы, главная особенность этих драйверов не только …



Регулятор влажности

Visits: 1348 Регулятор ILLISSI-CH-1000 предназначен для контроля и регулировки относительной влажности в диапазоне от 0 до 100%. Регулятор позволяет работать как в режиме осушения, так и увлажнения. Для измерения возможно использовать аналоговые датчики фирмы honeywell с типами HIH-xxx. Структура меню работы регулятора. Режимы работы регулятора: Основной режим работы Режим настройки Функции клавиш в основном режиме …
Читать далее Регулятор влажности