Дефицит времени, связанный с завершением дачного сезона, не позволяет пока подробно описать все изменения.Доброго дня! Как продвигаются дела с новой версией? Есть ли какие-нибудь вести с полей?
Да и новая версия ещё не совсем доделана - отсутствует автозапуск.C-Bell, 26 Сент. 20, 02:43
Smart Distiller (Умный дистиллятор с управлением по интернет)
SVRyzhov
Новичок
Нижний Новгород
1
Отв.240 19 Марта 21, 11:48
C-Bell
Научный сотрудник
Улан-Удэ
1.8K 1.3K
Отв.241 30 Апр. 21, 10:55
Цифровой вольтметр - аппаратная часть
Переход на установку мощности нагрева не в процентах от максимальной мощности а в абсолютных величинах требует два параметра:
1. Напряжение сети.
2. Ток, потребляемый нагревателем (либо сопротивление этого нагревателя).
Соответственно, мощность можно вычислить как произведение напряжения сети на потребляемый ток P=U*I (1)
Либо как отношение квадрата напряжения сети к сопротивлению нагревателя P=U*U/R (2)
Чтобы не использовать довольно дорогой PZEM или не ставить два измерителя и напряжения и тока, отдано предпочтение добавлению в конфигурацию параметра сопротивления нагревателя и одному измерителю сетевого напряжения. При использовании только измерителя напряжения сети мощность можно рассчитывать по формуле 2.
Так как у Raspberry Pi нет встроенных аналого-цифровых преобразователей, то нужен соответствующий отдельный модуль. Под рукой был 8-битный модуль PCF8591 с управлением по I2C, его и применил. Как оказалось, разрядности вполне хватает для точной регулировки мощности.
Осталось только преобразовать высокое переменное напряжение сети в соответствующее ему низкое постоянное напряжение с гальванической развязкой.
На Алиэкспрессе есть такой модуль для Arduino, но у него на выходе сдвинутая синусоида, повторяющая форму напряжения сети. И как этот модуль использовать с Raspberry Pi я не нашёл.
Проще оказалось собрать свой модуль на основе такого-же инструментального трансформатора.
Ниже показана схема цифрового вольтметра и его подключение к Raspberry Pi
Перед сборкой необходимо с помощью двух вольтметров настроить подстроечным резистором преобразователь высокого переменного напряжения в низкое постоянное.
При входном напряжении 220V постоянное напряжение на выходе должно быть 2,2V.
ВНИМАНИЕ! НА СХЕМЕ ПРИСУТСТВУЕТ ВЫСОКОЕ НАПРЯЖЕНИЕ, ОПАСНОЕ ДЛЯ ЖИЗНИ!
1. Напряжение сети.
2. Ток, потребляемый нагревателем (либо сопротивление этого нагревателя).
Соответственно, мощность можно вычислить как произведение напряжения сети на потребляемый ток P=U*I (1)
Либо как отношение квадрата напряжения сети к сопротивлению нагревателя P=U*U/R (2)
Чтобы не использовать довольно дорогой PZEM или не ставить два измерителя и напряжения и тока, отдано предпочтение добавлению в конфигурацию параметра сопротивления нагревателя и одному измерителю сетевого напряжения. При использовании только измерителя напряжения сети мощность можно рассчитывать по формуле 2.
Так как у Raspberry Pi нет встроенных аналого-цифровых преобразователей, то нужен соответствующий отдельный модуль. Под рукой был 8-битный модуль PCF8591 с управлением по I2C, его и применил. Как оказалось, разрядности вполне хватает для точной регулировки мощности.
Осталось только преобразовать высокое переменное напряжение сети в соответствующее ему низкое постоянное напряжение с гальванической развязкой.
На Алиэкспрессе есть такой модуль для Arduino, но у него на выходе сдвинутая синусоида, повторяющая форму напряжения сети. И как этот модуль использовать с Raspberry Pi я не нашёл.
Проще оказалось собрать свой модуль на основе такого-же инструментального трансформатора.
Ниже показана схема цифрового вольтметра и его подключение к Raspberry Pi
Перед сборкой необходимо с помощью двух вольтметров настроить подстроечным резистором преобразователь высокого переменного напряжения в низкое постоянное.
При входном напряжении 220V постоянное напряжение на выходе должно быть 2,2V.
ВНИМАНИЕ! НА СХЕМЕ ПРИСУТСТВУЕТ ВЫСОКОЕ НАПРЯЖЕНИЕ, ОПАСНОЕ ДЛЯ ЖИЗНИ!
C-Bell
Научный сотрудник
Улан-Удэ
1.8K 1.3K
Отв.242 30 Апр. 21, 13:08
Цифровой вольтметр - программная часть
Так как аналого-цифровой преобразователь управляется по I2C предварительно нужно эту шину разрешить в конфигурации Raspberry Pi (через главное меню - параметры).
Измерение производится классом-потоком с интервалом 0,5 сек.
Получить измеренное напряжение можно запросив у этого класса параметр value
Измерение производится классом-потоком с интервалом 0,5 сек.
Получить измеренное напряжение можно запросив у этого класса параметр value
import threading
import time
#подгружаем модуль
#для работы с шиной I2C в Python "python-smbus"
from smbus import SMBus
DEV_ADDR = 0x48 # адрес модуля PCF8591 на шине I2C
class Voltmeter(threading.Thread):
"""Класс обеспечивает измерение напряжения сети 220V
с помощью АЦП модуля PCF8591"""
def __init__(self):
super(Voltmeter, self).__init__()
self._V=self.GetVoltage()
self._Run=False
@property
def value(self):
return self._V
def run(self):
self._Run=True
while(self._Run):
self._V=self.GetVoltage()
time.sleep(0.5)
def stop(self):
self._Run=False
def GetVoltage(self):
return self.MeasureVoltage()
def MeasureVoltage(self):
SMBus(1).write_byte(DEV_ADDR, 0b1000010) # select ADC1
SMBus(1).read_byte(DEV_ADDR) # read last value
SMBus(1).read_byte(DEV_ADDR) # repeat reading last value
return round(SMBus(1).read_byte(DEV_ADDR))
--------------------------------------
Colored with http://dumpz.org