ZKX's LAB

单片机控制直流电机的程序

2020-07-17知识9

改一下单片机控制PWM直流电机的程序 单片机控制PWM直流电机的程序,具体如下:PWM控制直流电机实现上来说应该不难,最主要是要求:比如加速度,需要多块达到设定速度;一般来讲有“开环的查表法”和“闭环的采集实时速度法”;“开环查表”:前提是知道要达到的速度是哪些,然后去增加(或减少)PWM的占空比来看速度是否和设定的一致,然后将此时的占空比放到表格中,下次需要用时,直接根据设定速度查表格就行;这种控制方法适合于“负载”不变的情况,相对简单;“闭环速度采集”:在硬件电路上要有速度采集系统(霍尔元件),根据反馈的速度大小来调节PWM的占空比,这种方法比较精确,适用于不同的“负载”,在控制速度的过程中要小心“超调”,也就是速度加的太快或者太慢(PWM占空比调节太快),可以通过试验来确定调节的快慢或者引入PID算法;控制电机:要了解可控硅的使用。例子:51单片机直流电机的PWM速度控制程序的代码如下:直流电机的PWM速度控制程序=*/晶振采用11.0592M,产生的PWM的频率约为91Hz*/includeincludedefine uchar unsigned chardefine uint unsigned intsbit en1=P2^0;L298的Enable A*/sbit en2=P2^1;L298的Enable B*/sbit s1=P2^2;L298的Input 1*/sbit s2=P2^3;L单片机控制直流电机调速,求程序!! 直流电机 单片机端口是不能直接供电的 电流太小 带动不了直流电机要用电机驱动芯片比较简单和常用的是 l298 电机驱动芯片关于它的data sheet 网上很多 小搜索一下就有了引脚资料和电机连接方式上面都有l298 可以控制两个电机的正反转 如果你不用调速的话那就相当简单了程序例如:input a,input b,enable(这三个都是芯片引脚的名字)分别用单片机的p1.0 p1.1 p1.2控制 output a(引脚名字)接电机程序:clr p1setb p1.0setb p1.1(正转)clr p1setb p1.1setb p1.1(反转)超简单的 电机控制芯片还有很多例如 摩托罗拉公司的 mc33886 也可以祝你好运很高兴回答楼主的问题 如有错误请见谅单片机控制 直流电机的程序 看不懂 你要知道的是怎么调速,其实很简单的。如果是一直给高电平,那么电机一直以稳定的速度旋转;怎么控制速度?方法是给脉冲,怎么给,有几种方式,第一频率不变,但是占空比变化;也就是改变高低电平的宽度。第二占空比不变,频率变,这就不解释了一般是用第一种,也叫PWM调速。如何用单片机控制直流电机 通过与单片机相连的按键62616964757a686964616fe59b9ee7ad9431333431373161控制直流电机停启的电路如下图所示,通过P3.6口按键触发启动直流电机,P3.7口的按键触发停止直流电机的运行。由图可知,当P1.0输出高电平“1”时,NPN型三极管导通,直流电机得电转动;当P1.0输出低电平“0”时,NPN型三极管截止,直流电机停止转动。扩展资料:通过单片机产生PWM波控制直流电机程序include\"reg52.hdefine uchar unsigned chardefine uint unsigned intuchar code table[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};共阴数码管显示码(0-9)sbit xiaoshudian=P0^7;sbit wei1=P2^4;数码管位选定义sbit wei2=P2^5;sbit wei3=P2^6;sbit wei4=P2^7;sbit beep=P2^3;蜂鸣器控制端sbit motor=P1^0;电机控制sbit s1_jiasu=P1^4;加速按键sbit s2_jiansu=P1^5;减速按键sbit s3_jiting=P1^6;停止/开始按键uint pulse_count;INT0接收到的脉冲数uint num=0;num相当于占空比调节的精度uchar speed[3];四位速度值存储float bianhuasudu;当前速度(理论计算值)float reallyspeed;实际测得的速度float vv_min=0.0;vv_max=250.0;float vi_Ref=60.0;给定值float 单片机控制PWM直流电机的c程序!!!急求!!! /利用定时器控制产生占空比可变的 PWM 波按K1,PWM值增加,则占空比减小,电机减速。按K2,PWM值减小,则占空比增加,电机加速。当PWM值增加到最大值或减小到最小值时,蜂鸣器将报警。includeincludesbit K1=P1^4;PWM值增加键sbit K2=P1^5;PWM值减少键sbit BEEP=P3^7;蜂鸣器unsigned char PWM=0x7f;赋初值void Beep();void delayms(unsigned char ms);void delay(unsigned char t);void main(){P1=0xff;TMOD=0x21;TH0=0xfc;1ms延时常数TL0=0x66;频率调节TH1=PWM;脉宽调节TL1=0;EA=1;ET0=1;ET1=1;TR0=1;while(1){do{if(PWM!0xff){PWM+;delayms(10);}else Beep();}while(K1=0);do{if(PWM!0x02){PWM-;delayms(10);}else Beep();}while(K2=0);}}定时器0中断服务程序(频率)void timer0()interrupt 1{TR1=0;TH0=0xfc;TL0=0x66;TH1=PWM;TR1=1;P0=0x00;启动输出}定时器1中断服务程序(脉宽)void timer1()interrupt 3{TR1=0;P0=0xff;结束输出}蜂鸣器子程序void Beep(){unsigned char i;for(i=0;i;i+){delay(100);BEEP=!BEEP;Beep取反}BEEP=1;关闭蜂鸣器delayms(100);}延时子程序void delay(unsigned char t){while(t-);}延时单片机直流电机控制程序 以AVR Attiny2313为例,用的是BASCOM-AVR.,basic语言。将电机两极置于b0,b1口Config portb=outputDowait 1 `等待一秒portb.1=1 `=1表示b1口接 5vportb.0=0 `=0表示b0口接负极loop可以根据自己需要改写代码哪位大侠有51单片机控制直流电机的源程序 #includedefine uchar unsigned chardefine uint unsigned intsbit PWM11=P1^0;motorasbit PWM12=P1^1;sbit PWM21=P1^2;motorbsbit PWM22=P1^3;sbit MC1=P1^4;motora enablesbit MC2=P1^5;motorb enablesbit LED=P1^6;指示灯sbit FMQ=P1^7;蜂鸣器sbit key_qt=P0^0;motor2 引脚sbit key_sph=P0^1;升速键sbit key_spl=P0^2;降速键sbit limita1=P0^3;电机正a限位sbit limita2=P0^4;电机负a限位sbit limitb1=P0^5;电机正b限位sbit limitb2=P0^6;电机负b限位uchar keyval,cnt=0,cnt1=0,pwm=50,num;uchar m_mode=0;电机运行模式,1-电机正向;2-电机b正反向;3=电机b反向;4-电机a反向;bit flag=0;延时时间到标志uchar runflag=0;电机运行标志void delaynms(uint z){uint i,j;for(i=z;i>0;i-)for(j=110;j>0;j-);}void keychk(void){keyval=0xff;if(key_qt=0){delaynms(5);消抖if(key_qt=0)/确定按键按下{while(key_qt=0);keyval=1;}}if!key_sph){delaynms(5);消抖if!key_sph)/确定按键按下{while!key_sph);keyval=2;}}if!key_spl){delaynms(5);消抖if!key_spl)/确定按键按下{while!key_spl);keyval=3;}}}void t0isr()用51单片机控制直流电机控制的电路图以及仿真程序 51单片机实现了直流电机调速,可以加速、减速、转向,附有PROTEUS仿真电路和PROTEL电路以及相关的论文说明。单片机控制直流电机原理图和程序 直流电机测速+调速控制 有正转,反转,启动,停止,和加速,减速功能 电路图在如有疑问联 Q:641829514 Doshqu@163.com帮忙写一个单片机控制直流电机和舵机的程序 #include/包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义define KeyPort P3define DataPort P0/定义数据端口 程序中遇到DataPort 则用P0 替换sbit LATCH1=P2^2;定义锁存使能端口 段锁存sbit LATCH2=P2^3;位锁存sbit DCOUT1=P1^1;定义电机信号输出端口1sbit DCOUT2=P1^2;定义电机信号输出端口2unsigned char code dofly_DuanMa[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};显示段码值0~9unsigned char code dofly_WeiMa[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};分别对应相应的数码管点亮,即位码unsigned char TempData[8];存储显示值的全局变量函数声明void DelayUs2x(unsigned char t);us级延时函数声明void DelayMs(unsigned char t);ms级延时void Display(unsigned char FirstBit,unsigned char Num);数码管显示函数unsigned char KeyScan(void);键盘扫描void Init_Timer0(void);定时器初始化主函数void main(void){unsigned char num;Init_Timer0();初始化定时器0,主要用于数码管动态扫描TempData[0]=0x5E;'d'TempData[1]=0x39;'C'TempData[2]=0x06;'1'TempData[5]=0x5E;'d'TempData[6]=

#unsigned#占空比#pwm信号#电机控制器#char

随机阅读

qrcode
访问手机版