基于STM32单片机的电机转速测量仪设计
2021-06-03无锡科技职业学院
无锡科技职业学院 史 萍 张 瑾
为了实现电机测速的高性能、低成本、低功耗,本文设计了一种基于STM32F103CET6单片机控制的电机转速测量仪,用OLED屏显示其每分钟转速和电机图片。采用霍尔传感器接收电机旋转信号,经过上拉处理后送STM32单片机,单片机用中断的方式进行处理,通过连续两次接收到传感器信号的时间差确定每分钟电机的转速。该测速仪便于功能扩展、电路结构简洁、性能价格比高、实用性强。
随着芯片技术及其开发软件的不断发展,许多控制功能可以采用嵌入式技术来完成,这样就为电机的精准测速提供了便捷,通过测速可以反应设备运行是否正常以及确定定位精度。本测速仪把嵌入式STM32单片机技术运用到电机测速系统中,不但可以提高性能,而且还可以降低功耗,进而减少系统成本。另外,霍尔传感器利用磁感应测速抗外界干扰能力强且灵敏度高,进一步提高了测速精度。
1 电机测速仪硬件设计
电机测速仪硬件设计框图如图1所示,霍尔传感器模块将感应到的电机信号经过处理成为脉冲信号,该脉冲信号作为中断信号送STM32F103CET6单片机,单片机进行信息处理,最后送ALIENTEK OLED显示模块,该模块采用8080并行模式,OLED屏显示中英文汉字、电机转速和电机图片。
图1 电机测速仪硬件设计框图
1.1 霍尔传感器模块
霍尔传感器模块组成如图2所示,图中霍尔传感器型号为3144,1脚接电源(电源范围为4.5V至24V,本设计选择5V供电),2脚接地,3脚接10K的上拉电阻连3.3V电源,然后接STM32单片机的PE2脚。
霍尔传感器模块中的霍尔传感器预先安装固定,在电机的旋转部位安装导磁性能优良的磁钢,当电机旋转时将带动磁钢接近霍尔传感器,此时霍尔传感器3脚将输出信号送给单片机,电机不转时霍尔传感器输出高电平,当电机旋转时霍尔传感器接近磁钢将输出低电平。
图2 霍尔传感器模块组成
1.2 STM32F103ZET6单片机
STM32F103ZET6单片机为中低端的32位增强型微处理器,由意法半导体公司制造,其内核基于Cortex-M3即采用哈佛结构,运用三级流水线处理机制并增加了分支预测功能,完全基于硬件进行中断处理,中断处理速度快;最高工作频率达72MHz,片内Flash为512K,指令运行周期短;3.3V供电,为低功耗芯片;该芯片集成了Timer、ADC、SPI,I2C及UART等多种外设功能,易于功能扩展。其端口PA~PG可根据需要定义成输入或输出及多种复用口,这样PCB板的设计人员不必把某些信号在板上绕一大圈完成联接,既便于PCB的设计又减少了信号的交叉干扰。
图3 单片机和OLED模块插座连接图
单片机和OLED模块插座连接如图3所示,图中U3为STM32F103ZET6单片机,J1为OLED模块连接插座,OLED的片选信号OLED_CS和单片机的PD6相连,OLED的写数据信号OLED_WR和单片机的PG14相连,OLED的读数据信号OLED_RD和单片机的PG13相连,OLED的硬复位信号OLED_RST和单片机的PG15相连,OLED的命令/数据标志信号OLED_RS和单片机的PD3相连,OLED的数据信号D0~D7分别和单片机的PC0~PC7相连。
图3中U3的PE2接霍尔传感器模块送来的信号。U3的8脚和9脚间接外部低频32.768KHz晶振,晶振JZ2和电容C7、C6构成晶体振荡电路。U3的23脚和24脚间接外部高频8MHz晶振,同样晶振JZ1和电容C2、C3也构成晶体振荡电路。U3的33脚接电源并对地接电容作去耦处理,起保护芯片作用,30脚接地。
图4 OLED显示模块
1.3 OLED显示模块
OLED显示模块如图4所示,图中OLED1为OLED12864液晶显示屏,可以显示128×64个点,J2为OLED显示模块插头,与图3中的J1配对使用,OLED1的BS1和BS2分别接J3和J4的TP信号,通过跳线帽短接3.3V电源或地,接电源时信号值为‘1’,接地时信号值为‘0’,BS1、BS2为不同信号值代表不同的工作模式,如表1所示,当BS1和BS2为“00”时,OLED工作于4线SPI模式;当BS1和BS2为“10”时,OLED工作于I2C模式;当BS1和BS2为“01”时,OLED工作于8位6800模式;当BS1和BS2为“11”时,OLED工作于8位8080模式。本设计中OLED模块采用8位8080工作模式。
表1 OLED模块工作模式
OLED的优点是具备自发光特性,不需背光源,高辨率为128×64;其使用了非常薄的涂层和玻璃基板,厚度可以做得较薄,可用于挠曲性面板。其缺点是尺寸难以实现大型化和没有显存,它的显存依赖于SSD1306驱动芯片,显存大小为128×64位,这些显存分8页,每页包含了128个字节。
2 电机测速仪软件设计
2.1 电机测速仪软件流程图
电机测速仪软件流程图如图5所示,先进行初始化,然后调用函数显示相关文字和电机图片。当STM32第一次接收到传感器信号时,定时器计数值清零;当接收不到第二次传感器信号时,定时器TIM5溢出;当定时器溢出次数超过预设值时,表示电机电机不转,显示转速值为0。当第二次接收到传感器信号时,单片机读取定时器计数值TIM5_CNT,此值即为定时器计数总时长,也就是电机转1圈所花的时间,已知通用定时器的时钟为72MHz,则电机转速的计算公式为(60×72×106)/定时器计数值。
图5 电机测速仪软件流程图
2.2 传感器中断信号处理
图5中传感器信号作为中断信号送STM32单片机。STM32F103的中断很强大,每个GPIO口都可以作为中断使用,STM32F103ZET6的16条外部中断线最多可连接112个GPIO,PA0~PG0共用1条EXIT0外部中断线,PA1~PG1共用另1条EXIT1外部中断线,其他IO口共用外部中断线,以此类推。STM32F103的中断优先级寄存器NVIC_IPRX用于配置外部中断的优先级,使用IPR的高4bit配置若干种中断优先级,其数值越小优先级越高,即外部中断EXIT0优先级最高。中断编程分四大步骤:(1)配置相关寄存器使能中断请求称为外设使能,如单片机接收到传感器送来的外部中断信号,这个中断由外部中断控制寄存器的相关中断使能位来控制;(2)通过NVIC_PriorityGroup函数配置中断优先级分组;(3)配置NVIC寄存器,初始化NVIC_InitTypeDef函数,指定中断源、抢占优先级、子优先级、内核中断使能或失能;(4)编写中断服务函数。
2.3 相关程序设计
以下代码为主程序,执行了延时、LED端口、TIM5、中断分组、OLED初始化,调用若干函数显示中英文和图片,while循环语句实现LED灯翻转指示。
图6 OLED显示
以下代码为外部中断EXIT2服务函数,当第二次接收到传感器信号后,经计算显示电机速度,并清除外部中断2。
2.4 OLED显示
OLED显示内容如图6所示,显示了中英文、转速和图片。OLED显示屏能显示128列64行点阵,图中中文汉字采用14×16点阵,英文采用8×16点阵,图片采用32×32点阵。
结语:本设计采用嵌入式单片机STM32F103为控制芯片,利用霍尔传感器3144进行电机测速,OLED屏显示转速信息,实现电路结构简捷,成本低、可靠性高、抗干扰能力强、扩展性好,实践效果良好。