基于LABVIEW和RL78评估板的心电图采集系统 创意进度贴+ RL78/G14 DEMO使用

youzizhile   2013-9-21 22:23 楼主
基于LABVIEW和RL78评估板的心电图采集系统 创意进度贴+ RL78/G14 DEMO使用
收到板子后就把程序安装了,先用下DEMO程序,启动界面选择COM4连接,可以看到检测数据状态输出,截图如下:
1RL78 DEMO截图1.jpg
在此可以查看内存数据:
2查看内存数据.jpg
在此可以做自检:
3SELF TEST.jpg

编程环境CubeSuite+和Renesas的e2studio都已经安装,但是编译完成后还是不能下载程序,需要查询下资料才行

[ 本帖最后由 youzizhile 于 2013-9-23 21:09 编辑 ]

回复评论 (20)

基于LABVIEW和RL78评估板的心电图采集系统 创意进度贴+串口使用和LED呼吸灯设计

基于LABVIEW和RL78评估板的心电图采集系统 创意进度贴+ 串口使用和LED呼吸灯设计

下载Applilet3 for RL78 V2.00.00 工具可以根据配置生成外设驱动代码,这个比较方便实用。
1 applilet3截图.jpg
我的串口代码是从这个软件直接生成的,我用的是串口uart2.连接pl2303 usb转串口调试工具,加入代码可以从PC端收到数据。
整体程序是在RL78_G13_Tutorial_Basic_Operation上面修改的,修改mcu型号和相关错误后,加入Applilet3生成的 代码就可以在线调试运行了。编译生成的程序通过编程工具进行下载。
调用Renesas Flash Programmer下载生成的程序。

2 程序下载截图.jpg
点亮LED截图
点亮LED.JPG
串口接收数据截图,视频由于之前文件太大,进行了转码,有点不太清晰
串口接收数据.JPG

[ 本帖最后由 youzizhile 于 2013-9-25 21:59 编辑 ]
点赞  2013-9-23 20:02

回复 沙发youzizhile 的帖子

不错,赞一个,继续哈
点赞  2013-9-24 10:40

回复 板凳苏莎莎 的帖子

加油
点赞  2013-9-25 21:53

基于LABVIEW和RL78评估板的心电图采集系统 创意进度贴+ 电路原理图发布

基于LABVIEW和RL78评估板的心电图采集系统 创意进度贴+ 电路原理图发布
模拟前端部分电路原理图为下图所示:
原理图.jpg
先仿真下电路的性能参数,采用multisim环境进行仿真和调试,调整参数以满足项目要求。
整体前端采集的包括高通滤波器等,multisim仿真电路如下图1所示:
仿真电路图.jpg
multisim仿真结果如下图所示:

multisim仿真结果.jpg
multisim仿真50hz陷波器电路截图如下图所示
multisim仿真50hz陷波器电路截图.jpg
multisim
仿真50hz陷波器仿真截图如下图所示:
multisim仿真50hz陷波器仿真截图.jpg
各项指标都可以满足,下一步该动手焊接电路板了,这一步的调试时最容易出问题的,也是比较难调试的一步。
点赞  2013-10-12 10:38

基于LABVIEW和RL78评估板的心电图采集系统 创意进度贴+ 电路原理图发布之二

基于LABVIEW和RL78评估板的心电图采集系统 创意进度贴+ 电路原理图发布之二
系统中LM324采用单电源供电,比±双电源简单,功能一样能满足。考虑到方便调试和携带,今天添加了电源转换电路,利用RL78板子的5V逆变12V电源,为LM324和AD620供电。逆变电路采用TI的MC33063A 1.5A 峰值升压开关稳压器,MC33063A的显著特点是体积小,集成度高,外围元件少,转换效率高,应用灵活方便。MC33063A内部含有带温度补偿的1.25 V参考稳压电路、电平比较器、带有峰值电流检测电路的占空比可控的周期振荡器、与门电路、RS触发器、输出驱动器和大电流输出开关管。该器件可实现升压、降压或电压极性反转变换的功能。
电路原理图截图如下:
电路图.jpg

该电路的输出电压值通过改变R21,R22电阻值来进行调整,Vout=(1+R21/R22)X1.25V.
这个芯片在之前的一个板子上用过,到时我把这部分电路切割下来,配合我焊接的板子使用,可以减少调试焊接难度!


附件是MC33063A的产品手册和我的心电信号采集前端电路原理图(allegro格式的文件),喜欢的可以收藏。

[ 本帖最后由 youzizhile 于 2013-10-18 17:34 编辑 ]

    MC33063A.pdf (2013-10-18 17:34 上传)

    873.13 KB, 下载次数: 3

    HEART_GET.DSN (2013-10-18 17:33 上传)

    77 KB, 下载次数: 0

点赞  2013-10-18 17:29

基于LABVIEW和RL78评估板的心电图采集系统 创意进度贴+ 电路PCB焊接组装发布

基于LABVIEW和RL78评估板的心电图采集系统 创意进度贴+ 电路PCB焊接组装发布
从购买器件到现在持续将近一个半月了,昨天才把整个系统框架组装完毕。电路的模型采用万用板焊接,同时添加了之前用到的一块电源板子和usb转串口组装而成,比较简陋,但是功能不缺少!
先发一个整体面板图:
DSCF07571.jpg

电路板分为5各部分,下面分别介绍:
1.此部分为RL78核心板,添加了2.54mm间距的单排底座,同时引出串口、供电输出接口和AD输入接口。
DSCF0766.JPG
整个电路背板部分如下图所示:
DSCF0767.JPG
2.此部分为在焊接的心电采集的模拟前端电路部分,主要有一片AD620和一片LM324构成,电路已经在multisim中进行仿真,结果可以满足要求。
LM324部分电路:
DSCF0760.JPG
AD620电路部分:
DSCF0761.JPG
3.此部分为5V转12V电路,采用了之前用过的电路板,切割掉无用的部分后,引入5V电源输入,引出12V输出到电路板上,这样,可以只使用usb的5V为整个系统供电。此电路采用TI的MC33063A来实现,最大可以输出1.5A的电流,完全能满足要求。
DSCF0759.JPG
4.此部分为采集左右胳膊的电极接口和左腿的反馈电极环形带。
左右胳膊的电极部分截图:
DSCF0763.JPG
反馈左腿的电极:
DSCF0764.JPG
DSCF0765.JPG
5.此部分为usb转串口电路板,采用铁牛的板子,主要还是用pL2303来实现的。
DSCF0758.JPG

下一步为抓紧时间电路调试了和程序联调了。
  • DSCF0762.JPG
点赞  2013-10-19 11:43

有一张图片怎么跑到附件中了呢?

有一张图片怎么跑到附件中了呢?
点赞  2013-10-19 22:28

RL78评估板的心电图采集系统 创意进度贴+ RL78的AD采样到电脑串口程序调试完成

基于LABVIEW和RL78评估板的心电图采集系统 创意进度贴+ RL78的AD采样到电脑串口程序调试完成

周末放弃了休息和出去玩的机会,呆在家里,拿着刚组装焊接好的电路板,连接电脑开始了调试
     之前调试已经把AD采样可以正常使用,但是配置还是有点问题。把AIN2的可调电位器放到最大,应该就是5V左右,可是在跟踪时,数据总是在2.1V和5V来回跳动,一下正确,一下不正确,刚开始以为是数据的问题,后来发现跳动很有规律,再从Applilet3 for RL78_G14程序中查找是否配置错误,没有发现问题。网上相关的资源也很少,后来没有办法,查看RL78的《RL78用户手册 硬件篇》,发现AD采样有很多种模式,我的模式选择错误,应该设定为 “软件触发模式(选择模式,连续转换模式)",如下图所示:
软件触发模式(选择模式,连续转换模式).jpg
图 14-20.  软件触发模式(选择模式,连续转换模式)操作时序的示例.jpg
自己的问题出在模式选择上,选择了扫描模式导致数据出错。
同时还有一点要注意,就是在AD_start程序中,要加上一句while(ADCS);

/***********************************************************************************************************************
* Function Name: R_ADC_Start
* Description  : This function starts the AD converter.
* Arguments    : None
* Return Value : None
***********************************************************************************************************************/
void R_ADC_Start(void)
{
    ADCE = 1U;
    ADIF = 0U;  /* clear INTAD interrupt flag */
    ADMK = 0U;  /* enable INTAD interrupt */
    ADCS = 1U;  /* enable AD conversion */
   while(ADCS);
  //  Delay_adc(1000);
}
     在串口调试上也出问题了,使用例程的串口程序可以发送数据,但是发送我调用的函数时,发出的数据要么是一对重复的数据,要么就是不能发出,单步调试可以正常跟踪到数据是正确的,但是连续运行就出错。当时一直认为自己的串口没有配置正确,就查看RL78的《RL78用户手册 硬件篇》,查看串口配置信息等,但是也没有查出有用的东西。
  今天上午开始继续调试,利用中断调试跟踪程序的运行,发现串口发送数据中还引出一个中断服务程序,在这个程序中也在发送数据。按照自己的想法,关闭中断,直接控制数据的传送,不能正常工作,但调试可以正常,和昨天一样的现象。
一直到下午5点才调试成功,而程序只是在R_UART2_Send改动一些,添加了        
。。。。。。。。
while(g_uart2_tx_count)
。。。。。。
for (i=0; i < 6000; i++)                {
                NOP();
                }
。。。。。。

这样做的目的首先不用再次调中断,其次在等待数据发送完成后再次进行发送数据,不会出现之前重复发数据的问题,根据时钟的不同,可以调整延时的长短,控制for循环变量来实现。
更改后的程序如下所示:
/***********************************************************************************************************************
* Function Name: R_UART2_Send
* Description  : This function sends UART2 data.
* Arguments    : tx_buf -
*                    transfer buffer pointer
*                tx_num -
*                    buffer size
* Return Value : status -
*                    MD_OK or MD_ARGERROR
***********************************************************************************************************************/
MD_STATUS R_UART2_Send(uint8_t * const tx_buf, uint16_t tx_num)
{
/* Declare a loop count variable */
   uint16_t i;
    MD_STATUS status = MD_OK;

    if (tx_num < 1U)
    {
        status = MD_ARGERROR;
    }
    else
    {
            gp_uart2_tx_address = tx_buf;
        g_uart2_tx_count = tx_num;
        SMR10 |= _0001_SAU_BUFFER_EMPTY;
         STMK2 = 1U;    /* disable INTST2 interrupt */
           while(g_uart2_tx_count)
         {
                TXD2 = *gp_uart2_tx_address;
                for (i=0; i < 6000; i++)
                {
                NOP();
                }
                gp_uart2_tx_address++;
                g_uart2_tx_count--;
             //   STMK2 = 0U;    /* enable INTST2 interrupt */
          }
    }

    return (status);
}

/* Start user code for adding. Do not edit comment generated here */
/* End user code. Do not edit comment generated here */

现在可以正常工作了,只要旋转AIN2的电位器,电脑串口数据立马更新。   

调整电位器过程中数据变化.jpg
DSCF0769_baofeng.mp4 (8.03 MB)
(下载次数: 4, 2013-10-20 19:25 上传)
点赞  2013-10-20 19:25

基于LABVIEW和RL78评估板的心电图采集系统 创意进度贴+ LABVIEW界面设计

基于LABVIEW和RL78评估板的心电图采集系统 创意进度贴+ LABVIEW界面设计
LABVIEW界面可以自己自主设计布局,添加想要的功能,界面显示等。
本次项目的界面设计如下图所示:后端程序还需要再进行优化。
心电采集labview界面布局初步设计.jpg
点赞  2013-10-24 13:55

基于LABVIEW和RL78评估板的心电图采集系统 创意进度贴+ LABVIEW程序设计

基于LABVIEW和RL78评估板的心电图采集系统 创意进度贴+ LABVIEW程序设计
又话费了周末的时间在家调试程序:
配置串口参数截图
11.jpg
搜索串口数据帧头和帧尾,去除无用的和错误的数据,然后显示索引到的数据,程序截图如下:

2找出数据帧头和帧尾.jpg
还差最后一步,程序联调要在最后一周给调出来,要抓紧时间了。
  • 3.jpg
点赞  2013-10-27 18:03

基于LABVIEW和RL78评估板的心电图采集系统 创意进度贴+RL78 ad采集端程序发布

基于LABVIEWRL78评估板的心电图采集系统创意进度贴+RL78 ad采集端程序发布
这个采集程序上周都已经完成了,本来想着和labview程序一起发布,怕到时帖子发了图片又给弄乱了,先发布RL78/G14ad采集端程序吧。
选取AD采样的AIN3P23)引脚作为采样的输入管脚,利用Applilet3 for RL78_G14产生AD的驱动程序。才开始直接采样总是出问题,后来发现是自己的配置错误,使用选择模式,而不是扫描模式就能解决问题。具体配置如下所示:
void R_ADC_Create(void)
{
   ADCEN = 1U;  /* supply AD clock */
   ADM0 = _00_AD_ADM0_INITIALVALUE; /* disable AD conversion and clear ADM0 register */
   ADMK = 1U;  /* disable INTADinterrupt */
   ADIF = 0U;  /* clear INTADinterrupt flag */
   /* Set INTAD low priority */
   ADPR1 = 1U;
   ADPR0 = 1U;
   /* Set ANI0 - ANI3 pin as analog input */
  PM2 |= 0x0FU;
   ADM0 = _30_AD_CONVERSION_CLOCK_4 | _00_AD_TIME_MODE_NORMAL_1 |_00_AD_OPERMODE_SELECT;
   ADM1 = _00_AD_TRIGGER_SOFTWARE | _00_AD_CONVMODE_CONSELECT;
   ADM2 = _00_AD_POSITIVE_VDD | _00_AD_NEGATIVE_VSS | _00_AD_AREA_MODE_1 |_00_AD_RESOLUTION_10BIT;
   ADUL = _FF_AD_ADUL_VALUE;
   ADLL = _00_AD_ADLL_VALUE;
   ADS = _03_AD_INPUT_CHANNEL_3;
}
同时在ADC_Start中添加   while(ADCS); ,等待系统AD配置完成,才进行下一步。
void R_ADC_Start(void)
{
   ADCE = 1U;
   ADIF = 0U;  /* clear INTADinterrupt flag */
   ADMK = 0U;  /* enable INTADinterrupt */
   ADCS = 1U;  /* enable ADconversion */
  while(ADCS);
}
然后编写中断服务函数,修改r_cg_adc_user.c中的函数如下:
__interrupt static void r_adc_interrupt(void)
{
   /* Start user code. Do not edit comment generated here */
      ADCS = 0U;  /* disable ADconversion */
    uart_adc_value();

   /* End user code. Do not edit comment generated here */
}
中断服务函数调用了  uart_adc_value()函数,此函数原型如下:
void uart_adc_value(void)
{
        int s,i;
          uint8_t string[3]={'\r','\n'};
           uint8_t start[3]="ST";
          s=((long)(ADCR>>6)*5000)/1024;
          uint16_ToString(adc_string_value,0,s);
          while(R_UART2_Send(start,2));
          while(R_UART2_Send(adc_string_value,4));
         NOP();
         while(R_UART2_Send(string,2));
}
其中的R_UART2_Send被我修改过,中间添加了延时函数,否则会传输不正常。
原型修改后如下所示:
/***********************************************************************************************************************
* Function Name: R_UART2_Send
* Description  : This function sends UART2 data.
* Arguments    : tx_buf -
*                    transfer buffer pointer
*                tx_num -
*                    buffer size
* Return Value : status -
*                    MD_OK or MD_ARGERROR
***********************************************************************************************************************/
MD_STATUS R_UART2_Send(uint8_t * consttx_buf, uint16_t tx_num)
{
/* Declare a loop count variable */
  uint16_t i;
   MD_STATUS status = MD_OK;

   if (tx_num < 1U)
    {
       status = MD_ARGERROR;
    }
   else
    {
             gp_uart2_tx_address= tx_buf;
        g_uart2_tx_count = tx_num;
        SMR10 |= _0001_SAU_BUFFER_EMPTY;
        STMK2= 1U;    /* disable INTST2 interrupt */
        while(g_uart2_tx_count)
          {
                 TXD2 =*gp_uart2_tx_address;
                   /* Allow for the transmission to complete */
                   for (i=0; i < 6000; i++)
                   {
                   /* Add 1 instruction delay */
                   NOP();
                   }
                gp_uart2_tx_address++;
                g_uart2_tx_count--;
              //   STMK2 = 0U;    /* enable INTST2 interrupt */
           }
    }

   return (status);
}
上述的函数uart_adc_value()由在主函数中的while循环中断调用adc_get_value()函数触发,adc_get_value函数原型如下:
void adc_get_value(void)
{
          R_ADC_Start();
          R_ADC_Stop();      
}
上述程序经过改动编译后,调试运行结构都符合预期。然后下载程序到RL78/G14中的FLASH中,通过renesas flash programmer下载到芯片中,然后修改跳线帽使程序全速运行。

整体程序见附件中。

[ 本帖最后由 youzizhile 于 2013-11-2 19:47 编辑 ]
点赞  2013-11-2 16:26
基于LABVIEW和RL78评估板的心电图采集系统 创意进度贴+ LABVIEW程序发布
labview前面板界面设计,没有时间来优化界面,设计比较简单,
labview前面板界面设计.jpg
labview程序设计
labview程序设计.jpg
查询数据帧头帧尾,子程序利用RL78发送的数据头“ST”和数据尾“\r\n”判断一帧的开始和结束,然后合并数据进行后续的处理。
查询数据帧头帧尾.jpg
查询数据帧头帧尾程序设计
查询数据帧头帧尾程序设计.jpg

心电数据程序采集显示视频如下:


修改RL78的AD采集端程序采集板子自带电位器的模拟输入端数据,手动调节电位器,labview采集数据视频如下:


labview采集端程序在附件中,有兴趣的朋友可以下载探讨。

[ 本帖最后由 youzizhile 于 2013-11-3 10:48 编辑 ]
点赞  2013-11-3 10:40
延迟了最后时间,还要在把整个硬件和接收端程序优化下,加油
点赞  2013-11-5 21:10
最近一直在外地出差,还没有时间来更新,大家都加油
点赞  2013-11-29 18:49
支持一个
点赞  2013-11-29 20:06

回复 16楼bobde163 的帖子

O(∩_∩)O谢谢,加油
点赞  2013-11-30 10:46

基于LABVIEW和RL78评估板的心电图采集系统 创意进度贴+ 结贴

基于LABVIEW和RL78评估板的心电图采集系统 创意进度贴+ 结贴
结贴发布在一个新帖中了,下面是连接
https://bbs.eeworld.com.cn/thread-420775-1-1.html
点赞  2013-12-9 13:58
支持一个,学习呢
点赞  2014-2-27 23:28
支持一个,学习呢
点赞  2015-12-12 22:14
12下一页
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复