Все мы хоть раз в жизни измеряли температуру. Будь то хоть собственное тело, хоть воздух за окном или процессор в материнской плате. В большинстве случаев в быту речь идёт об диапазоне -50… 100 ºС, и для таких измерений подойдёт простой спиртовой термометр. В случае с процессором используется полупроводниковый датчик, но и он ограничен этим же диапазоном измеряемых температур.В промышленности же за частую приходится иметь дело с температурами в разы большими чем 100 ºС. Для их измерения чаше всего используются термопары. Например вольфрамрений (5%) — вольфрамрениевая (20%) термопара способна выдерживать кратковременный нагрев до 2500 ºС. Но термопара это всего лишь датчик (причём аналоговый), а для регистрации данных необходим некий измерительный прибор. Обычно это ПИД (пропорционально-интегрально дифференциальный) регулятор. Типичный ПИД регулятор обычно одноканальный прибор, то есть к нему можно подключить только одну термопару, также обычно у него нет цифровых интерфейсов. Справедливости ради, надо отметить, что самые продвинутые (и значительно более дорогие) ПИД регуляторы бывают двухканальные и с интерфейсом RS-232

В лабораториях в качестве регистрирующих приборов часто применяют самопишущие потенциометры. Основным достоинством которых является возможность одновременно подключить несколько термопар. Но регистрация данных в них производится в виде графиков на бумажной ленте. И по моему проводить автоматические измерения, чтобы потом в ручную обрабатывать данные просто не рационально. А именно так и было в лабораториях университета в котором я учился. И вот в один прекрасный день, я тогда был на 5 курсе, мне предложили заняться этой проблемой. В случае удачного решения, кафедра получала комплекс для автоматизации температурных измерений, ну а я диплом инженера.
За несколько лет до этого с целью автоматизации измерений кафедрой была куплена плата АЦП (аналого-цифрового преобразования) Ла1.5 PCI производства ЗАО «Руднев-Шиляев».

Но идущее с платой ПО было жутко не удобным, и годилось только для проверки работоспособности платы. Максимум можно было посмотреть, что какие то данные плата выдаёт, но измерить что нибудь было практически невозможно. Так как учился я на кафедре котло- и реакторо строения, то специалисты тут были по энергетике, паровым котлам и атомным реакторам, а вот в компьютерах и платах АЦП тут мало кто разбирался. Так что плату эту забросили на полку, где она и пылилась, дожидаясь своего часа. В общем разработкой хорошей и удобной для наших нужд программы я и занялся. И хочу поделиться тем какие трудности у меня возникли и что в итоге вышло.
В ЗАО «Руднев-Шиляев» видимо понимали что их ПО, идущем с платой, пользоваться просто не возможно, поэтому они предоставили довольно хорошее SDK под множество языков программирования. Я решил не мудрить, и так как мне нужен был гарантированный результат за вполне конкретное время, то решил писать на том, на чём имел опыт написания чего то более сложного чем «Hellow world» — а именно на Delphi. Тем более что разрабатывать программу пришлось под винду. Линукса в универе не было, да и дрова к плате были под очень старую ветвь ядра и дома под Линуксом она не заработала, а допиливать модули ядра не было ни времени ни опыта. SDK было довольно удобным, но было несколько специфических момента которые не были явно указаны и возникли проблемы.
Плата работала следующим образом: задавалась частота дискретизации, коэффициент усиления сигнала, номера каналов по которым идёт оцифровка (на плате было 32 аналоговых входа) и задавался размер буфера (в оперативной памяти компьютера, на плате не было памяти) по заполнению которого плата останавливала оцифровку и ждала разрешения на перезапись буфера. Я наивно полагал что плата в буфер записывает значение сигнала в вольтах, поданного на вход. А оказалось что она записывает кода АЦП, которые ещё надо пересчитывать в вольты с учётом входного диапазона и разрядности АЦП платы. Может это и стандарт для подобных устройств, но в документации к плате это нигде не было явно указано! Вторым же подводным камнем оказалось то что плата возврашает кода АЦП в 16 битном формате. Об этом тоже нигде не было явно сказано.
Когда эти особенности были учтены и моя программа заработала вылезла ещё одна очень существенная проблем��, которая могла по просту сделать все мои труды напрасными. Плата была слишком чувствительная. Даже моё простое перемещение по комнате создавало сильные электромагнитные помехи и искажало результаты измерения. Ни о каких измерениях на стендах с включенными дутьевыми вентиляторами и частотными преобразователями и речи быть не могло. Надо было что то придумывать.
Методом проб и ошибок я заметил следующее: если проводить оцифровку только с одного канала, то в измерениях появляется значительный шум только в начале измерения и очень небольшие шумы в процессе. Если же измерять по нескольким каналам то плата каждый раз переключается с канала на канал и примешивает очень много шума. По этому я решил поменять алгоритм работы и делать переключение между каналами программно а не аппаратно. То есть раньше плата при многоканальном измерение выдавала в буфер чередующиеся значения с каналов 1 2 3 1 2 3 1 2 3 а теперь я её программно заставил выдавать вот такое 1 1 1 2 2 2 3 3 3. Далее находил среднее арифметическое значение по каналу, тем самым обрезая все случайные значения. Плата работает на частоте до 500 Кгц. О коэффициенте стьюдента при 500 тысяч измерений в секунду можно и не говорить. Все шумы отброшены и точность измерения полностью упирается в точность работы АЦП самой платы.
Программу я назвал Etaker. Вот несколько скриншотов.





С помощью программы Etaker были получены данные в ходе дипломных работ других студентов нашей кафедры, в частности исследования теплофизических свойств плёнок защитных оксидных покрытий, сжигания гранулированного топлива в кипящем слое и проведен ряд замеров на экспериментальной установке по непрерывному коксованию угля.

Вот исходники, подробное описание программы есть в руковдство пользователя и вот установщик самой программы.
Таким образом кафедра КиРС АлтГТУ получила современный программно-аппаратный комплекс для многоканальных автоматических температурных измерений, а я оценку отлично и диплом инженера. Чему несказанно рад!
