5iMX宗旨:分享遥控模型兴趣爱好

5iMX.com 我爱模型 玩家论坛 ——专业遥控模型和无人机玩家论坛(玩模型就上我爱模型,创始于2003年)
查看: 1537|回复: 12
打印 上一主题 下一主题

有编写电调驱动的进来

[复制链接]
跳转到指定楼层
楼主
发表于 2005-12-6 12:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
有编写电调驱动的进来!

我有 tower pro 2408-21 电机,和配套的 tower pro 30A 电调,现在给电调信号,电机可以运转。现在想要去掉电调,用mcu+驱动电路进行电机调速(就是自己写电调驱动),驱动电路有了,反电动势检测换相,但怎样驱动电机还有点模糊,哪位有电调制作编写经验,希望能提供一下,我的邮箱eakliu@163.com.谢谢!
如果驱动成功了,我会把一些经验写出来,大家共享!!

欢迎继续阅读楼主其他信息

主题

  • 没有相关信息
  • 没有相关信息
  • 没有相关信息
沙发
 楼主| 发表于 2005-12-6 22:06 | 只看该作者

没有人愿意把经验共享吗?

如题。
3
发表于 2005-12-6 23:33 | 只看该作者
//ICC-AVR application builder : 2005-3-23 10:23:44
// Target : M128
// Crystal: 16.000Mhz

#include <iom128v.h>
#include <macros.h>


unsigned int up,down,a;
unsigned int T;

void port_init(void)
{
PORTA = 0xFF;
DDRA  = 0x00;
PORTB = 0xFF;
DDRB  = 0xFF;
PORTC = 0xFF; //m103 output only
DDRC  = 0x00;
PORTD = 0x00;
DDRD  = 0x00;
PORTE = 0xFF;
DDRE  = 0x00;
PORTF = 0xFF;
DDRF  = 0x00;
PORTG = 0x1F;
DDRG  = 0x00;
}

//TIMER0 initialisation - prescale:64
// WGM: PWM Fast
// desired value: 1.5KHz
// actual value:  0.977KHz (-53.6%)
void timer0_init(void)
{
TCCR0 = 0x00; //stop
ASSR  = 0x00; //set async mode
TCNT0 = 0x00; //set count
OCR0  = 0xFF;
TCCR0 = 0x7C; //start timer
}



//TIMER1 initialisation - prescale:1
// WGM: 15) PWM fast, TOP=OCRnA
// desired value: 1uSec
// actual value:  1.000uSec (0.0%)
void timer1_init(void)
{
TCCR1B = 0x00; //stop
TCNT1H = 0xFF; //setup
TCNT1L = 0xF1;
OCR1AH = 0xFF;   //OCR1AH = 0x29;
OCR1AL = 0xFF;   //OCR1AL = 0xA9;
OCR1BH = 0x11;
OCR1BL = 0x11;
OCR1CH = 0x00;
OCR1CL = 0x00;
ICR1H  = 0x00;
ICR1L  = 0x00;
TCCR1A = 0x33;
TCCR1B = 0xD9; //start Timer
}

#pragma interrupt_handler timer1_capt_isr:12
void timer1_capt_isr(void)
{
  if((TCCR1B&0x40)==0)
  {
  
  down=ICR1L;            //Read low byte first (important)
  down|=(int)ICR1H << 8; //Read high byte and shift into top byte
   T=down/16;
   //OCR1B=T;
   //if(T>=1000)
   //{T=1000;}
    //OCR0  = 254;
          a=T;
        //T=T-994;
        
        if(T<=994)
        OCR0=0x00;
        else
        if(T>=1994)
        OCR0=0xFF;
        else
   OCR0  = (T/3.921);
  // a=T/4;
printf("T=%u,down=%u,a=%d\n",T,down,a);
  TCCR1B^=0x40;
TIFR=(1<<ICF1);
/*

//TCNT1=0;
//timer 1 input capture event, read (int)value in ICR1 using;
down=ICR1L;            //Read low byte first (important)
down|=(int)ICR1H << 8; //Read high byte and shift into top byte
ICR1=0;
TCNT1=0;
  a=down-up;
  T=a/16;
OCR1B = T;
TCCR1B^=0x40;
TIFR=(1<<ICF1);
printf("T=%d,down=%d,up=%d\n",T,down,up);


*/
}
else
{
TCNT1=0;
TCCR1B^=0x40;
TIFR=(1<<ICF1);

/*

up=ICR1L;            //Read low byte first (important)
up|=(int)ICR1H << 8; //Read high byte and shift into top byte
ICR1=0;

TCCR1B^=0x40;
TIFR=(1<<ICF1);


*/
}
}

//UART0 initialisation
// desired baud rate: 11520
// actual: baud rate:11520
// char size: 8 bit
// parity: Disabled

void uart0_init(void)
{
UCSR0B = 0x00; //disable while setting baud rate
UCSR0A = 0x00;
UCSR0C = 0x06;
UBRR0L = 0x08; //set baud rate lo
UBRR0H = 0x00; //set baud rate hi
UCSR0B = 0x18;
}

//call this routine to initialise all peripherals
void init_devices(void)
{
//stop errant interrupts until set up
CLI(); //disable all interrupts
XDIV  = 0x00; //xtal divider
XMCRA = 0x00; //external memory
port_init();
timer1_init();
uart0_init();
timer0_init();


MCUCR = 0x00;
EICRA = 0x00; //extended ext ints
EICRB = 0x00; //extended ext ints
EIMSK = 0x00;
TIMSK = 0x20; //timer interrupt sources
ETIMSK = 0x00; //extended timer interrupt sources
SEI(); //re-enable interrupts
//all peripherals are now initialised
}

void main(void)
{
int T,up,down,a;
  a='d';
init_devices();
  printf("ok!");
while(1)
{
   //printf("%u",T);
}

}
4
发表于 2005-12-7 11:57 | 只看该作者
这个好像是个有刷的。另外好像是用串口来控制的吧。
(刚学单片机不是很懂。)
5
发表于 2005-12-7 16:01 | 只看该作者

我也想知道

会的人不想说,而只想去变钱。
不会的人就想要共享。
6
发表于 2005-12-7 20:18 | 只看该作者
我在学校图书馆可以找到好象是TMS320系列dsp的无传感器bldc的代码,要的话我去把它拍下来,但所用语言不同,我觉得像c
7
发表于 2005-12-7 23:38 | 只看该作者
你既然有电调,就用逻辑分析仪一分析就知道是什么原理了。没有一点的难度。这些东西想自己搞就要自己去探索,或者去自己找资料,很简单地说。你只要是搞单片机的,一看波形就知道怎么搞了,还来问,没意义了。而且搞机械软件的都知道无刷电机的驱动程序。你到网上找找很容易能找到!

[ 本帖最后由 djmodel 于 2005-12-7 23:39 编辑 ]
8
发表于 2005-12-8 10:20 | 只看该作者

没有一点的难度,怎么还有人还在卖高价?

不能是转了就行的
9
发表于 2005-12-8 15:03 | 只看该作者
可以用c51吗?
10
发表于 2005-12-8 22:05 | 只看该作者
原帖由 CRITERIA 于 2005-12-8 10:20 发表
不能是转了就行的

告诉你一个10-20A的电调硬件成本是30-50元之间,如果不卖100-150元,谁做这个生意?
还有就是程序编写也是要钱的,程序是按行算的,这个不算成本呀!
这种程序对搞单片机的真不是什么难事。最多1个星期就能把程序全部搞定,包括调试测试。
自己到网上找程序去,满天都是,别到处求来求去的,不懂单片机不会编程就别去想自己DIY,别人给你源程序也许你都装不进去。搞单片机的要想搞几天就搞定,真不难。
至于搞单片机的为什么很多人都不高,呵呵他们都去挣大钱了。说实话10-30A的电调国内都泛滥了,做出来再去抢市场,不是那么好抢的,做大电流的也不难,但是市场有限没什么市场,谁愿意做?还不如买一个方便划算。说实话自己DIY个电调太不划算了,不仅要画图,写程序还要制版,开工费也不便宜,加上芯片的钱你们自己去算算吧,我算过自己DIY一个15A的电调成本基本在80元左右。人家做产品就不同了,芯片都是上K的买,成本自然下来了。
如果做大电流的,到是可以自己DIY但是体积问题你解决不好,你总不可能用DIP的MCU和FET吧,如果就做一个大电流的电调,一个FET的价格基本上就和MCU的价格相当了,而且少了人家还不愿意卖给你(仅限北京地区,别的地方的电子市场我不了解,我这边贴片的FET一般最少都是10片以上才卖,有些单卖的价格也超贵),最终得到的答案是自己DIY不如买现成的。现成的小电流的也可以改成大电流的,不过要到电子市场去涛换大电流的FET.
11
发表于 2005-12-8 22:09 | 只看该作者
原帖由 峰回路转 于 2005-12-8 15:03 发表
可以用c51吗?

可以用C51,不过你要找的版本最好要有PWM,否则的话只能用IO口模拟,但是效果没有PWM效果好。
12
发表于 2005-12-9 23:47 | 只看该作者
原帖由 djmodel 于 2005-12-8 22:05 发表

告诉你一个10-20A的电调硬件成本是30-50元之间,如果不卖100-150元,谁做这个生意?
还有就是程序编写也是要钱的,程序是按行算的,这个不算成本呀!
这种程序对搞单片机的真不是什么难事。最多1个星期就能把 ...

很有道理的,市场才是导向。
13
发表于 2006-1-14 13:36 | 只看该作者
胡说八道!!!
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

关闭

【站内推荐】上一条 /1 下一条

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