是ta 2023-04-08 15:29 采纳率: 0%
浏览 25

电压问题STM32程序卡死

使用STM32f103C8T6做小项目的时候,其中有一步需要用定时器输出PWM控制舵机旋转。

  1. 开始时,用ST-Link下载器引出的3.3V电压给舵机通电,此时舵机不动;
  2. 之后换了个电源转换模块,将电压输出调到5V给舵机通电,此时程序运行舵机可以转动,但触发一次转动之后,整个项目的程序就卡死了,重启很多次之后一直如此;
  3. 之后又将电压调低,调到4V给舵机通电,此时舵机可以完成1-3次转动(不稳定),之后依然会卡死整个程序。
  4. 之后又将电压调到3.5V给舵机供电,此时舵机可以正常运行程序了,不会出现卡死整个程序的情况

查了查舵机驱动电压范围,发现没有超过舵机最大电压,可以排除舵机电压问题
所以是不是在驱动舵机的过程中会出现电流倒流的情况呢?、
我用的STM32的引脚是PA0,手册上面此引脚没写可以容忍TF电压,所以是不是有大电压传给了PA0引脚?
STM32有电压保护功能吗?

img

img

  • 写回答

2条回答 默认 最新

  • 阿里嘎多学长 2023-04-08 17:57
    关注

    以下内容部分参考ChatGPT模型:


    首先需要了解舵机的电压范围和电流需求,并确保所使用的电源能够满足舵机的需求。其次需要检查舵机的控制信号是否正确,包括信号的频率、占空比等参数。如果电压范围和控制信号都没有问题,那么可以考虑使用电容和二极管等元器件来解决电流倒流的问题。另外,需要注意使用正确的引脚和电压,以避免损坏芯片。STM32具有一定的电压保护功能,但也需要开发者在设计中注意相关问题。以下是可能会用到的代码块:

    // 设置定时器的PWM输出模式
    TIM_OCInitTypeDef TIM_OCInitStructure;
    TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;
    TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
    TIM_OCInitStructure.TIM_Pulse = 0;
    TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;
    TIM_OC1Init(TIM2, &TIM_OCInitStructure);
    
    // 控制舵机旋转
    TIM_SetCompare1(TIM2, 1000); // 设置占空比为50%
    
    // 使用电容和二极管来解决电流倒流问题
    // 电容的参数需要根据具体情况进行选择
    // 二极管的选择需要注意正反极性以及额定电流和电压
    // 在舵机电源正极和电源模块之间串联电容和二极管
    

    如果我的建议对您有帮助、请点击采纳、祝您生活愉快

    评论

报告相同问题?

问题事件

  • 创建了问题 4月8日

悬赏问题

  • ¥15 校内二手商品转让网站
  • ¥20 高德地图聚合图层MarkerCluster聚合多个点,但是ClusterData只有其中部分数据,原因应该是有经纬度重合的地方点,现在我想让ClusterData显示所有点的信息,如何实现?
  • ¥100 求Web版SPC控制图程序包调式
  • ¥20 指导如何跑通以下两个Github代码
  • ¥15 大家知道这个后备文件怎么删吗,为啥这些文件我只看到一份,没有后备呀
  • ¥15 C++为什么这个代码没报错运行不出来啊
  • ¥15 一道ban了很多东西的pyjail题
  • ¥15 关于#r语言#的问题:如何将生成的四幅图排在一起,且对变量的赋值进行更改,让组合的图漂亮、美观@(相关搜索:森林图)
  • ¥15 C++识别堆叠物体异常
  • ¥15 微软硬件驱动认证账号申请