220V 调压采集

Posted c951

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了220V 调压采集相关的知识,希望对你有一定的参考价值。

220V 调压采集

一、功能概述

  • 用于220V白炽灯调光
  • 采集输出电流电压并显示
  • 接入CAN总线,可用CAN控制

二、硬件原理

1、硬件参数

  • 主控芯片STM32F103C8T6
  • CAN芯片TJA1050
  • AC电流电压采集BL0937
  • 晶闸管BTA16
  • AC220V转DC5V PB5N-2025
  • DC5V转DC3.3V AMS1117
  • 隔离DC5V转DC5V B0505S
  • 整流桥DS207S
  • 光耦 MOC3020 CYTLP521 PC817

2、电路原理

技术图片

技术图片


晶闸管原理

电流电压采集芯片BL0937资料


3、软件原理

软件程序使用FreeRTOS,硬件中断(上升沿下降沿)接收220V过零检测信号。

过零检测中断处理

void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
{
    switch(GPIO_Pin)
    {
        case GPIO_PIN_8:
            if(control_task_run)
            {
                if(DevInfo.LedSta == Adjust)
                {
                    if(DevInfo.AdjustMessage.Adjust == 0)
                    {
                        HAL_GPIO_WritePin(GPIOA, OUT_Pin, GPIO_PIN_SET);
                    }
                    else
                    {
                        if(PAin(8) == 0)
                        {
                            TIM3->ARR = DevInfo.AdjustMessage.Adjust * 100 + 2;
                            HAL_TIM_Base_Start_IT(&htim3);
                        }
                        else
                        {
                            HAL_GPIO_WritePin(GPIOA, OUT_Pin, GPIO_PIN_SET);
                        }
                    }
                }
            }
        break;
        default:
            break;
    }
}

因BL0937返回的是脉冲信号,所以开个定时器采集,部分程序如下:

void Tim2Callback(TIM_HandleTypeDef *htim)
{
    TIM2Ch3Cnt++;
    TIM2Ch4Cnt++;
}


void HAL_TIM_IC_CaptureCallback(TIM_HandleTypeDef *htim)
{
    static uint32_t TIM2CH3CapturedValue[2] = {0};
    static uint32_t TIM2CH4CapturedValue[2] = {0};
    static uint8_t TIM2CH3Sta = 0;
    static uint8_t TIM2CH4Sta = 0;
    if(TIM2 == htim->Instance)
    {
        if(htim->Channel == HAL_TIM_ACTIVE_CHANNEL_3)
        {
            if(TIM2CH3Sta == 0)
            {
                TIM2Ch3Cnt = 0;
                TIM2CH3CapturedValue[0] = HAL_TIM_ReadCapturedValue(&htim2,TIM_CHANNEL_3);
                TIM2CH3Sta++;
            }
            else
            {
                TIM2CH3CapturedValue[1] = HAL_TIM_ReadCapturedValue(&htim2,TIM_CHANNEL_3);
                TIM2CH3Sta = 0;
                CF_CNT = 0xFFFF * TIM2Ch3Cnt + TIM2CH3CapturedValue[1] - TIM2CH3CapturedValue[0];
            }
        }
        else if(htim->Channel == HAL_TIM_ACTIVE_CHANNEL_4)
        {
            if(TIM2CH4Sta == 0)
            {
                TIM2Ch4Cnt = 0;
                TIM2CH4CapturedValue[0] = HAL_TIM_ReadCapturedValue(&htim2,TIM_CHANNEL_4);
                TIM2CH4Sta++;
            }
            else
            {
                TIM2CH4CapturedValue[1] = HAL_TIM_ReadCapturedValue(&htim2,TIM_CHANNEL_4);
                TIM2CH4Sta = 0;
                CF1_CNT = 0xFFFF * TIM2Ch4Cnt + TIM2CH4CapturedValue[1] - TIM2CH4CapturedValue[0];
            }
        }
    }  

}	

三、效果图

技术图片

以上是关于220V 调压采集的主要内容,如果未能解决你的问题,请参考以下文章

51单片机 用DAC0808实现数字调压+Proteus仿真

电力电子基于matlab Simulink AC-AC交换变频调压含Matlab源码 2359期

液化天然气用一级和二级燃气减压阀减压器调压阀2500m3(800方)

电源硬件设计----线性调压器与LDO

IP MODEM远程测控燃气监控无线数据采集传输RS485/232

电力电子单相交流调压电路实验,江南大学物联网工程学院,实验报告