首页 > 其他分享 >stm32-arduino压力薄膜传感器读取

stm32-arduino压力薄膜传感器读取

时间:2024-05-06 16:33:40浏览次数:18  
标签:DEBUGSerial 读取 arduino MAX AO stm32 print VOLTAGE PRESS

 

https://item.taobao.com/item.htm?id=674959275850&skuId=5150222163940&spm=a1z0d.6639537/tb2.1997196601.3.43b97484vSZsIQ

 

 

 

 

 

 

#include <Arduino.h>

#define DEBUGSerial Serial
int sensorPin = A0; 	//定义传感器的引脚

//下面4项内容需要根据实际型号和量程修正

//最小量程 根据具体型号对应手册获取,单位是g,这里以RP-18.3-ST型号为例,最小量程是20g
#define PRESS_MIN	20
//最大量程 根据具体型号对应手册获取,单位是g,这里以RP-18.3-ST型号为例,最大量程是6kg
#define PRESS_MAX	6000

//以下2个参数根据获取方法:
//理论上:
// 1.薄膜压力传感器不是精准的压力测试传感器,只适合粗略测量压力用,不能当压力计精确测量。
// 2. AO引脚输出的电压有效范围是0.1v到3.3v,而实际根据不同传感器范围会在这个范围内,并不一定是最大值3.3v,也可能低于3.3v,要实际万用表测量,
// 	例程只是给出理论值,想要精确请自行万用表测量然后修正以下2个AO引脚电压输出的最大和最小值
//调节方法:
//薄膜压力传感器的AO引脚输出的增益范围是通过板载AO_RES电位器调节实现的,
//想要稍微精准点,需要自己给定具体已知力,然后调节AO_RES电位器到串口输出重量正好是自己给定力就可以了
#define VOLTAGE_MIN 150
#define VOLTAGE_MAX 3300

void setup()
{
	DEBUGSerial.begin(9600); // setup serial
	Serial.println("setup end!");
}

void loop()
{
	long Fdata = getPressValue(sensorPin);
	DEBUGSerial.print("F = ");
	DEBUGSerial.print(Fdata);
	DEBUGSerial.println(" g,");
	delay(300);
}

long getPressValue(int pin)
{
	long PRESS_AO = 0;
	int VOLTAGE_AO = 0;
	int value = analogRead(pin);

	DEBUGSerial.print("AD = ");
	DEBUGSerial.print(value);
	DEBUGSerial.print(" ,");

	VOLTAGE_AO = map(value, 0, 1023, 0, 5000);

	DEBUGSerial.print("V = ");
	DEBUGSerial.print(VOLTAGE_AO);
	DEBUGSerial.print(" mv,");

	if(VOLTAGE_AO < VOLTAGE_MIN)
	{
		PRESS_AO = 0;
	}
	else if(VOLTAGE_AO > VOLTAGE_MAX)
	{
		PRESS_AO = PRESS_MAX;
	}
	else
	{
		PRESS_AO = map(VOLTAGE_AO, VOLTAGE_MIN, VOLTAGE_MAX, PRESS_MIN, PRESS_MAX);
	}
	

	return PRESS_AO;
}

  

标签:DEBUGSerial,读取,arduino,MAX,AO,stm32,print,VOLTAGE,PRESS
From: https://www.cnblogs.com/gooutlook/p/18175297

相关文章

  • STM32F1和STM32F4系列DMA的不同之处——对STM32的DMA的工作机制的一些理解
    喜欢用STM32的DMA功能。一方面STM32的DMA和MPU的DMA一样,可以提高数据传输效率。另一方面,作为一种MCU上的DMA,它可以提高针对外设(peripheral)的数据传输的实时性,改变了传统MCU只能用定时中断实现实时控制的方法。比较STM32F4和STM32F1系列的DMA控制器,可以发现区别主要有三:1)增加了DMA......
  • 【专题STM32F03】 使用 STM32Cube\Repository\STM32Cube_FW_F1_V1.8.5 中例程由ST77
    1)修改Project\STM32Cube_FW_F1_V1.8.5\Projects\STM32F103RB-Nucleo\Demonstrations\Adafruit_LCD_1_8_SD_Joystick2)接线(见stm32f1xx_nucleo.h)LCD_LED_PIN接高电平LCD_CS_PIN  接PB6LCD_DC_PIN  接PA9LCD_SPI_CLK  接SPI1,PA5LCD_SPI_SDA  接SPI1,PA73)修......
  • 基于arduino+as608+360舵机的宿舍指纹锁
    需要的制作材料Arduinonano开发板AS608指纹模块MG995360舵机(360舵机的控制与180舵机控制不相同,360舵机只可以控制旋转的速度,180舵机可以控制旋转的角度)面包板,电线若干准备部分参考了大佬的代码http://t.csdnimg.cn/GB29Qarduino模块可以看b站视频,,零基础(c语言零基础......
  • C# 使用ffmpeg读取监控视频流
    编译环境VisualStudio2022.NetFramework4.7.2x64需要开启允许不安全代码(项目属性->生成->允许不安全代码)之前使用OpenCVSharp写的一个拉流,在服务器上跑不起来。于是换了这个使用FFmpeg.AutoGen的。参考博文:用C#做一个拉流播放器-摇光Summer-博客园(cnblogs.com)......
  • stm32f103c8t6的freemodbus移植
    注意:demo.c不要加入到程序中来。1在main.h文件中加入#include"stm32f1xx_hal.h"文件也可以不加a:每次重新生成程序时在主程序main.c中注释掉//MX_USART2_UART_Init();函数,因为在freemodbus中已经调用了该函......
  • arduino uno+LCD12864(ST7735S)+蓝牙模块实现贪吃蛇
    1.前言:1.1本实验实现的贪吃蛇能穿越边界,结束游戏的唯一条件是贪吃蛇到达指定长度1.2本实验所用LCD可能不是LCD12864,LCD12864所用库为u8glib,笔者在词库中并没有找到型号为ST77355的初始化函数,而是在ucglib中找到,其方法为Ucglib_ST7735_18x128x160_SWSPIucg(/*sclk=*/13,/*data......
  • [广东强网杯 2021 团队组]love_Pokemon rce读取绕过
    五一结束了,真快啊!今天看一道RCE绕过类型的题目。上来先看看源码。点击查看代码<?phperror_reporting(0);highlight_file(__FILE__);$dir='sandbox/'.md5($_SERVER['REMOTE_ADDR']).'/';if(!file_exists($dir)){mkdir($dir);}functionDefenderBonus($......
  • stm32开发笔记
    GPIO全名为GeneralPurposeInputOutput,即通用输入输出。有时候简称为“IO口”。通用,说明它是常见的。输入输出,就是说既能当输入口使用,又能当输出口使用。端口,就是元器件上的一个引脚。输入模式和输出模式是GPIO的基本特性,当然GPIO还有其它模式可选。(一)模式汇总输入模式:l......
  • 读取文件夹内的数据
    读取文件夹内的数据fromPILimportImageimportosimportnumpyasnp#递归函数,用于获取文件夹内所有PNG图片的文件名defget_png_files(folder_path):png_files=[]forroot,dirs,filesinos.walk(folder_path):forfileinfiles:i......
  • minst数据集的读取、训练和预测
    首先是基于本地mnist图像数据集来进行训练笔记首先是不管是数据集还是标签集,它都接收的是np数组,标签集接收的是int类型关于它的输入数据的格式,n2828,标签的格式不是one—hot(这个看编译模型时的损失函数)。整个流程是:1、处理数据(将其处理为模型需要的格式)。2、网络设计(也就是......