此贴包括程序加仿真,是基于32单片机的PWM直流电机调速系统,应用了KEIL5和PROTEUS8.9两款软件,所用驱动芯片为L298N.
仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)
单片机源程序如下:
- #include "sys.h"
- #include "timer.h"
- #include "gpio.h"
- #include "key.h"
- int main(void)
- {
- u16 arr=999;
- u16 psc=71;
- u16 led_dt = 5000;
- unsigned char KEY=0;
- int D=1;//电机挡位变量,初始挡位为一档
- RCC_Configuration(); //系统时钟初始化
- GPIO_Configuration();//端口初始化
- TIM3_Configuration(arr,psc);//定时器和pwm配置
- Key_Init();
- GPIO_SetBits(GPIOA,GPIO_Pin_8);
- GPIO_ResetBits(GPIOA,GPIO_Pin_9);
- while(1)
- {
- TIM_SetCompare2(TIM3,led_dt*D); //用的是TIM3的通道2,输出PWM 送到相应的寄存器中
- KEY=Key_Scan();
- if(KEY==42)//“*”的ascll码是42,控制电机反转
- {
- GPIO_SetBits(GPIOA,GPIO_Pin_9);
- GPIO_ResetBits(GPIOA,GPIO_Pin_8);
- KEY=0;
- }
- if(KEY==35)//“#”的ascll码是35,控制电机正转
- {
- GPIO_SetBits(GPIOA,GPIO_Pin_8);
- GPIO_ResetBits(GPIOA,GPIO_Pin_9);
- KEY=0;
- }
- // if(GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_7)== Bit_RESET)
- }
- }
复制代码
Proteus仿真不转 求帮助:
基于stm32的PWM直流电机调速.7z
(246.71 KB, 下载次数: 17)
|