Разработка термоконтроллера, позволяющий регулировать температурный режим удаленного объекта, а так же измерять температуру в помещении, страница 3

Далее будет предложено выбрать путь к каталогу программы, по умолчанию программа устанавливается в каталог «C:\Program Files\Termo»

Сразу после выбора каталога установки, начнется процесс копирования файлов программы и создание ярлыков в главном меню.

После копирования, программа предложит перезагрузить компьютер для запуска драйвера PortIO. Можно это сделать позже в ручную.

После перезагрузки можно начинать работать с программой.

4.4 Работа с программой

            При первом запуске программа выведет соответствующее сообщение с предложением настроить параметры.

Необходимо открыть окно с настройками и ввести адрес игрового порта и порта LPT, эти значения вы можете узнать, открыв свойства нужного порта. Нужно перевести первое значение диапазона ввода вывода в десятичный формат.

Так же необходимо обязательно запустить программу калибровки нажатием кнопки "Калибровка", при этом программа термоконтроллера завершит свою работу, сохранив настройки в файле. Остальные параметры можно настроить по необходимости или оставить по умолчанию. При смене датчика, компьютера, звуковой карты, требуется повторная калибровка программы.

5.Тестирование

Для определения точности показаний прибора, было проведено тестирование, которое заключалось в измерении температуры эталонным градусником. Результаты тестирования представлены в таблице 1. В качестве эталонного градусника был использован спиртовой стеклянный термометр типа ТБ-38М.

Номер опыта

Эталонный градусник, °C

Термоконтроллер, °C

Опыт 1 (температура холодной воды)

5

5

Опыт 2 (температура горячей воды)

50

50

Опыт 3 (комнатная температура)

24

24

Опыт 4 (температура человеческого тела)

36,6

36

Опыт 5 (температура на улице)

18

18

Проанализировав данные таблицы, можно сказать о достаточно высоком показателе точности для данного прибора, которая составит ±1°С, то есть равен цене деления шкалы прибора.

6. Листинг программы

подпрограмма сравнения температур и изменения режимов:

void __fastcall TForm1::Timer1Timer(TObject *Sender)

{

        // Считываем значение с заданного аналогового входа игрового порта

        Temperature = GamePort::ReadBitCoord(StrToInt(Edit2->Text));

        // Преобразовываем это значение в температуру

        double Temper = (1/((1/(float(t1)+273.0))+(1/beta)*log(Temperature/float(Rt1))))-273;

            Temperature=(int)Temper;

        // Новое изображение типа TBitmap

        Graphics::TBitmap* tbit = new Graphics::TBitmap;

        tbit->Width=16;                     // Ширина картинки

        tbit->Height=16;                    // Высота картинки

        tbit->PixelFormat = pf24bit;        // Формат изображения

        tbit->TransparentMode = tmFixed;    // Прозрачность определена вручную

        tbit->TransparentColor = clWindow;  // Цвет прозрачности

        // Если температура > 0, то пишем красным цветом, иначе синим

        tbit->Canvas->Font->Color=(Temperature>=0)?clRed:clBlue;

        tbit->Canvas->Font->Size = 10;      // Размер шрифта

        // Печатаем абсолютное значение температуры в картинку

        tbit->Canvas->TextOutA(0,0,IntToStr(abs(Temperature)));

        ImageList1->Clear();                // Очищаем список картинок

        // Добавляем нашу картинку в список

        TrayIcon1->SetIconIndex(ImageList1->Add(tbit, tbit));

        // Удаляем картинку

        tbit->Free();

        if(StrToInt(Edit6->Text)>StrToInt(Edit7->Text))

        {

                // охлаждение

                if(Temperature>=StrToInt(Edit6->Text))

                {

                        Shape1->Brush->Color = clGreen;

                        LptPort::WriteBitCoord(StrToInt(Edit4->Text));

                }

                else if(Temperature<=StrToInt(Edit7->Text))

                {

                        Shape1->Brush->Color = clRed;

                        LptPort::ClearBitCoord(StrToInt(Edit4->Text));

                }

        }

        else

        {

                // нагрев

                if(Temperature<=StrToInt(Edit6->Text))

                {

                        Shape1->Brush->Color = clGreen;

                        LptPort::WriteBitCoord(StrToInt(Edit4->Text));

                }

                else if(Temperature>=StrToInt(Edit7->Text))

                {

                        Shape1->Brush->Color = clRed;

                        LptPort::ClearBitCoord(StrToInt(Edit4->Text));

                }

        }

}