51单片机小车速度控制

51单片机小车速度控制,第1张

你好!

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


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/7838526.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-10
下一篇2023-04-10

发表评论

登录后才能评论

评论列表(0条)

    保存