新哈飞

 找回密码
 立即注册
搜索
123
返回列表 发新帖
楼主: picosoft

自制了一个转速表。

[复制链接]
发表于 2011-3-28 08:19:49 | 显示全部楼层
引用第7楼展翅飞祥2011-03-26 10:53发表的:
高人啊!可算找到专家了!
我要请你帮个忙啊! 我想自己做电动增压,无碳刷电机已经买了,我想控制风扇转速(最好能随节气门开度变化改变转速) 有什么高招儿?
电子增压有成套的卖了吧
 楼主| 发表于 2011-3-28 14:26:34 | 显示全部楼层
引用第11楼管兴春2011-03-26 22:22发表的:
程序和原理图能共享吗
这个是电路图:
Speed.jpg
程序的大致思路是在两个脉冲间查数,然后用一个基数去除这个数就是转数。
程序:
#include <reg51.h>

#define RLDH 0xF6
#define RLDL 0x18

unsigned long isum=600000;

sbit P3_g=P3^1;
sbit P3_s=P3^0;
sbit P3_b=P3^5;
sbit P3_q=P3^7;

void ledinit(void);
void ledwait(int dltm);
void ledout(void);
void getspeed(void);

unsigned int dit=38888;
unsigned int dtm=888;

unsigned int  led[4];
unsigned char lednum;
unsigned int  i,sum,n;
unsigned int  out=0,ot1=1,ot2=2;

char code ledt[]={0xC0,0xCF,0xA2,0x86,0x8D,0x94,0x90,0xCE,0x80,0x84,0xFF,0xB0};

void main(void)
{
    sum=0;
    led[0]=0;
    ledinit();
    while(1)
    {
        ledout();
    }
}

void ledinit(void)
{
    // 检查数码管是否正常工作
    lednum=ledt[8];
    P3_g=1; P3_s=1; P3_b=1; P3_q=0;
    ledwait(dit);
    P3_g=1; P3_s=1; P3_b=0; P3_q=1;
    ledwait(dit);
    P3_g=1; P3_s=0; P3_b=1; P3_q=1;
    ledwait(dit);
    P3_g=0; P3_s=1; P3_b=1; P3_q=1;
    ledwait(dit);
    P3_g=0; P3_s=0; P3_b=0; P3_q=0;
    ledwait(dit);

    P3_g=1;    P3_s=1;    P3_b=1;    P3_q=1;
    IE=0x03;
    TMOD=0x00;
    TCON=0x01;
    TH0=RLDH;
    TL0=RLDL;
    EA=1;
}

void ledwait(int dltm)
{
    for (i=0;i<dltm;i++)
        P1=lednum;
}

void ledout(void)
{
    P3_q=1;
    P3_g=0;
    lednum=ledt[led[0]];
    ledwait(dtm);

    P3_g=1;
    P3_s=0;
    lednum=ledt[led[1]];
    ledwait(dtm);

    P3_s=1;
    P3_b=0;
    lednum=ledt[led[2]];
    ledwait(dtm);

    P3_b=1;
    P3_q=0;
    lednum=ledt[led[3]];
    ledwait(dtm);
}

void getspeed(void)
{
    if(sum>90&&sum<1100)
    {
        ot2=2500/sum+1;
        if(ot2<2)ot2=2;
        ot1=ot2-1;
        n=isum/sum;
        n=n/10;
        led[1]=n%10;
        n=n/10;
        led[2]=n%10;
        led[3]=n/10;
        if(led[3]==0)led[3]=10;
    }
}

void signal_in(void) interrupt 0
{
    TR0=0;
    out++;
    if(out>=ot2)
    {
        getspeed();
        sum=0;
        out=0;
    }
    else if(out>=ot1)
    {
        TR0=1;
    }
}

void system_tick(void) interrupt 1
{
    TH0=RLDH;
    TL0=RLDL;
    sum++;
}
发表于 2011-3-30 16:54:54 | 显示全部楼层
不错不错
发表于 2011-3-30 17:00:26 | 显示全部楼层
用C51写的哈,,想买个,,,帮我做个嘛,,
发表于 2011-4-21 16:39:06 | 显示全部楼层
佩服。。。
发表于 2011-4-21 16:44:30 | 显示全部楼层
相当专业!
有没有兴趣来我厂当厂长啊!
发表于 2012-1-17 08:45:41 | 显示全部楼层
对懂电路明白,对不懂得简直是天文!
发表于 2012-1-17 11:32:37 | 显示全部楼层
引用第7楼展翅飞祥2011-03-26 10:53发表的:
高人啊!可算找到专家了!
我要请你帮个忙啊! 我想自己做电动增压,无碳刷电机已经买了,我想控制风扇转速(最好能随节气门开度变化改变转速) 有什么高招儿?
如果是轴流扇的话没多大效果!我试了,没风压,用离心扇的话可以考虑一下!200W以下的话我看不如在前面做一个风斗,接到空气滤清器里面!
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|小黑屋|哈飞车友会 ( 鲁ICP备15020090号-4 ) | 点击这里给我发消息 |

GMT+8, 2024-5-1 02:59 , Processed in 0.044997 second(s), 5 queries , MemCache On.

Powered by Discuz! X

© ys166.com

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