这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 活动中心 » 板卡试用 » 【设计竞赛】無人載具電源管理器

共9条 1/1 1 跳转至

【设计竞赛】無人載具電源管理器

菜鸟
2018-03-28 23:09:29     打赏

虽然早在上周二就收到了包裹,但是最近学校事务相当繁忙,在稍有空档赶紧拆礼物啰先前使用过几种 Microchip 控制芯片,从当初比技能竞赛,指定的PIC18F4550,到后来报名免费训练课程玩过了PIC24KdsPIC33F等芯片,因为在开发接口上操作得相当顺手,又有免费课程一步步的教学(真心觉得不错,建议大家有机会可以报名参加),在这样各类的机缘巧合之下,在后续学校项目的开发,我也都使用了Microchip的芯片( 毕竟熟悉好用阿 )(请忽略杂乱的实验室背景QQ)

开发工具包内含:


Starter Kit Board

 

 

Information Sheet

 

 

USB Cable

 

 

Universal 9V Power Supply 


内容相当简洁利落,有了这几样必备零件就可以开始 dsPIC33EP64GS502 DSC 的开发了!

预计使用这块开发板针对学校合作开发之无人载具完成电源管理的部分,无人载具上有Lidar及各类sensor等模块,对其功耗进行监测、管理,以提高电池续航力为目标开发,待我好好摸熟这块板子,未完待续!




菜鸟
2018-04-12 23:28:28     打赏
2楼

2018/03/30

以下是使用MPLAB Starter Kit for Digital Power这块板子的开发流程,尽量把每个环节说的详细,希望能帮助同样有需要的朋友们,相信经过一步步学习,对于电源管理控制器了解更深入。


第一步拿到板子,欣赏完就是要来好好了解他拉,我们先去下载Microchip 所提供之使用者说明书,网址如下:

http://www.microchip.com/DevelopmentTools/ProductDetails.aspx?PartNO=DM330017-2&utm_source=&utm_medium=MicroSolutions&utm_term=&utm_content=DevTools&utm_campaign=Digital+Power+Starter+Kit


下载两个档案分别为Design Package User’s Guide ,都是接下来开发不可缺少的重要数据,一切都要慢慢咀嚼文字来了解,相信完成这篇日志能帮助想玩这块板子的朋友们,我们继续下去!


开发软件总共需要下载开发用IDEC语言编译程序。

MPLAB® IDE  www.microchip.com/MPLAB

C Compilers :www.microchip.com/compilers


选择IDE时,有分为MPLAB IDE以及MPLAB IDE X 两种,那么该挑哪一个使用呢? 别紧张,两个都是可以使用的,两者的差别在于MPLAB IDE是传统的版本,比较稳定,接口样式旧 ; MPLAB IDE X是较新出的实验版本,接口设计上较为新颖,支持多平台,但是可能会有少许不稳定的状况,可以依使用者习惯自由选择! 接下来会采用MPLAB X IDE!

*注意 安装软件路径上不可有中文!!


C Compiler使用MPLAB XC16 compiler version v1.23以上版本。

安装流程如下:

http://microchipdeveloper.com/xc16:installation



 2018/04/2

使用MPLAB IDE X开启Design Package中的项目,可以看到范例程序代码:

1.JPG

先确认XC16 Compiler有无挂载成功,接者就可以进行刻录测试了。

30708796_1498959833566462_4210199798516547584_n.jpg


程序代码默认输出为3.3V15V,并且有1.75W的附载,运作时间一久,屏幕即会显示温度警示。

30712221_1498970820232030_3713145831805681664_n.jpg

使用示波器观察电压波型输出,并无太大涟波,对于Lidar等昂贵的电子设备电源干净很重要。


对于开发板的使用已经有初步的了解,尝试用LCD屏幕显示字符串后,接下来的开发重点会着重于BootBuck电压的设定,以及电流监测等功能的使用,过程辛苦,但这玩意上手可以做很多应用,好玩!


菜鸟
2018-04-29 15:35:31     打赏
3楼

终于度过了沉重的学校考试,终于可以来好好做研究了!目标建置一无人车的电源管理系统,基于目前的无人车系统,架构图如下:系統架構圖.JPG


电路敘述: 

经由电池供电,透过降压模块,将电压转换成DM330017-2开发板使用的9V电源

由两块DM330017-2分别输出

       12V给十六光束的高精度Lidar和单光束的高精度Lidar

        5V : Stereo CameraDisplay Panel

        *可以扩充更多的DM330017-2,因应接下来还会整合其他的模块(例如RTK GPS)

透过DM330017-2控制、监控模块的电压电流,保护动辄几十万、相当昂贵的传感器,经由IIC送出数据给控制器Atmega328p,将数据整合喂给ROS Robot Operating System),无人车软件核心的部分就可以取得资料,无人车电源管理的切换工作就相当轻松了 !

 

接下来会将过程一步步公布出来,帮助有同样系统整合需求的朋友们,轻松做到电源管理!



菜鸟
2018-04-30 21:19:18     打赏
4楼

今天的目标要来让DM330017-2输出5V、12V电压。

软件使用:

MPLAB X IDE V4.10

且需安装XC16 Compiler

一开始我用了最新版的MPLAB IDE,奇怪的是程序会发生错误,最后改用MPLAB X IDE V4.10 就正常了,也许是有地方没设好,给大家做参考。

 

硬件需求:

接上USB线至J2

并插上9V的外接电源

硬件已设置完成。 

开启MPLAB X IDE 选取Microchip所提供的范例程序代码,并测试!


2.JPG

        

         范例程序中BUCK,BOOST都开启了仿真负载,关闭流程如下:

    1.     打开load_config.h

    2.     找到 #define BOOSTLOAD1    NOLOAD  // LOADBANK2改成NOLOAD

    3.     找到#define BUCKLOAD1    NOLOAD  // LOADBANK2改成NOLOAD

    4.    烧写程序,可以发现变成0w,也不会显示过热警示了。


    31563882_1516702561792189_3322390939871215616_n.jpg



菜鸟
2018-05-02 23:46:05     打赏
5楼

DM330017-2 开发板原本BUCK 和BOOST的预设输出电压限制为:

    BUCK :2.4V~3.8V

    BOOST: 13.4V~17.8V

经过更改DM330017-2 开发板上的电阻,可以让输出为要使用的5V12V


BUCK 输出5V需更改R97 & R105 两颗电阻,阻值改成5.1k

BUCK.JPG

并将define.h BUCK部分程序代码做以下设定

// Output Voltage Setpoint       

#define BUCKVOLTAGEREFERENCE  5   // Buck output voltage in volts (max 3.8V with on-board load)       

 

//buck feedback gains  

#define VBUCKFBGAIN  0.497042   // 3.16k/(1.02k+3.16k)


BOOST 输出12V需更改R41 & R51 两颗电阻,R41阻值改成3kR51阻值改成1.2k

BOOST.JPG

并将define.h BOOST部分程序代码做以下设定

// Output Voltage Setpoint

#define BOOSTVOLTAGEREFERENCE   12 // Boost output voltage in volts (max 17.3V with on-board load)

 

//Boost feedback gains

#define VBOOSTFBGAIN  0.263   // 1k/(1k + 5.12k) 


检查输出是否正确


12V的电压有点高,不过还在可接受的范围内,原因是VFB_BOOST并不是理想的3.3V而是3.47V,输出电压成功!


菜鸟
2018-05-10 01:28:26     打赏
6楼

上次的日志设定好了输出电压,接下来得确定输出电流能推动足够的负载

测试以Lidar以及Duel Camera作为负载!

模块名称

电压

电流

备注

Hokuyo

UTM-30LX Lidar

12V

0.7A (Rush current 1.0A)

Duel Camera

5V

0.38A


先来看BUCK的部分开发板上的BUCK的输出电流最大为2.5A,用来供应Duel Camera是绰绰有余的。

Buck spac.JPG



别开心得太早阿,再来是BOOST的部分,BOOST的输出电流为0.37A,我们使用的Lidar规格为12V   1A ,恐怕是不够推动,为了满足需求,得研究电路图进行修改。


boost spac.JPG

来看到Boost converter 电路部分,为了要能输出12V 1A,需考虑到原本电路的Q2 内阻RDS(on)是否够低以及F1保险丝的断流容量。

F1保险丝因为只有1A的断流容量,在此我将他短路,但是同时丧失保护功能,需特别小心!

boost drive.JPG

Q2 MCP87050 其输出规格如图标,内阻为6m奥姆,没问题!

附上数据来源:

http://ww1.microchip.com/downloads/en/DeviceDoc/22308B.pdf



因为实验室的轻型无人车所使用之电池,输出的电压为24V,转成9V输入给开发板,就大功告成了!



菜鸟
2018-05-11 19:25:52     打赏
7楼

前篇文中确认了电压、电流能符合输出需求,接下来就是数据传输的功能,开发板拉出了I2C接脚SDA1与SCL1。

 

I²CInter-Integrated Circuit)字面上的意思是集成电路之间,它其实是I²C Bus简称,所以中文应该叫集成电路总线,它是一种串行通讯总线,使用多主从架构,由飞利浦公司在1980年代为了让主板、嵌入式系统或手机用以连接低速外围装置而发展。(此段取至wiki)


IIC pro.png

来看电路的接线,已经有配置提升电阻!

DSPic33 iic.JPG

从电路图上来看SDA1与SCL1已经有用于与MCP23008通讯,用来控制虚拟负载,跟两颗LED。

MCP23008 :  http://ww1.microchip.com/downloads/en/DeviceDoc/21919e.pdf


研究时发现,使用手册上似乎有些出错,真是奇怪,LCD应该没有使用到IIC功能才是!


I2C problem.JPG


接线外观图:

32349247_1527234127405699_7713210726118064128_n.jpg



菜鸟
2018-05-11 19:44:05     打赏
8楼

硬件了解后,打开范例程序的init.c文件,可以看到I2C的程序代码,I2C的位置为0x00且为Slave,用来控制MCP23008!(注意此处须看到更下面文章了解)

dsPIC33EPXXGS50X FAMILY:    http://ww1.microchip.com/downloads/en/DeviceDoc/70005127d.pdf   

*IIC部分在章节17

透过缓存器设置来完成功能:

IIC Diagram.JPG


init.c文件

iic code.JPG


结果发生问题 !! 实际使用上发现,程序上的地址,跟波型上并不相符合,相当奇怪。

32257252_1527239664071812_5327206447291826176_n.jpg


明明设定地址为0X00但是出然居然是0x20,有鬼阿!

不过工程人员就要用科学的方法解决问题,先不逃跑了,坐下来好好看文件。

东翻西找发现真正的位置设置是在load_config.h ,  原来搞错位置了!!


接下来继续进度,因为不会用到仿真负载,所以将I2C的Address改为0xB0,透过void InitI2C(void) 子程序中的协议来传输数据。

load_config h.JPG


测试输出’A’字符


IIC data A.JPG



附上IIC部分的程序代码

void InitI2C(void)

{

    I2C1CON1bits.I2CEN = 1;      // 开启 I2C 功能

    //Configure I2C as MASTER to communicate with Load IC

    I2C1CON1bits.A10M   = 0;     // 7位的从端数据与地址

    I2C1CON1bits.DISSLW = 1;     // Slew rate control disabled

    I2C1BRG = I2CBAUDRATE;       // IIC传输速率100kHz

    IFS1bits.MI2C1IF = 0;

    IEC1bits.MI2C1IE = 1;        // 开启主端的 I2C 中断

    IPC4bits.MI2C1IP = 5;  

    // 接下来的程序代码用于设定MCP23008(仿真负载)

    I2CRegAddr   = IOCON_REGADDR;

    I2CLoadWrite = 0x20;         // 禁用顺序操作

    I2C1CON1bits.SEN = 1;        // SEN启动条件致能位(当作为I2C主端件运行时)若是=1SDAxSCLx引脚上触发硬件在结束时清除序列

    while(messageComplete == 0);

    messageComplete = 0;

    I2CRegAddr = IODIR_REGADDR;

    I2CLoadWrite = 0x00;         // 设置所有IO为输出

    I2C1CON1bits.SEN = 1;       

    while(messageComplete == 0);

    messageComplete = 0;

    I2CRegAddr = GPIO_REGADDR;

   //I2CLoadWrite = (I2CBUCKLOAD1WRITE | I2CBOOSTLOAD1WRITE);

    I2CLoadWrite =('A');             //测试输出’A’字符

    // I2CLoadWrite = 0xff;            //测试用 GPA口输出高电平

    I2C1CON1bits.SEN = 1;       

    while(messageComplete == 0);

    messageComplete = 0;

}


另一端控制器可以收到透过IIC传输的’A’,不过因为数据传输只有7bits,还要继续研究如何传输字符串,以及透过IIC双向通讯。

Arduino Slave A.JPG




菜鸟
2018-05-11 21:52:13     打赏
9楼

来看看要电源供应主要的组件!

LidarCamera,两着为无人驾驶重要的避障工具,因此仰赖稳固的电源,如同一颗强健的心脏,供应电路中各部件的运作,运用DM330017-2开发板来设计无人车电源管理系统相当适合,轻易就可以控制BUCKBOOST当作数字电源,又包含温度警示,串行通讯界面,接下来会继续完成更多功能,待ROS方面若能直接整合DSPIC33系列IC,就不用透过另一颗微控制器,我们接着也会将ROS整合控制器的步骤提供出来,帮助大家在选择电源管理控制器时,有更简单方便的选择!


接着介绍组装的部分:

自己制作一组供电插头,用USB TYPE A以及 DC JACK输出。未來會整合到一塊集成PCB上。

32349307_1527251450737300_1794847960912101376_n.jpg


组装上车子!!


在户外收集环境信息建立点云图与影像侦测


这次的开发比赛即将结束了,自己第一次接触数字电源的开发,相当新奇,过程中遇到的问题真的解决不了,就上了Microchip的官方讨论区询问,不到一天就收到了回复,谢谢Microchip提供这样的资源,让学生有机会尝试使用各类不同的产品,同时也提供技术支持,相当感谢,祝大家一切顺利!


31663362_1526698304125948_7350085723870986240_n.jpg


共9条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]