搜索
bottom↓
回复: 28

i2c调试电调时板子冒烟了,郁闷

[复制链接]

出0入0汤圆

发表于 2009-5-14 17:11:11 | 显示全部楼层 |阅读模式
硬件:电调(蚂蚁的版本),电机(xxd2212),AVR32(uc3b0256)核心板,11V/10A直流电源

程序:电调程序使用feng_matrix的第二版无刷电调代码,uc3b的程序自己写的
电调的程序修改了一下这个函数,目的是丢失i2c数据时能保持当前转速
unsigned char SollwertErmittlung(void)
//############################################################################
{
    static unsigned int sollwert = 0;
    //unsigned int ppm;

        
        sollwert = I2C_RXBuffer;
        PORTC &= ~ROT;
        
    if(sollwert > MAX_PWM) sollwert = MAX_PWM; //#define MAX_PWM         255
    return(sollwert);
}

主程序:
.........
........
........
volatile unsigned char data[1] = {50};

      while(1)
{
          dat=usart_getchar(&AVR32_USART1);//等待从计算机发来的串口的数据

          if(dat==1)
          {
                usart_write_char(&AVR32_USART1,2);//反馈串口信息
                data[0]++;//油门++
          }
          if(dat==2)
          {
                usart_write_char(&AVR32_USART1,4);
                data[0]--;//油门--
          }

          twi_sendonebyte(&AVR32_TWI,data[0]);//i2c发送油门数据


  }

通电,通过串口调试助手发送0x01,电机转起来了,连续发送0x01,电机不断加速,然后不断发送0x02,电机逐渐减速,然后慢慢停下了,但是我还在发送0x02,也就是说data[0]一直在减一,突然,电调冒烟了,当时就没反应过来(根本没想到会出问题啊),我愣了有2秒才拔掉电源。检查板子,发现好像烧了一个IRFR1205,再上电,单片机工作正常,但电机转不起来的。
感觉问题应该就在data[0]--这里,如果data[0]=0了再--就成了255,不过就算是发送了255,pwm占空比最高,那也不应该冒烟啊?

请问feng_matrix,还有各位大侠们,到底是哪不对了呢?

阿莫论坛20周年了!感谢大家的支持与爱护!!

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出0入0汤圆

发表于 2009-5-14 18:29:32 | 显示全部楼层
电机工作时的角色在发电机和电动机之间动态转换,电机转动时,磁铁切割定子线圈,产生的感应电流能增加绕组线圈的对外阻抗,流过线圈的电流不会达到最大,电机静止时线圈内阻最小,比较大的PWM电流可能全部通过绕组线圈,烧坏MOS不奇怪。

出0入663汤圆

发表于 2009-5-14 18:52:17 | 显示全部楼层
没过流保护?
调试电调应该用有过流保护的电源,会省下不少炸管的钱。

出0入0汤圆

发表于 2009-5-14 20:27:55 | 显示全部楼层
hehe ..管子便宜。。烧一两个无所谓了,,,别把电机给烧了,,,你是幸运的!

出0入0汤圆

 楼主| 发表于 2009-5-14 20:35:46 | 显示全部楼层
【1楼】 hn_ny_dxs 夏风
确实如此,还好只烧了一个1205,程序里加上限制条件应该就没事了

【2楼】 gzhuli 咕唧霖
有过流保护,只是我以前把电流采样的ADC通道改了,这次忘了改回来了。。。

【3楼】 gl516
管子是便宜,但我们这没卖的,又得邮购了

出0入0汤圆

发表于 2009-5-15 08:55:36 | 显示全部楼层
楼主用B0256做电调?

出0入0汤圆

 楼主| 发表于 2009-5-15 09:37:47 | 显示全部楼层
【5楼】 feng_matrix

不是,b0256是做主控,电调是狼族蚂蚁的版本

出0入0汤圆

发表于 2009-5-15 10:33:52 | 显示全部楼层
哦,我现在也用B0256,我们多交流啊,feng.matrix@yahoo.com.cn


(原文件名:IMG_1276_s.JPG)

出0入0汤圆

 楼主| 发表于 2009-5-15 14:15:11 | 显示全部楼层
我现在哈尔滨上学呢

出0入0汤圆

发表于 2009-5-15 14:30:24 | 显示全部楼层
学生啊,送你块PCB,就是上面贴的那个,我自己做的B0256小板,要不?

接口有:
6路PWM,带+5V输出,可以直接接舵机
1路TWI(I2C),可以直接接四轴电调
两路串口,接GPS或调试器
一路ICP输入,接航模接收机
SPI口接在ADIS16350上

写程序用MINI USB口,开发工具用AVR32 STUDIO 2.11

出0入0汤圆

 楼主| 发表于 2009-5-15 15:25:56 | 显示全部楼层
非常感谢,我现在缺不少硬件,哈尔滨这边不好买。我手头有4个2212电机,4个xxd30A电调,两块1100ma锂电,一个充电器,4个九寸三叶桨。这些都是2月份在淘宝上一家叫金山模型的店买的,是上海的卖家,不知道您是否听说过。

没有遥控和接收机,只有以前做项目剩下的几个串口通信模块(4800bit/s,通信距离3公里),暂时当遥控和接收用。10块钱买了根三米的铝合金方管做了个简单的机架,十分笨重,穷人啊,没办法。

商品电调调试时感觉反应太慢了,所以前几天有买了蚂蚁的电调,用您的电调程序调试i2c的时候不小心板子冒烟了,呵呵

我以后还要陆续买不少东西,如果您那有或者采购比较方便的话我想从您那里购买。如果不太方便的话就算了。您的小板我还是很想要的,我自己画板子水平一般,所以有现成的就太好了,哈哈! 怎么付款呢?

出0入0汤圆

发表于 2009-5-15 16:46:05 | 显示全部楼层
当然知道,我经常在金山那里买东西哦,你的东东我全套都买过,呵呵
不过我不是航模卖家啊,不有多余的东西可以销售,我只卖过自己做的一些多余的PCB

我的程序是给我自己的电调板用的,不能直接烧蚂蚁电调的,采样管脚的定义稍有不同,要改几句定义,你翻以前的帖子有说过

出0入0汤圆

发表于 2009-5-15 16:47:46 | 显示全部楼层
我的小板送你的,你只要自己付快递费就行了,我们都用BO256以后多交流

出0入0汤圆

 楼主| 发表于 2009-5-15 16:52:08 | 显示全部楼层
程序我已经按照蚂蚁的原理图修改过了,试验了,没有问题。

您的小板给我一块吧,邮费我怎么付呢,淘宝还是其他?

出0入0汤圆

发表于 2009-5-15 17:20:11 | 显示全部楼层
淘宝上给地址吧,我回头贴出来

出0入0汤圆

 楼主| 发表于 2009-5-15 18:16:09 | 显示全部楼层
好的。多谢多谢~~

出0入0汤圆

 楼主| 发表于 2009-5-15 18:37:31 | 显示全部楼层
请教一个AVR32 studio的问题。

本来好好的程序,编译没有问题,改了几条语句,再编译就出错了,而且错误都出在SOFTWARE_FRAMEWORK下DRIVERS里的某个模块里,比如pm.h,gpio.h等,即使再改回原来的程序也不好使。

但是我新建一个工程再把原来的代码粘贴过去编译就又可以通过了,不知道您有没有碰到这种情况,是编译器的问题吗?

我都是通过AVR32 C Project From Template 建立工程的,不知道出错是否与这有关?出现过很多次这种情况了

出0入0汤圆

发表于 2009-5-15 18:57:26 | 显示全部楼层
再改回原来的程序也不好使?这个比较怪,我没遇到过啊
难道你发现了AVR32编译器的BUG?你把AVR32的工程打包发给我,我来编译下试试

出0入0汤圆

 楼主| 发表于 2009-5-15 19:03:46 | 显示全部楼层
点击此处下载 ourdev_445176.rar(文件大小:710K) (原文件名:iicctl.rar)

出0入0汤圆

发表于 2009-5-15 19:08:28 | 显示全部楼层
告诉我你改那几句,然后编译出错?

出0入0汤圆

 楼主| 发表于 2009-5-15 19:16:05 | 显示全部楼层
if(dat==1)
          {

                if(data[0]<=200) data[0]++;
                usart_write_char(&AVR32_USART1,data[0]);
          }
          if(dat==2)
          {

                if(data[0]>=30) data[0]--;
                usart_write_char(&AVR32_USART1,data[0]);
          }
原来是
if(dat==1)
          {

                 data[0]++;
                usart_write_char(&AVR32_USART1,data[0]);
          }
          if(dat==2)
          {

                 data[0]--;
                usart_write_char(&AVR32_USART1,data[0]);
          }

出0入0汤圆

发表于 2009-5-15 19:17:37 | 显示全部楼层
你刚才的报错工程,我注释了
//#include "print_funcs.h"

//print_dbg(...)

并关掉了所有编译器优化,就可以编译通过了,当然程序对不对不知道
看样子你这东西是用TWI发控制字的,顺便串口输出

出0入0汤圆

发表于 2009-5-15 19:19:05 | 显示全部楼层
好像与你改的部分没有关系,AVR32还不至于差到同样的代码,一次编译正确,再编译一次就出错

出0入0汤圆

 楼主| 发表于 2009-5-15 19:29:30 | 显示全部楼层
程序应该没问题,因为新建个工程把代码粘贴过去是可以编译的

程序功能就是接收计算机的串口数据再通过TWI发给电调调速

不是print_funcs.h的问题,那个在FRAMEWORK里选上Enable debug function就可以了,我试了一下,果然是编译器优化的问题,去掉所有优化,编译通过。。。

出0入0汤圆

 楼主| 发表于 2009-5-15 19:30:38 | 显示全部楼层
有时候什么都不改,多编译几次也会出错

出0入0汤圆

发表于 2009-5-18 19:00:20 | 显示全部楼层
zht9961020 如果要板子在MSN上联系我
MSN:feng.matrix@yahoo.com.cn

出0入0汤圆

发表于 2009-12-6 17:28:40 | 显示全部楼层
也来关注
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-7-24 15:21

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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