查看: 2327|回复: 0

【一种方法】:不会编上位机软件,又想用电脑采集、保存和分析数据,该怎么解决

[复制链接]
  • TA的每日心情
    无聊
    2016-10-8 20:34
  • 签到天数: 10 天

    连续签到: 1 天

    [LV.3]偶尔看看II

    发表于 2016-10-20 08:59:16 | 显示全部楼层 |阅读模式
    分享到:
    接上一贴:https://jingyan.eeboard.com/article/75506
    背景:在上一贴中,我体验了这种毒气检测方案,ADI给的评估软件只能看看当前数据波形,不能保存,也不能导出自己分析;
    而我想采集一段时间(比如24个小时)的数据来分析一下一段时间内有毒气体的浓度变化情况,需要用电脑采集并保存一段数据;
    我是学电子的,目前还不会编电脑软件,也不认识又会编电脑软件又有空的人,这就苦恼了我;
    找了一些方法,最终觉得“用串口调试助手保存数据”是一种值得推荐的方法;
    用串口调试助手保存数据并分析的过程:
    ①找块有MCU有串口功能的板子,编写一个程序,用串口将数据打印;
    ②在电脑上用串口调试助手接收MCU打印的数据,并保存到文件;
    ③从文件里取出数据,放到excel或MATLAB等软件里查看和分析。
    详细过程如下:
    ①找块有MCU的板子,编写一个程序,用串口将数据打印;
    我找的是以前在论坛里领的GD32的板子:https://www.eeboard.com/bbs/thread-47231-1-1.html
    写一个串口打印采集的数据的程序,这里用的是一个锯齿波:
    /**      ******************************************************************************  * @file    main.c  * @author  YangJie  * @version V0.0  * @date    2016-10-19  * @brief   The main function file.  ******************************************************************************  *//* Includes ------------------------------------------------------------------*/#include "gd32f1x0_eval.h"#include "systick.h"#include "usart.h"#include "led_456.h"#include <stdio.h>/* Private functions ---------------------------------------------------------*//**  * @brief  systick_init  * @param  None  * @retval None  */#define nus 100000  // 100000us = 0.1sstatic uint16_t fac_us;void systick_init(void) {        SysTick_CKSource_Enable(SYSTICK_CKSOURCE_HCLK_DIV8);        // 选择HCLK/8        fac_us=SystemCoreClock/8000000;            // 为系统时钟的1/8   }/**  * @brief  serial_test  * @param  None  * @retval None  */void serial_test(void){                   uint32_t temp = 0;   static uint8_t i = 0;        SysTick->LOAD=nus*fac_us;   // 时间加载                                   SysTick->VAL=0x00;          // 清空计数器        SysTick->CTRL|=SysTick_CTRL_ENABLE_Msk ;        // 开始倒数      // 以下为测试波形   {          printf("%3d",i++);   }      // 等待延时到达        do        {                temp=SysTick->CTRL;        }        while(temp&0x01&&!(temp&(1<<16)));              // 等待时间到达           SysTick->CTRL&=~SysTick_CTRL_ENABLE_Msk;        // 关闭计数器        SysTick->VAL =0X00;       // 清空计数器         }/**  * @brief  Main program.  * @param  None  * @retval None  */int main(void){    /* 初始化 */   systick_init();   led_456_init();   usart_init();         led_on(4);           while (1)   {            serial_test();           }}/******************* (C) COPYRIGHT 2016 GIGADEVICE *****END OF FILE****/然后下载到板子上运行,打开串口观察一下程序是否正常;②在电脑上用串口调试助手接收MCU打印的数据,并保存到文件;
    找了好多串口调试助手,需要使用一种带“保存接收到的数据到文件”的功能,最终筛选下来,“CM精装版”和“阿猫”两款的这个功能做得可以够用;

    配置好之后,开始保存数据的功能,并保存一段时间数据,得到一个txt文档,文档内容包含了我想要采集的数据:

    ③从文件里取出数据,放到excel或MATLAB等软件里查看和分析;
    把数据复制粘贴到excel表格中,就可以画一个折线图看数据波形了(总共采集了6000多个数据):

    可以看到我采集的锯齿波,可以观察到1000多点那里的数据波形好像有点问题;
    还可以将数据导入MATLAB:

    MATLAB查看波形:

    如果串口需要打印很多内容的话,一些功能强大一些的工具也能辅助提取到数据,比如我现在使用的UE:

    可以使用一种特殊的选择模式“列模式”,只选中数据所在的3列内容,复制出去使用;
    总结:
    至此,数据已经采集到了,需要查看和处理的话,可以借助其他常用的工具了;
    用这种方法,不会编上位机程序,也能用电脑采集、保存和分析数据了。
    回复

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    手机版|小黑屋|与非网

    GMT+8, 2024-4-24 06:31 , Processed in 0.109340 second(s), 18 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.