Если сопротивление ТЭНа не меняется в процессе регулирования, то изменение напряжения приводит к пропорциональному изменению тока. Если изменить (уменьшить или увеличить) напряжение в ИКС раз, то и ток изменится в ИКС раз, а мощность изменится в ИКС в квадрате раз.
На реактивной нагрузке невозможно изменить напряжение так, чтобы ток при этом не изменился.
Поэтому никаких датчиков тока не нужно.
Нужно 32 или 64 раза за полупериод измерять с помощью АЦП мгновенное напряжение на ТЭНе, возводить в квадрат и складывать. В момент пересечения нуля полученное значение делить на количество суммированных значений и извлекать корень. Полученное значение будет равно true rms - действующему значению напряжения.
Затем делать анализ. Если измеренное и вычисленное значение меньше заданного значения напряжения, нужно сдвинуть момент открытия симистора не единичку раньше. Если больше - сдвинуть запуск на единичку позже.
В качестве опорного напряжения для АЦП может служить внутренний ИОН атмеги или аттини, то есть кроме бестрансформаторного блока питания, пары резисторных делителей, МОСьки для запуска симистора и семисегментника на три регистра никаких обвесов этому устройству не нужно. Ни операционников, ни шунтов, ни трансформаторов тока. Собственно говоря, так устроена РМ-ка.
Единственная сложность, которую я вижу навскидку, это измерение мгновенных значений во время отрицательной полуволны напряжения. В РМ-ке это решено просто - замеры делаются только по одной полуволне и предполагается, что вторая волна симметрична, или по крайней мере пропорциональна.
Что еще я увидел в РМ-ке. Красивое решение.
АЦП измеряет мновенные значения напряжения не на нагрузке, а в сети (на входе). При этом замеры, сделанные до запускающего импульса, не суммируются. В результате в расчет идут мгновенные значения напряжения в сети в тот момент, когда симистор открыт.
Строго говоря, напряжение на нагрузке ниже этого напряжения примерно на 1.5 вольта, но для нас абсолютное значение не важно, а важна стабильность выбранного значения...
Переход на три фазы делает задачу интересней, но не более сложной.