K_A16_003 基于STM32等单片机采集薄膜压力传感器参数串口与OLED0.96双显示

K_A16_003 基于STM32等单片机采集薄膜压力传感器参数串口与OLED0.96双显示

  • 一、资源说明
  • 二、基本参数
  • 参数
  • 引脚说明
  • 三、驱动说明
  • 对应程序:
  • 四、部分代码说明
  • 1、接线引脚定义
  • STM32F103C8T6+薄膜压力传感器模块
  • 五、基础知识学习与相关资料下载
  • 六、视频效果展示与程序资料获取
  • 七、注意事项
  • 八、接线说明
  • STM32F103C8T6
  • 请添加图片描述
    请添加图片描述

    一、资源说明

    单片机型号 测试条件 模块名称 代码功能
    STM32F103C8T6 晶振8M/系统时钟72M 薄膜压力传感器模块 STM32F103C8T6驱动薄膜压力传感器模块 串口与OLED0.96双显示

    其他资料目录 直戳跳转

    二、基本参数

    参数

    厚度 :0.4mm
    样式 :薄片状,柔性
    触发力 :20g,默认电阻值小于 200kΩ 时触发
    压力感应范围 :20g~6kg
    压力作用方式: 静态或动态(频率 10Hz 以 内)
    未触发时电阻 :大于 10M Ω
    激活时间 :小于 0.01S
    使用温度 :-40℃~+85℃
    耐久性 :100 万次以上
    一致性 :单个产品阻值+/-3%以内,同 批产品+/-10%以内(同等测试 条件下)
    迟滞 : +10% , (RF+ – RF-)/FR+ , 1000g 力
    响应时间 :<10ms
    电磁干扰 :EMI 不产生
    静电释放 :EDS 不敏感
    漂移 :<5%, 2.5Kg力静载24H

    引脚说明

    薄膜压力传感器模块 引脚说明
    VCC 正极 3.3-5V供电
    GND 负极 接GND
    DO 数字量输出(默认低电平输出 到阀值输出高电平)
    AO 模拟量输出

    三、驱动说明

    对应程序:

    STM32 ADC采集程序:

    
    /**
      * @brief  ADC GPIO 初始化
      * @param  无
      * @retval 无
      */
    static void ADCx_GPIO_Config(void)
    {
    	GPIO_InitTypeDef GPIO_InitStructure;
    	
    	// 打开 ADC IO端口时钟
    	ADC_GPIO_APBxClock_FUN ( ADC_GPIO_CLK, ENABLE );
    	
    	// 配置 ADC IO 引脚模式
    	// 必须为模拟输入
    	GPIO_InitStructure.GPIO_Pin = ADC_PIN;
    	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;
    	
    	// 初始化 ADC IO
    	GPIO_Init(ADC_PORT, &GPIO_InitStructure);				
    }
    
    /**
      * @brief  配置ADC工作模式
      * @param  无
      * @retval 无
      */
    static void ADCx_Mode_Config(void)
    {
    	ADC_InitTypeDef ADC_InitStructure;	
    
    	// 打开ADC时钟
    	ADC_APBxClock_FUN ( ADC_CLK, ENABLE );
    	
    	// ADC 模式配置
    	// 只使用一个ADC,属于独立模式
    	ADC_InitStructure.ADC_Mode = ADC_Mode_Independent;
    	
    	// 禁止扫描模式,多通道才要,单通道不需要
    	ADC_InitStructure.ADC_ScanConvMode = DISABLE ; 
    
    	// 连续转换模式
    	ADC_InitStructure.ADC_ContinuousConvMode = ENABLE;
    
    	// 不用外部触发转换,软件开启即可
    	ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None;
    
    	// 转换结果右对齐
    	ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;
    	
    	// 转换通道1个
    	ADC_InitStructure.ADC_NbrOfChannel = 1;	
    		
    	// 初始化ADC
    	ADC_Init(ADCx, &ADC_InitStructure);
    	
    	// 配置ADC时钟为PCLK2的8分频,即9MHz
    	RCC_ADCCLKConfig(RCC_PCLK2_Div8); 
    	
    	// 配置 ADC 通道转换顺序和采样时间
    	ADC_RegularChannelConfig(ADCx, ADC_CHANNEL, 1, 
    	                         ADC_SampleTime_55Cycles5);
    	
    	// ADC 转换结束产生中断,在中断服务程序中读取转换值
    	ADC_ITConfig(ADCx, ADC_IT_EOC, ENABLE);
    	
    	// 开启ADC ,并开始转换
    	ADC_Cmd(ADCx, ENABLE);
    	
    	// 初始化ADC 校准寄存器  
    	ADC_ResetCalibration(ADCx);
    	// 等待校准寄存器初始化完成
    	while(ADC_GetResetCalibrationStatus(ADCx));
    	
    	// ADC开始校准
    	ADC_StartCalibration(ADCx);
    	// 等待校准完成
    	while(ADC_GetCalibrationStatus(ADCx));
    	
    	// 由于没有采用外部触发,所以使用软件触发ADC转换 
    	ADC_SoftwareStartConvCmd(ADCx, ENABLE);
    }
    
    static void ADC_NVIC_Config(void)
    {
      NVIC_InitTypeDef NVIC_InitStructure;
    	// 优先级分组
    	NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);
    
      // 配置中断优先级
      NVIC_InitStructure.NVIC_IRQChannel = ADC_IRQ; 
      NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;
      NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;
      NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
      NVIC_Init(&NVIC_InitStructure);
    }
    
    
    /**
      * @brief  ADC初始化
      * @param  无
      * @retval 无
      */
    void ADCx_Init(void)
    {
    	ADCx_GPIO_Config();
    	ADCx_Mode_Config();
    	ADC_NVIC_Config();
    }
    
    

    四、部分代码说明

    1、接线引脚定义

    需要自定义引脚可在此处更改,STM32要自定义引脚的话也要注意引脚时钟使能的更改

    STM32F103C8T6+薄膜压力传感器模块

    //薄膜压力传感器模块引脚定义 GPIOA_0  ADC1通道0
    #define    ADC_GPIO_APBxClock_FUN        RCC_APB2PeriphClockCmd
    #define    ADC_GPIO_CLK                  RCC_APB2Periph_GPIOA  
    #define    ADC_PORT                      GPIOA
    #define    ADC_PIN                       GPIO_Pin_0
    //OLED0.96模块引脚定义					
    		//-----------------OLED IIC端口定义----------------  					   
    
    #define OLED_SCLK_Clr() GPIO_ResetBits(GPIOB,GPIO_Pin_8)//SCL
    #define OLED_SCLK_Set() GPIO_SetBits(GPIOB,GPIO_Pin_8)
    
    #define OLED_SDIN_Clr() GPIO_ResetBits(GPIOB,GPIO_Pin_9)//SDA
    #define OLED_SDIN_Set() GPIO_SetBits(GPIOB,GPIO_Pin_9)
    

    五、基础知识学习与相关资料下载

    1、STC89C52RC程序下载 直戳跳转

    2、STM32F103C8T6程序下载
    (1)串口下载 直戳跳转
    (2)ST-LINK下载 直戳跳转
    (3)J-LINK下载 直戳跳转
    (4)DAP-LINK下载 直戳跳转

    3、OLED0.96程序说明 直戳跳转

    4、串口助手下载与使用
    (1)安信可调试助手使用 直戳跳转
    (2) sscom33串口调试助手使用 直戳跳转
    (3)STC-ISP串口调试助手使用 直戳跳转

    六、视频效果展示与程序资料获取

    视频连接 直戳跳转
      资料获取            ( 滑到最后添加群号看公告免费获取)

    七、注意事项

    1、VCC GND请勿接反,接反易烧
    2、OLED显示异常时,排除接线接触不良

    八、接线说明

    STM32F103C8T6

    /************************************************************************************
    //  生成日期   : 2021-6-21
    //  最近修改   : 2021-11-21
    //  功能描述   : 薄膜压力传感器模块测试程序
    //  测试条件   : STM32F103C8T6   晶振8M  系统时钟 72M
    接线
    薄膜压力传感器模块-----------------------STM32F103C8T6
    VCC-------------------------------------3.3V
    GND-------------------------------------GND
    AO--------------------------------------PA_0 
    
    OLED0.96
    VCC-- -----------------------------------3.3V
    GND- ------------------------------------GND
    SCL- ------------------------------------PB_8 //SCL
    SDA- ------------------------------------PB_9 //SDA	
    *****************************************************************************************/
    
    物联沃分享整理
    物联沃-IOTWORD物联网 » K_A16_003 基于STM32等单片机采集薄膜压力传感器参数串口与OLED0.96双显示

    发表评论