|
本帖最后由 muyan 于 2021-12-28 21:00 编辑
值得买上有大神分享了制作过程,并且分享了arduino的代码,这里感谢大神
https://zhiyou.smzdm.com/member/4580489080/
后面可以根据需要修改,我会用esp32来控制充气,目前采集的数据取平均数无法很好地计算到准确值,只能按具体值来充气了
传感器最大压力值6bar
参考各种换算方法,1psi=6.895kPa=0.0689476bar
按照这个计算出来基本准确
如果有更好的算法,希望不吝赐教
CS1237充气气泵控制板[未验证] - 立创EDA开源硬件平台 https://oshwhub.com/muyan2020/cs1237-chong-qi-qi-beng
- /* 小气泵控制程序
- * 气压传感器DSH700,数模模块CS1237
- * 1毫米水柱=9.8066135802帕斯卡 液体压强计算公式P=ρgh可知:代入常数值:ρ=1000kg/m^3,g=9.8m/s^2=9.8N/kg
- * 1巴(bar)=100千帕(kPa)=1000百帕(hPa)=1000毫巴(mbar)=100000帕斯卡
- * 1psi=6.895kPa=0.0689476bar =0.006895MPa
- 1标准大气压(atm)=14.696磅/英寸2(psi)
- 1巴(bar)=100千帕(kPa)
- 1达因/厘米2 (dyn/cm2)=0.1帕(Pa)
- 1托(Torr)=133.322帕(Pa)
- 1毫米汞柱(mmHg)=133.322帕(Pa)
- 1毫米水柱(mmH2O)=9.80665帕(Pa)
- 1工程大气压=98.0665千帕(kPa)
- 1千帕(kPa)=0.145磅力/英寸2(psi)=0.0102千克力/厘米2(kgf/cm2)=0.0098大气压(atm)
- 1磅力/英寸2(psi)=6.895千帕(kPa)=0.0703千克力/厘米2(kgf/cm2) =0.0689巴(bar)=0.068大气压(atm)
- 1标准大气压(atm)=101.325千帕(kPa)=14.696磅/英寸2(psi)=1.0133巴(bar)=760毫米汞柱(mmHg)
- * 屏显版:选择充气气压,按键开启充气,显示当前气压,达到目标值停止充气
- * 简单版:4个led显示4种气压选择,按键开启充气
- *
- * 927384 0.3
- * 1026141 0.4
- * 1305485 0.6 篮球
- * 2080369 1.2
- * 2224276 1.29
- * 2539945 1.5
- * 3113765 1.9
- * 3188414 2
- * 3234954 2.04
- * 3375692 2.15
- * 3762277 2.43 摩托车
- * 3839579 2.5 汽车
- * 3902948 2.53
- * 4273014 2.8
- * 4419500 2.95
- * 4480105 2.97
- * 4580560 3.05
- * 4966855 3.3
- * 5237358 3.5
- * 5691781 3.9 自行车
- * 5797899 4.0
- * 5890198 4.03
- * 6124920 4.22
- * 7168366 5.1
- * 7701561 5.4
- * 8276554 5.85
- * ESP32 A4 = 32; A5 = 33;
- * ESP8266 D1 = GPIO5; D2 = GPIO4;
- */
- int ndrdy = D2; //SDA
- int clck = D1; //SCL
- int pwm = D5;
- bool is_run = true;
- void setup() {
- Serial.begin(115200);
- pinMode(pwm, OUTPUT);
- while (!Serial) {}
- digitalWrite(ndrdy, LOW);
- pinMode(ndrdy, INPUT);
- digitalWrite(clck, LOW);
- pinMode(clck, OUTPUT);
- while (digitalRead(ndrdy)) {}
- while (!digitalRead(ndrdy)) {}
- }
- long readADC()
- {
- if (digitalRead(ndrdy))
- return -1;
- long result = 0;
- for (int i = 0; i < 24; i++)
- {
- digitalWrite(clck, HIGH);
- delayMicroseconds(1);
- int new_bit = digitalRead(ndrdy);
- digitalWrite(clck, LOW);
- delayMicroseconds(1);
- result <<= 1;
- result |= new_bit;
- }
- for (int i = 0; i < 3; i++)
- {
- digitalWrite(clck, HIGH);
- delayMicroseconds(1);
- digitalWrite(clck, LOW);
- delayMicroseconds(1);
- }
- return result;
- }
- void loop() {
- long adcValue = readADC();
- if (adcValue > 600000 ) {
- Serial.print("ADC reading: ");
- Serial.print(adcValue);
- Serial.print("\t");
- Serial.print(adcValue/100000*0.0689476);
- Serial.println("bar");
- } else {
- }
- if (adcValue >= 3839579)
- {
- delay(500);
- digitalWrite(pwm, LOW);
- Serial.println(" End of Run ");
- delay(500);
- }
- else
- {
- if (is_run == true)
- {
- digitalWrite(pwm, HIGH);
- delay(500);
- }
- }
- }
复制代码
补充内容 (2022-1-9 15:46):
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
打赏
-
查看全部打赏
|