舵机控制器STC8G1K

■ 设计目的


为了能够更好地实现测试, 设计一个能够通过模拟量(0~5V)控制转角的舵机控制板。

设计参数:

  • 通道:2个通道
  • 输入控制电压范围:0~5V,对应舵机转角从最左到最右

 

□ 设计电路


1. 原理图与PCB1

▲ 控制器的原理图

▲ 控制器的原理图

▲ 控制器的PCB版图以及焊接后的实验电路板

▲ 控制器的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]);
}

▲ 控制舵机运动情况

▲ 控制舵机运动情况

 

※ 结论


● 主要用途

测试模块可以用于两个舵机进行独立的运动。


  1. AD设计工程文件:AD\Test\2020\Tools\ServoSTC8G1k.PcbDoc * ↩︎

  2. C51程序工程文件:C51\STC\Test\2020\Tools\ServoSTC8G\ServoSTC8G.uvproj ↩︎

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章