文号
t18546
阅读
11516
回复
16
收藏
8
自制直流电机驱动电路[arduino]
2009/08/10
IP:湖北
。。。盘了3天arduino。。。昨天搞定伺服电机。。。今天。。。搞定直流电机。。。话说直流电机在没有驱动电路的情况下想要用arduino驱动是比较吃力的。。。。也有可能烧掉这可怜的小家伙。。。所以我决定自己制作!。。。。在没有专业的电路图的情况下,我选择用简单的三极管放大来完成这个艰巨的任务。。上午在老爸公司混,完成作业,下午老爸带咱去采购。。。。采购了5个c881a三极管,5个4k可变电阻,一排杜邦线,一堆插头。。。本来他是极度反对我做这些东西的。。但是他居然这么奔放地带我去。。。有隐情!!。。。原来他说,“你去的这家超市,就是几十年前我一直来买东西的地方,这么多年还是没变!你知道吗,你爷爷原来就自己组装收音机玩”。我哦了一声,拿晶振贴啊?老爸said,放屁,那时候哪来的晶振,线圈都是自己绕,矿石收音机。。。。pia~~不废话,上过程。。
用三极管有2个方案,第一个方案是通过用arduino控制be电流,加上电容,调节电机的电压。电源采用9v电池,电机是6v,单片机是5v,十分纠结。。。第二种方案,是直接将arduino的pwm端子输出的方波放大,调节电压。。。过程不累述。。十分晕。。一边翻书一遍插跳线。。。不过最后成功,上图: 直流电机3.jpg
电机驱动1.jpg
直流驱动2.jpg
16
khjtony作者
17年5个月前IP:未同步
138996
1楼
上电路图。。。后面电机并联的电容可插可不插。。。不过这个三极管功率小了,电机满负荷工作时没有直接接电源来的快。。 电机4.jpg
引用
评论
khjtony作者
17年5个月前IP:未同步
138997
2楼
int ip;
int out=7;
int speeds=6;
int i;
int ic;
int wait;
int led=12;
void setup()
{
  pinMode(speeds,OUTPUT);
  pinMode(led,OUTPUT);
}
void conmotor(int a)

{
  for(ic=1;ic<=500;ic++)
  {
  digitalWrite(speeds,HIGH);
  delay(2*a);
  digitalWrite(speeds,LOW);
  delay(18-2*a);
}
}
void loop()
{
  for(i=6;i<=9;i++)
  {
    for(ip=1;ip<=i;ip++)
   {
     digitalWrite(led,HIGH);
     delay(1000);
     digitalWrite(led,LOW);
   }
conmotor(i);  
}
}




再上程序,这个程序的作用是让电机从6v~9v,每一伏特工作10秒,以便观察,同时led闪烁的次数代表此时的电压数
引用
评论
17年5个月前IP:未同步
139004
3楼
其实一个uln2003就能解决问题了...
引用
评论
17年5个月前IP:未同步
139016
4楼
引用第3楼10班陈大葱22号于2009-08-11 00:16发表的  :
其实一个uln2003就能解决问题了...



不一定如果是单电源 有可能过载时  MCU 跑飞
引用
评论
17年5个月前IP:未同步
139017
5楼
楼主  你的学习板有什么功能玩Y  


DIY 要多少银子阿   MCU 要多少银子阿
引用
评论
17年5个月前IP:未同步
139028
6楼
引用第4楼jrcsh于2009-08-11 02:59发表的  :



不一定如果是单电源 有可能过载时  MCU 跑飞


我用的时候倒没出过问题,怕过载的话可以将几个output口并行使用
引用
评论
17年5个月前IP:未同步
139039
7楼
驱动电机还是用集电极开路的形式吧,你拆个电动车的驱动器就知道了,里面用的是N个MOS并联,漏极开路.上千瓦的都是这么驱动的.
引用
评论
khjtony作者
17年5个月前IP:未同步
139158
8楼
回小会会:这个不分学习版还是实验开发板,全部功能都有,有53个输出端口,包括13个pwm输出,和16个模拟输入端口,用c编程,目前我买了舵机,水银开关,温感,光感,可直接插在模拟输入端,写一百字的程序就行。。很方便。。。。这个班子是atmel的芯片,板子的型号是arduino1280.。。价格198
引用
评论
khjtony作者
17年5个月前IP:未同步
139159
9楼
准确说是类c,类java。。看程序就知道了。。简化版的。。。不过语法挺通用的。。
引用
评论
khjtony作者
17年5个月前IP:未同步
139161
10楼
另外,这个板子端口输出的电是直接从usb取的,通过芯片,因此电流不能大。可以往上插扩展版,扩展版有电机驱动扩展版,传感器扩展版,无限通讯扩展版等。。。。。。最好的是它能插9v电源,就是那个电池,,可以带到学校去。。。
引用
评论
16年1个月前IP:未同步
270221
11楼
或许换成MOS管更好些
引用
评论
16年1个月前IP:未同步
270279
12楼
楼主的设计比较蛋疼,三极管应该用8050,B到IO口串180欧电阻有必要的话加上下拉电阻。或者用MOS更容易,栅极直接接IO,补一个22k下拉就好。
另外Arduino用的是g++语言当然就是标准的C++啦。但用的时候麻烦还是很大,因为AVR的Flash和ram是分开编址的,而C/C++针对的是PC,只有一种指针。这样给移植现成的库带来了很大麻烦,所以现在我已经完全放弃AVR转战Cortex-M0了
引用
评论
16年1个月前IP:未同步
270280
13楼
还有,控制电源和动力电源必须分开,要不然很容易导致MCU出问题,鑫诺二号就是这样挂掉的。虽然AVR有BOD不会跑飞,但很多情况下复位也是不允许的。
引用
评论
16年1个月前IP:未同步
270294
14楼
原来是pwm控制转速的啊 不错不错
另外弱弱的问下 怎么驱动硬盘电机……
引用
评论
14年2个月前IP:未同步
468905
15楼
帖子好老了啊啊啊啊啊啊啊啊啊啊
引用
评论
笔记
{{note.content}}
{{n.user.username}}
{{fromNow(n.toc)}} {{n.status === noteStatus.disabled ? "已屏蔽" : ""}} {{n.status === noteStatus.unknown ? "正在审核" : ""}} {{n.status === noteStatus.deleted ? '已删除' : ''}}
  • 编辑
  • 删除
  • {{n.status === 'disabled' ? "解除屏蔽" : "屏蔽" }}
我也是有底线的