# hal库-STM32--二维云台 **Repository Path**: linsen06/hal-STM32-two-dimensional-cradle-head ## Basic Information - **Project Name**: hal库-STM32--二维云台 - **Description**: hal-STM32-two-dimensional-cradle-head - **Primary Language**: C - **License**: MulanPSL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 1 - **Created**: 2022-07-30 - **Last Updated**: 2024-01-23 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # hal库-STM32--二维云台 #### 介绍 hal-STM32-two-dimensional-cradle-head 使用stm32芯片来控制两个舵机,从而来实现二维云台 舵机有多种,本文仅有固定180度舵机(TD-8120MG) #### 舵机原理与接线 通过向舵机的信号信号线发送 **PWM** 信号来控制舵机的输出量; 一般来说,PWM的周期以及 **占空比** ,我们是可控的,所以PWM脉冲的占空比直接决定了输出轴的位置。 | 红色 | 棕色 | 黄色 | |-----|-----|-----| | VCC | GND | 信号线 | 需要注意的是gnd分为两根一根和vcc形成回路,一根和信号线形成回路。 #### 程序准备 1. 使用cubemx生成的源代码 将模式选择为 **PWM Generation CHx** 随后将 **预分配系数(Prescaler)** 设置为hclk那个框中填入数字的10倍-1;将 **Counter Period ** 的值设置为 **2000** 。(这样设置的tim的频率就是50HZ) 例如: f401是84MHZ那么预分配系数(Prescaler)就填写为840-1。 2. 将上面文件夹中的文件下载并加入。 3. 在 **usercradle.h** 的文件夹中修改自己的 **TIM_HandleTypeDef名称和通道** 。 #### 使用说明 1. 包含文件名 2. 直接调用 **usercradle.h** 的函数 ``` void cradle_start(void);//开启pwm void cradle_down_num(uint32_t down_num);//设置下舵机的占空比 void cradle_up_num(uint32_t up_num);//设置上舵机的占空比 ,up_num的值必须在50--250之间 void cradle_all_num(uint32_t down_num,uint32_t up_num);//同时设置上下两个的数值 void cradle_down_angle(float down_angle);//设置下需要旋转的角度 void cradle_up_angle(float up_angle);//设置上需要旋转的角度 void cradle_all_angle(float down_angle,float up_angle);//设置需要旋转的角度 ```