查看: 7183|回复: 12

[原创] 【LPC824lite】+倾角测量仪

[复制链接]
  • TA的每日心情
    郁闷
    2018-2-7 18:18
  • 签到天数: 5 天

    连续签到: 1 天

    [LV.2]偶尔看看I

    13

    主题

    126

    帖子

    1

    金牌会员

    Rank: 6Rank: 6

    积分
    1628
    最后登录
    2021-7-13
    发表于 2016-10-31 20:59:38 | 显示全部楼层 |阅读模式
    本帖最后由 pythonworld 于 2016-12-7 21:34 编辑

    功能概要:
    基本上实现了一个绕单轴的角度测量,测量范围为+-180度绕Y轴--板子的宽度方向。

    硬件组成:
    硬件由LPC824 lite+oled+ adxl335传感器组成;

    软件开发工具:
    软件用mbed开发
    传感器校准:
    ADXL335灵敏度和0g偏移需要校准,校准方法为记录传感器在1g输入和-1g输入时的输出电压值,两个电压值的差值除以2就是传感器的灵敏度,
    当两个电压值相加除以2就是0g的偏移电压。X、Y、Z都需要进行校准,校准后的灵敏度和0g偏移电压写入到程序中,这样测量的结果就比较准了。

    Oled显示:
    显示屏使用0.9英寸128x64 SPI接口白色显示屏,有点小吆。
    Oled显示驱动使用的是mbed中的Adafruit_SSD1306库,非常方便,只是稍微有点占内存。但NXP824 使用完全没有问题。

    PC串口输出:
    串口输出的是直接由ADC采集的电压,没有经过处理,便于分析和校准传感器提供参考。


    源代码:
    #include "mbed.h"
    #include "Adafruit_SSD1306.h"
    #include <math.h>       /* atan2 */

    #define PI 3.14159265
    // oled connection
    #define DO P0_24    //CLK
    #define DI P0_26    // MOSI
    #define CS P0_10
    #define DC P0_11
    #define RST P0_17

    class SPIPreInit : public SPI
    {
    public:
        SPIPreInit(PinName mosi, PinName miso, PinName clk) : SPI(mosi,miso,clk) {
            format(8,3);
            frequency(2000000);
        };
    };

    SPIPreInit mySpi(DI,NC,DO);
    Adafruit_SSD1306_Spi oled(mySpi,DC,RST,CS,64,128);

    //ADXL334 connection
    DigitalOut myled1(P0_13);
    DigitalOut myled2(P0_16);
    DigitalOut myled3(P0_17);

    DigitalIn myinput1(P0_6);
    DigitalIn myinput2(P0_14);
    DigitalIn myinput3(P0_22);

    Serial uart(P0_4, P0_0);

    AnalogIn myadc1(A0);
    AnalogIn myadc2(A1);
    AnalogIn myadc3(A3);

    int main()
    {

        double x, y, z, result;
        myinput1.mode(PullNone);//这步很重要,不然是电压是测不准的
        myinput2.mode(PullNone);
        myinput3.mode(PullNone);

        oled.clearDisplay();
        oled.setTextSize(2);
        oled.setTextCursor(0,0);

        while(1) {

            uart.printf("X: %2.3f V\r\n" ,myadc1.read()*3.3);
            uart.printf("Y: %2.3f V\r\n" ,myadc2.read()*3.3);
            uart.printf("Z: %2.3f V\r\n" ,myadc3.read()*3.3);

            z= (myadc2.read()*3.3-1.625)*3025.72; // z轴校准
            x = (myadc1.read()*3.3-1.646)*3048.78;//x轴校准
            y = (myadc3.read()*3.3-1.672)*3067.48;//y轴校准

            result = atan2 (x,y) * 180 / PI;
            uart.printf ("The arc tangent for (x=%f, y=%f) is %.4f degrees\r\n", x, y, result );
            oled.printf (" %.2f D\r\n",result);
            oled.printf ("Y: %.0f mg\r\n",z);

            myled1 = 1;
            myled2 = 0;
            myled3 = 1;

            oled.display();

            wait(1);
            oled.setTextCursor(0,0);
            oled.clearDisplay();
        }
    }
    附件是最新的源文件,支持两种模式的倾角测量:
    1.三轴模式 测量范围+-90度
    2.单轴模式 测量范围+-180度



    a.jpg
    b.jpg

    main updated.zip

    1.08 KB, 下载次数: 13, 下载积分: 威望 1

    该会员没有填写今日想说内容.
    回复

    使用道具 举报

  • TA的每日心情
    郁闷
    2018-2-7 18:18
  • 签到天数: 5 天

    连续签到: 1 天

    [LV.2]偶尔看看I

    13

    主题

    126

    帖子

    1

    金牌会员

    Rank: 6Rank: 6

    积分
    1628
    最后登录
    2021-7-13
     楼主| 发表于 2016-10-31 21:00:40 | 显示全部楼层
    本帖最后由 pythonworld 于 2016-11-25 10:17 编辑

    板子侧面照片和ADXL335框图
    1.jpg
    adxl335.jpg
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    郁闷
    2018-2-7 18:18
  • 签到天数: 5 天

    连续签到: 1 天

    [LV.2]偶尔看看I

    13

    主题

    126

    帖子

    1

    金牌会员

    Rank: 6Rank: 6

    积分
    1628
    最后登录
    2021-7-13
     楼主| 发表于 2016-10-31 21:01:13 | 显示全部楼层
    本帖最后由 pythonworld 于 2016-11-23 21:35 编辑

    板子正面照片,传感器水平放置,测试角度结果为-1.2度,貌似桌面放置的有点倾斜。Y轴的显示的电压基本为0,表示Y轴垂直于重力轴。

    2.jpg
    serial.jpg
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2018-7-23 21:04
  • 签到天数: 103 天

    连续签到: 1 天

    [LV.6]常住居民II

    228

    主题

    5379

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    16805
    最后登录
    1970-1-1
    发表于 2016-10-31 22:00:22 | 显示全部楼层
    期待后期……
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2020-3-29 09:54
  • 签到天数: 418 天

    连续签到: 1 天

    [LV.9]以坛为家II

    21

    主题

    2928

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    3307
    最后登录
    2021-4-7
    发表于 2016-11-1 08:19:12 | 显示全部楼层
    多谢分享
    该会员没有填写今日想说内容.
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2021-7-30 13:41
  • 签到天数: 28 天

    连续签到: 1 天

    [LV.4]偶尔看看III

    1

    主题

    161

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    387
    最后登录
    2021-12-16
    发表于 2016-11-1 09:16:49 | 显示全部楼层
    mbed现在推广的特别厉害啊!!
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    无聊
    2017-1-24 08:47
  • 签到天数: 49 天

    连续签到: 1 天

    [LV.5]常住居民I

    0

    主题

    524

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    1267
    最后登录
    2017-4-19
    发表于 2016-11-1 10:05:36 | 显示全部楼层
    谢谢分析                                
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2017-2-9 14:16
  • 签到天数: 17 天

    连续签到: 1 天

    [LV.4]偶尔看看III

    25

    主题

    1785

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    2250
    最后登录
    2024-6-11
    发表于 2016-11-1 10:46:10 | 显示全部楼层
    谢谢楼主分享
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    郁闷
    2018-2-7 18:18
  • 签到天数: 5 天

    连续签到: 1 天

    [LV.2]偶尔看看I

    13

    主题

    126

    帖子

    1

    金牌会员

    Rank: 6Rank: 6

    积分
    1628
    最后登录
    2021-7-13
     楼主| 发表于 2016-11-1 22:02:24 | 显示全部楼层
    图片来了.
    该会员没有填写今日想说内容.
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2016-11-29 08:49
  • 签到天数: 8 天

    连续签到: 1 天

    [LV.3]偶尔看看II

    1

    主题

    45

    帖子

    0

    注册会员

    Rank: 2

    积分
    115
    最后登录
    2016-11-29
    发表于 2016-11-21 16:52:40 | 显示全部楼层
    不错哦,支持
    回复 支持 反对

    使用道具 举报

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

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2025-8-21 13:10 , Processed in 0.106936 second(s), 29 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

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