矿石收音机论坛

 找回密码
 加入会员

QQ登录

只需一步,快速开始

搜索
查看: 6781|回复: 13

做了个简单的小电磨的调速器

[复制链接]
     
发表于 2018-3-11 20:10:58 | 显示全部楼层 |阅读模式
本帖最后由 zaq 于 2018-3-11 20:16 编辑

小电磨自带的调速器,达林顿调整管温度高了就最高速了,我也是醉了,
达林顿管发热出现的毛病,具体电路懒得分析了,啥设计。把小电磨内部控制板直接扔掉。看着就来气。

整个PWM调速,频率200HZ, 测试200HZ马达噪音震动力气都可以。
如果你要调光,那这个肯定不行的,频率太低了,闪烁,程序里的频率改高点。
上电路图

补充内容 (2018-3-12 20:21):
电路图改正:  马达并联一个反向的4007二极管,防止马达法相电动势损坏NMOS,在并联一个104瓷片电容减少对单片机干扰。  P3.3输出后接入1个22欧电阻(最好10欧姆,我没有所以22欧)后,1K接在22欧电阻后。

补充内容 (2018-3-12 20:22):
谢谢楼下的指正。改正了`

电路图

电路图

最小速度占空比

最小速度占空比
IMG_20180311_195351.jpg
     
 楼主| 发表于 2018-3-11 20:11:17 | 显示全部楼层
本帖最后由 zaq 于 2018-3-11 20:14 编辑

程序如下: 都额外做了注释了,非常简单,高手飘过啊,

做了个纸盒子,装了进去,用的还行!没发现啥BUG~
大家发现问题指出来啊,我改





~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~




/*

1WM调速,2个按键按下分别+和-,按住2秒以上直接跳到最低或者最高,按5秒之上关闭和打开。
2:频率11.0592Mhz,P33设置强推挽并且设置,并且默认输出低
3WM频率为200hz,马达实验这个频率最好
43.2口空着。我没用,可以添加作为其他用
*/

#include <STC15F2K60S2.H>

unsigned char di = 50;       //低电平的占空比,赋值50(开机后默认50%)
unsigned char gao = 0;       //高电平的占空比赋值0

unsigned int a;                   //延时函数用
unsigned int c;                  //延时函数用键盘时间检测用
bit d=1;                 //PWM波形输出标志位 ,赋值1(开机默认输出)
/************函数声明**************/
void Delay(unsigned int x);
void high(void);
void low(void);

/**************定时0中断处理******************/
void tm0_isr() interrupt 1 using 1
{

if(a != 0)//延时函数用,如果a不等于0,则a--
{
   a--;
}
   c++;

if(d)
  {
    if(++gao < di) //gao自+1,和di比较,当大于等于di时候,P33输出高!
    {
    P33 = 1;
    }
    else
     P33 = 0;  //否则暑促低

    if(gao == 100)
    {
     gao=0;
    }


  }

}






/****************延时处理1**********************/
void Delay(unsigned int x)
{
a = x;

while(a != 0);//等待中断,可减少PWM输出时间间隔
}


/*******按键处理加pwm占空比,电机加速**********/
void high(void)
{

if(P34==0)                         //如果P34按键按下
{
   Delay(800);                  //延时中断时间*800的时间

   if(P34==0)                  //再次检测 P34按键按下
  {
           c=0;                    //清零C开始计数
        while(!P34);   //等待键松开
        Delay(800);                  //延时中断时间*800的时间
        while(!P34);  //等待按键放开
        if(c>=10000&&c<=29000)   //按键放开后如果C在中断时间内,则执行。否则执行
       {
        di = 100;
       }
        else if(c>=30000)            //按键放开后如果C大约等于中断时间*30000的时间,则执行。否则执行
       
         {
        d=1; //打开PWM输出。d是PWM运行标志位
       
       }
          
    else
      {
             di=di+5;
   
        if(di >= 100)//如果di大于等于100%,则di=100,限制最大调整值为100
        {
          di = 100;
        }
       }

  }


}
}
/******按键处理减pwm占空比,电机减速*****/
void low(void)
{

if(P35==0)//如果P35按键按下
{  
   Delay(800);//延时中断时间*800的时间


   if(P35==0)  //再次检测 P35按键按下
   {
   c=0;                  //清零C开始计数
   while(!P35 );  //等待按键放开
   Delay(800);                  //延时中断时间*800的时间
   while(!P35 );  //等待按键放开
   if(c>=10000&&c<=29000) //按键放开后如果C在区间内的时间,则执行。否则执行
     {
       di=20;                          //直接跳到最小值输出
      }


                  else  if(c>=30000)          //按键放开后如果C大约等于中断时间*30000的时间,则执行。否则执行
       
         {
        d=0;        //关闭PWM输出。d是PWM运行标志位
                Delay(800);//延时中断时间*800的时间
            P33 = 0; //P33输出0,因为在D停止时候,P33有可能是高电平,为了保证输出低电平,因此此处必须P33=0
       }
          
   else
   {
    di=di-5;   
    if(di<=20)         //如果di小于等于20
    {
     di=20;           //di最小值限制在20,因为20一下马达基本不转了。以下没意义
    }
    }
   }
}
}





/*********主函数********************/
void main(void)
{
P3M1=0x0;         //P33(8脚)设置强推挽输出
P3M0=0x8; //P33(8脚)设置强推挽输出
EA=1;//开总中断
ET0=1;//允许T0定时器对CPU申请中断
TMOD= 0x0;                 //设置定时器模式为00
        TL0 = 0xD7;                //设置定时初值         11.0592 ----50um--200hz
        TH0 = 0xFD;                //设置定时初值
AUXR= 0x80;            //定时器时钟1T模式
TR0 = 1;                //定时器0开始计时




while(1)
{
   high();
   low();
}
}









~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
回复 支持 反对

使用道具 举报

     
发表于 2018-3-11 20:37:38 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

     
发表于 2018-3-11 23:26:46 | 显示全部楼层
剩余的口可以搞个简单的速度指示~~~~~~~~
回复 支持 反对

使用道具 举报

     
发表于 2018-3-12 11:33:47 | 显示全部楼层
电磨没看见,不过学习了电子知识
回复 支持 反对

使用道具 举报

     
发表于 2018-3-12 12:44:19 | 显示全部楼层
电机要并联反向二极管,不然MOS会击穿。
回复 支持 反对

使用道具 举报

     
发表于 2018-3-26 09:28:49 | 显示全部楼层
zaq 发表于 2018-3-11 20:11
程序如下: 都额外做了注释了,非常简单,高手飘过啊,

做了个纸盒子,装了进去,用的还行!没发现啥BUG ...

学习一下,感觉做的不错
回复 支持 反对

使用道具 举报

     
发表于 2018-3-29 15:26:54 | 显示全部楼层
不错收藏了,很全的调控程序
回复 支持 反对

使用道具 举报

     
发表于 2018-3-29 20:15:35 | 显示全部楼层
电机的两端并上一个高压的104是不是更好?再一个,我不知道大伙做这种直流有刷电机调速的时候,有没有发现这种情况:频率很高的情况下(20KHZ以上),电机在低占空比的时候,扭矩很小,但是在1KHz的时候(或者几百HZ的时候)扭矩反而很好?
回复 支持 反对

使用道具 举报

     
 楼主| 发表于 2018-4-1 23:27:25 | 显示全部楼层
Kowalski 发表于 2018-3-29 20:15
电机的两端并上一个高压的104是不是更好?再一个,我不知道大伙做这种直流有刷电机调速的时候,有没有发现 ...

我也发现此类问题,我查了下,貌似是每种直流电机只有特定频率响应才好!
具体多少要么找厂家要参数,要么自己实验,貌似没法计算
回复 支持 反对

使用道具 举报

     
发表于 2018-4-7 20:36:59 | 显示全部楼层
简燕 发表于 2018-3-12 11:47
电机M两端,在加一个续流二极管就完美了.

还有,MOSFET附近的1K电阻,最好直接接在G.当然,200HZ情况下无所 ...

MOSFET附近的1K电阻,最好直接接在G.当然,200HZ情况下无所谓.但提升PWM频率后,就有差别了.-------以我有限的知识,这个1K电阻难道是下拉电阻?“200HZ情况下无所谓.但提升PWM频率后,就有差别了.”能浪费您点时间给讲祥细点吗,正准备做个555的调速电路,这个电阻没吃透。谢谢了!!!
回复 支持 反对

使用道具 举报

     
发表于 2018-4-7 21:30:43 | 显示全部楼层
这芯片用在这里非常合适。
回复 支持 反对

使用道具 举报

     
 楼主| 发表于 2018-4-9 15:50:22 | 显示全部楼层
鸣沙 发表于 2018-4-7 20:36
MOSFET附近的1K电阻,最好直接接在G.当然,200HZ情况下无所谓.但提升PWM频率后,就有差别了.-------以我有限 ...

1:电机并联二极:4007和电容474是去干扰,保护MOS管的!

2:MOS管G级到地的电阻1K是下拉,保证MOS管高速开关状态可靠的导通截止,提高频率响应速度!
     串在MOS管G级的电阻是保护电阻!


      
回复 支持 反对

使用道具 举报

     
发表于 2018-4-13 11:47:01 | 显示全部楼层
用不着这么麻烦,用TL494直接电位器调更简单
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 加入会员

本版积分规则

小黑屋|手机版|矿石收音机 ( 蒙ICP备05000029号-1 )

蒙公网安备 15040402000005号

GMT+8, 2025-4-30 05:05

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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