找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3382|回复: 1
收起左侧

Arduino GP2D12的Proteus仿真

[复制链接]
ID:770888 发表于 2020-6-6 09:13 | 显示全部楼层 |阅读模式
1、原理图
Arduino开发板的简介
119V DC输入,为Arduino板提供外部电源输出,使Arduino控制板具有能够驱动舵机等大功率外部设备的能力;
21USB口,通过该口连接到计算机,由ArduinoIDE将用户编写好的控制程序上传到控制板中,同时还可以通过该口为电路板供电,驱动小功率的外部设备;
314个数字输入/输出端,其中端口0RX)和1TX)分别连接主控芯片的串行引脚,用来接收和发送TTL串行数据。其中端口23可以接收外部信号,实现外部中断功能;端口35691011作为PWM端口,可用于电机PWM调速[5]或音乐播放;端口10SS)、11MOSI)、12MISO)和13SCK)在SPI模块库的支持下,可以提供SPI通信模式;端口13内部连接了一个LED指示灯,随着13脚上电平的高低变化,实现开启和关闭;
46个模拟输入/输出端,其中端口4SDA)和端口5SCL)端口可以实现I2C通信;
515 V DC输出和133 V DC输出,可为其它电路提高33 V5 V直流电源;
61个复位接口。
GP2D12简介
1.png
上图就是GP2D12红外线测距传感器的电压值与距离值的关系曲线,从这个曲线可以看出,电压输出与距离成反比,而且是非线性关系。
根据上图关系曲线,大约关系为10cm距离时有2.55V输出,80cm距离时有0.42V输出。可以通过该曲线拟合出电压值与距离值的数学关系式,但是这个关系式里的距离是参考距离值,实际距离值=(参考距离值-0.42)cm,另外由于Arduino的模拟量采样命令analogRead(),采样的数据范围是0至1023,对应的电压范围是0至5V,每格数据代表0.0049V,于是读取的有效数据应该由86(0.42V)至520(2.548V)。所以最终实际距离=2547.8/((float)采样数据*0.49-10.41)-0.42。
2、代码流程图
程序运行到流程为:首先初始化串口的波特率,串口的波特率初始化之后可以进行串口通信,在,静茹到loop循环中,进行数据的读取,数据读取的过程中需要判断数据端正确性,如果数据不正确显示is not value,如果显示合理的范围在串口打印出来。
3、功能结构说明
本设计使用Arduino单片机做为控制,使用红外测距模块 GP2D12检测距离,通过单片机的串口输出。
4、函数说明
Arduino开发使用ide开发工具,具有较多的库函数,再开发中不需要对每个模块进行寄存器操作方便开发。
  void setup()//初始化设置函数
  {
     Serial.begin(9600); //波特率9600用于显示数据
  }
  void loop()//主程序运行部分
  {
     int tmp = analogRead(A3);//模拟引脚3口
     int gao=tmp/10;//将采取到的值进行高位和低位截取
     int di=tmp%10;//截取低位
     int value=gao*10+di;//将高位和低位的值相加
     delay(50);//采样时间延时10ms
     if(value>10&&value<80) //判读值正确
    {
       Serial.print(value);//打印出距离值
       Serial.println("cm");//打印出cm
    }
     else Serial.println("is not value");//如果距离不再10-80之间显示距离值不正确
  }
  
5、仿真结果
使用proteus仿真的结果显示出,再串口输出的界面中显示设定的值34-35cm的范围中。
2.png


arduino_GP2D12_1.rar

7.98 MB, 下载次数: 24, 下载积分: 黑币 -5

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

ID:101726 发表于 2020-6-11 07:46 | 显示全部楼层
这个真的好值得下载!!!!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表