Pull to refresh

Автоматизация температурных измерений при помощи платы АЦП

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

В лабораториях в качестве регистрирующих приборов часто применяют самопишущие потенциометры. Основным достоинством которых является возможность одновременно подключить несколько термопар. Но регистрация данных в них производится в виде графиков на бумажной ленте. И по моему проводить автоматические измерения, чтобы потом в ручную обрабатывать данные просто не рационально. А именно так и было в лабораториях университета в котором я учился. И вот в один прекрасный день, я тогда был на 5 курсе, мне предложили заняться этой проблемой. В случае удачного решения, кафедра получала комплекс для автоматизации температурных измерений, ну а я диплом инженера.

За несколько лет до этого с целью автоматизации измерений кафедрой была куплена плата АЦП (аналого-цифрового преобразования) Ла1.5 PCI производства ЗАО «Руднев-Шиляев».
image

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

В ЗАО «Руднев-Шиляев» видимо понимали что их ПО, идущем с платой, пользоваться просто не возможно, поэтому они предоставили довольно хорошее 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. Вот несколько скриншотов.

image

image

image

image

image


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

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

Articles

Change theme settings