本文共 3648 字,大约阅读时间需要 12 分钟。
文章目录
直流电机的原理
在了解直流电机工作原理之前,先复习一下高中几个物理知识
第一.左手定则
通电导线处于磁场中时,所受安培力 F (或运动)的方向、磁感应强度B的方向 以及通电导体棒的电流I三者方向之间的关系的定律。 简而言之,让磁感线穿过手掌正面,手指方向为电流方向,大拇指方向为产生磁力的方向第二.右手定则
右手定则,是产生感生电动势,也是发电机的原理 让磁感线穿过掌心,大拇指方向为运动方向,手指方向为产生的电动势方向。直流电机工作原理
直流电机里边固定有环状永磁体,电流通过转子上的线圈产生安培力,当转子上的线圈与磁场平行时,再继续转受到的磁场方向将改变,因此此时转子末端的电刷跟转换片交替接触,从而线圈上的电流方向也改变,产生的洛伦兹力方向不变,所以电机能保持一个方向转动。直流发电机的工作原理就是把电枢线圈中感应的交变电动势,靠换向器配合电刷的换向作用,使之从电刷端引出时变为直流电动势的原理。感应电动势的方向按右手定则确定(磁感线指向手心,大拇指指向导体运动方向,其他四指的指向就是导体中感应电动势的方向)。导体受力的方向用左手定则确定。这一对电磁力形成了作用于电枢一个力矩,这个力矩在旋转电机里称为电磁转矩,转矩的方向是逆时针方向,企图使电枢逆时针方向转动。如果此电磁转矩能够克服电枢上的阻转矩(例如由摩擦引起的阻转矩以及其它负载转矩),电枢就能按逆时针方向旋转起来。
直流电机的种类
转子和定子的概念在步进电机里已经有了很详细的阐述,
有刷电机
有刷电机,顾名思义,就是有刷子,主要作用就是让中间的转子与电源有电气连接,还可以转动 为了让两者之间既有接触,能导电;又有转动,实现电流的变相,一般的常见做法是在碳刷加一个弹簧。这样,换向器与碳刷便有了频繁的摩擦。所以碳刷很容易磨损,必须经常进行更换。并且磨损掉的碳渣渣在电机里面形成了积碳,需要经常清理。早期电机都是有刷电机,后来为了解决磨损,有了无刷电机
无刷电机
无刷电机的解决思路就是让磁铁转动
分两种外转子和内转子 图左为内转子,图右为外转子空心杯
空心杯和传统电机不同,采用的是无铁芯转子,也叫空心杯型转子。也分有刷和无刷
直流减速电机
了解了直流电机原理和种类之后,开始学习直流减速的电机的驱动
直流减速电机相比较直流电机加了减速器减速器
一般直流电机的转速都是一分钟几千上万转的,所以一般需要安装减速器。减速器是一种相对精密的机械零件,使用它的目的是降低转速,增加转矩。减速后的直流电机力矩增大、可控性更强。按照传动级数不同可分为单级和多级减速器;按照传动类型可分为齿轮减速器、蜗杆减速器和行星齿轮减速器。
齿轮减速器体积较小,传递扭矩大,但是有一定的回程间隙。 蜗轮蜗杆减速机的主要特点是具有反向自锁功能,可以有较大的减速比,但是一般体积较大,传动效率不高,精度不高。 行星减速器其优点是结构比较紧凑,回程间隙小、精度较高,使用寿命很长,额定输出扭矩可以做的很大,但价格略贵。常用的是下面这个多级齿轮电机
驱动很简单,只要正负极加电压就行了
减速电机驱动器
常用的有L298N,TB6612FNG
这里我用的是tb6612fngTB6612FNG is a driver IC for DC motor with output transistor in LD MOS
structure with low ON-resistor. Two input signals, IN1 and IN2, can choose one of four modes such as CW, CCW, short brake, and stop mode.
TB6612FNG是直流电机的驱动器IC,输出晶体管采用LD MOS结构,具有低导通电阻。两个输入信号IN1
和IN2,可以选择四种模式中的一种,如CW,CCW,短制动和停止模式。特征
·电源电压:VM = 15V(最大值) ·输出电流:IoUT = 1.2 A(ave)/3.2 A(峰值) ·输出低导通电阻:0.5Q(上限+下限典型值@VM≥5V) ·待机(省电)系统 ·CW / CCW /短制动/停止功能模式 ·内置热关断电路和低压检测电路 ·小面积封装(SSOP24:0.65 mm引脚间距)几个参数
VM:如上图,电机供电,范围2.5-13.5v VCC:芯片供电,范围2.7-5.5v GND接地 AIN1,AIN2:电机方向控制,接单片机 BIN1,BIN2同A PWMA,PWMB:电机调速控制,接单片机 AO1AO2:接电机的正负 BO1,BO2:同A51版验证程序
#includetypedef unsigned char u8;typedef unsigned int u16;typedef unsigned long u32;u8 TR0H;u8 TR0L;bit flag_1s=0;u32 PeriodCnt = 0;u8 HighRH = 0;u8 HighRL = 0;u8 LowRH = 0;u8 LowRL = 0;u8 T1RH = 0;u8 T1RL = 0;sbit AIN1=P0^2;//AIN1引脚定义sbit AIN2=P0^1;//AIN2引脚定义sbit PWMA=P0^0;//PWM输出引脚定义void ConfigPWM(u16 fr, u8 dc);//配置PWM,fr频率,dc占空比void ConfigTimer1(u8 ms);void MotorForward(){ AIN1=1; AIN2=0;}void MotorReverse(){ AIN1=0; AIN2=1;}延时程序 11.0592mhz/oid delayms(u16 t)//{ // u16 i,j;// for(i=t;i>0;i--)// for(j=114;j>0;j--);//}void main(){ // ConfigTimer1(100); MotorReverse(); ConfigPWM(100,80);//pwn配置 EA = 1;//打开总中断 while(1) { // if(flag_1s==1)// { // flag_1s=0;// if(DIR)// { // DIR=0;// }// else// { // DIR=1;// }// } } }void ConfigTimer1(u8 ms){ u32 temp; temp=11059200/12; temp=(temp*ms)/1000; temp=65535-temp; TR0H=(u8)(temp>>8); TR0L=(u8)temp; TMOD&=0XF0; TMOD|=0x10; TH1=TR0H; TL1=TR0L; ET1=1; TR1=1;}//pwm配置程序void ConfigPWM(u16 fr, u8 dc){ u16 high, low; PeriodCnt = (11059200/12)/fr; high = (PeriodCnt*dc)/100; low = PeriodCnt - high; high = 65536 - high; low = 65536 - low; HighRH = (u8)(high>>8); HighRL = (u8)high; LowRH = (u8)(low>>8); LowRL = (u8)low; TMOD &= 0xF0; TMOD |= 0x01; TH0 = HighRH; TL0 = HighRL; ET0 = 1; TR0 = 1; PWMA = 1; }//pwm中断程序void InterruptTimer0() interrupt 1{ if(PWMA == 1) { TH0 = LowRH; TL0 = LowRL; PWMA = 0; } else { TH0 = HighRH; TL0 = HighRL; PWMA = 1; }}void Timer1()interrupt 3{ static u8 times=0; TH1=TR0H; TL1=TR0L; times++; if(times>200) { times=0; flag_1s=1; }}
验证完成
转载地址:https://blog.csdn.net/qq_41262681/article/details/95319321 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!