ZZP 发表于 2015-4-9 20:13:30

基于FPGA+ARM+安卓的机器人

本帖最后由 ZZP 于 2015-4-9 20:29 编辑

一:小组成员
      组长:钟在攀
         组员:赵文静,杜琼珠,钟在攀
二:项目名称
   基于FPGA+ARM+安卓的机器人
三:项目概述
      本设计有五个组成部分:第一部分也是最重要的一部分,FPGA部分,其实主要包含PWM模块,串行接口模块,AD采样模块,蜂鸣器模块,数码管模块,角度rom模块;第二部分是ARM部分,主要包括机器人动作处理,连接互联网。第三部分是安卓部分,主要包括连接云端进行语音识别,通过TCP协议把数据发到wifi模块;第四部分是电源部分,7.4v的锂电池充满电是8.4v,直接给一般舵机供电不行,所以要降压,本系统采用二极管降压,电源部分还包括隔离模块,因为舵机直接连接开发板,会烧板子,大部分人采用光耦隔离,本组队友不甘心有普通的光耦隔离,自己研制出新型隔离模块,过程相当惨不忍睹,烧坏三个板子,但是是值得的,最后成功拒绝光耦。第五部分是机器人结构,零件采购,舵机采购然后自己组装。
三:作品实物图

五:演示视频
江大“至芯杯”作品
六:部分模块
1.1.        原理与框图
Ctrl为占空比调节控制位,clk为高频率的时钟信号,模块内通过分频产生50hz的可控制舵机的信号。框图如图1。

1.2.        verilog hdl 程序清单
1.2.1.        主程序
module bio_polorl(ctrl,clk,pwm,en,reset);
inputctrl;
input clk;
input en;
input reset;
output pwm;
reg pwm;
regcnt=0;
regCTRLS=1500;
always@(posedge clk or negedge reset)
begin
if(!reset)
begin
CTRLS<=1500;
cnt<=0;
end
else
begin
if(!en)CTRLS<=ctrl;
if(cnt>20000)
begin cnt<='b0;
end
else if(cnt<=CTRLS)
begin
pwm<=1;
cnt<=cnt+1;
end
else
begin
pwm<=0;
cnt<=cnt+1;
end
end
end
endmodule
1.2.2.        仿真程序
module bio_polorl_test;

        // Inputs
        reg ctrl;
        reg clk;
        reg en;
        reg reset;

        // Outputs
        wire pwm;

        // Instantiate the Unit Under Test (UUT)
        bio_polorl uut (
                .ctrl(ctrl),
                .clk(clk),
                .pwm(pwm),
                .en(en),
                .reset(reset)
        );

        initial begin
                // Initialize Inputs
                ctrl = 1500;
                clk = 0;
                en = 0;
                reset = 1;

                // Wait 100 ns for global reset to finish
                #100;
      
                // Add stimulus here

        end
always #1 clk=~clk;
      
endmodule


1.3.        仿真结果如图2



fpga_feixiang 发表于 2023-12-5 14:15:29

6                                    
页: [1]
查看完整版本: 基于FPGA+ARM+安卓的机器人