匿名
未登录
登录
丢石头百科
搜索
查看“树莓派智能车AlphaBot教程2:直流电机控制”的源代码
来自丢石头百科
名字空间
页面
讨论
更多
更多
页面选项
查看
查看源代码
历史
←
树莓派智能车AlphaBot教程2:直流电机控制
因为以下原因,您没有权限编辑本页:
您所请求的操作仅限于该用户组的用户使用:
用户
您可以查看与复制此页面的源代码。
一台小车首先要有电机轮子,通过控制电机转动,小车实现不同方向行走。 电机可以是直流电机或者步进电机。 步进电机是以步阶方式分段移动,也就是每次只能控制转动一小段。所以步进电机的控制精度会很高,可以精确的控制转动距离,但是转速会比较慢。在控制精度要求很高的情况会用,例如机械手臂等。 而直流电机则相反,转速快,但是控制精度相对差。直流电机是通过电压控制,通电后电机就可以转,电压越大转速越快,电流方向决定电机转动方向。智能车多少采用直流电机控制。 直流电机通常采用H桥控制。H桥式 电机驱动 电路包括4个 三极管 和一个电机。要使电机运转,必须导通对角线上的一对三极管。电流可能会从左至右或从右至左流过电机,从而控制电机的转向。 [[File:102638lxnllxsbccvxvv9l.jpg]] 当Q1管和Q4管导通时,电流就从电源正极经Q1从左至右穿过电机,然后再经Q4回到电源负极。电流将驱动电机顺时针转动。 [[File:135119s1h4dwtrvtwtd1fo.jpg]] 当Q2和Q3导通时,电流将从右至左流过电机。此时电流将驱动电机逆针转动。 [[File:135119dvdmr866jnsqy5dy.jpg]] 实际使用的时候,用分立元件制作H桥是很麻烦的,很多时候采用H桥集成电路,接上电源、电机和控制信号就可以使用了,比如常用的L293D、L298N、TB6612FNG等。 [[File:135120v6dldem5d5m1mm9k.png]] [[File:135120lxtzah0nfyooauhh.png]] 上面两个图分别对应AlphaBot(L298P),AlphaBot2(TB6612FNG)的驱动电路图。这两个需要采用不同的芯片,但是控制方式是完全一样的。下面以TB6612FNG为例讲解。 这两个芯片都是对应A B两组H桥,分别控制两个电机。A组控制左轮,B组控制右轮。 每个电机分别由三个管脚控制,AIN1 AIN2两个管脚控制方向,PWMA通过PWM脉冲控制电机转动。 AIN1,AIN2电平一样时,电机不转,电平不一样时电机转动,转动方向和AIN1,AIN2的电平有关。 这里假设AIN1为低电平,AIN2为高电平时,电机正转,轮子向前走。BIN1为低电平,BIN2为高电平时,电机正转,轮子向前走。 控制原理 <table border="1" cellpadding="0" cellspacing="0" style="font-size: inherit; border-collapse: collapse; margin: 3px 0px; overflow: visible; table-layout: fixed; border-spacing: 0px; border: 1px solid rgb(204, 204, 204); width: 603px;"><tbody><tr arial="" border:="" break-all="" break-word="" color:="" font-size:="" gb="" heiti="" helvetica="" line-height:="" middle="" normal="" padding:="" pingfang="" rgb="" sans="" sans-serif="" sc="" simsun="" solid="" style="font-family: -apple-system, BlinkMacSystemFont, " tahoma="" vertical-align:="" word-break:="" word-wrap:="" yahei=""><td style="word-break: break-all; word-wrap: break-word; border: 1px solid rgb(153, 153, 153); padding: 5px 10px; min-height: 25px; min-width: 25px; height: 23px; background-color: rgb(242, 242, 242); width: 70px; font-weight: bold; font-family: 微软雅黑; font-size: 16px; text-align: center; vertical-align: middle; color: rgb(0, 0, 0);">AIN1</td><td style="word-break: break-all; word-wrap: break-word; border: 1px solid rgb(153, 153, 153); padding: 5px 10px; min-height: 25px; min-width: 25px; height: 23px; background-color: rgb(242, 242, 242); width: 70px; font-weight: bold; font-family: 微软雅黑; font-size: 16px; text-align: center; vertical-align: middle; color: rgb(0, 0, 0);">AIN2</td><td style="word-break: break-all; word-wrap: break-word; border: 1px solid rgb(153, 153, 153); padding: 5px 10px; min-height: 25px; min-width: 25px; height: 23px; background-color: rgb(242, 242, 242); width: 70px; font-weight: bold; font-family: 微软雅黑; font-size: 16px; text-align: center; vertical-align: middle; color: rgb(0, 0, 0);">BIN1</td><td style="word-break: break-all; word-wrap: break-word; border: 1px solid rgb(153, 153, 153); padding: 5px 10px; min-height: 25px; min-width: 25px; height: 23px; background-color: rgb(242, 242, 242); width: 70px; font-weight: bold; font-family: 微软雅黑; font-size: 16px; text-align: center; vertical-align: middle; color: rgb(0, 0, 0);">BIN2</td><td style="word-break: break-all; word-wrap: break-word; border: 1px solid rgb(153, 153, 153); padding: 5px 10px; min-height: 25px; min-width: 25px; height: 23px; background-color: rgb(242, 242, 242); width: 323px; font-weight: bold; font-family: 微软雅黑; font-size: 16px; text-align: center; vertical-align: middle; color: rgb(0, 0, 0);">描述</td></tr><tr arial="" border:="" break-all="" break-word="" color:="" font-size:="" gb="" heiti="" helvetica="" line-height:="" middle="" normal="" padding:="" pingfang="" rgb="" sans="" sans-serif="" sc="" simsun="" solid="" style="font-family: -apple-system, BlinkMacSystemFont, " tahoma="" vertical-align:="" word-break:="" word-wrap:="" yahei=""><td style="word-break: break-all; word-wrap: break-word; border: 1px solid rgb(153, 153, 153); padding: 5px 10px; min-height: 25px; min-width: 25px; height: 23px; background-color: rgb(249, 249, 249); width: 70px; font-family: 微软雅黑; font-size: 16px; text-align: center; vertical-align: middle; color: rgb(0, 0, 0);">0</td><td style="word-break: break-all; word-wrap: break-word; border: 1px solid rgb(153, 153, 153); padding: 5px 10px; min-height: 25px; min-width: 25px; height: 23px; background-color: rgb(249, 249, 249); width: 70px; font-family: 微软雅黑; font-size: 16px; text-align: center; vertical-align: middle; color: rgb(0, 0, 0);">1</td><td style="word-break: break-all; word-wrap: break-word; border: 1px solid rgb(153, 153, 153); padding: 5px 10px; min-height: 25px; min-width: 25px; height: 23px; background-color: rgb(249, 249, 249); width: 70px; font-family: 微软雅黑; font-size: 16px; text-align: center; vertical-align: middle; color: rgb(0, 0, 0);">0</td><td style="word-break: break-all; word-wrap: break-word; border: 1px solid rgb(153, 153, 153); padding: 5px 10px; min-height: 25px; min-width: 25px; height: 23px; background-color: rgb(249, 249, 249); width: 70px; font-family: 微软雅黑; font-size: 16px; text-align: center; vertical-align: middle; color: rgb(0, 0, 0);">1</td><td style="word-break: break-all; word-wrap: break-word; border: 1px solid rgb(153, 153, 153); padding: 5px 10px; min-height: 25px; min-width: 25px; height: 23px; background-color: rgb(249, 249, 249); width: 323px; font-family: 微软雅黑; font-size: 16px; text-align: center; vertical-align: middle; color: rgb(0, 0, 0);">左右电机正转,小车前进</td></tr><tr arial="" border:="" break-all="" break-word="" color:="" font-size:="" gb="" heiti="" helvetica="" line-height:="" middle="" normal="" padding:="" pingfang="" rgb="" sans="" sans-serif="" sc="" simsun="" solid="" style="font-family: -apple-system, BlinkMacSystemFont, " tahoma="" vertical-align:="" word-break:="" word-wrap:="" yahei=""><td style="word-break: break-all; word-wrap: break-word; border: 1px solid rgb(153, 153, 153); padding: 5px 10px; min-height: 25px; min-width: 25px; height: 23px; background-color: rgb(249, 249, 249); width: 70px; font-family: 微软雅黑; font-size: 16px; text-align: center; vertical-align: middle; color: rgb(0, 0, 0);">1</td><td style="word-break: break-all; word-wrap: break-word; border: 1px solid rgb(153, 153, 153); padding: 5px 10px; min-height: 25px; min-width: 25px; height: 23px; background-color: rgb(249, 249, 249); width: 70px; font-family: 微软雅黑; font-size: 16px; text-align: center; vertical-align: middle; color: rgb(0, 0, 0);">0</td><td style="word-break: break-all; word-wrap: break-word; border: 1px solid rgb(153, 153, 153); padding: 5px 10px; min-height: 25px; min-width: 25px; height: 23px; background-color: rgb(249, 249, 249); width: 70px; font-family: 微软雅黑; font-size: 16px; text-align: center; vertical-align: middle; color: rgb(0, 0, 0);">1</td><td style="word-break: break-all; word-wrap: break-word; border: 1px solid rgb(153, 153, 153); padding: 5px 10px; min-height: 25px; min-width: 25px; height: 23px; background-color: rgb(249, 249, 249); width: 70px; font-family: 微软雅黑; font-size: 16px; text-align: center; vertical-align: middle; color: rgb(0, 0, 0);">0</td><td style="word-break: break-all; word-wrap: break-word; border: 1px solid rgb(153, 153, 153); padding: 5px 10px; min-height: 25px; min-width: 25px; height: 23px; background-color: rgb(249, 249, 249); width: 323px; font-family: 微软雅黑; font-size: 16px; text-align: center; vertical-align: middle; color: rgb(0, 0, 0);">左右电机反转,小车后退</td></tr><tr arial="" border:="" break-all="" break-word="" color:="" font-size:="" gb="" heiti="" helvetica="" line-height:="" middle="" normal="" padding:="" pingfang="" rgb="" sans="" sans-serif="" sc="" simsun="" solid="" style="font-family: -apple-system, BlinkMacSystemFont, " tahoma="" vertical-align:="" word-break:="" word-wrap:="" yahei=""><td style="word-break: break-all; word-wrap: break-word; border: 1px solid rgb(153, 153, 153); padding: 5px 10px; min-height: 25px; min-width: 25px; height: 23px; background-color: rgb(249, 249, 249); width: 70px; font-family: 微软雅黑; font-size: 16px; text-align: center; vertical-align: middle; color: rgb(0, 0, 0);">0</td><td style="word-break: break-all; word-wrap: break-word; border: 1px solid rgb(153, 153, 153); padding: 5px 10px; min-height: 25px; min-width: 25px; height: 23px; background-color: rgb(249, 249, 249); width: 70px; font-family: 微软雅黑; font-size: 16px; text-align: center; vertical-align: middle; color: rgb(0, 0, 0);">1</td><td style="word-break: break-all; word-wrap: break-word; border: 1px solid rgb(153, 153, 153); padding: 5px 10px; min-height: 25px; min-width: 25px; height: 23px; background-color: rgb(249, 249, 249); width: 70px; font-family: 微软雅黑; font-size: 16px; text-align: center; vertical-align: middle; color: rgb(0, 0, 0);">1</td><td style="word-break: break-all; word-wrap: break-word; border: 1px solid rgb(153, 153, 153); padding: 5px 10px; min-height: 25px; min-width: 25px; height: 23px; background-color: rgb(249, 249, 249); width: 70px; font-family: 微软雅黑; font-size: 16px; text-align: center; vertical-align: middle; color: rgb(0, 0, 0);">0</td><td style="word-break: break-all; word-wrap: break-word; border: 1px solid rgb(153, 153, 153); padding: 5px 10px; min-height: 25px; min-width: 25px; height: 23px; background-color: rgb(249, 249, 249); width: 323px; font-family: 微软雅黑; font-size: 16px; text-align: center; vertical-align: middle; color: rgb(0, 0, 0);">右电机反转,左电机正转,小车右转</td></tr><tr arial="" border:="" break-all="" break-word="" color:="" font-size:="" gb="" heiti="" helvetica="" line-height:="" middle="" normal="" padding:="" pingfang="" rgb="" sans="" sans-serif="" sc="" simsun="" solid="" style="font-family: -apple-system, BlinkMacSystemFont, " tahoma="" vertical-align:="" word-break:="" word-wrap:="" yahei=""><td style="word-break: break-all; word-wrap: break-word; border: 1px solid rgb(153, 153, 153); padding: 5px 10px; min-height: 25px; min-width: 25px; height: 23px; background-color: rgb(249, 249, 249); width: 70px; font-family: 微软雅黑; font-size: 16px; text-align: center; vertical-align: middle; color: rgb(0, 0, 0);">1</td><td style="word-break: break-all; word-wrap: break-word; border: 1px solid rgb(153, 153, 153); padding: 5px 10px; min-height: 25px; min-width: 25px; height: 23px; background-color: rgb(249, 249, 249); width: 70px; font-family: 微软雅黑; font-size: 16px; text-align: center; vertical-align: middle; color: rgb(0, 0, 0);">0</td><td style="word-break: break-all; word-wrap: break-word; border: 1px solid rgb(153, 153, 153); padding: 5px 10px; min-height: 25px; min-width: 25px; height: 23px; background-color: rgb(249, 249, 249); width: 70px; font-family: 微软雅黑; font-size: 16px; text-align: center; vertical-align: middle; color: rgb(0, 0, 0);">0</td><td style="word-break: break-all; word-wrap: break-word; border: 1px solid rgb(153, 153, 153); padding: 5px 10px; min-height: 25px; min-width: 25px; height: 23px; background-color: rgb(249, 249, 249); width: 70px; font-family: 微软雅黑; font-size: 16px; text-align: center; vertical-align: middle; color: rgb(0, 0, 0);">1</td><td style="word-break: break-all; word-wrap: break-word; border: 1px solid rgb(153, 153, 153); padding: 5px 10px; min-height: 25px; min-width: 25px; height: 23px; background-color: rgb(249, 249, 249); width: 323px; font-family: 微软雅黑; font-size: 16px; text-align: center; vertical-align: middle; color: rgb(0, 0, 0);">左电机反转,右电机正转,小车左转</td></tr><tr arial="" border:="" break-all="" break-word="" color:="" font-size:="" gb="" heiti="" helvetica="" line-height:="" middle="" normal="" padding:="" pingfang="" rgb="" sans="" sans-serif="" sc="" simsun="" solid="" style="font-family: -apple-system, BlinkMacSystemFont, " tahoma="" vertical-align:="" word-break:="" word-wrap:="" yahei=""><td style="word-break: break-all; word-wrap: break-word; border: 1px solid rgb(153, 153, 153); padding: 5px 10px; min-height: 25px; min-width: 25px; height: 23px; background-color: rgb(249, 249, 249); width: 70px; font-family: 微软雅黑; font-size: 16px; text-align: center; vertical-align: middle; color: rgb(0, 0, 0);">0</td><td style="word-break: break-all; word-wrap: break-word; border: 1px solid rgb(153, 153, 153); padding: 5px 10px; min-height: 25px; min-width: 25px; height: 23px; background-color: rgb(249, 249, 249); width: 70px; font-family: 微软雅黑; font-size: 16px; text-align: center; vertical-align: middle; color: rgb(0, 0, 0);">0</td><td style="word-break: break-all; word-wrap: break-word; border: 1px solid rgb(153, 153, 153); padding: 5px 10px; min-height: 25px; min-width: 25px; height: 23px; background-color: rgb(249, 249, 249); width: 70px; font-family: 微软雅黑; font-size: 16px; text-align: center; vertical-align: middle; color: rgb(0, 0, 0);">0</td><td style="word-break: break-all; word-wrap: break-word; border: 1px solid rgb(153, 153, 153); padding: 5px 10px; min-height: 25px; min-width: 25px; height: 23px; background-color: rgb(249, 249, 249); width: 70px; font-family: 微软雅黑; font-size: 16px; text-align: center; vertical-align: middle; color: rgb(0, 0, 0);">0</td><td style="word-break: break-all; word-wrap: break-word; border: 1px solid rgb(153, 153, 153); padding: 5px 10px; min-height: 25px; min-width: 25px; height: 23px; background-color: rgb(249, 249, 249); width: 323px; font-family: 微软雅黑; font-size: 16px; text-align: center; vertical-align: middle; color: rgb(0, 0, 0);">左右电机停止,小车停止</td></tr></tbody></table> 下面对应arduino的程序。 <syntaxhighlight lang="python"> void forward() { analogWrite(PWMA,Speed); analogWrite(PWMB,Speed); digitalWrite(AIN1,LOW); digitalWrite(AIN2,HIGH); digitalWrite(BIN1,LOW); digitalWrite(BIN2,HIGH); } void backward() { analogWrite(PWMA,Speed); analogWrite(PWMB,Speed); digitalWrite(AIN1,HIGH); digitalWrite(AIN2,LOW); digitalWrite(BIN1,HIGH); digitalWrite(BIN2,LOW); } void right() { analogWrite(PWMA,50); analogWrite(PWMB,50); digitalWrite(AIN1,LOW); digitalWrite(AIN2,HIGH); digitalWrite(BIN1,HIGH); digitalWrite(BIN2,LOW); } void left() { analogWrite(PWMA,50); analogWrite(PWMB,50); digitalWrite(AIN1,HIGH); digitalWrite(AIN2,LOW); digitalWrite(BIN1,LOW); digitalWrite(BIN2,HIGH); } void stop() { analogWrite(PWMA,0); analogWrite(PWMB,0); digitalWrite(AIN1,LOW); digitalWrite(AIN2,LOW); digitalWrite(BIN1,LOW); digitalWrite(BIN2,LOW); }</syntaxhighlight> 如果程序转动方向和实际转动方向不一致,可能是电机接线方向和我们的假设不一样。可以更改电机接线或者修改电机对应的引脚。
返回至
树莓派智能车AlphaBot教程2:直流电机控制
。
导航
导航
首页
最近更改
随机页面
MediaWiki帮助
首页
首页
树莓派
主机
配件包
外壳
键鼠
电源
扩展板
显示屏
墨水屏
摄像模块
通信模块
继电器
电机驱动板
游戏机
产品分类
树莓派
Arduino
micro:bit
STM32
Espressif
WiFi模块
蓝牙模块
无线模块
LoRa模块
4G模块
GSM
GPRS
以太网
导航模块
北斗卫星
GPS
LCD
墨水屏
OLED
摄像头
USB模块
串口模块
RS232
RS485
CAN
传感器
温度模块
湿度模块
气压模块
继电器
电机模块
指纹模块
电平转换
音频模块
编程器
Wiki工具
Wiki工具
特殊页面
页面工具
页面工具
用户页面工具
更多
链入页面
相关更改
页面信息
页面日志