完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
相关推荐
4个回答
|
|
问的我一脸迷糊,你这是外行吗?
|
|
|
|
我就来看看 。。。。。。。。。。。。
|
|
|
|
/*******************************************************************/
/* 程序名:PWM直流电机调速 */ /* 晶振:11.00592 MHz CPU型号:AT89C51 */ /* 直流电机的PWM波控制,可以直接的调速从0到5级的调速 */ /*****************************************************************/ #include #define TH0_TL0 (65536-1000)//设定中断的间隔时长 unsigned char count0 = 50;//低电平的占空比 unsigned char count1 = 0;//高电平的占空比 bit Flag = 1;//电机正反转标志位,1正转,0反转 bit start =0; //电机停止标志 ***it Key_add=P3 ^ 0; //电机减速 ***it Key_dec=P3 ^ 1; //电机加速 ***it Key_turn=P3 ^ 2; //电机换向 ***it Key_start_stop=P3 ^ 3; //电机启停 ***it PWM1=P2^6;//PWM 通道 1,反转脉冲 ***it PWM2=P2^7;//PWM 通道 2,正转脉冲 unsigned char Time_delay; /************函数声明**************/ void Delay(unsigned char x); void Motor_speed_high(void); void Motor_speed_low(void); void Motor_turn(void); void start_stop(void); void Timer0_init(void); /****************延时处理**********************/ void Delay(unsigned char x) { Time_delay = x; while(Time_delay != 0);//等待中断,可减少PWM输出时间间隔 } /*******按键处理加pwm占空比,电机加速**********/ void Motor_speed_high(void)// { if(Key_add==0) { Delay(10); if(Key_add==0) { count0 +=20; if(count0 >= 100) { count0 = 100; } } while(!Key_add);//等待键松开 } } /******按键处理减pwm占空比,电机减速*****/ void Motor_speed_low(void) { if(Key_dec==0) { Delay(10); if(Key_dec==0) { count0 -= 20; if(count0 <= 0) { count0 = 0; } } while(!Key_dec ); } } /******************电机的启停控制*******************/ void start_stop() {start = 0; PWM1 =0; PWM2 =0; while(1) { if(Key_start_stop==0) { while(Key_start_stop == 0); start = ~start; if(start == 1) { PWM1 = 1;PWM2 = 0; } else { PWM1 =0;PWM2 =0; } } } } /************电机正反向控制**************/ void Motor_turn(void) { if(Key_turn == 0) { Delay(10); if(Key_turn == 0) { Flag = ~Flag; } while(!Key_turn); } } /***********定时器0初始化***********/ void Timer0_init(void) { TMOD=0x01; //定时器0工作于方式1 TH0=TH0_TL0/256; TL0=TH0_TL0%256; TR0=1; ET0=1; EA=1; } /*********主函数********************/ void main(void) { Timer0_init(); start_stop(); while(1) { Motor_turn(); Motor_speed_high(); Motor_speed_low(); } } /**************定时0中断处理******************/ void Timer0_int(void) interrupt 1 using 1 { TR0 = 0;//设置定时器初值期间,关闭定时器 TL0 = TH0_TL0 % 256; TH0 = TH0_TL0 / 256 ;//定时器装初值 TR0 = 1; if(Time_delay != 0)//延时函数用 { Time_delay--; } if(start==0) { PWM1 = 0; PWM2 = 0; } else PWM1 = 1; PWM2 = 0 ; if(Flag == 1)//电机正转 { PWM1 = 0; if(++count1 < count0) { PWM2 = 1; } else PWM2 = 0; if(count1 >= 100) { count1=0; } } else //电机反转 { PWM2 = 0; if(++count1 < count0) { PWM1 = 1; } else PWM1 = 0; if(count1 >= 100) { count1=0; } } } |
|
|
|
J636495 发表于 2016-12-25 15:18 请问电动机转速是转子相对于定子的速度,假设定子安装在一个可以转动一定角度的支架上,当转子稳定运转过程中给定子一个幅值为2°左右按正弦信号转动波动量的话,这个信号是否会叠加到转子转速上去呢? |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
1655 浏览 1 评论
【⌈嵌入式机电一体化系统设计与实现⌋阅读体验】+磁力输送机系统设计的创新与挑战
1652 浏览 0 评论
3576 浏览 2 评论
5118 浏览 6 评论
4157 浏览 0 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-22 02:59 , Processed in 0.436806 second(s), Total 49, Slave 42 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号