高压危险,建议使用隔离变压器,并在前端严格安装漏电保护器,在后端安装自耦调压器,如果完全没有经验不要尝试,如果完全没有经验不要尝试,如果完全没有经验不要尝试。不使用隔离变压器和漏电保护器有可能会造成触电危害。

电力电子技术都学过的单项桥式整流电路,大多数实验室内部使用的都是硬件触发电路,还要锯齿脉冲,麻烦至极。

又因为我的毕业设计里面涉及到晶闸管桥式整流和有源逆变,于是研究了一下。系统采用STM32F411CEU6,当然C8T6效果相同,他们都使用外部中断触发

首先先看一下cubemx的配置,由于交流电一个周期是0.02s,也就是20000us,所以我们需要微秒延时,但又又又,stm32hal库内部只有HAL_Delay,他是毫秒级延时,所以我们需要配置一个微秒延时。

时钟选择Internal Clock

如果使用f411ceu6的话,如图配置,如果使用f103c8t6的话,请在第一个Prescaler位置改为72-1,下面的Counter Period改为65535即可,这就是微秒延时。其他的情况随意,我是在程序里开了一个ADC用于检测直流电压。

延时的程序如图:

#define TIM_HANDLE &htim2
#define KEY0 HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_5)// 
void delay_us(int nus)
{
	__HAL_TIM_SET_COUNTER(TIM_HANDLE, 0); //把计数器的值设置为0
	__HAL_TIM_ENABLE(TIM_HANDLE); //开启计数
	while (__HAL_TIM_GET_COUNTER(TIM_HANDLE) < nus); //每计数一次,就是1us,直到计数器值等于我们需要的时间
	__HAL_TIM_DISABLE(TIM_HANDLE); //关闭计数
}

给与角度和ADC检测的代码如图:

  /* USER CODE BEGIN WHILE */
  while (1)
  {
		HAL_ADC_Start(&hadc1);
    HAL_ADC_PollForConversion(&hadc1, 50);//等待转换完成,第二个参数表示超时时间,单位ms.
    if(HAL_IS_BIT_SET(HAL_ADC_GetState(&hadc1), HAL_ADC_STATE_REG_EOC)){
    AD_Value = (HAL_ADC_GetValue(&hadc1)*3300.0/4096);//读取ADC转换数据,数据为12位
    }
		if(bright<7)bright=7;
		if(bright>160)bright=160;
		opentime=cal_map(bright,0,180,0,10000);
    /* USER CODE END WHILE */

当给与bright角度0-180时,他会自动将角度转化为0-10000us,传给延时变量

外部接线如图,火线和零线经过电阻分压,PC817光耦后端接成开漏输出,实现脉冲采集,并且配置外部中断

外部中断配置,同时配置上升沿和下降沿,因为我们要交替给4个晶闸管导通信号:

 核心代码:

void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
{
	if(GPIO_Pin == GPIO_PIN_5)//有中断就触发B7  B6  B5   B4,对应1234
	{
		if(KEY0==0)
		{
			delay_us(opentime);
			HAL_GPIO_WritePin(GPIOB, GPIO_PIN_7,GPIO_PIN_SET); //13开
			HAL_GPIO_WritePin(GPIOB, GPIO_PIN_5,GPIO_PIN_SET); //
			delay_us(50);		
			HAL_GPIO_WritePin(GPIOB, GPIO_PIN_7,GPIO_PIN_RESET); //13关
			HAL_GPIO_WritePin(GPIOB, GPIO_PIN_5,GPIO_PIN_RESET); //		
		}
		if(KEY0==1)
		{
			delay_us(opentime);
			HAL_GPIO_WritePin(GPIOB, GPIO_PIN_6,GPIO_PIN_SET); //24开
			HAL_GPIO_WritePin(GPIOB, GPIO_PIN_4,GPIO_PIN_SET); //
			delay_us(50);
			HAL_GPIO_WritePin(GPIOB, GPIO_PIN_6,GPIO_PIN_RESET); //24关
			HAL_GPIO_WritePin(GPIOB, GPIO_PIN_4,GPIO_PIN_RESET); //		
		}
	}

}

晶闸管接线参考

图:

附一张采样效果的图片:

 纯电阻负载效果:

基于stm32的单相桥式整流电路

Logo

智能硬件社区聚焦AI智能硬件技术生态,汇聚嵌入式AI、物联网硬件开发者,打造交流分享平台,同步全国赛事资讯、开展 OPC 核心人才招募,助力技术落地与开发者成长。

更多推荐