- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
小车运动控制VHDL描述研发设计
Part 1:设计简介及背景知识
控制对象——由两台小型二相步进电机驱动的小车
控制目标——通过档位键盘(对应信号为dang[3..0])和控制键盘(对应信号kong[2..0])实现小车以两级速度前进、前左转、前右转、倒车、左倒车和右倒车。
本设计采用自顶向下的设计方法,分为三个模块(见下页图),队员分工设计。
各模块的相关说明
步进电机的转速和输入脉冲信号的频率成正比,所以可以通过第二模块产生不同的分频信号控制其转速。
本设计采用二相双四拍的电机工作模式,故须在第三模块实现相应的脉冲分配。第三模块同时将脉冲导向不同的电机,实现方向控制。
步进电机启动时不能加太高的频率,否则会啸叫、震动、丢步,无法实现快速、稳定的启动,所以在第一模块对输入的时钟脉冲sr_clk进行处理,再输入下一级以实现控制信号启动部分的过渡。
步进电机的输入脉冲顺序相反时(相当于反接线时),会反转,因此可以通过在第三模块对输出反顺序赋值实现反转控制。
关于仿真的说明
步进电机的工作频率在KHZ级,此频率下可忽略芯片内部演示带来的影响,故一下的仿真大多为功能仿真。
参考资料
《基于VHDL语言与Quartus软件的可编程逻辑器件应用与开发》 郑燕,赫建国,党剑华编著
《基于Quartus II的FPGA/CPLD设计》 李洪伟,袁斯华编著
《VHDL语言设计技术》 陈耀和著
《数字电子技术基础》(第二版) 杨颂华 冯毛官 孙万蓉 初秀琴 胡力山编著
《步进电机综述》 北京市自动化技术研究所,一机部电器科学研究
《新版机器人技术手册》(日) 日本机器人学会编 宗光华
Part 2:各模块代码及详解
第一模块 :脉冲分频
一、模块功能
对信号的起始部分的降频(因启动时需频率较低来过渡),输出最终的控制脉冲clk。
通过对脉冲计数分先后在同一输出clk上实现8、4、2、1(即原频)的输出,以达到缓慢启动。
二、原程序及相关说明
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity fen is
port(
sr_CLK:IN std_logic;
kong:in std_logic_vector(2 downto 0);
clk:OUT std_logic
);
end fen;
architecture div of fen is
signal Q:std_logic_vector(2 downto 0);--自定义变量用于计数分频转接输出等。
signal C:std_logic;
signal D:std_logic;
signal E:std_logic;
signal R:std_logic_vector(7downto 0):
begin
process(sr_CLK)
begin
if sr_CLKEVENT AND sr_CLK=1 then
if(Q=111)then
Q=000;
else
Q=Q+1;
end if;
end if;
end process;
C=Q(2);--8分频
D=Q(1);--4分频
E=Q(0);--2分频
PROCESS(sr_CLK,kong) --计数,在前96个脉冲使用某低速,在其后的脉冲使用某中速,在97个脉冲之后使用据横速度
BEGIN
if sr_CLKevent and sr_CLK=1 then
case kong is
when011|101|110=
if(then
R = R + 1;
else
R = R;
end if;
when others=
R
end case;
end if;
end process;
process(R,C,D,E,sr_CLK)
begin
if(Rthen
clk=0;
elsif(Rthen
clk= C;
elsif((and()then--第1脉冲上升沿开始八分频
clk= C;
elsif(Rthen
clk= D;
el
您可能关注的文档
最近下载
- 如何寻找鱼道,如何寻找钓点.ppt
- 医院中药饮片采购项目方案投标文件(技术方案).pdf
- 3.1 捐书(课件)2025-2026学年度北师大版数学三年级上册.pptx VIP
- 2020-2021学年苏教版数学二年级上册第四单元《 表内除法(一)》解决问题专项练习卷C.pdf VIP
- 人教版道德与法治三年级上册第5课《走近科学家》课件.pptx VIP
- 《儿童发展心理学》课件_7第六章 儿童语言的发展.ppt VIP
- 中秋博饼规则.doc VIP
- 药用单宁酸的制备.docx VIP
- 压力管道年度检查报告(空白).pdf VIP
- 2021届高考物理一轮复习_电磁学库仑力与力学综合类问题专题练习.docx VIP
文档评论(0)