想用51来控制刚买的50A电调和绿马达
http://cache.amobbs.com/bbs_upload782111/files_32/ourdev_576139.jpg(原文件名:图片 001.jpg)
http://cache.amobbs.com/bbs_upload782111/files_32/ourdev_576140.jpg
(原文件名:图片 002.jpg)
http://cache.amobbs.com/bbs_upload782111/files_32/ourdev_576141.jpg
(原文件名:图片 003.jpg)
各位前辈我刚弄无刷不久,请教一下,下面是我的51代码:
#include <REGX51.H>
#define uchar unsigned char
void init_sys(void); /*系统初始化函数*/
void Delay5Ms(void);
unsigned char pwm;
void main (void)
{
init_sys() ;
pwm=8; /*占空比初始值设定*/
while(1)
{
if (!P1_1) //如果按了+键,增加占空比
{
Delay5Ms();
if (!P1_1)
{
pwm++;
}
}
if (!P1_2) //如果按了-键,减少占空比
{
Delay5Ms();
if (!P1_2)
{
pwm--;
}
}
/*对占空比值限定范围*/
if (pwm>=23) pwm=23;
if (pwm<=8) pwm=8;
}
}
/******************************************************
*函数功能:对系统进行初始化,包括定时器初始化和变量初始化*/
void init_sys(void) /*系统初始化函数*/
{
/*定时器初始化*/
TMOD=0x01;
TH0=0x0ff;
TL0=0x9c;
TR0=1;
ET0=1;
EA=1;
}
//延时
void Delay5Ms(void)
{
unsigned int TempCyc = 5000;
while(TempCyc--);
}
/*中断函数*/
void timer0(void) interrupt 1 using 2
{
static uchar click=0; /*中断次数计数器变量*/
init_sys() ;
++click;
if (click>=100) click=0;
if (click<=pwm) /*当小于占空比值时输出高电平,高于时是低电平,实现占空比的调整*/
P1_0=1;
else
P1_0=0;
}
调了好久都不行。。。。。。./emotion/em037.gif
请高手们帮忙看看。。。 电调都是有启动保护的,单片机直接启动无刷电调,程序开始必须从IO口输出1.0ms的信号,维持数秒钟,然后再慢慢将脉冲加宽到接近2.0ms,太快加宽脉冲也会被电调判断为错误信号而忽略掉 你好,你的无刷电机驱动有原理图和单片机的源程序吗,可以给我参考吗,我最近也在做这个,我的邮箱zhuml2010@163.com。qq:675016379,谢谢了
页:
[1]