序言

功率模块旨在控制输出功率的大小,以及实时显示当前输出状态。该模块由控制和显示组成两个部分组成。

控制部分

控制部分拟采用两档三脚钮子开关来做 PBTN 状态引脚的输入控制,两档三脚钮子开关为单刀双掷式,在接入 STM32 主控电路后共有两种状态输入(3.3V、0V)。

image钮子开关图

采用电位器来做 P 功率引脚的输入调节,根据当前输入的电压值经过adc转换后算出对应的电压占比值,同时控制功率输出引脚输出对应占比值的功率。

硬件连接

硬件原理图如下图所示(Altium Designer 绘制):

image功率控制部分原理图 缺少两个原件的连接说明

代码开发

状态引脚 PBTN 直接采用 GPIO 外部中断输入方式来实现,避免 CPU 核心资源的浪费,同时节省了反应时间。功率引脚 P 采用 ADC 输入配置,通过调节电位器来调节输入的电压值,内部经过 ADC 转换后得出对应的电压占比,从而控制功率输出引脚的输出占比。

部分开发代码如下所示:

1
2
3
4
5
6
7
8
9
10
11
12
// ----- 外部中断部分代码 -----
// ----- global_power_status 全局功率输出状态变量
/* USER CODE BEGIN EXTI1_IRQn 1 */
if (GPIO_PIN_SET == HAL_GPIO_ReadPin(P_GPIO_Port,P_Pin))
{
global_power_status = POWER_ON;
}
else if (GPIO_PIN_RESET == HAL_GPIO_ReadPin(P_GPIO_Port,P_Pin))
{
global_power_status == POWER_OFF;
}
/* USER CODE END EXTI1_IRQn 1 */

显示部分

显示部分拟采用一个四位数码显示,其中第一位为英文字母 P 表示功率,后三位为对应的功率百分比输出值。

显示说明:

  • 第一位 P 由 PBTN 开关控制,在 PBTN 开关闭合后常亮显示。
  • 后三位显示当前输出的功率百分比之,从 000 ~ 100 。
注意

对于此部分的开发,与定时显示模块共用引脚,所以代码部分会重合,两篇文章的显示部分仅展示自己的代码部分

硬件连接

硬件原理图如下图所示(Altium Designer 绘制):

image功率显示部分原理图 缺少对应的链接说明

代码开发

动态显示模式,节省核心工作资源。大概需要 n 个引脚来驱动显示数码管。代码跟控制部分代码联动。

该部分代码如下所示:

1
//缺少此部分代码

此间车厢已使用  次 |   人乘坐过此趟开往世界尽头的列车