|
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
屏幕截圖 1.png (63.91 KB, 下載次數(shù): 57)
下載附件
2023-4-27 00:20 上傳
屏幕截圖 2.png (21.57 KB, 下載次數(shù): 47)
下載附件
2023-4-27 00:29 上傳
媒體1[00_00_05--00_00_25].gif (419.91 KB, 下載次數(shù): 48)
下載附件
2023-4-27 00:41 上傳
單片機(jī)源程序如下:
如圖,定時(shí)器1的四個(gè)通道輸出PWM脈沖驅(qū)動(dòng)四個(gè)舵機(jī)到不同角度,一號(hào)舵機(jī)由于輸入的PWM的寬度在主函數(shù)中循環(huán)調(diào)整,可以來回轉(zhuǎn)動(dòng)。主函數(shù)如下:
int main(void)
{
/* USER CODE BEGIN 1 */
uint8_t i = 0;
/* USER CODE END 1 */
/* MCU Configuration--------------------------------------------------------*/
/* Reset of all peripherals, Initializes the Flash interface and the Systick. */
HAL_Init();
/* USER CODE BEGIN Init */
/* USER CODE END Init */
/* Configure the system clock */
SystemClock_Config();
/* USER CODE BEGIN SysInit */
/* USER CODE END SysInit */
/* Initialize all configured peripherals */
MX_GPIO_Init();
MX_TIM2_Init();
MX_TIM1_Init();
/* USER CODE BEGIN 2 */
HAL_TIM_PWM_Start(&htim1, TIM_CHANNEL_1);
HAL_TIM_PWM_Start(&htim1, TIM_CHANNEL_2);
HAL_TIM_PWM_Start(&htim1, TIM_CHANNEL_3);
HAL_TIM_PWM_Start(&htim1, TIM_CHANNEL_4);
HAL_TIM_PWM_Start(&htim2, TIM_CHANNEL_1);
HAL_TIM_PWM_Start(&htim2, TIM_CHANNEL_2);
HAL_TIM_PWM_Start(&htim2, TIM_CHANNEL_3);
HAL_TIM_PWM_Start(&htim2, TIM_CHANNEL_4);
/* USER CODE END 2 */
/* Infinite loop */
/* USER CODE BEGIN WHILE */
while (1)
{
/* USER CODE END WHILE */
while (1)
{
HAL_Delay(10);
if(i < 200)
{
__HAL_TIM_SET_COMPARE(&htim1, TIM_CHANNEL_1, 50+i);
i++;
}
else
break;
}
while (1)
{
HAL_Delay(10);
if(i > 0)
{
__HAL_TIM_SET_COMPARE(&htim1, TIM_CHANNEL_1, 50+i);
i--;
}
else
break;
}
/* USER CODE BEGIN 3 */
}
/* USER CODE END 3 */
}
在proteus中對(duì)舵機(jī)的屬性進(jìn)行了修改:重新設(shè)定最小PWM寬度為0.5ms與2.5ms。
需要說明的是先前想使用定時(shí)器2,但是不知什么原因,PA0(定時(shí)器2的默認(rèn)通道1一直沒輸出),其余三個(gè)通道正常,CubeEMX的各通道配置方法也沒看出問題。三個(gè)軟件的設(shè)計(jì)與proteus仿真文件全部奉上
望大神明示:
仿真和代碼.7z
(312.84 KB, 下載次數(shù): 49)
2023-4-27 01:16 上傳
點(diǎn)擊文件名下載附件
包括仿真全部在內(nèi) 下載積分: 黑幣 -5
|
評(píng)分
-
查看全部評(píng)分
|