stm32压力传感器步进电机

基于stm32c8t6的压力传感器控制步进电机正反转。

主控:stm32c8t6 ,压力传感器:悬壁式压力传感器+HX711 ,步进电机:24BYJ48(电机)+ULN2003(驱动)

实现功能:通过压力传感器测量平台上的压力,在将数字量传输给单片机,单片机控制步进电机正反转。且可通过串口1发送数据

 

HX711:

HX711是一款专为高精度电子秤而设计的24位A/D转换器芯片。与同类型其它芯片相比,该芯片集成了包括稳压电源、片内时钟振荡器等其它同类型芯片所需要的外围电路,具有集成度高、响应速度快、抗干扰性强等优点。降低了电子秤的整机成本,提高了整机的性能和可靠性。该芯片与后端MCU 芯片的接口和编程非常简单,所有控制信号由管脚驱动,无需对芯片内部的寄存器编程。输入选择开关可任意选取通道A 或通道B,与其内部的低噪声可编程放大器相连。通道A 的可编程增益为128 或64,对应的满额度差分输入信号幅值分别为±20mV或±40mV。通道B 则为固定的32 增益,用于系统参数检测。芯片内提供的稳压电源可以直接向外部传感器和芯片内的A/D转换器提供电源,系统板上无需另外的模拟电源。芯片内的时钟振荡器不需要任何外接器件。上电自动复位功能简化了开机的初始化过程。

 

 

 

其余详细参数见百度https://baike.sogou.com/v74131339.htm?fromTitle=HX711

 

 

悬臂式压力传感器

 

 

 

底座必须固定!!!!另一端自由称重

 

步进电机

 

我们先来解释“4 相永磁式”的概念,28BYJ-48 的内部结构示意图 9-4 所示。先看里圈,它上面有 6 个齿,分别标注为 0~5,这个叫做转子,顾名思义,它是要转动的,转子的每个齿上都带有永久的磁性,是一块永磁体,这就是“永磁式”的概念。再看外圈,这个就是定子,它是保持不动的,实际上它是跟电机的外壳固定在一起的,它上面有 8 个齿,而每个齿上都缠上了一个线圈绕组,正对着的 2 个齿上的绕组又是串联在一起的,也就是说正对着的2 个绕组总是会同时导通或关断的,如此就形成了 4 相,在图中分别标注为 A-B-C-D,这就是“4 相”的概念。

 

现在我们分析一下它的工作原理:

假定电机的起始状态就如图 9-4 所示,逆时针方向转动,起始时是 B 相绕组的开关闭合,B 相绕组导通,那么导通电流就会在正上和正下两个定子齿上产生磁性,这两个定子齿上的磁性就会对转子上的 0 和 3 号齿产生最强的吸引力,就会如图所示的那样,转子的 0 号齿在正上、3 号齿在正下而处于平衡状态;此时我们会发现,转子的 1 号齿与右上的定子齿也就是 C 相的一个绕组呈现一个很小的夹角,2 号齿与右边的定子齿也就是 D 相绕组呈现一个稍微大一点的夹角,很明显这个夹角是 1 号齿和 C 绕组夹角的 2 倍,同理,左侧的情况也是一样的。

 

接下来,我们把 B 相绕组断开,而使 C 相绕组导通,那么很明显,右上的定子齿将对转子 1 号齿产生最大的吸引力,而左下的定子齿将对转子 4 号齿,产生最大的吸引力,在这个吸引力的作用下,转子 1、4 号齿将对齐到右上和左下的定子齿上而保持平衡,如此,转子就转过了起始状态时 1 号齿和 C 相绕组那个夹角的角度。

 

再接下来,断开 C 相绕组,导通 D 相绕组,过程与上述的情况完全相同,最终将使转子2、5 号齿与定子 D 相绕组对齐,转子又转过了上述同样的角度。

 

那么很明显,当 A 相绕组再次导通,即完成一个 B-C-D-A 的四节拍操作后,转子的 0、3 号齿将由原来的对齐到上下 2 个定子齿,而变为了对齐到左上和右下的两个定子齿上,即转子转过了一个定子齿的角度。依此类推,再来一个四节拍,转子就将再转过一个齿的角度,8 个四节拍以后转子将转过完整的一圈,而其中单个节拍使转子转过的角度就很容易计算出来了,即 360 度/(8*4)=11.25 度,这个值就叫做步进角度。而上述这种工作模式就是步进电机的单四拍模式——单相绕组通电四节拍。

 

我们再来讲解一种具有更优性能的工作模式,那就是在单四拍的每两个节拍之间再插入一个双绕组导通的中间节拍,组成八拍模式。比如,在从 B 相导通到 C 项导通的过程中,假如一个 B 相和 C 相同时导通的节拍,这个时候,由于 B、C 两个绕组的定子齿对它们附近的转子齿同时产生相同的吸引力,这将导致这两个转子齿的中心线对比到 B、C 两个绕组的中心线上,也就是新插入的这个节拍使转子转过了上述单四拍模式中步进角度的一半,即 5.625度。这样一来,就使转动精度增加了一倍,而转子转动一圈则需要 8*8=64 拍了。另外,新增加的这个中间节拍,还会在原来单四拍的两个节拍引力之间又加了一把引力,从而可以大大增加电机的整体扭力输出,使电机更“有劲”了。

 

除了上述的单四拍和八拍的工作模式外,还有一个双四拍的工作模式——双绕组通电四节拍。其实就是把八拍模式中的两个绕组同时通电的那四拍单独拿出来,而舍弃掉单绕组通电的那四拍而已。其步进角度同单四拍是一样的,但由于它是两个绕组同时导通,所以扭矩会比单四拍模式大,在此就不做过多解释了。

 

八拍模式是这类 4 相步进电机的最佳工作模式,能最大限度的发挥电机的各项性能,也是绝大多数实际工程中所选择的模式。

 

 

 

 

硬件连接:

串口1

PA9 PA10

HX711

#define HX711_SCK PBout(0)// PB0

#define HX711_DOUT PBin(1)// PB1

ULN2003

IN1:PA3 IN2:PA2 IN3:PA1 IN4:PA0

 

软件代码

 

 

 

 

 

  • 6
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
下面是一个使用STM32控制步进电机正反转的代码示例: 首先,你需要将限位传感器连接到STM32的IO口。假设我们用PB0连接正向限位传感器,用PB1连接反向限位传感器。 接下来,你需要配置IO口为输入模式,并使能上拉电阻。这样,当限位传感器触发时,IO口将被拉低。 ```c // 使能GPIOB的时钟 RCC->AHB1ENR |= RCC_AHB1ENR_GPIOBEN; // 配置PB0和PB1为输入模式 GPIOB->MODER &= ~(GPIO_MODER_MODER0 | GPIO_MODER_MODER1); // 使能PB0和PB1的上拉电阻 GPIOB->PUPDR |= GPIO_PUPDR_PULLUP0 | GPIO_PUPDR_PULLUP1; ``` 然后,在你的主程序中,你需要检测限位传感器状态,并根据状态控制步进电机的正反转。 ```c while (1) { // 如果正向限位传感器被触发,停止步进电机并反转 if (GPIOB->IDR & GPIO_IDR_ID0) { // 停止步进电机,例如通过设置电机的驱动器引脚为低电平 // 反转步进电机,例如通过改变步进电机的转动方向 } // 如果反向限位传感器被触发,停止步进电机并反转 if (GPIOB->IDR & GPIO_IDR_ID1) { // 停止步进电机,例如通过设置电机的驱动器引脚为低电平 // 反转步进电机,例如通过改变步进电机的转动方向 } // 其他业务逻辑代码... } ``` 在上面的代码中,我们使用GPIOB的IDR寄存器来读取IO口的状态,如果IO为高电平,表示相应的限位传感器未被触发。反之,如果IO为低电平,表示相应的限位传感器被触发。 你需要根据你使用的具体步进电机电机驱动器的代码来停止步进电机并反转。这部分代码因具体情况而异。 需要注意的是,在实际电路设计中,你需要添加滤波电路和保护电路来消除传感器的抖动和保护步进电机STM32。这些电路的具体细节因具体情况而异,需要根据实际需求进行设计。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值