找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3022|回复: 3
打印 上一主题 下一主题
收起左侧

arduino充氧仿真装置Proteus仿真程序

[复制链接]
跳转到指定楼层
楼主
arduino充氧仿真装置仿真,这是用于给水进行充氧的,通过检测水压以及水温,再通过一个公式的计算,得到水中的氧含量。从而判断是否电机是否运行给水中鼓起充氧。

仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)


单片机源程序如下:
  1. #include <OneWire.h>
  2. #include <DallasTemperature.h>
  3. #include <LiquidCrystal.h>
  4. #define MPX_PIN A1                        //定义压力传感器MPX4115的引脚连接
  5. #define LED_PIN     9                     //定义led指示灯的引脚连接
  6. #define MOTOR_PIN   9                     //定义电机的引脚连接
  7. #define DS18B20     10                    //定义ds18b20的引脚连接
  8. #define JIA_1       11                    //定义设定值+1的引脚连接
  9. #define JIAN_1      13                    //定义设定值-1的引脚连接

  10. OneWire oneWire(DS18B20);
  11. DallasTemperature sensors(&oneWire);

  12. LiquidCrystal myLcd(2,3,4,5,6,7,8);  //声明一个1602 LCD对象

  13. float temp = 0;  //初始化温度变量
  14. float mpx = 0;   //初始化压力变量
  15. float DOf = 5;
  16. int time_n = 0;   
  17. int time_num = 0;   
  18. float DOF = 5;        //初始设计氧含量的值

  19. void setup(){
  20.   // 初始库
  21.   sensors.begin();
  22.   
  23.   myLcd.begin(16,4);
  24.   pinMode(JIA_1,INPUT);
  25.   pinMode(JIAN_1,INPUT);
  26.   pinMode(MOTOR_PIN,OUTPUT);
  27.   analogWrite(MOTOR_PIN, 0);
  28.   Serial.begin(9600);
  29.   
  30.   myLcd.setCursor(0, 0);    //将1602 LCD光标移动到第一行第一列
  31.   myLcd.print(String("temp:"));
  32.   myLcd.setCursor(0, 1);    //将1602 LCD光标移动到第二行第一列
  33.   myLcd.print(String("mpx :"));
  34.   myLcd.setCursor(0, 2);    //将1602 LCD光标移动到第三行第一列
  35.   myLcd.print(String("Ture oxygen:"));
  36.   myLcd.setCursor(0, 3);    //将1602 LCD光标移动到第四行第一列
  37.   myLcd.print(String("Set oxygen :"));
  38. }

  39. void loop(){
  40.   
  41.   //测温
  42.   sensors.requestTemperatures(); // 发送命令获取温度
  43.   temp = sensors.getTempCByIndex(0);

  44.   //测压
  45.   mpx = analogRead(MPX_PIN);    //读取模拟量数据
  46.   mpx = map(mpx,54,973,15,115); //模拟量输出是54-973  测量的电压为15-115Pa**千万别改,测出来的
  47.   
  48.   //键盘检测
  49.   if(digitalRead(JIA_1) == HIGH){
  50.     DOF = DOF + 1;  
  51.     delay(100);        //消抖
  52.   }
  53.   else
  54.     DOF=DOF;
  55.    
  56.   if(digitalRead(JIAN_1) == HIGH){
  57.     DOF = DOF - 1;  
  58.     delay(100);       //消抖
  59.   }
  60.   else
  61.     DOF=DOF;
  62.    
  63.   //计算是否低于设定值
  64.   DOf = (mpx/101)*(471.01/(temp+31.98));      //101是大气压
  65.   if(DOf < DOF)
  66.     analogWrite(MOTOR_PIN, 255);
  67.   else
  68.     analogWrite(MOTOR_PIN, 0);
  69.   
  70.   //显示
  71.   myLcd.setCursor(5, 0);   
  72.   myLcd.print(String(temp) + String(" 'C"));
  73.   myLcd.setCursor(5, 1);  
  74.   myLcd.print(String(mpx) + String(" KPa"));
  75.   myLcd.setCursor(12, 2);   
  76.   myLcd.print(String(DOf));
  77.   myLcd.setCursor(12, 3);   
  78.   myLcd.print(String(DOF));
  79. }
复制代码

所有资料51hei提供下载:
充氧装置仿真.zip (3.44 MB, 下载次数: 29)

评分

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

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:744206 发表于 2020-5-4 22:19 | 只看该作者
不错不错学习一下
回复

使用道具 举报

板凳
ID:783620 发表于 2020-6-19 08:20 | 只看该作者
设定氧气浓度那里 一直按没有反应啊,加到6就不动了
回复

使用道具 举报

地板
ID:830831 发表于 2020-10-24 12:10 | 只看该作者
请问楼主,这个压力传感器能放水里吗?
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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