基于步進電機驅動器MC33991的車速表設計
MC68HC908GR16的SPI時鐘引腳SPSCK、主機數據輸入從機輸出引腳MISO、主機數據輸出從機輸入引腳MOSI和I /O引腳PTC5, 分別接MC33991的SCLK、SO、SI、CS引腳, RSTB引腳與單片機的RST引腳連接。
2.2 軟件設計
2.2.1 SPI通信程序
微控制器MC68HC908GR16 上電后要初始化MC33991。MC68HC908GR16的SPI設為主模式。發送數據的格式要符合MC33991接、發數據的時序,MC33991收發數據的時序如圖3所示。SPI無數據傳輸時CS=1, 時鐘信號保持低電平。有數據傳輸時,MC33991的SI引腳在SCLK時鐘的下降沿讀入1位數據, 而輸出引腳SO在時鐘的上升沿輸出數據。設MC68HC908GR16的SPCR寄存器時鐘極性位COPL=0,時鐘相位控制位CPHA=1。設引腳PTC5方向寄存器DDRC5=1, 設為輸出。不與MC33991通信時令PTC5保持高電平。MC33991每次接收的數據必須是16,32, 48位。

2.2.2 MC33991初始化流程
MC33991的初始化流程圖如圖4所示。微控制器先向PECCR發送命令關閉步進電機, 并在2個電機停止轉動的情況下發送時鐘校正命令。經過時鐘校正后, MC33991內部時鐘穩定在1 MHz ( ±10%) ,校正時鐘后使能電機, 可允許2個或者其中一個工作, 然后向寄存器RTZCR發送命令設置指針回零速度, 向VECR寄存器發送命令控制電機的最大轉速。如果步進電機回零時指針不在一個整步位置或者磁場排列沒有對齊, MC33991回零檢測會發生錯誤,導致回零失敗。所以在發送電機回零命令前, 先使電機前進24微步或者30, 36, 42微步, 以保持磁場排列整齊, 然后發送指針回零命令, 指針轉向電機的逆時針極端。每一時刻只能有一個指針回零,微控制器檢測回零狀態直至回零結束。

初始化時需要注意, 時鐘校正可選為1 MHz,單片機發送完時鐘校正命令后拉低引腳, 延時8 μs后再將其拉高。如果電機的齒輪減速比較低則選擇0.667 MHz, 這種情況需要延時12 μs。
2.2.3 車速檢測
MC33991初始化后設MC68HC908GR16的定時器1通道零為輸入捕捉模式, 在輸入脈沖的下降沿進入捕捉中斷, 并計算2次下降沿的計數差值Δt。本設計的車速儀表盤的最大車速為120 km/h,最高速度與最低速度對應刻度盤的夾角為225 °, 對應MC33991的靜態指示位為2 700。
汽車行駛速度可以利用以下公式計算

式中: n———2次速度脈沖間隔內計數器的計數值之差; T———微控制器計數器時鐘源的周期;D———車輪外徑; μ———汽車輪胎變形系數( 一般取0.93~0.96) ; N———車輪轉一周, 車速傳感器發送的脈沖數。
微控制器根據計算得到的速度在儀表盤上的位置, 計算出MC33991的靜態指示位置, 并把靜態指示位發給MC33991, MC33991驅動儀表指向指定位置。為加快程序運行速度, 先根據車速、汽車車速儀表盤的參數計算出一個常數Con。

式中: vmax———汽車儀表盤指示的最大速度;C———用于調整指針指示誤差的常數。其中C用來調整車速表的指示位置, 使儀表指示速度不小于汽車的實際速度。車速表指針應指向
的位置P0=Δt /Con, 由微控制器直接向MC33991發送此位置( P0) 命令, MC33991接到位置命令后即控制儀表電機旋轉, 指向刻度盤的對應位置。
3 結束語
本文詳細介紹了一種汽車車速表的設計方案,設計采用專用集成驅動芯片MC33991。此表在試驗臺運行測試時, 指針可以平滑轉動, 在加速度較高時也沒有超調抖動。與傳統機械式儀表相比, 這種儀表響應速度快、抖動小、產品的穩定性和可靠性高。與采用其它驅動芯片的步進電機式儀表相比,首先此表占用硬件資源少, 控制方便, 儀表響應快; 其次能從任意位置以設定的速度恒速回零, 到達零點時無抖動; 最后儀表轉動時, 微控制器可以隨時通過MC33991讀取步進電機的工作狀態。本文引用地址:http://www.104case.com/article/196191.htm
評論