做网站的公司经营范围怎么写,上海自适应网站开发,代理公司的经营范围,济南移动网站制作目录
一、实验目的
二、实验仪器设备
三、实验的重点和难点
四、实验原理
五、实验步骤
六、实验报告
七、实验过程
1.分频器代码
2.方向选择器
3.直流电动机工作原理
4.电路连接图
5.文件烧录 一、实验目的
了解直流电机控制的工作原理和实现的方法。掌握PWM波控…目录
一、实验目的
二、实验仪器设备
三、实验的重点和难点
四、实验原理
五、实验步骤
六、实验报告
七、实验过程
1.分频器代码
2.方向选择器
3.直流电动机工作原理
4.电路连接图
5.文件烧录 一、实验目的
了解直流电机控制的工作原理和实现的方法。掌握PWM波控制直流电机转速的方法。学会用于Verilog语言设计直流电机控制电路。
二、实验仪器设备
PC机一台FPGA实验开发系统一套。
三、实验的重点和难点
重点掌握直流电机调速控制原理。难点应用Verilog语言实现直流电机控制电路设计。
四、实验原理
本次实验使用的电机驱动电路如下图所示 图1 直流电机H桥驱动电路 图2 锁存器
调方向
如图1所示当PWM1为高电平时PWM2为低电平时Q2和Q4导通Q3和Q5不导通。当PWM1为低电平时PWM2为高电平时Q2和Q4不导通Q3和Q5导通。两种情况电机转动的方向不一样。 2. 调速度
电机的速度是通过PWM调节所谓PWM就是脉宽调制器通过调制器给电机提供一个具有一定频率的脉冲宽度可调的脉冲电。脉冲宽度越大即占空比越大提供给电机的平均电压越大电机转速就高。反之脉冲宽度越小则占空比越越小。提供给电机的平均电压越小电机转速就低。 五、实验步骤
启动 Quartus II 建立一个空白工程选择的器件为 Altera 公司的 Cyclone 系列的 EP2C8Q240C8 芯片命名为 moto.qpf新建一个 Schematic File 文件命名为 moto.bdf分别新建 3 个 Verilog HDL File 文件分别命名为 divclk.vpwm_logic.v, moto_test.v。输入程序代码并保存对应源程序 11然后进行综合编译。若在编译过程中发现错误则找出错误并更正错误直至编译成功为止。从设计文件创建模块FileàCreat UpdateàCreat Symbol Files for Current File, divclk.v生成名为 divclk.bsfpwm_logic.v 生成名为 pwm_logic.bsfmoto_test.v 生成 moto_test.bsf;在 moto.bdf 文件中在空白处双击鼠标左键在 Symbol 对话框左上角的 libraries 中,分别将Project 下的 divclk、moto_test、pwm_logic 模块放在图形文件 moto.bdf 中加入输入、输出引脚双击每个引脚进行引脚命名并锁定管脚将未使用的引脚设置为三态输入一定要设置否则可能会损坏芯片 Clk1 209 K1 153 K2 95 K3 154 MOT_CS 171 Gpio[4] 164 Gpio[5] 159
完整的顶层模块原理图如图所示 其中 K1 控制电机的正转与反转K2 控制电动机启动、停止K3 控制占空比 5. 将 moto.bdf 设置为顶层实体。对该工程文件进行全程编译处理若在编译过程中出现错 误则找出错误并更正直至编译通过为止 6. 将 USB-Blaster 下载电缆的两端分别连接到 PC 机的 USB 接口和EDA 实验箱上的 JTAG 下载口上打开电源执行下载命令把程序下载到 FPGA 器件中此时即可在 EDA 实 验箱上控制直流电机。
六、实验报告
总结Verilog设计直流电机驱动的步骤。讨论自己在设计过程中遇到的问题、解决的过程以及收获体会。
七、实验过程
基本流程为创建项目、创建Verilog文件、写代码、进行波形仿真、画出电路图、设置管脚和三态、烧录文件。前面的项目创建等等基本操作我就不去做演示了下面主要去讲原理和代码。
1.分频器代码
这个模块是对输入信号的频率去进行分频处理分出的频率是满足电动机所需的频率即可。代码如下很显然这个是一个8分频的分频器这里我们直接拿过来用就行了。
module divclk(inclk,outclk);input inclk;output outclk;reg outclk;reg [2:0] cnt;initialbegincnt0;outclk0;endalways (posedge inclk)begincntcnt1;if (cnt0)outclkoutclk1;end
endmodule
2.方向选择器
下面代码是用于设计直流电动机转向选择的代码供大家参考一下。
module pwm_logic(clk,pwm_en,duty_cycle,pwm_out);
input clk;
input [3:0] duty_cycle;
input pwm_en;
output pwm_out;
reg pwm_out;
reg [15:0] counter;
always (posedge clk)
beginif(pwm_en)counter counter 1b1;
end
always (posedge clk)
beginif (pwm_en (counter[15:12] duty_cycle))pwm_out 1b1;elsepwm_out 1b0;
endEndmodule
3.直流电动机工作原理
直流电动机可以通过不同的按键来去设置其转向、转速等等内容这里我主要去讲如何去控制转速问题。 对于电动机转速的理解我们可以理解成日常生活当中的骑电动车我们骑电动车的时候并不是一直在加油的而是加油一定时间之后就让电动车自己利益惯性滑行然后慢下来再去加油。同样的直流电动机也是通过这样的方式去调档输入高电平表示通电也就是加油低电平就不通电此时惯性滑行如果在一个周期内高电平占比为99.9%的话我们就表示为最高档如果占比66.6%我们就表示第二档占比33.3%就最低档那剩下的时间就是惯性转动。 这部分就是核心代码了其中输入包括分频输出的信号以及按键的三个输入包括转向控制转速设置和启动开关。
module moto_test(clk, pwm_in, k1, k2, k3, duty_cycle, pwm_en, motoa, motob, speed_led);
input k1, k2, k3, clk, pwm_in;
output reg pwm_en, motoa, motob;
output reg [3:0] duty_cycle;
reg moto_dir;
reg [2:0] dout1, dout2, dout3, buff, key_edge; output reg speed_led; // 新增的输出端口 //新增部分速度计算和速度LED显示
reg [15:0] speed_counter; // 用于计算速度的计数器可以根据需要调整位宽
reg speed_flag; // 当速度计数器达到设定值时此标志位置1 initial begin duty_cycle 4; speed_counter 0; speed_flag 0;
end // 在每个时钟上升沿如果电机正在运行pwm_en为高则增加速度计数器
always (posedge clk) begin if (pwm_en) begin if (k1 || k2 || k3) begin // 如果按键被按下增加计数器的速度 speed_counter speed_counter 1; end else begin // 否则计数器的速度降低 speed_counter speed_counter - 1; end end
end // 当速度计数器达到设定值时例如对应于每秒的转速将速度LED设置为高电平否则为低电平
always (posedge clk) begin if (speed_flag) begin speed_led 2; // 如果速度标志已经设置那么点亮LED灯 end else if (pwm_en) begin speed_led 1b0; // 如果速度标志没有设置且电机正在运行那么熄灭LED灯 end
end // 当速度计数器达到设定值时设置速度标志并在下一个时钟周期将其清除
always (posedge clk) begin if (speed_counter 10000) begin // 例如这里设定为每10000个时钟周期为1秒可以根据需要调整 speed_flag 1b1; end else begin speed_flag 1b0; end
end
//按键消抖部分
always (posedge clk)
beginbegindout1 {k1,k2,k3};dout2 dout1;dout3 dout2;end
end //按键边沿检测部分
always (posedge clk)
beginbuff dout1 | dout2 | dout3;key_edge ~(dout1 | dout2 | dout3) buff;if(key_edge[0]) //按键1;K3,控制占空比beginduty_cycle duty_cycle 1b1;if(duty_cycle8)duty_cycle1;endif(key_edge[1]) //按键2;K2控制电动机启动、停止pwm_en ~pwm_en;if(key_edge[2]) //按键3;K1,控制电机正转与反转moto_dir ~moto_dir;motoa moto_dir ? pwm_in : 1b0;motob moto_dir ? 1b0 : pwm_in;
end
endmodule
4.电路连接图
写好了Verilog代码就进行分析错误分析无误后我们就对这些代码生成子模块文件。然后就创建block文件开始连接电路图电路图以及管脚配置如下 5.文件烧录
弄好了之后就是最后一步操作了把没用到的管脚设置三态然后烧录文件。
点击Assignment Device 然后点击这里设置管脚状态。 选择第一个就行了就是把多余的管脚设置三态。
最后点击此处进行烧录。 这里我们会看到下面有一个芯片这个也就是我们写好了的sof文件然后就是通过你的电脑接口去连接到开发板如果你看到上面有一个No Hardware的时候你点击旁边的按钮进行接口设置设置为USB接口即可USB线连接了你的开发板就会自动显示出来的。最后点击start就可以进行烧录了。
以上就是本期的全部内容了我们下次见
分享一张壁纸