Ваттметр за 1 бакс

Использование прочих датчиков и энкодеров и пользовательских блоков к ним
Ответить
ivan-club
Рядовой
Сообщения: 5
Зарегистрирован: 28.11.2016{, 22:54}
Репутация: 0

Ваттметр за 1 бакс

#1

Сообщение ivan-club » 06.12.2017{, 00:31}

Добрый день,хочу подключить ваттметр hlw8032 к ардуино для измерения переменного тока и напряжения. Микросхема выдаёт в uart среднеквадратичные значения напряжения тока и активной мощности при этом в стоит 63 рубля на Али и 34 рубля на другом китайском сайте. Как мне из передаваемых ею данных извлечь 6,7,8байт(напряжение) и 12,13,14(ток) средствами flprog?

Аватара пользователя
Anydy
Администратор
Сообщения: 3269
Зарегистрирован: 30.12.2017{, 12:10}
Репутация: 278
Имя: Андрей

Ваттметр за 1 бакс

#2

Сообщение Anydy » 06.12.2017{, 04:34}

Ребята, повторяю в очередной раз....
FlProg не умеет работать с любыми устройствами! Только с теми, которые внесены автором в программу!
Если Вы хотите подключить свой "особенный" девайс, то для этого есть функция создания блоков пользователя!
Найдите в интернете скетч, проверьте его работу с вашим устройством, сделайте блок для программы и потом развивайте свой проект!

Аватара пользователя
Cancertanly
Сержант
Сообщения: 205
Зарегистрирован: 06.04.2016{, 19:59}
Репутация: 18
Откуда: bish
Имя: Антон

Ваттметр за 1 бакс

#3

Сообщение Cancertanly » 06.12.2017{, 05:42}

ivan-club, поделитесь ссылью пожалуйста на модули
FLProg_ru
https://t.me/flrog_ru ...................................................FLProg_v7.3.4
https://t.me/soft_duino

Аватара пользователя
support
Супермодератор
Сообщения: 1838
Зарегистрирован: 03.01.2018{, 11:45}
Репутация: 687
Откуда: Астрахань
Имя: Сергей
Контактная информация:

Ваттметр за 1 бакс

#4

Сообщение support » 06.12.2017{, 06:17}

Ну в принципе несложно, загоняете получаемые байты в стек (при помощи блока приема данных через UART) При этом считаете полученные байты (у этого блока есть выход - получение очередного байта). После получения 14 байт забираете нужные из стека. Все, профит.
Блок стека находится в папке Массивыю
Автор программы FLProg.

Van
Рядовой
Сообщения: 13
Зарегистрирован: 10.10.2017{, 15:56}
Репутация: 0

Ваттметр за 1 бакс

#5

Сообщение Van » 06.12.2017{, 11:34}

ivan-club писал(а):Добрый день,хочу подключить ваттметр hlw8032
Да, интересная китаёвинка!

Но там ведь есть и микросхема HLW8013 с SPI интерфейсом.
А с SPI всё проще и, как мне кажется, для подобных целей - правильнее.

Но за наводку - спасибо.

ivan-club
Рядовой
Сообщения: 5
Зарегистрирован: 28.11.2016{, 22:54}
Репутация: 0

Ваттметр за 1 бакс

#6

Сообщение ivan-club » 06.12.2017{, 12:34}

https://m.ru.aliexpress.com/s....6jrrgBo

Добавлено (06.12.2017, 12:29)
---------------------------------------------
Да есть и с spi но она дороже ,у неё сложней обвязка больше выводов нет встроенного кварца и купить её проблемней .Я покупал у этого продовца hlw8012 и просил добавить в продажу всю линейку микросхем но он ответил что может поставить только hlw8032 и дал ссылку для заказа.

Добавлено (06.12.2017, 12:32)
---------------------------------------------
Только модулей пока нет я собираю на макетке по даташиту

Добавлено (06.12.2017, 12:34)
---------------------------------------------
Сергей спасибо огромное за помощь как только микросхемы прийдут проверю и отпишусь.

Van
Рядовой
Сообщения: 13
Зарегистрирован: 10.10.2017{, 15:56}
Репутация: 0

Ваттметр за 1 бакс

#7

Сообщение Van » 06.12.2017{, 15:04}

ivan-club писал(а):Да есть и с spi но она дороже ,у неё сложней обвязка больше выводов нет встроенного кварца и купить её проблемней .Я покупал у этого продовца hlw8012 и просил добавить в продажу всю линейку микросхем но он ответил что может поставить только hlw8032 и дал ссылку для заказа.
Да, спасибо, понял.
А что-то я в даташите на китайском не нашел - каков диапазон частот измеряемого напряжения (тока) у этих hlw80XX? Понятно, что 50 (60) Гц. Но каков +-?
Последний раз редактировалось Van 06.12.2017{, 15:05}, всего редактировалось 1 раз.

mobi
Рядовой
Сообщения: 1
Зарегистрирован: 03.02.2018{, 21:25}
Репутация: 0
Имя: Aleksey

Ваттметр за 1 бакс

#8

Сообщение mobi » 03.02.2018{, 21:55}

ivan-club писал(а):
06.12.2017{, 00:31}
Добрый день,хочу подключить ваттметр hlw8032 к ардуино для измерения переменного тока и напряжения. Микросхема выдаёт в uart среднеквадратичные значения напряжения тока и активной мощности при этом в стоит 63 рубля на Али и 34 рубля на другом китайском сайте. Как мне из передаваемых ею данных извлечь 6,7,8байт(напряжение) и 12,13,14(ток) средствами flprog?
На си алгоритм декодирования данных с 8032 выглядит так

Код: Выделить всё

static float Vk=1.88;//расчетное значение сопротивления делителя U
static float Ik=0.25;//Значение, вычисленное из резистора I (4mR)
static uint32_t VParam=0;
static uint32_t VReg=0;
static float V=0;
static uint32_t IParam=0;
static uint32_t IReg=0;
static float I=0;

static uint32_t PParam=0;
static uint32_t PReg=0;
static float P=0;
static float PV=0;
static float PF=0;
static float PBuf[20];
static float PMin=0;
static uint8_t Windex=0;

void Widget::WLW8032_DecodProtocol(uint8_t Data)
{
    static uint8_t status=0;
    static uint8_t index=0;
    static uint8_t sum=0;
    static uint8_t tempBuf[24];
    static uint8_t i;
    switch (status)
    {
    case 0:
        if(Data==0x55)
        {
            tempBuf[0]=Data;
            status=1;
        }
        break;
    case 1:
        if(Data==0x5A)
        {
            tempBuf[1]=Data;
            status=2;
        }
        else status=0;
        index=2;
        sum=0;
        break;
    case 2:

        tempBuf[index]=Data;
        index++;
        if(index==24)
        {
            if(sum==Data)
            {
                //Tools_Printf("check sum OK\r\n");
                if(tempBuf[20]&(0x03<<4))
                {
                    VParam=(tempBuf[2]<<24)|(tempBuf[3]<<16)|tempBuf[4];
                    VReg=(tempBuf[5]<<24)|(tempBuf[6]<<16)|tempBuf[7];
                    IParam=(tempBuf[8]<<24)|(tempBuf[9]<<16)|tempBuf[10];
                    IReg=(tempBuf[11]<<24)|(tempBuf[12]<<16)|tempBuf[13];
                    PParam=(tempBuf[14]<<24)|(tempBuf[15]<<16)|tempBuf[16];
                    PReg=(tempBuf[17]<<24)|(tempBuf[18]<<16)|tempBuf[19];

                    V=(float)VParam/(float)VReg*Vk;
                    I=(float)IParam/(float)IReg*Ik;
                    P=(float)PParam/(float)PReg*Vk*Ik;
                    PV=V*I;
                    PF=P/PV;
                    //Tools_Printf("V:%f\tI:%f\tP:%f\tPV:%f\r\n",V,I,P,PV);
                    qDebug()<<"V:"<<V<<"I:"<<I<<"P:"<<P<<"PV:"<<PV<<"PF:"<<PF;
                }
            }
            //else Tools_Printf("check sum Fail\r\n");
            status=0;
        }
        else
        {
            sum+=Data;
        }
        break;
    default:
        break;
    }
}

Ответить

Вернуться в «Прочие датчики и энкодеры»