zht9961020 发表于 2009-5-14 17:11:11

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

硬件:电调(蚂蚁的版本),电机(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 = {50};

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

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

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


}

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

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

hn_ny_dxs 发表于 2009-5-14 18:29:32

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

gzhuli 发表于 2009-5-14 18:52:17

没过流保护?
调试电调应该用有过流保护的电源,会省下不少炸管的钱。

gl516 发表于 2009-5-14 20:27:55

hehe ..管子便宜。。烧一两个无所谓了,,,别把电机给烧了,,,你是幸运的!

zht9961020 发表于 2009-5-14 20:35:46

【1楼】 hn_ny_dxs 夏风
确实如此,还好只烧了一个1205,程序里加上限制条件应该就没事了

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

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

feng_matrix 发表于 2009-5-15 08:55:36

楼主用B0256做电调?

zht9961020 发表于 2009-5-15 09:37:47

【5楼】 feng_matrix

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

feng_matrix 发表于 2009-5-15 10:33:52

哦,我现在也用B0256,我们多交流啊,feng.matrix@yahoo.com.cn

http://cache.amobbs.com/bbs_upload782111/files_15/ourdev_445010.JPG
(原文件名:IMG_1276_s.JPG)

zht9961020 发表于 2009-5-15 14:15:11

我现在哈尔滨上学呢

feng_matrix 发表于 2009-5-15 14:30:24

学生啊,送你块PCB,就是上面贴的那个,我自己做的B0256小板,要不?

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

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

zht9961020 发表于 2009-5-15 15:25:56

非常感谢,我现在缺不少硬件,哈尔滨这边不好买。我手头有4个2212电机,4个xxd30A电调,两块1100ma锂电,一个充电器,4个九寸三叶桨。这些都是2月份在淘宝上一家叫金山模型的店买的,是上海的卖家,不知道您是否听说过。

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

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

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

feng_matrix 发表于 2009-5-15 16:46:05

当然知道,我经常在金山那里买东西哦,你的东东我全套都买过,呵呵
不过我不是航模卖家啊,不有多余的东西可以销售,我只卖过自己做的一些多余的PCB

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

feng_matrix 发表于 2009-5-15 16:47:46

我的小板送你的,你只要自己付快递费就行了,我们都用BO256以后多交流

zht9961020 发表于 2009-5-15 16:52:08

程序我已经按照蚂蚁的原理图修改过了,试验了,没有问题。

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

feng_matrix 发表于 2009-5-15 17:20:11

淘宝上给地址吧,我回头贴出来

zht9961020 发表于 2009-5-15 18:16:09

好的。多谢多谢~~

zht9961020 发表于 2009-5-15 18:37:31

请教一个AVR32 studio的问题。

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

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

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

feng_matrix 发表于 2009-5-15 18:57:26

再改回原来的程序也不好使?这个比较怪,我没遇到过啊
难道你发现了AVR32编译器的BUG?你把AVR32的工程打包发给我,我来编译下试试

zht9961020 发表于 2009-5-15 19:03:46

点击此处下载 ourdev_445176.rar(文件大小:710K) (原文件名:iicctl.rar)

feng_matrix 发表于 2009-5-15 19:08:28

告诉我你改那几句,然后编译出错?

zht9961020 发表于 2009-5-15 19:16:05

if(dat==1)
          {

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

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

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

               data--;
                usart_write_char(&AVR32_USART1,data);
          }

feng_matrix 发表于 2009-5-15 19:17:37

你刚才的报错工程,我注释了
//#include "print_funcs.h"

//print_dbg(...)

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

feng_matrix 发表于 2009-5-15 19:19:05

好像与你改的部分没有关系,AVR32还不至于差到同样的代码,一次编译正确,再编译一次就出错

zht9961020 发表于 2009-5-15 19:29:30

程序应该没问题,因为新建个工程把代码粘贴过去是可以编译的

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

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

zht9961020 发表于 2009-5-15 19:30:38

有时候什么都不改,多编译几次也会出错

feng_matrix 发表于 2009-5-18 19:00:20

zht9961020 如果要板子在MSN上联系我
MSN:feng.matrix@yahoo.com.cn

13590955160 发表于 2009-12-6 17:28:40

也来关注
页: [1]
查看完整版本: i2c调试电调时板子冒烟了,郁闷