■ 设计目的
为了能够更好地实现测试, 设计一个能够通过模拟量(0~5V)控制转角的舵机控制板。
设计参数:
- 通道:2个通道
- 输入控制电压范围:0~5V,对应舵机转角从最左到最右
□ 设计电路
1. 原理图与PCB1
▲ 控制器的原理图
▲ 控制器的PCB版图以及焊接后的实验电路板
管脚 | 符号 | 功能描述 |
---|---|---|
1 | +5V | 工作电源 |
2 | GND | 工作电源地 |
3 | TXD | 单片机的UART发送 |
4 | RXD | 单片机的UART接收 |
5 | AD00 | 控制模拟输入1 |
6 | AD01 | 控制模拟输入2 |
7 | PUL01 | PWM输出1 |
8 | PUL02 | PWM输出2 |
2. 单片机软件2
-
单片机的工作频率:35MHz
-
单片机串口命令:
void SerialDebugProcessBuffer(void) {
unsigned int nNumber;
SerialDebugBuffer2Argument();
if(g_ucSDANumber == 0) return;
if(strcmp("hello", (char *)STD_ARG[0]) == 0)
printf("%s is ready !\r\n", VERSION_STRING);
else IFARG0("adset") {
g_ucUARTSetFlag = 0;
} else IFARG0("servo1") {
sscanf(SDA(1), "%d", &nNumber);
g_ucPWM1 = (unsigned char)nNumber;
g_ucUARTSetFlag = 1;
} else IFARG0("servo2") {
sscanf(SDA(1), "%d", &nNumber);
g_ucPWM2 = (unsigned char)nNumber;
g_ucUARTSetFlag = 1;
} else IFARG0("servo12") {
sscanf(SDA(1), "%d", &nNumber);
g_ucPWM1 = (unsigned char)nNumber;
sscanf(SDA(2), "%d", &nNumber);
g_ucPWM2 = (unsigned char)nNumber;
g_ucUARTSetFlag = 1;
}
else printf("Error command : %s !\r\n", STD_ARG[0]);
}
▲ 控制舵机运动情况
※ 结论
● 主要用途
测试模块可以用于两个舵机进行独立的运动。