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

共13条 2/2 1 2 跳转至
菜鸟
2018-05-11 19:44:05     打赏
11楼

硬件了解后,打开范例程序的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     打赏
12楼

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

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


管理员
2018-06-14 11:56:37     打赏
13楼

【Microchip 评语】    

        无人车电源管理,这个项目的难点不在与电源而在于其他部分;项目使用DPSK-2板输出12V和5V,项目改动相对很小,难度较低。

网站更新内容还是算不错的,项目有点偏题,不是严格意义上的数字电源的设计。

基本上完成的是一些通讯和给后级供电。但是还是有做一些编程上的工作。


共13条 2/2 1 2 跳转至

回复

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