舵機控制器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 ↩︎

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