电机驱动智能车跑起来_智能车c车发达反转

当开关A,D闭合,B.,C断开电机正常旋转,方向为正。
当开关B,C闭合,A,D断开电机正常旋转,方向为反。
当开关A,C闭合,B,D断开。或者B,D闭合,A,C断开电机不旋转,形成电势被短路,相当于刹车效果。
当A,B闭合,或者C,D闭合,电源会短路,会烧毁电源。
当A,B,C,D都断开会惯性转动。

3.单极模式下:

在MOS管1 PWM为高时,1,4导通。2,3截止。电流从1正极流向4负极。
1PWM为低时,2,4导通,1,3截止。电流从2流向4

4.双极模式下:

A为占空比。
A>50%,D pwm1 > D pwm2 ,电机正转。
A<50%,D pwm1 < D pwm2 ,电机反转。
A = 50%,D pwm1 = D pwm2 ,电机停止。
A = 0,电机反转, 速度最高。
A = 100%,电机正转 ,速度最高。

5.可以使用IR2104来驱动:

ir2104半桥驱动,一种是半桥驱动ir2104,半桥电路是两个mos管,使用两片ir2104型半桥驱动芯片可以组成完整的直流电机h桥式驱动电路,ir2104电路,2路pwm信号通过ir2104半桥驱动器(half-bridgedriver)和相应保护电路等等一种是全桥驱动,一种是半桥驱动ir2104,半桥电路是两个mos管使用两片ir2104型半桥驱动芯片可以组成完整的直流电机h桥式驱动电路.

在这里插入图片描述

在这里插入图片描述

这是IR2104的连接图与时序图。IN口是PWM信号的输入端。SD是使能端,通过时序图可以看出,当SD口是低电平的时候,HO,LO都不正常输出。因此设计的时候给他加上了高电平。
相信大家也发现了,我们的升压的关键是二极管D2与电容C4。C4的大小需要考虑信号的频率,MOS的极间电容,参考IR2104所给的参数,这里我按照往年经验,选取了1.5uF.

6.升压电路:

MC34063芯片内部比较器比较输出取样反馈电压及阈值电压,输出通过与门控制S-R触发器置位端S,进而驱动开关管T2(T1)。7脚是电流感应检测端,通过电流取样电阻Rsc(0.22R)监控电路工作电流。8脚与7脚不同,这里的180欧电阻是偏置限流的作用,如果不接内部VT2集电极电流过大,可能会使VT1开关管容易损坏。若工作电流过大,则内部振荡器停振,并输出低电平至S-R触发器复位端R,同时通过与门封S-R触发器置位端S,使S-R触发器停止驱动T2(T1)。

7.升压电路的原理:

MC34063组成的升压电路原理,电源经取样电阻Rsc(0.22R)、电感L,此时电感L1开始存储能量,电源和电感同时给负载和电容C提供能量。

最后

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。

因此收集整理了一份《2024年嵌入式&物联网开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

img

img

img

img

img

img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上嵌入式&物联网开发知识点,真正体系化!

如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新!!

.net/topics/618654289)

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新!!

  • 19
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
为了让STM32智能小起来,我们需要进行以下步骤: 1. 确保你已经连接好了STM32开发板和小电机驱动模块,并将小电机驱动模块的IN1、IN2、IN3和IN4引脚分别连接到STM32开发板的PB0、PB1、PB10和PB11引脚。 2. 在Keil或者其他的开发环境中编写代码,控制小电机驱动模块的IN1、IN2、IN3和IN4引脚,从而控制小的运动。 3. 在代码中使用PWM控制小电机的速度,从而实现小的前进、后退、左转和右转。 以下是一个简单的示例代码,可以让STM32智能小前进、后退、左转和右转: ```c #include "stm32f10x.h" #define IN1 GPIO_Pin_0 #define IN2 GPIO_Pin_1 #define IN3 GPIO_Pin_10 #define IN4 GPIO_Pin_11 void delay(int time) { int i, j; for (i = 0; i < time; i++) for (j = 0; j < 7200; j++); } void car_forward() { GPIO_SetBits(GPIOB, IN1); GPIO_ResetBits(GPIOB, IN2); GPIO_SetBits(GPIOB, IN3); GPIO_ResetBits(GPIOB, IN4); } void car_backward() { GPIO_ResetBits(GPIOB, IN1); GPIO_SetBits(GPIOB, IN2); GPIO_ResetBits(GPIOB, IN3); GPIO_SetBits(GPIOB, IN4); } void car_left() { GPIO_ResetBits(GPIOB, IN1); GPIO_SetBits(GPIOB, IN2); GPIO_SetBits(GPIOB, IN3); GPIO_ResetBits(GPIOB, IN4); } void car_right() { GPIO_SetBits(GPIOB, IN1); GPIO_ResetBits(GPIOB, IN2); GPIO_ResetBits(GPIOB, IN3); GPIO_SetBits(GPIOB, IN4); } int main() { GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE); GPIO_InitStructure.GPIO_Pin = IN1 | IN2 | IN3 | IN4; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOB, &GPIO_InitStructure); while (1) { car_forward(); delay(5000); car_backward(); delay(5000); car_left(); delay(5000); car_right(); delay(5000); } } ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值