
1、建议采用PWM控制小车速度以及启停等
2、可以增加无线部分,传输PWM控制指令
3、电机驱动,可以采用L298模块
4、具体小车实物和程序,都能完成
我做过一个寻一条黑线的智能小车,按照你的问题一个个给你些建议吧。
我个人认为寻一条黑线和寻两条黑线在原理上应该是没有差别的,都是用对管来检测黑线和小车的偏差,从而知道小车当前的位置,不过常见的都是寻一个道路中间的黑线。至于程序控制上可以参考网上成熟的方案,都是根据传感器检测到黑线后来判断当前小车偏离黑线的位置,从而控制左右电机产生速度差(或者直接用舵机转向)来修正小车姿态。
PID是一个很高深也很简单的玩意,原理很简单,能够用好却不容易。小车上主要是为了稳定小车的速度,这对电机的响应速度,码盘的精度,单片机的处理速度都有一定的要求,网上有很多成熟的PID算法,加上一些前辈们做过的寻线小车PID案例,剩下的就是PID的参数问题了。
L298N是作为电机的控制器件(PID的输出量),舵机可以控制小车转向,红外对管是为了检测黑线的位置,测速码盘检测当前电机转速(PID控制的输入量)。
整体可以分为两个程序部分:
(1)主程序部分:对管检测黑线的位置-》单片机判断小车姿态-》舵机转向调整小车姿态-》回到起始部分循环。
(2)PID部分:码盘检测电机转速-》单片机进行PID运算-》输出速度控制量给L298N-》控制电机转动-》回到起始部分循环。
FZ1:CLR
BW
行进方向都是一样的,肯定是不对的
SETB
FW
JNB
LL,ZZ1
这些
逻辑判断
明显错误啊,无论条件是否成立,执行的都是下一句指令
ZZ1:
CLR
FW
行进方向都是一样的,肯定是不对的
SETB
BW
JNB
S2,FZ2
这些逻辑判断明显错误啊,无论条件是否成立,执行的都是下一句指令
FZ2:
CLR
BW
行进方向都是一样的,肯定是不对的
SETB
FW
JNB
LL,ZZ2
这些逻辑判断明显错误啊,无论条件是否成立,执行的都是下一句指令
ZZ2:
CLR
FW
行进方向都是一样的,肯定是不对的
SETB
BW
JNB
RLL,TZ
这些逻辑判断明显错误啊,无论条件是否成立,执行的都是下一句指令
TZ:
SETB
FW
SETB
BW
我想,程序这样写应该就对了
BW
EQU
P2.1
FW
EQU
P2.2
LL
EQU
P1.0
RLL
EQU
P1.1
S2
EQU
P1.3
ORG
0000H
AJMP
MAIN
ORG
0030H
MAIN:
SETB
LL
SETB
RLL
SETB
S2
FZ1:
CLR
BW
后面zz1、fz2、zz2此处,根据方向改变这指令
SETB
FW
根据方向改变此指令
JNB
LL,FZ1
ZZ1:
CLR
FW
SETB
BW
JNB
S2,ZZ1
FZ2:
CLR
BW
SETB
FW
JNB
LL,FZ2
ZZ2:
CLR
FW
SETB
BW
JNB
RLL,ZZ2
TZ:
SETB
FW
SETB
BW
END
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)