我用51单片机做个智能小车四驱的!想要实现差速转向,怎么做!要pwm控制!需要几个定时器!一个可以

来自:    更新日期:早些时候
用51单片机,输出PWM信号控制智能小车的小电机,汇编程序要怎么写?~

&& 我是用PC机控制的, 不知对你有无帮助.

*-- 舵机控制

Local 我的小大脚, 油门, 方向

油门 = 0
方向 = 1
我的小大脚 = Newobject("环奇小大脚")
*-- Inkey(4)
*-- 我的小大脚.发送指令(方向, 0)
*-- 我的小大脚.发送指令(油门, 0)
*-- Inkey(2)
*-- 我的小大脚.发送指令(油门, 0.5)
*-- Inkey(2)
*-- 我的小大脚.发送指令(油门, 0.9)
*-- Inkey(1)
*-- 我的小大脚.发送指令(方向, - 0.4)
*-- Inkey(8)
*-- 我的小大脚.发送指令(方向, 0)
*-- Inkey(2)
我的小大脚.发送指令(方向, 0)
我的小大脚.发送指令(油门, 0)

Cancel

Define Class 环奇小大脚 As 舵机控制
Name = "环奇小大脚"
Procedure Init()
This.COM口 = 9
This.速率 = 115200
Return DoDefault()
Endproc
Procedure 定义油门曲线()
If Not DoDefault() Then
Return .F.
Endif
*-- 油门
Insert Into 油门曲线 (通道, 位置, 脉冲宽度) Values (0, -1, 1700) && 油门 - 倒车最大
Insert Into 油门曲线 (通道, 位置, 脉冲宽度) Values (0, 0, 1500) && 油门 - 中点
Insert Into 油门曲线 (通道, 位置, 脉冲宽度) Values (0, 0.05, 1450) && 油门 - 不动的
Insert Into 油门曲线 (通道, 位置, 脉冲宽度) Values (0, 1, 1350) && 油门 - 最大
*-- 方向舵
Insert Into 油门曲线 (通道, 位置, 脉冲宽度) Values (1, -1, 1450) && 方向舵 - 最左
Insert Into 油门曲线 (通道, 位置, 脉冲宽度) Values (1, 0, 1370) && 方向舵 - 中点
Insert Into 油门曲线 (通道, 位置, 脉冲宽度) Values (1, 1, 1200) && 方向舵 - 最右
Return .T.
Endproc
Enddefine

Define Class 舵机控制 As Form
Name = "舵机控制"
COM口 = 0
速率 = 115200
Procedure Init()
This.定义油门曲线()
Return This.连接舵机控制板()
Endproc
Procedure Destory()
*-- 释放串口。
If Type("This.舵机控制板") = "O" Then
If This.舵机控制板.PortOpen Then
This.舵机控制板.PortOpen = .F.
Endif
Endif
Return .T.
Endproc
Procedure 定义油门曲线()
*-- 创建油门曲线临时表
Create Cursor 油门曲线 (通道 Integer, 位置 N(6, 4), 脉冲宽度 N(4))
Return .T.
Endproc
Procedure 连接舵机控制板()
*-- 没有“舵机控制板”就创建一个。
If Type("This.舵机控制板") "O" Then
This.AddObject("舵机控制板", "Olecontrol", "MSCommlib.MSComm")
Endif
*-- 打开串口。
If This.舵机控制板.PortOpen Then
This.舵机控制板.PortOpen = .F.
Endif
This.舵机控制板.CommPort = This.COM口
This.舵机控制板.Settings = Textmerge(">,n,8,1")
If Not This.舵机控制板.PortOpen Then
This.舵机控制板.PortOpen = .T.
Endif
Return This.舵机控制板.PortOpen
Endproc
Procedure 发送指令(通道, 位置)
Local 下限位置, 下限脉冲宽度, 上限位置, 上限脉冲宽度, 当前脉冲宽度, 串口指令代码
m.下限位置 = -1
m.下限脉冲宽度 = 500
m.上限位置 = 1
m.上限脉冲宽度 = 2500
m.当前脉冲宽度 = 1500
m.串口指令代码 = ""
*-- 1 找到当前位置最近的2个曲线值,如果找不到就取默认值 -1, 500 及 1, 2500。
*-- 2 生成指令。
*-- 3 发送给串口。
*-- 1
Select Top 1 * From 油门曲线 Where 通道 = m.通道 And 位置 = m.位置 Order By 位置 Desc Into Cursor curTemp
If Reccount("curTemp") > 0 Then
m.当前脉冲宽度 = curTemp.脉冲宽度
Else
Select Top 1 * From 油门曲线 Where 通道 = m.通道 And 位置 < m.位置 Order By 位置 Desc Into Cursor curTemp
If Reccount("curTemp") > 0 Then
m.下限位置 = curTemp.位置
m.下限脉冲宽度 = curTemp.脉冲宽度
Endif
Select Top 1 * From 油门曲线 Where 通道 = m.通道 And 位置 > m.位置 Order By 位置 Into Cursor curTemp
If Reccount("curTemp") > 0 Then
m.上限位置 = curTemp.位置
m.上限脉冲宽度 = curTemp.脉冲宽度
Endif
m.当前脉冲宽度 = Int((m.上限脉冲宽度 - m.下限脉冲宽度) / (m.上限位置 - m.下限位置) * (m.位置 - m.下限位置) + m.下限脉冲宽度)
Endif
*-- 2
m.串口指令代码 = Textmerge("#>P>")
Debugout m.串口指令代码
*-- 3
This.舵机控制板.OutBufferCount = 0
This.舵机控制板.Output = 串口指令代码 + Chr(13)
Endproc
Enddefine

看您的提问应该是不太熟悉程序编写。
这里为你推荐表控PLC,可以在不编程的情况下实现对步进电机的多种操作,最多可以同时控制4个步进电机。
表控PLC采用表格设置取代编程,进入中文的表格设置界面,只需鼠标点击就可以完成程序控制、自动控制、手动控制、定时控制、顺序控制、自定顺序控制、同时控制、独立控制、延迟控制、子程序控制、暂停控制、全停控制、逻辑控制、位置控制、循环控制、单次控制、计数控制、感应开关控制、物料检测、超时报警、不到位报警、错误处理等各种自动控制功能、长度控制、角度控制、位置控制、速度控制、方向控制、定时控制、上电回原点、自动回原点、工作结束回原点和手动回原点等动作控制。
希望我的回答对你有帮助。

电子差速从几年前就有人投入了研究,分主动差速和被动差速。被动差速是控制两个电机严格的按照等转矩或等功率运转,主动差速是根据要求控制两个电机按一定的差速比闭环调速运转。
51系列单片机指令周期太长,不适合做电机驱动,无法实现电子差速的要求,建议使用性能更好单片机来完成,比如dsPIC,STM32,AVR系列等。


我用51单片机做个智能小车四驱的!想要实现差速转向,怎么做!要pwm控制!需要几个定时器!一个可以视频

相关评论:
  • 17760703789基于51单片机寻迹小车的背景和意义
    程钧侄降低人力成本。3、单片机技术:单片机作为嵌入式系统的核心,具有体积小、功耗低、成本低、功能强大等特点,广泛应用于各个领域。4、综上所述,基于51单片机寻迹小车的背景和意义在于它是一种具有广泛应用前景的智能交通系统、机器人技术、单片机技术,对于推动科技发展、提高人们生活质量具有积极的作用。

  • 17760703789单片机能做的简单项目
    程钧侄2、智能小车 通过红外来寻迹,通过超声波来避障,配合51单片机实现自动寻迹避障小车的功能。智能小车是我第二个项目,但是没做寻迹,只是单纯的平衡行走,这个项目涉及到了一些外部传感器的使用,以及电机H桥驱动原理,单片机PWM使用等等。3、掌上游戏机 通过LED点阵屏配合51单片机做一个掌上游戏机,比如说...

  • 17760703789单片机 智能小车 课程设计
    程钧侄我也去答题访问个人页 关注 展开全部 智能小车的设计与制作 摘要:本课题组设计制作了一款具有智能...图4 黑带检测电路图3)计量路程方案 方案一:利用红外线对射方式,在小车的车轮开一些透光孔来计量车轮转...通过单片机对脉冲计数,再经过一个数据的处理过程,这样就可把小车走过的距离计算出来,小孔越多,计数越...

  • 17760703789我们做51单片机寻迹小车,走直线的时候小车会左右扭,拐弯的时候有时又...
    程钧侄我们做51单片机寻迹小车,走直线的时候小车会左右扭,拐弯的时候有时又拐不过(速度慢时可以 )求指教! 40 现在有个很高深的问题(至少我是这样觉得的),就是如何判断小车需要拐弯角度的大小(依据什么条件可以知道此时小车需要拐很大的弯,因为平时直线只是调整嘛,弯不需要太大),求各位高手指导~感激不尽~~~...

  • 1776070378951单片机红外避障小车教程
    程钧侄这个红外避障如果我么理解错的话是电子设计大赛的沿跑到跑的小车么?如果是的话就简单了,这不需要资料,只要在小车左右两边安上红外对管,让单片机检测高低电平,因为黑线可以吸收发射的光线,所以接收到的是低电平,反之接收到的是高电平,就这样来控制左右转弯,学会FOR循环等一些基本的足够了,因为没有...

  • 1776070378951单片机可以做哪些东西
    程钧侄5.还有很多什么智能防丢器,智能检测系统,计费收费系统,图书馆管理系统等,无非就是用各种传感器采集数据,经过数据处理然后实现相应的功能,在LCD屏显示。6.没有做不到的,只有想不到的,去各种电子比赛可以看到很多有趣的作品,当51单片机满足不了的时候就可以换上16位,32位单片机。

  • 17760703789如何选择智能编程小车
    程钧侄如果对单片机编程比较熟悉,建议选择51单片机智能小车。如果对编程不熟悉,可以选择图形化编程的智能小车,比如说Arduino智能小车,操作比较简单。希望我的回答对你有用。

  • 17760703789求智能小车上位机遥控软件。
    程钧侄你好 我是做单片机程序的,以前为了做一个这样的程序四处找资料,但是别人不太舍得将自己的劳动成果奉送,都要收取费用而且不给源码,所以自己努力才是成果的关键。我的空间有个串口调试助手的代码,自己用C在VS2008中写的,理解通讯原理后再做这个遥控就不是问题了 ...

  • 1776070378951单片机智能两路循迹小车程序,检测到黑线直走,检测不到黑线就左转或...
    程钧侄别想那么复杂。首先,你把检测黑线的传感器就当一普通开关。因为,当照射在黑线上时,光线反射能力弱,输出低电平。照在黑线外,则输出高电平。只有高低两种电平,所以,你只需要把它当一个普通开关看待。然后,既然是普通开关,写代码时只需要位声明以及设置gpio为双向或强拉模式,51单片机都不用设置gpio...

  • 17760703789让51单片机控制的智能小车,利用红外对管检测黑白线拐直角弯,我想在车身...
    程钧侄如果不会用滤波算法的话 我想到的只有一个办法,就是用一个循迹条,放在车前 到拐弯的时候用延时,近似转到90度,然后用循迹条去走直线 简单写个程序:\/\/现在到了拐弯处,假设有1个7个led的灰度循迹条(或者红外循迹条)\/\/灯:led1 led2 led3 led4 led5 led6 led7 car_right();delag_ms(...

  • 相关主题精彩

    版权声明:本网站为非赢利性站点,内容来自于网络投稿和网络,若有相关事宜,请联系管理员

    Copyright © 喜物网