欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
基于STM32單片機的PWM直流調速系統仿真與程序設計
[打印本頁]
作者:
__myth丶
時間:
2021-4-20 18:22
標題:
基于STM32單片機的PWM直流調速系統仿真與程序設計
本帖包含仿真與例程,是基于STM32單片機的PWM直流電機調速,通過定時器3的三通道即B0口輸出PWM波,繼而通過L298N驅動芯片驅動電機轉動,并通過LCD液晶顯示電機的狀態與擋位。
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
51hei.png
(44.26 KB, 下載次數: 40)
下載附件
2021-4-20 19:16 上傳
單片機源程序如下:
#include "sys.h"
#include "timer.h"
#include "gpio.h"
#include "key.h"
#include "math.h"
#include "lcd12864.h"
int main(void)
{
u16 arr=60000;
u16 psc=2;
u16 led_dt = 550;
unsigned char KEY=0;
int start=0;//電機啟停變量
int D=100;//電機轉速調節參數
int d=1;//電機擋位變量,擋位1-6
RCC_Configuration(); //系統時鐘初始化
GPIO_Configuration();//端口初始化
TIM3_Configuration(arr,psc);//定時器和pwm配置
Key_Init();
Init_12864(); //初始化12864液晶
LCD_DispACat(8,8);
LCD_P6x8Str(5,45,"PWM-->Motor");
GPIO_ResetBits(GPIOC,GPIO_Pin_5);
GPIO_ResetBits(GPIOC,GPIO_Pin_6);
while(1)
{
TIM_SetCompare3(TIM3,led_dt*D); //用的是TIM3的通道2,輸出PWM 送到相應的寄存器中
KEY=Key_Scan();
//***********************電機啟停***************************//
if(KEY==67)//C啟動
{
delay_ms(1);//延時消抖
start=1;
GPIO_SetBits(GPIOC,GPIO_Pin_5);
GPIO_ResetBits(GPIOC,GPIO_Pin_6);
LCDClearScreen(AllScreen);
LCD_P6x8Str(4,25," start ");
}
if(KEY==68)//D停止
{
start=0;
GPIO_ResetBits(GPIOC,GPIO_Pin_5);
GPIO_ResetBits(GPIOC,GPIO_Pin_6);
LCDClearScreen(AllScreen);
LCD_P6x8Str(4,25," stop ");
}
//*********************電機正反轉***************************//
if((KEY==42)&&(start==1))//“*”的ascll碼是42,控制電機反轉
{
GPIO_SetBits(GPIOC,GPIO_Pin_6);
GPIO_ResetBits(GPIOC,GPIO_Pin_5);
LCDClearScreen(AllScreen);
LCD_P6x8Str(4,11,"Negative Direction");
}
if((KEY==35)&&(start==1))//“#”的ascll碼是35,控制電機正轉
{
GPIO_SetBits(GPIOC,GPIO_Pin_5);
GPIO_ResetBits(GPIOC,GPIO_Pin_6);
LCDClearScreen(AllScreen);
LCD_P6x8Str(4,11,"Positive Direction");
}
//**********************電機加減速**************************//
if((KEY==65)&&(start==1))//A加速
{
D=D-20;
d++;
if(D<10)
{
D=0;
d=6;
}
LCDClearScreen(AllScreen);
LCD_P6x8Str(4,27," Speed up ");
}
if((KEY==66)&&(start==1))//B減速
{
D=D+20;
d--;
if(D>100)
{
D=100;
d=1;
}
LCDClearScreen(AllScreen);
LCD_P6x8Str(4,27," Slow down ");
}
if(start!=0)
{
Key_Gear(d);
}
// if(GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_7)== Bit_RESET)
}
}
復制代碼
屏幕可以顯示,但是電機不轉,求幫助:
Desktop.7z
(283.04 KB, 下載次數: 42)
2021-4-20 19:17 上傳
點擊文件名下載附件
作者:
51hei團團
時間:
2021-4-20 19:23
不管按哪個鍵,電機都不轉,問題大概在哪里?
作者:
__myth丶
時間:
2021-4-21 12:41
我是作者,俺也不知道咋回事,就是在加LCD之前都還是好好的,加了之后就感覺仿真帶不動了一樣,其實我感覺整個程序和仿真應該沒有問題,但是屏蔽關于LCD的代碼也不管用了。電機是轉的,要先點啟動鍵,才能執行其他操作,但是一點啟動鍵就會變很卡,建議打開示波器會看的明顯一些,再然后你點加速會在卡一會后觀察到PWM波形占空比發生變化。
歡迎光臨 (http://m.raoushi.com/bbs/)
Powered by Discuz! X3.1