設計硬件系統的時候,離不開元器件選型。那么我們在設計喵嗚ISO兩輪自平衡小車時,器件選型的依據是什么呢?且搬個小凳子坐下,聽我們細細說明吧。 主控芯片喵嗚ISO兩輪自平衡小車選用宏晶(STC)公司推出的IAP15W4K61S4作為控制芯片。 我們選擇IAP15W4K61S4作為主控芯片當然是有原因的啦: - 一是IAP15W4K61S4性能牛逼,滿足系統需求。
IAP15W4K61S4是STC生產的單時鐘/機器周期(1T)的增強型8051單片機,4K字節SRAM,5個16位定時器,6路15位高精度PWM,主頻能達到33.1776M。IAP15W4K61S4采用STC-Y5超高速CPU內核,在相同時鐘頻率下,速度比傳統8051快7~12倍,速度也比STC早期的1T系列單片機(如STC12/11/10系列)的速度快20%。 - 二是IAP15W4K61S4簡單易學,降低學習門檻。
眾多高校開設單片機課程都是以8051單片機作為講解對象,為此,大部分同學都是以“用8051單片機點亮個LED燈”的方式踏上了學習單片機這條不歸路的。IAP15W4K61S4是STC生產的單時鐘/機器周期(1T)的增強型8051單片機,但萬變不離其宗,IAP15W4K61S4始終還只是8051單片機,容易入門的特點仍在。 其實就是兩句話: 因為IAP15W4K61S4性能牛逼,所以選擇它; 因為IAP15W4K61S4簡單易學,所以選擇它。 有些人會質疑,STC15也是80C51內核單片機,運算速度那么慢,能行么? 對于質疑,我們可以用理論參數來回答,再不然,就用實踐來證明。 當然,對于我們工程師,打破砂鍋問到底是很有必要的,那么問題來了:STC15的運算速度到底有多慢?有沒有什么指標可以表示,和ARM對應指標相比如何? 帶著疑問,我們尋找答案。 MIPSMillion Instructions Per Second的縮寫,每秒處理的百萬級的機器語言指令數。這是衡量CPU速度的一個指標。像是一個Intel 80386 電腦CPU可以每秒處理3百萬到5百萬機器語言指令,既我們可以說80386是3到5MIPS的CPU。MIPS是衡量CPU性能的指標。 現如今CPU的頻率越來越高,又是流水線又是超標量計算又是雙核多核的,單純以時鐘頻率來衡量計算機的速度已經不再科學,用MIPS來衡量相對比較合理。 MIPS/MHz 表示 CPU 在多少MHz的運行速度下可以執行多少個MIPS,如10MIPS/MHz,表示如果CPU運行在1MHz的頻率下,每秒可執行一千萬條指令,如果CPU運行在5MHz的頻率下,每秒可執行五千萬條指令。 MIPS/MHz可以很好的反映CPU的運行速度。 以ARM7為內核的S3C44B0X的推薦最高工作頻率為66MHz,按照ARM公司提供的技術資料,ARM7類CPU的運算速度可按如下公式計算:MIPS=0.9×MHz,由此可得出,S3C44B0X的最大運算速度大約為0.9×66MHz=59.4MIPS。6M的51單片機通常是4個時鐘周期才能完成1條指令,乘法和除法指令更需要48個時鐘周期。這樣,初步估算6M的51單片機的運算速度應該在0.2~0.5MIPS之間。可見8位機與32位機的運算速度還是有巨大的差異的。再以AVR為例,它的數據吞吐率可達1MIPS/MHz,即1MHz的震蕩頻率可達1MIPS。 綜上,用MIPS衡量計算機速度合理,但對于不同的cpu,它的最高工作頻率不同,數據吞吐率也不同,所以不可一概而論。 STC15是1T 8051單片機,可以設置1個機器周期就是1個時鐘周期,我們在STC官網首頁可以看到這樣一句話: 一秒鐘能運行1000萬條指令的STC 8051也能做四軸飛行器就是說在最佳狀態下,STC15運算速度可達到10MIPS。如果您是營銷人員,您會只專注于最佳情況,也就是假定每條指令只要一個工作周期,這樣這款產品的性能就是10 MIPS。要知道程序可不可能一直只運行類似NOP這種單周期指令,如果您想了解最低的理論性能,那么就會假定每條指令需要6個工作周期,這就會得到1.66(10/6)MIPS。 傳感器喵嗚ISO兩輪自平衡小車選用MPU-6050三軸加速度傳感器/三軸陀螺儀一體芯片。 這是最主要的姿態傳感器。 InvenSense公司的MPU-6050芯片內部集成了三軸加速度計和三軸陀螺儀,不僅消除了我們焊接電路板時易造成的加速度計和陀螺儀之間的對準誤差(alignment error),而且由于其內置了數字可編程的低通濾波器,在飛行器經受較大振動時,可用程序設置適當頻率的低通濾波器,用來濾掉高頻振動。這是一個很有效的方法用來減小四軸機體振動對陀螺儀數據的影響,這個方法同樣適用于該公司的ITG3205。另外,MPU-6050內置一個可擴展的數字運動處理器DMP,還可用I2C連接一個第三方的數字傳感器,比如磁力計。 以下列出部分特征: - 具有131LSBs/°/sec敏感度與全格感測范圍為±250、±500、±1000與±2000°/sec(dps)的3軸角速度感測器(陀螺儀);
- 可程式控制,且程式控制范圍為+-2g 4g ,8g 16g的3軸加速度傳感器;
- 數字運動處理引擎DMP可減少負重的融合演算數據。
- 感測器同步化。姿態感應等的負荷;
- 高達400K Hz快速模式的I2C。
從數據手冊中找到刻度系數表,用輸出值除以這些刻度系數,即可得到以°/s為單位的角速度值和以g為單位的加速度值   以MPU6050加速度測量值為例:當測量范圍是±2g時,測量精度是16384LSB/g,這個參數的含義簡單說就是當測量的加速值是1g(重力加速度)時,那么加速度的輸出就是16384,這也163842g=32768,±2g對應±32768,MPU6050的ADC是16位的,所以不管測量范圍多大,最終的輸出范圍都不會超過±32768,所以測量范圍越大,精度就越低。下面計算一下測量范圍是±16g時的精度:162/65536=0.00048828125,然后取倒數1/0.00048828125=2048,和手冊上完全一樣。LSB/g是針對數字輸出的傳感器而言的。 單位是LSB(即最低位所表示的量)。 LSB(Least Significant Bit),意為最低有效位。以一個12位數據采集卡為例,她的采樣精度為4096個點,模擬量輸入范圍是0~10V,那么一個點對應的模擬量是10V/4096,約等于2.5mV,0.5LSB的意思就是采集誤差是2.5mV/2=1.25mV。 對兩輪自平衡小車而言,MPU-6050的精度和性能已經足夠,可只需要一顆芯片就能滿足系統需求,而且節省人民幣。如果采用多組件方案,例如分別選用陀螺儀ENC-03和加速度傳感器MMA7260,那浪費在傳感器上的人民幣就翻要幾倍,從成本角度看,這才凸顯出MPU-6050的性價比高大上呀。 電機驅動芯片喵嗚ISO兩輪自平衡小車選用飛思卡爾半導體公司生產的直流電機驅動器件MC33186。 另外,常見應用于兩輪自平衡小車的直流電機驅動器件還有:B6612FNG、LN298N。 棄用L298N、B6612FNG原因有二:一是L298N體積大,工作效率低下;二是OpenBalan選用的電機堵轉電流高達3A,一對電機同時堵轉時電流達6A,而L298N和B6612FNG的可承受最大電流不符合要求。MC33186具有大電流MOSFET-H橋結構,工作效率高,最大輸出峰值電流達8A。TB6612FNG采用SSOP24封裝,體積超小,非L298N的Multiwatt15大塊頭封裝可比。 MC33186VW與MC33186DH有什么區別性能一樣,VW是無鉛封裝 USB-TTL芯片喵嗚ISO兩輪自平衡小車板載USB-TTL下載電路,因為考慮到不是每個同學手上都有USB-TTL下載模塊的,而且市面上的USB-TTL模塊質量參差不齊,質量差的還會導致電腦藍屏。 通過一根安卓手機標配的MicroUSB線,就可以輕易簡單地對BALANCE-ISO進行固件更新和調試參數。如此簡單的操作步驟,想來隨便從大街拉一個路人過來應該都可以完成。 無線通信模塊(藍牙)考慮手機遙控功能,以及后續版本要實現無線升級固件功能,放棄使用2.4G通信,決定選用藍牙。但藍牙協議是很復雜的,憑我現有的時間難以寫出來。而藍牙模塊已經封裝好,只要和單片機串口正確連接就可通信,很容易將喵嗚ISO兩輪自平衡小車與安卓設備對接起來。剩下的只是去開發適用于安卓平臺的APP或者上位機了。 元器件選型就是這樣子。
|