news 2026/8/22 13:41:14

基于Quartus II 9.0的步进电机控制器设计:包含四相单四拍、双四拍及八拍脉冲分配器

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
基于Quartus II 9.0的步进电机控制器设计:包含四相单四拍、双四拍及八拍脉冲分配器

步进电机控制器设计 利用Quartus ii9.0设计一个具有四相单四拍,四相双四拍和四相八拍的脉冲分配器。 设计一个三选一数据选择器来控制pause信号选择工作方式,以及用两个74160与两个7447设计成计数器来对步进电机进行计数。 并用该软件对其进行了仿真。 报告设计说明书原理图程序

我蹲在实验室角落盯着示波器上的波形,手指头在开发板上来回拨动。步进电机突然抽风似的转了个圈,吓得隔壁桌做电源的同学差点把烙铁扔了——这玩意儿控制不好真能当暗器使。

脉冲分配器是整个系统的节奏大师。用Verilog搞了个四相驱动模块,核心就是个状态机轮播:

always @(posedge clk) begin case(mode) 2'b00: //单四拍 case(step_counter) 0: phase <= 4'b0001; 1: phase <= 4'b0010; 2: phase <= 4'b0100; 3: phase <= 4'b1000; endcase 2'b01: //双四拍 case(step_counter) 0: phase <= 4'b0011; 1: phase <= 4'b0110; 2: phase <= 4'b1100; 3: phase <= 4'b1001; endcase default: //八拍混合 case(step_counter) 0: phase <= 4'b0001; 1: phase <= 4'b0011; 2: phase <= 4'b0010; 3: phase <= 4'b0110; 4: phase <= 4'b0100; 5: phase <= 4'b1100; 6: phase <= 4'b1000; 7: phase <= 4'b1001; endcase endcase end

这代码看着像俄罗斯方块,实际运行时相位切换必须严丝合缝。特别是八拍模式下的半步切换,稍有不慎电机就会原地蹦迪。

步进电机控制器设计 利用Quartus ii9.0设计一个具有四相单四拍,四相双四拍和四相八拍的脉冲分配器。 设计一个三选一数据选择器来控制pause信号选择工作方式,以及用两个74160与两个7447设计成计数器来对步进电机进行计数。 并用该软件对其进行了仿真。 报告设计说明书原理图程序

控制方式选择用了个三选一MUX,硬件实现比软件更直接:

assign pause = (select == 2'b00) ? modeA_pause : (select == 2'b01) ? modeB_pause : modeC_pause;

其实用三个与非门搭更省资源,但当时赶时间直接调用了库里的74153。后来发现这货的传输延迟比预期多了15ns,差点让脉冲时序崩盘。

计数器部分最闹心,两个74160级联扩展计数范围时,同步进位信号的处理让我掉了不少头发。关键在第二个芯片的ENT端要接第一个的RCO:

// 级联配置 wire carry_out; counter_74160 first_counter( .clk(step_pulse), .clr(reset), .load(1'b0), .ENT(1'b1), .ENP(1'b1), .RCO(carry_out) ); counter_74160 second_counter( .clk(step_pulse), .clr(reset), .load(1'b0), .ENT(carry_out), // 这里必须用前级的RCO .ENP(1'b1), .RCO() );

仿真时发现计数器偶尔会吞脉冲,查了三天才发现是7447译码器的消隐脚没处理好。硬件设计真是失之毫厘谬以千里,某个接地脚虚焊都能让数码管显示鬼符。

最终在Quartus里跑时序仿真时,看到各相位信号像阅兵式一样整齐划一地切换,那种满足感堪比打通关魂系游戏。虽然烧了三片CPLD才调通,但看着电机丝滑地转起来,感觉值回票价了。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/21 19:29:55

技术革新引领电力优化新篇章:遗传算法在配电网无功优化中的应用

遗传算法&#xff0c;配电网无功优化&#xff0c;以IEEE33节点为例&#xff0c;内容如图所配电房里嗡嗡作响的变压器总让我着迷。最近在捣鼓遗传算法优化无功补偿&#xff0c;就拿经典的IEEE33节点练手。这个33节点系统像张蜘蛛网&#xff0c;13条支路呈放射状延伸&#xff0c;…

作者头像 李华
网站建设 2026/8/22 2:11:02

台达 24es 与两台施耐德 ATV310 变频器的 RTU 通讯示例

台达24es通讯&#xff08;rtu方式&#xff09;两台施耐德ATV310变频器示例 施耐德变频器的rtu有一点麻烦&#xff0c;是和大多变频器通讯不一样&#xff0c;它有它的逻辑&#xff0c;但这并不妨碍我们和它的通讯&#xff0c;比如用台达plc来通讯&#xff0c;点动频率&#xff0…

作者头像 李华
网站建设 2026/8/21 19:29:49

探索 SSM 甜品交易系统

ssm甜品交易系统&#xff0c;包含文档&#xff0c;Javassm Ecplice&#xff0c;jsp最近在折腾一个超有趣的项目——SSM 甜品交易系统&#xff01;今天就来和大家分享一下我的一些经历和发现。这个系统主要涉及到 Java、SSM&#xff08;Spring Spring MVC MyBatis&#xff09;…

作者头像 李华
网站建设 2026/8/21 19:29:56

select count(*) 表名 和select count(*) from 表名

mysql一次核对数据&#xff0c;少写了一个from&#xff0c;直接写成下面的sql了。select count(*) 表名结果无论哪个表都返回1&#xff0c;把我吓得捏了一把汗还以为数据被谁清空了。。原来是自己的手误&#xff0c;select count(*) 表名相当于把表名当成了列的别名&#xff0c…

作者头像 李华
网站建设 2026/8/21 21:41:33

Qwen3-Embedding-4B部署教程:Python调用避坑指南

Qwen3-Embedding-4B部署教程&#xff1a;Python调用避坑指南 1. Qwen3-Embedding-4B介绍 Qwen3 Embedding 模型系列是 Qwen 家族中专为文本嵌入和排序任务打造的最新成员&#xff0c;基于强大的 Qwen3 系列基础模型构建。该系列覆盖多种参数规模&#xff08;0.6B、4B 和 8B&a…

作者头像 李华
网站建设 2026/8/21 21:41:34

RS ASIO音频延迟消除技术:实时演奏优化的完整解决方案

RS ASIO音频延迟消除技术&#xff1a;实时演奏优化的完整解决方案 【免费下载链接】rs_asio ASIO for Rocksmith 2014 项目地址: https://gitcode.com/gh_mirrors/rs/rs_asio 您是否遇到这些音频延迟困扰&#xff1f; 当您满怀激情地在摇滚史密斯中弹奏时&#xff0c;是…

作者头像 李华