avatar_Игорь

Размышления о стабилизации мощности

Автор Игорь, 07-10-2012, 20:40:07

Попередня тема - Наступна тема

0 Користувачі і 1 Гість дивляться цю тему.

sergl

#15
Цитата: Игорь від 08-10-2012, 01:52:15



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

Ты подал команду счетчику считать импульсы в течении определенного периода времени. Прерывания никак на счетчик не влияют(только на процессор), он считает независимо от этого. Затем ты считал оттуда значение и положил в ячейку памяти(или регистр), вуаля.  У тебя всегда есть значение мощности - регулируй. Постоянная регулирования будет зависеть о периодичности опроса ячейки. Процесс регулирования не очень быстрый - 100 раз в секунду это делать вряд ли нужно, спешить некуда.

Олежище

#16
Игорь, посмотри внимательно протокол 1wire, там при чтении бита, прерывания надо запрещать на 6мкс, где то, при записи единичного бита те же 6мкс, а при записи нолика 60мкс. Т.е. 60мкс максимальная ошибка при длине 10000мкс. У меня процессор (в других приложениях) формирует трех фазную синусоиду для асинхронника и при этом обслуживает DSку. Попрыгать с временами пришлось, но все получилось.
Где то встречал как датчик на асинхронный порт прицепить и аппаратно им управлять через RX TX, можно так сделать, тогда все ресурсы свободны.
По моему 162 мега имеет два последовательных порта, тогда один на связь с компом останется, а второй на 18В20 пойдет.

ИгорьTopic starter

Цитата: sergl від 08-10-2012, 06:41:59Процесс регулирования не очень быстрый - 100 раз в секунду это делать вряд ли нужно, спешить некуда.
Процесс фазного регулирования - это получение 100 раз в секунду прерывания по пересечению нуля, отсчет от этого момента времени сдвига, и выдача импульса открытия симистора. То есть вся работа состоит из непрерывной, 100 раз в секунду, обработки прерываний. Все остальные функции - изменение напряжения (считывание с АЦП напряжения 5-10 тисяч раз в секунду),  возведение в квадрат, суммирование, деление и извлечением корня), вычисление сдвига запуска симистора, измерение температур, выполнение алгоритма процесса ректификации, проверку параметров безопасности - все это придется делать на фоне непрерывных, 100 раз в секунду, прерываний для рулёжки симистором.
Если управлять не напряжением, а мощностью, то содержимое скобок сверху надо выполнить дважды (для определения тока), и дополнительно выполнить умножение.
Наверное есть смысл, управляя мощностью, измерять ток не 50-100 раз в секунду, а 1 раз в несколько минут, вычислять сопротивление (лучше проводимость), и потом определять мощность не по формуле P=U x I, а по формуле H=U2/R. Это избавит от необходимости 100 раз в секунду извлекать корень и значительно разгрузит процессор.
А вообще - я подумываю о рулежке симистором с помощью другого кристалла, на который надо будут время от времени сбрасывать новое значение сдвига. Пусть она колбасится в 100-герцовых прерываниях и даже сидит под сетевым напряжением.
Віриш ти в Бога чи ні, йому байдуже.
Важливо, щоб Бог в тебе вірив, а не навпаки.

chelovechik

Цитата: Игорь від 08-10-2012, 02:34:58А если начнут греться контакты на шунте измерителя тока?

Для измерения тока, токовым трансом, ничего прикручивать не надо! Просто провод просовываешь через транс!  А падение напруги на шунте настолько мало, что шунт практически не греется!!!


ИгорьTopic starter

#19
Цитата: chelovechik від 08-10-2012, 09:32:34падение напруги на шунте настолько мало, что шунт практически не греется
Разумеется. Падение напруги на контактах ТЭНа тоже мало, и тоже не греется. Но это только в случае, если и там, и там надежные контакты.

Но я не о том.
Возникает вопрос - есть ли необходимость непрерывно измерять ток 5-10 тысяч раз в секунду, если ТЭНы сгорают 1 раз в 10 лет?
Наврное я чсделаю ка-то так. при каждом велючении система проверит сопротивление ТЭНа, сравнит с ранее запомненным, и если что не так (закорочен или пробит), даст об этом знать. Думаю, такого контроля вполне хватит. Токовый трансформатор тогда не нужен.
А расчеты в этом случае значительно упрощаются - замеров вдвое меньше и не надо 100 раз в секунду извлекать корень. просто складываем квадраты напряжений, и раз в период множим сумму на одинаковый коэффициент, зависящий от сопротивления ТЭНа. Получаем мощность.

Я не заблукал?...

Осталось придумать как измерить сопротивление подключенного ТЭНа. :)

Віриш ти в Бога чи ні, йому байдуже.
Важливо, щоб Бог в тебе вірив, а не навпаки.

Бандерівець

Цитата: Игорь від 08-10-2012, 12:42:36просто складываем квадраты напряжений, и раз в период множим сумму на одинаковый коэффициент, зависящий от сопротивления ТЭНа. Получаем мощность
Нужно, а как иначе заменить РМ-2, то есть измерять напряжение.

chelovechik

Цитата: Игорь від 08-10-2012, 12:42:36Осталось придумать как измерить сопротивление подключенного ТЭНа.
Горячего, холодного, нагретого до 100*, или 500*? Или нет разницы?


Олежище

ТЭН не лампочка, он свое сопротивление от температуры практически не меняет, это легко проверяется тестером.

Sambedded

Цитата: Игорь від 08-10-2012, 12:42:36

Осталось придумать как измерить сопротивление подключенного ТЭНа. :)

Ну , например, при закрытом "основном" симисторе зарядить конденсатор и через дополнительнвй ключ (моська например, ) разрядить его на тены - по скорости спадания напряжения можно вычислить сопротивление.

Только зачем? Если исключить необходимость контороля целостности тэнов оно нам не надо. Да и контроль можно сделать, например, по проседанию напряжения при  подключении тэнов.

Если вычислять мощность в процентах к номинальной, то нам тоже корень извлекать не надо. Только квадраты считать и делить.

При желании пользователя видеть текущую мощность в ватах - пусть введет номинальную мощность тэнов при учстановке.

Sambedded

#24
Цитата: Игорь від 08-10-2012, 08:33:34

Процесс фазного регулирования - это получение 100 раз в секунду прерывания по пересечению нуля, отсчет от этого момента времени сдвига, и выдача импульса открытия симистора. То есть вся работа состоит из непрерывной, 100 раз в секунду, обработки прерываний.

Да это совсем незначительная нагрузка на контроллер. Надо всего то задать значение таймера и разрешить прерывание таймера. В прерывании таймера открыть симстор и запретить прерывания по таймеру. Все. Буквально десяток комманд. Ну если пишем на С то комманд 50. А теперь считаем - пусть у нас AVR работаюший на 8МГц. Это 8 млн комманд в секунду. то есть 80 тысяч команд за 1/100 секунды. Таким образом обработка фазового управления "съедает"у нас меньше 0.1% рессурсов.

ИгорьTopic starter

#25
Цитата: Sambedded від 08-10-2012, 23:00:55... и разрешить прерывание таймера.
Я об этом и говорю. айме быдет прерывать выполнение других задач 5 - 10 тысяч раз в секунду. А для считывания температуры нам нужно запрещать прерывания. Значит во время считывания температур с ДС18Б20 симистор будет или закрыт, или открыт.
Я- начинающий юзер АВР, и меня такая ситуация как-то тревожит. Димассик пытался меня успокоить, говорил, что эти запреты можно сделать короткими и погрешность будет мизерной, но я как-то тревожусь.

Ну, например, обработку нажатий клавиш нужно тоже проводить по прерываниям. И пока эти прерывания будет обрабатываться, все остальные прерывания (и по таймеру симистора) тоже будут проигнорированы. Значит в это время нагрев тоже будет либо нулевой, либо полный.
оэтому я и думаю о "сопроцессоре" - микроконтроллерном, или другом - который будет  рулить симистором и ждать корректировочных сигналов от основного процессора.

Если мелю чушь - не обессудьте. Я знаю, что сантехник с паяльником - это катастрофа.

Оффтоп.
Вчера кум попросил купить ему кулер - лампы аквариума перегревают воду.
Пока донес кулер домой, решил, что нужно сделать управлялку оборотов по температуре воды. Уже в маррутке стал продумывать прошивку...
А когда пришел домой, захотелось вспомнить аналоговые телодвижения.
В результате сделал за вечер на РТС-резисторе с мостом и компаратором. Заработало с первого раза, с заданной шириной шкалы регулирования, но сдвинутой на 10 градусов. Вся подстройка свелась к добавке одного резистора последовательно с термодатчиком.
Думаю, микроконтроллеры - это круто, но и старые добрые аналоговые схемы забывать не стоит.

Признаться честно, сначала хотел зделать на логических элементах 2и-не, или 2нли-не. Начал искать микросхемы 561-й серии, и первой в руки попалась LM393. Кто первый встал, того и тапки. Выбор был сделан.


Віриш ти в Бога чи ні, йому байдуже.
Важливо, щоб Бог в тебе вірив, а не навпаки.

Sambedded

Цитата: Игорь від 09-10-2012, 09:38:07

Я об этом и говорю. айме быдет прерывать выполнение других задач 5 - 10 тысяч раз в секунду.
Ну от таймера будет прерывание только раз в полупериод, те 100 раз в секунду. Вот для измерения напряжения нам потребуется пару сотен прерываний от АЦП за один полупериод. Но, опять же на их обработку особо много времени не потребуется.

Цитата
А для считывания температуры нам нужно запрещать прерывания. Значит во время считывания температур с ДС18Б20 симистор будет или закрыт, или открыт.

Обмен с термометром занимет пару миллисикунд. То есть мы вполне можем уложиться между прерываниями на управление симистором, так что их не надо будет запрещать. Да, придется запретить измерение наряжения на это время. Но это не страшно если один период останется не обмерянным.

Цитата
Ну, например, обработку нажатий клавиш нужно тоже проводить по прерываниям. И пока эти прерывания будет обрабатываться, все остальные прерывания (и по таймеру симистора) тоже будут проигнорированы. Значит в это время нагрев тоже будет либо нулевой, либо полный.

Прерывания клавиши обрабатывается очень быстро. И даже если вдруг случится переход через 0 в это время – ничего страшного, прерывание по этому поводу все равно будет обработано после того как закончится обработка прерывания клавиши. То есть самое страшное – управляющий сигнал на открытие симистора будет подан на пару микросекунд  позже.
Ну и к тому же клавиши можно вообще без дополнительных прерываний обрабатывать.

Sambedded

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

ИгорьTopic starter

Цитата: Sambedded від 09-10-2012, 11:14:43Вот для измерения напряжения нам потребуется пару сотен прерываний от АЦП за один полупериод. Но, опять же на их обработку особо много времени не потребуется.
Один раз в период понадобится извлекать корень.
Я не знаю сколько тактов занимает эта операция. Реально ли успеть сделать это за сотую (или сколько у нас выборок?) часть периода?
Віриш ти в Бога чи ні, йому байдуже.
Важливо, щоб Бог в тебе вірив, а не навпаки.

Олежище

Если считать, что в сети синусоида, или эта несинусоидальность влияния на мощность оказывает менее заданной точности, то напряжение можно мерять всего один раз за полупериод, т.е. максимальное значение.


SMF spam blocked by CleanTalk