В уроке представлю программу верхнего уровня для диагностики и настройки контроллера. Расскажу о начальной проверке работы устройства.
Предыдущий урок Список уроков Следующий урок
Контроллер элемента Пельтье достаточно сложное устройство. Режим его работы определяется несколькими коэффициентами и технологическими параметрами, которые могут быть заданы при компиляции программы.
К тому же контроллер управляет системой охлаждения, механические параметры и конструкция которой также в значительной степени влияют на комплексную работу устройства. Технологические параметры контроллера должны быть выбраны исходя из:
- энергетических параметров контроллера: выходной мощности, тока, напряжения;
- конструктивных параметров охлаждающей системы;
- специфических требований к холодильнику: скорость регулирования, точность, стабильность и т.д.
Для мониторинга состояния контроллера и охлаждающей системы в целом я разработал программу верхнего уровня ”Монитор Ардуино контроллера элемента Пельтье”.
Программа ”Монитор Ардуино контроллера элемента Пельтье”.
Программа позволяет:
- наблюдать состояние контролера и всей системы охлаждения в реальном времени;
- регистрировать основные параметры и выводить результаты в виде графиков, диаграмм;
- производить полную диагностику контроллера.
Приложение работает под управлением ОС:
- Windows 95;
- Windows 98;
- Windows XP;
- Windows 7.
На остальных операционных системах не пробовал.
Установка программы.
Для установки приложения необходимо:
- Загрузить архив:
- Распаковать содержимое в рабочий каталог. Можно оставить ArduinoRef_1_1.
Приложение состоит из следующих файлов.
ArduinoRef_1_1.exe | Испоняемы файл |
Conf.txt | Конфигурация, содержит номер COM порта |
arrow.bmp arrow2.bmp Bird.bmp Cross.bmp Pencil1.bmp |
Пиктограммы |
Все эти файлы должны находиться в рабочей папке.
Устанавливать программу не требуется. Достаточно просто запустить файл ArduinoRef_1_1.exe.
Подключение контроллера к компьютеру.
Обмен данными между контроллером и компьютером происходит через COM порт. Порт может быть виртуальным или реальным. Удобнее всего использовать виртуальный порт, который создает на компьютере драйвер платы Ардуино. Arduino IDE запускать не надо.
Но существуют и другие варианты связи контроллера с компьютером: мосты USB/UART, интерфейсы RS232 с преобразователями уровней. Подключение контроллера к компьютеру достаточно подробно описано в уроке 24. Про связь через мост USB/UART PL2303 написано по этой ссылке. Информации у меня на сайте на эту тему много. Как-нибудь попробую собрать ее в одной статье на форуме сайта.
В результате подключения платы на компьютере должен появиться COM порт. Его номер можно посмотреть: Панель управления -> Система -> Диспетчер устройств -> Порты (COM и LPT)
Программа работает с COM портами 1 – 9. Если сформировался порт с большим номером, то его необходимо изменить. Как это сделать, можно посмотреть по этой ссылке.
Первый запуск.
Перед любым запуском программы на компьютере уже должен быть создан виртуальный COM порт. Порт создается при подключении платы к компьютеру. Т.е. прежде всего, необходимо контроллер подключить к компьютеру.
Теперь запускаем файл ArduinoRef_1_1.exe. В файле конфигурации задан какой-то номер порта. Программа попытается открыть его при запуске. Если такого порта не существует, она выдаст сообщение об ошибке.
Нажмите “OK”. Откроется основное окно программы.
Обмен невозможен. Данных нет. Вместо параметров будут прочерки. Светодиод ”Обмен с компьютером” будет светиться красным цветом.
Надо задать номер порта. Выберите в меню (сверху) закладку “Выбор порта”. Откроется окно.
Задайте номер порта для своей платы. Напротив каждого порта указано его состояние.
Теперь можно закрыть окно. Заданный COM порт сохранится в файле конфигурации. Задавать номер порта при каждом запуске программы не надо.
Если все работает правильно, то раз в секунду зеленым цветом должен мигать кружок-светодиод ”Обмен с компьютером”. Он мигает в момент приема от контроллера новых данных. Отсутствие мигания или красный цвет говорят о нарушении обмена компьютера с контроллером.
Все подписано и интуитивно понятно. Параметры, полученные из контроллера, отображаются синим цветом.
Регистратор.
В программе существует регистратор, который позволяет наблюдать динамику изменения основных параметров контроллера. Регистратор запускается автоматически при запуске программы. Запись значений параметров происходит с дискретностью 1 секунда. При выходе из программы данные регистрации пропадают.
Регистрирует следующие параметры:
- заданную температуру в камере;
- измеренную температуру в камере;
- температуру радиатора горячей стороны модуля Пельтье;
- интегральную часть регулятора температуры;
- пропорциональную часть регулятора температуры;
- дифференцирующую часть регулятора температуры;
- заданную мощность (выход регулятора температуры);
- электрическую мощность на элементе Пельтье;
- значение ШИМ.
Для того чтобы посмотреть результаты регистрации необходимо нажать закладку меню ”Регистратор”.
- Включить и отключить отображение отдельных параметров можно ”птичками” внизу окна.
- Отчертив область сверху-направо- вниз, удерживая левую кнопку мыши нажатой можно увеличить масштаб.
- “Схватив” за поле диаграмм левой кнопкой мыши можно перемещать его.
- Отчертив область снизу-направо- вверх, удерживая левую кнопку мыши нажатой можно вернуть исходный масштаб.
Проверка работы контроллера.
Я думаю, что последовательность должна быть такой.
Прежде всего, необходимо подключить контроллер к компьютеру, не включая блок питания 12 В. В этом режиме, плата получает питание от USB компьютера. Питание силовой части регулятора отсутствует.
Загрузить скетч программы в плату Ардуино:
Я поменял дифференцирующий коэффициент на значение 5.. (значения чисел в формате float надо писать с точкой).
Проверить работоспособность контроллера:
- датчиков температуры;
- кнопок;
- индикатора;
- связь с компьютером;
- Проверить включение/выключение вентилятора и отработку ошибки перегрева. Для этого надо нагреть датчик температуры радиатора .
Программа ”Монитор” должна показывать примерно такие параметры. Все, что задано в контроллере кнопками или константами должно отображаться правильно. Заданную температуру необходимо задать меньше измеренной.
Реальная мощность должна быть равна 0.
Регулятор температуры сформирует заданную мощность на максимальном заданном уровне (у меня 7 Вт). Интегральная часть будет линейно увеличиваться.
ШИМ будет увеличиваться, пока не станет максимальным (255).
Далее следует проверить регулятор мощности.
Установить заданную температуру на много меньше измеренной. В этом режиме регулятор температуры будет быстро устанавливать максимальную мощность. Значит, мы практически отключим регулятор температуры и сможем менять выходную мощность, задавая кнопками максимально-допустимую.
Устанавливаем небольшую мощность, например 6 Вт. И включаем блок питания 12 В. Устройство должно отработать заданную мощность 6 Вт на реальной нагрузке.
Теперь если кнопками контроллера менять заданную максимальную мощность, то устройство должно ее отрабатывать. За процессом можно наблюдать в регистраторе.
Ток измеряется с низкой разрешающей способностью. Поэтому при малых значениях тока на диаграмме выходной мощности есть выбросы, даже в те моменты, когда ШИМ стабилен.
В этом режиме надо:
- Проверить то, что правильно заданы измерительные коэффициенты. Т.е.
- реальное напряжение на выходе соответствует измеренному контроллером;
- ток потребления регулятора соответствует измеренному;
- реальная мощность на выходе соответствует измеренной. Только надо помнить, что измеряется мощность потребления регулятора, а не выходная. Погрешность может быть 5-10%. Я писал об этом в уроке 36.
- Проверить работу регулятора мощности во всем рабочем диапазоне.
- Проверить динамические параметры регулятора мощности и выбрать интегральный коэффициент.
При оценке устойчивости регулятора мощности главным критерием является то, что в установившемся режиме ШИМ изменяется на 1.
Теперь можно посмотреть, как работает регулятор температуры.
Вот как ведут себя регуляторы при включении питания.
Пропорциональное звено сразу дает 4 Вт. Интегральная часть плавно увеличивается. Регулятор мощности отрабатывает, то, что ему задано.
В этом окне регистратора показано поведение регуляторов при изменении заданной температуры. Когда заданная температура увеличивается, уменьшается ошибка рассогласования, мгновенно уменьшается пропорциональная часть. При заданной температуре выше реальной, пропорциональная часть становится отрицательной, а интегральная плавно стремиться к 0.
Дифференцирующая составляющая включена только в демонстрационных целях. Я писал, что в рабочем проекте ее следует отключить.
Дальше надо отлаживать систему на реальном объекте – холодильнике. Честно скажу, что когда я это сделаю - не знаю. Может никогда.
Разработку я вел больше в учебных целях. Хотел продемонстрировать этапы написания и отладки программы для реального, достаточно сложного проекта.
Но устройство должно получиться вполне работоспособное. Думаю, контроллер можно легко доработать под свои задачи. Давайте дорабатывать. Уже началось обсуждение проекта на форуме сайта. Если у кого-нибудь есть мысли, а еще лучше реальные результаты – присоединяйтесь.
И еще. Программа верхнего уровня предназначена не для научных исследований, а для отладки контроллера. Она сделана на скорую руку, отображение диаграмм происходит через стандартный компонент Borland C++ Builder. Возможно, не хватает таких функций регистратора, как сохранение данных на компьютере и просмотр с редактированием. Пожалуйста, не сравнивайте программу, написанную за 2 вечера с каким-нибудь моделирующим или исследовательским пакетом, на который 2 года целый институт работал. Для диагностики и отладки устройства функций вполне достаточно.
В следующем уроке я собираюсь доработать программное обеспечение контроллера, для того чтобы основные технологические параметры хранились в EEPROM платы Ардуино и могли быть изменены с помощью программы верхнего уровня без участия Arduino IDE. Так как это сделано в контроллере холодильника на PIC контроллере.
Эдуард, подскажите можно ли будет изменять параметры через терминалку, то есть без участия Arduino IDE и программы верхнего уровня.
А что значит через терминалку? В ближайшее время сделаю вариант, в котором можно будет менять параметры с помощью программы верхнего уровня, без участия Arduino IDE и без компиляции программы.
На форуме сайта есть тема про требования к контроллеру холодильника. Можете там написать, что вы думаете по этому поводу.
Спасибо, посмотрю на форуме. Терминалка, это что нибудь типа Putty.
Будет программа намного удобнее.
Эдуард,подскажите,а с помощью чего написана программа «Монитор»?
В среде Borland C++ Builder.
С огромным удовольствием прочитал все уроки по разработке контроллера ! Спасибо за столь полное, подробное и интересное изложение.
Самому захотелось сделать какой-нибудь маленький холодильничек, а еще лучше термокамеру, чтоб не только охлаждала с помощью элементов Пельтье, но и могла нагреть, в случае надобности.
А можно для самообразования посмотреть проект программы верхнего уровня? Спасибо
Здравствуйте!
У меня есть планы сделать инфопродукт по разработке программ верхнего уровня. Но когда до этого дойдут руки — не знаю. Сейчас очень занят.
Здравствуйте, не подскажите, какие лучше взять транзисторы для управления элементом с помощью H-моста?
Эдуард, здравствуйте.
Я думаю конкретно этот скетч, можно переделать для нагрева?
Здравствуйте!
Конечно, можно. Но, имеет ли смысл только нагрев делать на элементе Пельтье. А чтобы делать и нагрев и охлаждение надо менять и программу и схему.