注册 登录
查看: 10414|回复: 98

[平衡组] 【虚拟示波器】陀螺仪和加速度 上位机显示例程

  [复制链接]
发表于 2014-9-26 13:10:57 | 显示全部楼层 |阅读模式
采用山外メ雲ジ自行开发的上位机:【多功能调试助手V1.0】串口、摄像头、GSM... - 一天攻破K60 - 山外-vcan123论坛 http://vcan123.com/thread-5988-1-1.html

上位机显示效果如下:


协议命令比较简单,参考vcan_sendware函数,先发送 前命令 0x03 ,~0x03 ,接着再发送波形数据,最后发送结束命令~0x03,0x03.
完整例程如下:
  1. /*!
  2. *     COPYRIGHT NOTICE
  3. *     Copyright (c) 2013,山外科技
  4. *     All rights reserved.
  5. *     技术讨论:山外初学论坛 http://www.vcan123.com
  6. *
  7. *     除注明出处外,以下所有内容版权均属山外科技所有,未经允许,不得用于商业用途,
  8. *     修改内容时必须保留山外科技的版权声明。
  9. *
  10. * @file       main.c
  11. * @brief      山外K60 平台主程序
  12. * @author     山外科技
  13. * @version    v5.0
  14. * @date       2014-06-21
  15. */

  16. #include "common.h"
  17. #include "include.h"

  18. #define XOUT    ADC1_DM0
  19. #define YOUT    ADC0_SE16
  20. #define ZOUT    ADC0_SE17

  21. #define Gyro1   ADC1_SE16
  22. //#define Gyro2   ADC1_DP0
  23. #define Ang     ADC0_SE18

  24. void vcan_sendware(uint8 *wareaddr, uint32 waresize);



  25. /*!
  26. *  @brief      main函数
  27. *  @since      v5.1
  28. *  @note       山外 ADC 实验
  29. */
  30. void main()
  31. {
  32.     uint8 var[5];

  33.     gpio_init(PTA4,GPO,1);


  34.     adc_init(XOUT);
  35.     adc_init(YOUT);
  36.     adc_init(ZOUT);
  37.     //adc_init(Gyro2);         //角加速度  Angular2
  38.     adc_init(Gyro1);         //角加速度  Angular1
  39.     adc_init(Ang);

  40.     while(1)
  41.     {
  42.         var[0] = adc_once   (XOUT, ADC_8bit);
  43.         var[1] = adc_once   (YOUT, ADC_8bit);
  44.         var[2] = adc_once   (ZOUT, ADC_8bit);
  45.         //var[3] = adc_once   (Gyro2, ADC_8bit);
  46.         var[3] = adc_once   (Gyro1, ADC_8bit);
  47.         var[4] = adc_once   (Ang, ADC_8bit);

  48.         vcan_sendware((uint8_t *)var, sizeof(var));
  49.         DELAY_MS(10);

  50.     }
  51. }

  52. //发送图像到上位机显示
  53. //不同的上位机,不同的命令
  54. void vcan_sendware(uint8 *wareaddr, uint32 waresize)
  55. {
  56. #define CMD_WARE     3
  57.     uint8 cmdf[2] = {CMD_WARE, ~CMD_WARE};    //串口调试 使用的前命令
  58.     uint8 cmdr[2] = {~CMD_WARE, CMD_WARE};    //串口调试 使用的后命令

  59.     uart_putbuff(VCAN_PORT, cmdf, sizeof(cmdf));    //先发送前命令
  60.     uart_putbuff(VCAN_PORT, wareaddr, waresize);    //发送数据
  61.     uart_putbuff(VCAN_PORT, cmdr, sizeof(cmdr));    //发送后命令

  62. }

【uint16案例】
假如是16位呢?修改方法如下:
uint8 var[5];   ===>   uint16 var[5];

发送函数不需要修改,原先那样调用就好了:
vcan_sendware((uint8_t *)var, sizeof(var));

假如采集的是ADC 12位精度:var[0] = adc_once   (XOUT, ADC_12bit);

【float案例】
假如改成浮点数float呢?
uint8 var[5];   ===>   float var[5];

发送函数不需要修改,原先那样调用就好了:
vcan_sendware((uint8_t *)var, sizeof(var));



【实战案例】
平衡组直立教程里面,我们之前用的上位机并非这款上位机,之前的代码是:

  1.     float  OutData[4];
  2.     OutData[0] = real_angle;
  3.     OutData[1] = g_fCarAngle;
  4.     OutData[2] = ENC03 ;
  5.     OutData[3] = Gyro_Now;
  6.     OutPut_Data();


如果需要换成我们这款上位机,改成(仅仅是最后一个函数调用不同):


  1.     float  OutData[4];
  2.     OutData[0] = real_angle;
  3.     OutData[1] = g_fCarAngle;
  4.     OutData[2] = ENC03 ;
  5.     OutData[3] = Gyro_Now;
  6.     vcan_sendware((uint8_t *)OutData,sizeof(OutData));

OutPut_Data 函数就可以删掉。上位机需要设置一下:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

本帖被以下淘专辑推荐:

回复

使用道具 举报

发表于 2015-1-29 20:17:59 | 显示全部楼层
小林先生 发表于 2014-12-4 20:58
我还是没搞懂缓慢跟踪  和超调 的现象 比如说这个算什么啊   还有我显示的波形怎么没有例程里那么平滑 毛刺 ...

你这个是怎么调出来的?为什么我的用float类型显示总是0?
回复 支持 0 反对 1

使用道具 举报

发表于 2015-2-3 12:48:10 | 显示全部楼层
山外メ雲ジ 发表于 2015-2-3 11:50
波形数目和数据类型是否有设置对了?

可以了。谢谢山哥,问个问题,我就给ADC0_SE8就是程序的第一个波形输入电压,为什么其他波形也会变化,变化程度逐渐减小,第2,3个最为明显。
来自安卓客户端来自安卓客户端
回复 支持 1 反对 0

使用道具 举报

发表于 2014-9-28 11:11:31 | 显示全部楼层
抢沙发~给哥们顶一个
回复 支持 反对

使用道具 举报

发表于 2014-9-28 13:59:13 | 显示全部楼层
山哥,这个波形出不来啊,用串口看有数据发过来,但是示波器的话就显示不出来波形
回复 支持 反对

使用道具 举报

发表于 2014-9-28 14:02:03 | 显示全部楼层
错了,是波形出得来,数据不对,不知要如何修改呢,因为这个的话值不是只到255么,那么岂不是就是8位的AD,没法看到12位的数据
回复 支持 反对

使用道具 举报

发表于 2014-9-28 14:34:28 | 显示全部楼层
z2373477 发表于 2014-9-28 14:02
错了,是波形出得来,数据不对,不知要如何修改呢,因为这个的话值不是只到255么,那么岂不是就是8位的AD, ...

数据格式是可选的啊,12位的选uint16
来自安卓客户端来自安卓客户端
回复 支持 反对

使用道具 举报

发表于 2014-9-28 15:55:55 | 显示全部楼层
z2373477 发表于 2014-9-28 14:02
错了,是波形出得来,数据不对,不知要如何修改呢,因为这个的话值不是只到255么,那么岂不是就是8位的AD, ...

把数组定义为uint16_t类型,上位机也配置为uint16_t类型就好。
来自安卓客户端来自安卓客户端
回复 支持 反对

使用道具 举报

发表于 2014-9-28 17:06:03 | 显示全部楼层
谢谢各位大哥
回复 支持 反对

使用道具 举报

发表于 2014-9-29 13:41:00 | 显示全部楼层
又来求教了,用K60想做直立,然后程序一进去就芯片发烫(都烫手了,有点像烧芯片的感觉!!),电机也没反应,中断LED指示灯正常亮着,这是为什么
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-9-29 14:02:15 | 显示全部楼层
z2373477 发表于 2014-9-29 13:41
又来求教了,用K60想做直立,然后程序一进去就芯片发烫(都烫手了,有点像烧芯片的感觉!!),电机也没反 ...

不要接外设,烧简单led例程,也发热?
来自安卓客户端来自安卓客户端
回复 支持 反对

使用道具 举报

发表于 2014-9-29 17:57:20 | 显示全部楼层
山外メ雲ジ 发表于 2014-9-29 14:02
不要接外设,烧简单led例程,也发热?

试了,烫, 而且单独J-LINK供电还烫不过还可以接受,就是用自己稳的5V或者USB线就烫得烫手
回复 支持 反对

使用道具 举报

发表于 2014-9-30 00:10:44 | 显示全部楼层
程序一直可以烧进去,不过运行不正常,发烫超级严重。换块芯片,同个程序正常运行温度正常。。。
回复 支持 反对

使用道具 举报

发表于 2014-11-3 17:14:15 | 显示全部楼层
为什么不能下载。。。
回复 支持 反对

使用道具 举报

发表于 2014-11-3 17:15:26 | 显示全部楼层
软件下载失败。。。
回复 支持 反对

使用道具 举报

发表于 2014-11-4 21:54:10 | 显示全部楼层
楼主有没有野火 的比较完整的例程啊,可以给我一份吗?没有完整的例程不要学啊!
回复 支持 反对

使用道具 举报

发表于 2014-12-4 20:58:27 | 显示全部楼层
我还是没搞懂缓慢跟踪  和超调 的现象 比如说这个算什么啊   还有我显示的波形怎么没有例程里那么平滑 毛刺怎么这么多呢

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

发表于 2014-12-13 16:59:27 | 显示全部楼层
串口发回来的数据正确不出波形是怎么回事啊?求帮忙啊!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-12-13 17:02:58 | 显示全部楼层
1241404690 发表于 2014-12-13 16:59
串口发回来的数据正确不出波形是怎么回事啊?求帮忙啊!

是否正确配置通道数和通道类型?
回复 支持 反对

使用道具 举报

发表于 2014-12-14 11:45:33 | 显示全部楼层
已经解决!谢了
回复 支持 反对

使用道具 举报

发表于 2014-12-25 18:16:18 | 显示全部楼层
山外哥哥,为啥我们用初级篇的历程在虚拟示波器上显示出来的图形和你说的不一样???还有显示的是不是只有z轴的输出和转化后的角度以及实际的角度,还有就是车子需要的加速度??
还有一个问题就是我们在桌面调平衡的时候应该调哪些参数,我记得当时说有一个轴是可以不用的,是不是z轴(在x轴正方向指向车底的时候)??
拜托了山外哥~!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-12-25 18:35:45 | 显示全部楼层
tcg 发表于 2014-12-25 18:16
山外哥哥,为啥我们用初级篇的历程在虚拟示波器上显示出来的图形和你说的不一样???还有显示的是不是只有 ...

你的是什么波形?
来自安卓客户端来自安卓客户端
回复 支持 反对

使用道具 举报

发表于 2014-12-26 11:11:40 | 显示全部楼层

就是初级篇历程里头输出来的波形,具体的还不是太明白。我把MMA7361    = adc_once(ZOUT,ADC_12bit);   //Z轴的输出
和adc_init (ZOUT);          //MMA7361 Z轴含有zout的都改成y轴输出或者是x轴发现输出效果都是一样,
不知道为什么;


我在观察虚拟示波器上的波形时候发现平放的时候(也就是不动的时候),波形是都是趋向于自直线的,
而我缓慢的动陀螺仪的时候,就发现波形中红线缓慢的上升,黄线也是缓慢上升,但没有红线上升的多,另外两个线是相互对称显示;
但是怎么样都出不来山外哥哥你说的那种像方波那样的波形。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-12-26 15:26:29 | 显示全部楼层
tcg 发表于 2014-12-26 11:11
就是初级篇历程里头输出来的波形,具体的还不是太明白。我把MMA7361    = adc_once(ZOUT,ADC_12bit);   / ...

没理解你的意思,直接上图比较方便吧。
来自安卓客户端来自安卓客户端
回复 支持 反对

使用道具 举报

发表于 2014-12-27 11:07:20 | 显示全部楼层
山外メ雲ジ 发表于 2014-12-26 15:26
没理解你的意思,直接上图比较方便吧。

这个是把陀螺仪平放在桌面上不动的波形图

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

发表于 2015-1-1 17:46:24 | 显示全部楼层
想问一下楼主那个虚拟示波器怎么设置显示多个通道的值啊???
回复 支持 反对

使用道具 举报

发表于 2015-1-10 23:51:21 | 显示全部楼层
想问下楼主怎么解决温漂问题?
回复 支持 反对

使用道具 举报

发表于 2015-1-10 23:53:56 | 显示全部楼层
deadfish 发表于 2015-1-10 23:51
想问下楼主怎么解决温漂问题?

贝壳是用这陀螺仪的,去看看他们的技术报告

上电读中值,一般加速度稳定的时候(几次读都平稳),那就说明小车相对稳定,然后读取陀螺仪的值,这是运行中的中值,重新修改中值。
回复 支持 反对

使用道具 举报

发表于 2015-1-18 12:20:02 | 显示全部楼层
tcg 发表于 2014-12-25 18:16
山外哥哥,为啥我们用初级篇的历程在虚拟示波器上显示出来的图形和你说的不一样???还有显示的是不是只有 ...

我也用的初级篇历程,但是死活看不到波形,网页里面上传的代码你有修改吗?用的是野火的k60吗?
还有一个问题,这个示波器使用前要另外设置什么吗?拜托了~~
回复 支持 反对

使用道具 举报

发表于 2015-1-20 15:19:47 | 显示全部楼层
山外メ雲ジ 发表于 2014-9-29 14:02
不要接外设,烧简单led例程,也发热?

山外哥,我要是用虚拟示波器 观看16 位的数据,但那个发送串口的只能是 8 位的!急
回复 支持 反对

使用道具 举报

发表于 2015-1-20 15:37:10 | 显示全部楼层
1026609136@qq.c 发表于 2015-1-20 15:19
山外哥,我要是用虚拟示波器 观看16 位的数据,但那个发送串口的只能是 8 位的!急

解决了, 就是调数的位数的,太6了!
回复 支持 反对

使用道具 举报

发表于 2015-1-29 21:15:03 | 显示全部楼层
搞了半天也没显示出正确的波形= =,好头疼,,i为long int  型数据,,还有float 类型的怎么调试???小白完全不会弄呀

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

发表于 2015-2-3 11:14:21 | 显示全部楼层
山外哥,我直接用你的5.2历例程 电磁感应模块虚拟示波器的  为什么多功能调试助手没有图形显示,串口接对的了UART3 C17和C16 ,在串口助手显示的是乱码
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-2-3 11:50:17 | 显示全部楼层
vijay 发表于 2015-2-3 11:14
山外哥,我直接用你的5.2历例程 电磁感应模块虚拟示波器的  为什么多功能调试助手没有图形显示,串口接对的 ...

波形数目和数据类型是否有设置对了?
来自安卓客户端来自安卓客户端
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-2-3 12:55:33 | 显示全部楼层
vijay 发表于 1422938890
可以了。谢谢山哥,问个问题,我就给ADC0_SE8就是程序的第一个波形输入电压,为什么其他波形也会变化,变化程度逐渐减小,第2,3个最为明显。
悬空ADC管脚的时候,电压是容易被旁边的引脚所干扰。
来自PC客户端 来自PC客户端
回复 支持 反对

使用道具 举报

发表于 2015-2-5 11:45:40 | 显示全部楼层
1.uart_putbuff(VCAN_PORT, cmdf, sizeof(cmdf));    //先发送前命令
2.    uart_putbuff(VCAN_PORT, wareaddr, waresize);    //发送数据
3.    uart_putbuff(VCAN_PORT, cmdr, sizeof(cmdr));    //发送后命令
4.这里面的参数VCAN_PORT,是在哪定义的
5.我编仪的时  他说参数没有宏定义
回复 支持 反对

使用道具 举报

发表于 2015-3-13 19:51:14 | 显示全部楼层
全部复制了,为什么还是没有图像呢?这个错误是什么节奏哦

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

发表于 2015-3-13 19:51:48 | 显示全部楼层
84996429 发表于 2015-2-5 11:45
1.uart_putbuff(VCAN_PORT, cmdf, sizeof(cmdf));    //先发送前命令
2.    uart_putbuff(VCAN_PORT, ware ...

我还是没有找到,但是哪儿应该可以直接写UARTX吧
回复 支持 反对

使用道具 举报

发表于 2015-3-23 23:33:34 | 显示全部楼层
额,我想问一下sendware的例程在哪里可以下到?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-3-23 23:53:38 | 显示全部楼层
deadfish 发表于 2015-3-23 23:33
额,我想问一下sendware的例程在哪里可以下到?

山外多功能调试助手资料专辑
http://vcan123.com/forum.php?mod=collection&action=view&ctid=27
来自安卓客户端来自安卓客户端
回复 支持 反对

使用道具 举报

发表于 2015-3-24 00:28:34 | 显示全部楼层
山外メ雲ジ 发表于 2015-3-23 23:53
山外多功能调试助手资料专辑
http://vcan123.com/forum.php?mod=collection&action=view&ctid=27

山外哥好给力!!这么晚还在!!可是为什么我只找到了调试助手下载地址,木有例程TAT
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-3-24 00:57:10 | 显示全部楼层
deadfish 发表于 2015-3-24 00:28
山外哥好给力!!这么晚还在!!可是为什么我只找到了调试助手下载地址,木有例程TAT

有例程的,看清楚,有多个帖子。
来自安卓客户端来自安卓客户端
回复 支持 反对

使用道具 举报

发表于 2015-3-25 09:03:27 | 显示全部楼层
本帖最后由 马克图布 于 2015-3-25 09:04 编辑

山外哥,我还是不太懂如果发送的数据类型改变后的格式,我发送的负数都是256减得,(发送-30,波形图上显示的是226)。比如我现在要发int16位的,发送函数这样改对吗?如果不改发送函数,只改数组定义类型和上位机的类型没有图像输出,急切盼望得到回复!!!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

发表于 2015-3-25 17:28:18 | 显示全部楼层
我们能收到数据,但是显示不了图像,我们的波特率为9600,最大28800,是不是必须115200
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-3-25 17:41:23 | 显示全部楼层
18505541003 发表于 2015-3-25 17:28
我们能收到数据,但是显示不了图像,我们的波特率为9600,最大28800,是不是必须115200

要上位机和单片机程序配置一致
来自安卓客户端来自安卓客户端
回复 支持 反对

使用道具 举报

发表于 2015-3-25 20:49:11 | 显示全部楼层
山外大哥,我用的KL26的例程,但是波形图一直上不去啊,已经按照例程上的改了啊= =
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-3-25 21:37:20 | 显示全部楼层
LumenSage 发表于 2015-3-25 20:49
山外大哥,我用的KL26的例程,但是波形图一直上不去啊,已经按照例程上的改了啊= =

上位机有没有配置数据类型和通道数目?
回复 支持 反对

使用道具 举报

发表于 2015-3-25 21:53:19 | 显示全部楼层
山外メ雲ジ 发表于 2015-3-25 21:37
上位机有没有配置数据类型和通道数目?

配置好了
回复 支持 反对

使用道具 举报

发表于 2015-3-25 22:14:29 | 显示全部楼层
山外メ雲ジ 发表于 2015-3-25 17:41
要上位机和单片机程序配置一致

对啊,我是一致的啊,程序里面设置的是9600,上位机设置的也是9600,程序数组设置的是u8类型,上位机也是u8类型,上位机设置五个波,程序里面也是五个。还有什么不对吗?
回复 支持 反对

使用道具 举报

发表于 2015-3-25 22:17:30 | 显示全部楼层
水水
回复 支持 反对

使用道具 举报

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

本版积分规则

快速回复 返回列表 返回顶部