单片机教程网

电脑版
提示:原网页已由神马搜索转码, 内容由www.51hei.com提供.
查看:3440|回复:3

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

[复制链接]
ID:229133发表于 2020-4-29 01:52|显示全部楼层
arduino充氧仿真装置仿真,这是用于给水进行充氧的,通过检测水压以及水温,再通过一个公式的计算,得到水中的氧含量。从而判断是否电机是否运行给水中鼓起充氧。

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


单片机源程序如下:
  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, 下载次数: 33)

评分

黑币 +50
收起理由
+ 50
共享资料的黑币奖励!

查看全部评分

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 单片机教程网