Проект терморегистратора на базе MAX6675K
Добавлено: 05 июн 2018, 07:32
Огромное спасибо Эдруарду за столь кропотливо проделанную работу, это лучшие материалы по созданию устройств на базе Ардуино в рунете. Я много перелопатил инфы по программированию Ардуино, к сожалению никакого опыта за плечами у меня нет, приходится учиться с нуля.
Первое устройство которое я решил собрать это терморегистратор для высоких температур, дело в том, что моя научная работа связана высокотемпературными кристаллизационными печами (до 1300 градусов), и проблема в том, что имеющиеся терморегуляторы в лаборатории уже много лет как морально устарели, а главное большая часть вышла из строя. Был у нас один современный прибор, но и он сгорел. Терморегистратор нужен для того, чтобы контролировать старые приборы, а также видеть динамику изменения температуры на компьютере. Вообщем вещь эта однозначно востребована.
Покупать в этом году лаборатория ничего не планирует (там замкнутый круг, в начале нужен результат, а потом финансирование, а не наоборот), поэтому вместо ремонта и настройки старинного оборудования (очень много требует времени и главное результат проделанной работы того не стоит), я решил попытаться собрать ПИД-терморегулятор на базе Ардуино своими силами (китайские клоны довольно таки дешевы, и могу себе позволить). Но прежде чем делать терморегулятор, решил собрать терморегистратор.
Как оказалось, с пайкой у меня дела тоже обстояли не очень хорошо, но более менее стало получаться, правда усилитель для термопары из урока 27 пока собрать не удалось (спаял на макетке, но где-то коротит, и придется все переделывать). {Было бы классно в ближайшем будущем собрать усилитель на печатной плате, но её ещё нарисовать надо (научиться).}
Поэтому решил собрать терморегистратор на базе китайской версии микросхемы MAX6675K, которую тоже заказ из Поднебесной. Вообще в перспективе мне желательно всё-таки собрать усилитель, и более того, переделать его под термопару типа S (платина-платина родий), у меня в лаборатории имеются конечно и К-термопары, но S предпочтительнее использовать.
Ну всё, ближе к делу. Я посмотрел скетч из урока 27, и переработал его таким образом, чтобы написанная Эдуардом программа Thermometer заработала с MAX6675K и смогла накапливать данные. Цели этой я добился, а вот удовлетворения особого не получил, потому как пришлось смотреть библиотеку для MAX6675K а там сплошные прерывания с помощью функции delay.
Прикинул по времени сколько берет на себя библиотека, и в итоге получилось, что опрашивать датчик чаще чем каждые 300 мс не стоит, это как бы следует из того какие прерывания ставил автор библиотеки и "образцового" скетча. Я сократил до раз в 250 мс, т.о. что датчик опрашивается четыре раза в секунду, вроде так, а главное программа Termometr заработала. При двух мс понятное дело ниче не работало.
Теперь вот думаю, может имеет смысл переписать библиотеку для MAX6675, и как-то вычислить сколько на самом деле времени нужно этой микросхеме для передачи данных, хочется как-то почаще получать и получше усреднять данные с чипа. Плюс не хочется тормозить программу бесконечными delay, это как я понял из уроков не комильфо. Возможно такая маленькая скорость обращений будет мешать нормальной работе ПИД-термоконтроллера. Как считаете Эдуард, имеет смысл написать библиотеку с прерываниями MsTimer2? Или возможно лучше вообще создать отдельную функцию обращения к чипу MAX6675 и интегрировать её в будущую программу, вызывая с помощью общего программного таймера MsTimer2?
Я нашел описание инерфейса и скетч работающий напрямую с MAX6675 здесь: http://www.bristolwatch.com/ele2/therc.htm И наверное смог бы на его основе написать функцию.
Первое устройство которое я решил собрать это терморегистратор для высоких температур, дело в том, что моя научная работа связана высокотемпературными кристаллизационными печами (до 1300 градусов), и проблема в том, что имеющиеся терморегуляторы в лаборатории уже много лет как морально устарели, а главное большая часть вышла из строя. Был у нас один современный прибор, но и он сгорел. Терморегистратор нужен для того, чтобы контролировать старые приборы, а также видеть динамику изменения температуры на компьютере. Вообщем вещь эта однозначно востребована.
Покупать в этом году лаборатория ничего не планирует (там замкнутый круг, в начале нужен результат, а потом финансирование, а не наоборот), поэтому вместо ремонта и настройки старинного оборудования (очень много требует времени и главное результат проделанной работы того не стоит), я решил попытаться собрать ПИД-терморегулятор на базе Ардуино своими силами (китайские клоны довольно таки дешевы, и могу себе позволить). Но прежде чем делать терморегулятор, решил собрать терморегистратор.
Как оказалось, с пайкой у меня дела тоже обстояли не очень хорошо, но более менее стало получаться, правда усилитель для термопары из урока 27 пока собрать не удалось (спаял на макетке, но где-то коротит, и придется все переделывать). {Было бы классно в ближайшем будущем собрать усилитель на печатной плате, но её ещё нарисовать надо (научиться).}
Поэтому решил собрать терморегистратор на базе китайской версии микросхемы MAX6675K, которую тоже заказ из Поднебесной. Вообще в перспективе мне желательно всё-таки собрать усилитель, и более того, переделать его под термопару типа S (платина-платина родий), у меня в лаборатории имеются конечно и К-термопары, но S предпочтительнее использовать.
Ну всё, ближе к делу. Я посмотрел скетч из урока 27, и переработал его таким образом, чтобы написанная Эдуардом программа Thermometer заработала с MAX6675K и смогла накапливать данные. Цели этой я добился, а вот удовлетворения особого не получил, потому как пришлось смотреть библиотеку для MAX6675K а там сплошные прерывания с помощью функции delay.
Прикинул по времени сколько берет на себя библиотека, и в итоге получилось, что опрашивать датчик чаще чем каждые 300 мс не стоит, это как бы следует из того какие прерывания ставил автор библиотеки и "образцового" скетча. Я сократил до раз в 250 мс, т.о. что датчик опрашивается четыре раза в секунду, вроде так, а главное программа Termometr заработала. При двух мс понятное дело ниче не работало.
Теперь вот думаю, может имеет смысл переписать библиотеку для MAX6675, и как-то вычислить сколько на самом деле времени нужно этой микросхеме для передачи данных, хочется как-то почаще получать и получше усреднять данные с чипа. Плюс не хочется тормозить программу бесконечными delay, это как я понял из уроков не комильфо. Возможно такая маленькая скорость обращений будет мешать нормальной работе ПИД-термоконтроллера. Как считаете Эдуард, имеет смысл написать библиотеку с прерываниями MsTimer2? Или возможно лучше вообще создать отдельную функцию обращения к чипу MAX6675 и интегрировать её в будущую программу, вызывая с помощью общего программного таймера MsTimer2?
Я нашел описание инерфейса и скетч работающий напрямую с MAX6675 здесь: http://www.bristolwatch.com/ele2/therc.htm И наверное смог бы на его основе написать функцию.