最近调试的直流电机控制,驱动器是L298N
单片机源程序如下:
- #include "led.h"
- #include "delay.h"
- #include "sys.h"
- #include "pwm.h"
- #include "usart.h"
- #include "exti.h"
- #include "key.h"
- int i=0;
- float err=0;
- float lasterr=0;
- float realspeed;
- float setspeed=460;
- float vu=0;
- float c=0;
- int led0=2400;
- float m=300;
- float w=350;
- int main(void)
- {
- delay_init(); //延时函数初始化
- uart_init(9600);
- EXTIX_Init();
- TIM2_Cap_Init(65535,5);
- TIM3_Int_Init(1000-1,7200-1); //=====定时器初始化 100ms一次中断
- NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);// 设置中断优先级分组2
- LED_Init(); //初始化与LED连接的硬件接口
- TIM1_PWM_Init(7119,0);
- while(1)
- {
- PID_Init();
- c=led0+vu;
- if(c>7199)
- c=7119.0;
- if(c<0.0)
- c=0.0;
- TIM_SetCompare4(TIM1,c);
- led0=c;
- printf("%f,%f,%f\r\n",setspeed,realspeed,err);
-
- }
- }
-
- void TIM3_IRQHandler(void) //TIM3中断
- {
- extern float realspeed;
- extern int i;
- if(TIM_GetITStatus(TIM3, TIM_IT_Update) != RESET) //检查指定的TIM中断发生与否
- {
- TIM_ClearITPendingBit(TIM3, TIM_IT_Update); //清除TIMx的中断待处理位
- realspeed=0.985*i*10*60/260;
- i=0;
- }
- }
复制代码
所有资料51hei提供下载:
直流电机调速.7z
(196.02 KB, 下载次数: 101)
|