利用單片機PWM信號進行舵機控制[圖]

2020-11-25 OFweek維科網

  脈衝計數可以利用51單片機的內部計數器來實現,但是從軟體系統的穩定性和程序結構的合理性看,宜使用外部的計數器,還可以提高CPU的工作效率。實驗後從精度上考慮,對於FUTABA系列的接收機,當採用1MHz的外部晶振時,其控制電壓幅值的變化為0.6mV,而且不會出現誤差積累,可以滿足控制舵機的要求。最後考慮數字系統的離散誤差,經估算誤差的範圍在±0.3%內,所以採用單片機和8253、8254這樣的計數器晶片的PWM信號產生電路是可靠的。圖3是硬體連接圖。

 

  圖3 PWA信號的計數和輸出電路

 

  基於8253產生PWM信號的程序主要包括三方面內容:一是定義8253寄存器的地址,二是控制字的寫入,三是數據的寫入。軟體流程如圖4所示,具體代碼如下。

  //關鍵程序及注釋:

  //定時器T0中斷,向8253發送控制字和數據

  void T0Int() interrupt 1

  {

  TH0 = 0xB1;

  TL0 = 0xE0; //20ms的時鐘基準

  //先寫入控制字,再寫入計數值

  SERVO0 = 0x30; //選擇計數器0,寫入控制字

  PWM0 = BUF0L; //先寫低,後寫高

  PWM0 = BUF0H;

  SERVO1 = 0x70; //選擇計數器1,寫入控制字

  PWM1 = BUF1L;

  PWM1 = BUF1H;

  SERVO2 = 0xB0; //選擇計數器2,寫入控制字

  PWM2 = BUF2L;

  PWM2 = BUF2H;

  }

 

  

  圖4 基於8253產生PWA信號的軟體流程

 

  當系統的主要工作任務就是控制多舵機的工作,並且使用的舵機工作周期均為20ms時,要求硬體產生的多路PWM波的周期也相同。使用51單片機的內部定時器產生脈衝計數,一般工作正脈衝寬度小於周期的1/8,這樣可以在1個周期內分時啟動各路PWM波的上升沿,再利用定時器中斷T0確定各路PWM波的輸出寬度,定時器中斷T1控制20ms的基準時間。

  第1次定時器中斷T0按20ms的 1/8設置初值,並設置輸出I/O口,第1次T0定時中斷響應後,將當前輸出I/O口對應的引腳輸出置高電平,設置該路輸出正脈衝寬度,並啟動第2次定時器中斷,輸出I/O口指向下一個輸出口。第2次定時器定時時間結束後,將當前輸出引腳置低電平,設置此中斷周期為20ms的1/8減去正脈衝的時間,此路PWM信號在該周期中輸出完畢,往復輸出。在每次循環的第16次(2×8=16)中斷實行關定時中斷T0的操作,最後就可以實現8路舵機控制信號的輸出。

  也可以採用外部計數器進行多路舵機的控制,但是因為常見的8253、8254晶片都只有3個計數器,所以當系統需要產生多路PWM信號時,使用上述方法可以減少電路,降低成本,也可以達到較高的精度。調試時注意到由於程序中脈衝寬度的調整是靠調整定時器的初值,中斷程序也被分成了8個狀態周期,並且需要嚴格的周期循環,而且運行其他中斷程序代碼的時間需要嚴格把握。

  在實際應用中,採用51單片機簡單方便地實現了舵機控制需要的PWM信號。對機器人舵機控制的測試表明,舵機控制系統工作穩定,PWM佔空比 (0.5~2.5ms 的正脈衝寬度)和舵機的轉角(-90°~90°)線性度較好。

  參考文獻

  1 胡漢才.單片機原理及接口技術。清華大學出版社.1996

  2 王時勝,姜建平。採用單片機實現PWM式D/A轉換技術。電子質量.2004

  3 劉歌群。盧京潮。閆建國。薛堯舜。用單片機產生7路舵機控制PWM波的方法。機械與電子.2004

相關焦點

  • 多路舵機控制PWM發生器的設計與Proteus仿真
    以Proteus和Keil軟體為基礎,介紹了在Proteus環境下利用51單片機產生多路PWM脈衝的實現方法。最後以一個典型的應用實例驗證了設計的可行性與可靠性。實驗證明,本系統可在單片機定時器資源有限的情況下同時對多個舵機的輸出轉角進行控制。
  • 對180度360度sg90舵機的使用經驗+單片機程序
    PWM信號:PWM,英文名Pulse Width Modulation,是脈衝寬度調製縮寫,它是通過對一系列脈衝的寬度進行調製,等效出所需要的波形(包含形狀以及幅值),對模擬信號電平進行數字編碼,也就是說通過調節佔空比的變化來調節信號、能量等的變化,佔空比就是指在一個周期內,信號處於高電平的時間佔據整個信號周期的百分比,例如方波的佔空比就是50%.
  • 51單片機分時控制8路舵機程序
    本程序中用到的頭文件 12c5a.H下載:http://www.51hei.com/f/12c5a.rar//分時控制舵機,採用的單片機是STC12c5a 51增強型單片機,晶振11.0592MHZ
  • PWM控制MOSFET搭建的H橋電路驅動直流電機仿真與單片機源碼
    PIC單片機 proteus H橋驅動直流電機PWM控制MOSFET搭建的H橋電路驅動直流電機運行仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)測試用例:(PWM控制led亮度的漸變 發表於 2020-09-11 51單片機溫度+pwm控制風扇轉速,且溫度在LCD1602上顯示 ; unsigned
  • AT89C2051多路舵機控制電路詳解
    以FUTABA-S3003型舵機為例,圖1是FUFABA-S3003型舵機的內部電路。本文引用地址:http://www.eepw.com.cn/article/282107.htm  舵機的工作原理是:PWM信號由接收通道進入信號解調電路BA66881。的12腳進行解調,獲得一個直流偏置電壓。該直流偏置電壓與電位器的電壓比較,獲得電壓差由BA6688的3腳輸出。
  • 基於IPM模塊的舵機控制電路設計
    該電路將舵機控制信號與舵機位置反饋信號比較獲得的直流偏置電壓信號作為脈寬調製晶片UC1637的輸入信號。UC1637根據輸入直流偏置電壓信號的變化輸出不同佔空比的PWM信號驅動IPM模塊內部不同IGBT的通斷,從而實現舵機的控制。
  • 四川【25g模擬舵機】_國華遙控模型廠您的滿意我們的動力
    四川【25g模擬舵機】,國華遙控模型廠您的滿意我們的動力,我們的產品種類齊全、價格合理、質量一流,規格嚴謹,得到了廣大消費者的一致好評認可。四川【25g模擬舵機】, 採用純數字舵機構建的自動化控制系統,不僅可以大幅提升系統性能,而且可以降低系統的生產維護成本,提高產品性價比,增強市場競爭力。
  • 使用樹莓派控制16路舵機驅動板(pca9685)
    使用樹莓派控制16路舵機驅動板(pca9685)在樹莓派上,可以通過RPI.GPIO方便地輸出PWM進行舵機控制。這時可以藉助舵機控制板來進行多路PWM控制。這是某寶常見的舵機控制板,這個板子也比較便宜,十幾塊錢一個。使用晶片PCA9685,I2C通信,只需要幾根i2c線就可以控制16路pwm,周期和佔空比都可控。
  • PCA9685--16路 PWM模塊舵機驅動板--STM32 IIC接口模塊
    ,可用於控制舵機、led、電機等設備,i2c通信,節省主機資源。就是想控制好幾臺舵機,但太佔用引腳資源就想到了這個神器。一、概述和硬體1、概述網上上面比較便宜。i2c通信,只需要2根i2c線就可以控制16路pwm,周期和佔空比都可控。可以多個模塊級聯。箭頭部分可以更改設備id。可以控制16路輸出端的開、關、pwm以及佔空比。
  • STM32F103VET6驅動舵機SG90
    SG90舵機1.sg902.PWM3.資原始碼4. 成果演示5. 工程獲取1.sg90舵機 在機器人機電控制系統中,舵機控制效果是性能的重要影響因素。舵機可以在微機電系統和航模中作為基本的輸出執行機構,其簡單的控制和輸出使得單片機系統非常容易與之接口。
  • 以STC12C5A60S2單片機為系統控制單元的系留飛艇地面監測系統設計
    艇載模塊需要完成的任務包括:通過無線通信模塊與地面站進行通信,根據制定的通信協議解析接收的命令,做相應的操作;為確保數據通信的正確性,將接收數據進行循環冗餘校驗,數據錯誤則放棄,正確則進行處理並由單片機PCA定時器生成PWM信號來控制雲臺水平和垂直轉動的舵機;與數字羅盤進行通信,獲取系留飛艇姿態信息發給地面站;單片機定時器0和定時器1對舵機帶動旋轉編碼器轉動時產生的脈衝進行計數並將其反饋給地面站;單片機外部中斷
  • 投幣器的輸出信號脈衝檢測
    目前,單片機要控制系統輸出4-20mA的電流信號的常用方案為:今天要推薦一款晶片:AD5410,該晶片是ANGLOG DEVICE生產的,單通道12位串行輸入的DAC晶片,與單片機的通信方式為SPI總線 發表於 2019-12-03
  • PWM原理
    導讀:學過單片機的同學,對PWM應該不陌生,一般學習單片機的第二個例程就是用PWM技術調節佔空比來控制LED亮度。本文引用地址:http://www.eepw.com.cn/article/275890.htm  脈寬調製(PWM,Pulse Width Modulation)是一種模擬控制方脈衝寬度調製,利用微處理器的數字輸出來對模擬電路進行控制的一種非常有效的技術,廣泛應用在從測量、通信到功率控制與變換的許多領域中。  PWM就是脈衝寬度調製,也就是佔空比可變的脈衝波形。
  • 51單片機控制舵機旋轉的設計
    這裡用到PCF8591 ADDA晶片 和51單片機機,和一個電位器。通過 控制 電位器,產生PWM波,控制舵機 旋轉。並在數碼管上顯示角度。 電路圖 ---------------- 讀取AD模數轉換的值,有返回值 ------------------------------------------------*/ unsigned int ReadADC(unsigned char Chl) { unsigned int Data; Start(); //啟始信號
  • 單片機控制的步進電機PWM控制程序
    8051單片機控制步進電機的C51語言編寫的PWM控制程序#include #include >#include #include "UPSD3200.H"#include "upsd_pwm.h"#define uint unsigned int#define uchar unsigned charPSD_REGS PSD8xx_reg _at_ csiop;#define KEYIO (~(PSD8xx_reg.DATAIN_A
  • 用SST單片機的PCA功能產生PWM脈衝
    一、程序說明:SST單片機帶有5路PCA模塊,PCA功能比普通的單片機相比提供更強的計時性,同時更少CPU的幹預,用它可以減少軟體的開銷和改進精度。
  • 利用單片機控制的推進定位控制系統設計
    切紙機完成的最基本動作是把待裁切的材料送到指定位置,然後進行裁切。其控制的核心是一個單軸定位控制。我公司引進歐洲一家公司的兩臺切紙設備,其推進定位系統的實現是利用單片機控制的。控制過程是這樣的,當接收編碼器的脈衝信號達到設定值後,單片機系統輸出信號,斷開進給電機的接觸器,同時電磁離合制動器的離合分離,剎車起作用以消除推進系統的慣性,從而實現精確定位。
  • 基於AVR單片機的LED照明燈控制系統設計
    當紅外接收器接收到紅外遙控信號時,通過外部中斷將AVR單片機從休眠模式中喚醒;AVR單片機開始解析紅外信號,如果與系統地址匹配,則將根據解析到的命令改變LED恆流源驅動的輸入,從而改變LED燈的狀態。本系統中,控制器ATmega8的主要作用為:解析紅外信號,對 LED驅動器進行控制。  2.2 紅外接收模塊  紅外接收模塊主要器件採用IRM- 2368V,常用於家庭DVD、電視、空調等家電的遙控中。
  • 脈衝寬度調製(PWM)器件的測試(圖)
    pwm器件的結構  pwm器件的內部結構比較複雜,不同種類pwm器件的結構也不完全相同。大多數pwm器件都具有基準電壓部分、振蕩部分、調寬控制部分、誤差放大部分、電流限制部分、輸出部分等,另外,有的種類還有軟啟動控制部分、快速關閉部分、欠壓鎖定部分等輔助部分。圖1為適用於高頻功率mos管驅動的uc1525a/27a的內部結構框圖。
  • 利用單片機來控制的數字移相器設計方案
    打開APP 利用單片機來控制的數字移相器設計方案 工程師黃明星 發表於 2018-07-20 10:33:00 本文介紹的基於單片機控制的數字移相器,採用環形隊列實現信號波形的任意相位移相,並且保持波形的幅度、頻率不變。其測試精度高,失真度小。系統原理方框圖如圖1所示。