# 正交編碼器在系統中的工作與訊號變化

**URL:** <https://forum.digikey.com/t/topic/42400>\
**Category:** 常見問題\
**Tags:** banner-engineering-corporation\
**Created:** [June 21, 2024, 6:13am UTC](https://forum.digikey.com/t/topic/42400 "2024-06-21T06:13:06Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![Kevin\_6462](https://sea2.discourse-cdn.com/digikey/user_avatar/forum.digikey.com/kevin_6462/32/8856_2.png) [@Kevin\_6462](https://forum.digikey.com/u/Kevin_6462)\
**Post date:** [June 21, 2024, 6:13am UTC](https://forum.digikey.com/t/topic/42400/1 "2024-06-21T06:13:06Z")

</div>

## 什麼是正交編碼器?

正交編碼器是一種機電感測器，用於測量角位置、旋轉速度和方向的變化。它也可以測量相對於已知起始位置的位置。它的特點是兩個感測器在物理上相對於一個旋轉的中斷機構偏移。由此產生的組件產生正交波形。圖1給了一個例子。在這個例子中，一對 [Banner Engineering](https://www.digikey.tw/zh/supplier-centers/banner-engineering) 的 [DS18VP6LP](https://www.digikey.tw/zh/products/detail/banner-engineering-corporation/DS18VP6LP/10650917) 逆向反射式感測器被一個機械快門打斷。

更多[逆向反射式感測器](https://www.digikey.tw/short/5m919jjz)。

正交編碼器這個術語包含了廣泛的技術。圖1給出了一個典型的例子，其中包括光學感測器和中斷盤。磁碟每轉一圈提供 4 個視窗。與商業上可用的感測器相比，這看起來很粗糙，每轉一圈就有幾十個甚至幾百個窗口。然而，即使是這種簡單的機制也能將圓分成16個部分（22.5度增量）。

正交編碼器是由輸出訊號定義的，而不是用於開發這些訊號的技術。請注意，正交編碼器也可以使用磁鐵和霍爾感測器、機械開關，甚至是黑白象限交替的紙張來製造。在所有情況下，都使用一對感測器來檢測變化。

 ![image](https://global.discourse-cdn.com/digikey/original/3X/8/1/81d0479c10a693777f680f15f3a6e0b60c254d88.jpeg)

**圖 1** ：大型 3D 列印正交編碼器示範器的圖片

## 「正交」這個字是什麼意思?

正交是描述兩個訊號之間相位關係的關係術語。具體來說，它描述了一個90度的關係。最主要的例子是如圖2所示的正弦和餘弦波形之間的關係。三角定義與此對話相關，因為 sin 和 cos 從根本上與物體的旋轉有關。

有可能產生一個基於正弦和餘弦訊號的直接測量的編碼器。一個罕見的，也許是老式的，模擬的例子是同步和伺服系統，其中測量正交或三相信號。

實際上，使用表示波形的數字方法要容易得多。如圖 2 的下半部所示，當對應的波形為正時，感測器 Q1 和 Q2 會做出反應。在這個系統中，我們將波形分成 4 個象限。我們看到每個感測器在兩個象限內都是正的。有時兩個感測器都是開啟的，有時兩個感測器都是關閉的。

透過觀看影片 1 可以更好地理解圖 2 中的模型。觀察狀態變化遵循一個可預測的模式，該模式使用 2 位元灰色編碼描述，序列為 00、01、11 和 10。回想一下，灰色碼描述了一個系統，其中一個位元在任何給定時間都發生變化。當你觀看影片時，感測器的 LED 指示燈似乎在向下「行走」。後來隨著方向從順時針變成逆時針，它們似乎正在向上行走。

 ![image](https://global.discourse-cdn.com/digikey/original/3X/8/1/81a2a93eae6dd23b01eae4b642a909f4f628e1e1.png)

**圖 2** ：正向（CW）方向的正交訊號，藍色訊號引導綠色訊號。當對應的訊號為正時，Q1 和 Q2 感測器啟動。

> **小貼士** ：術語正交在電子和通訊中經常遇到。從歷史的角度來看，一些最早的多相AC電動機是由90度偏移的訊號驅動的。這包括著名的特斯拉 AC 電機，與現代單相 AC 電機的啟動電路有著強烈的連結。在另一個例子中，正交描述了無線電接收機和發射機中的一個過程，我們使用「I」和「Q」訊號對應於同相和正交相信號。

**影片 1** ：影片顯示正交編碼器，順時針 3 秒，逆時針 3 秒。

## 隨著旋轉方向的改變，正交訊號是如何變化的?

到目前為止，我們假設正交訊號之間的相位關係是恆定的。換一種說法，我們假設一個系統沿著單一方向旋轉。

圖 3 顯示了旋轉方向反轉時的變化。訊號的正交（90度）性質仍然存在。然而，綠色波形現在處於領先地位。回想一下，原來的灰色編碼是 00、01、11、10。現在它被轉換成一個 00、10、11和 01 序列。

 ![image](https://global.discourse-cdn.com/digikey/original/3X/e/6/e67368504ee72aa87d4346342e03d34fcfa07178.png)

**圖 3** ：反向（CCW）方向的正交訊號，綠色訊號引導藍色訊號。

## 在具有正交編碼器的系統中如何保持位置?

我們謹慎地聲明，正交編碼器可以測量相對於已知起始位置的位置。換句話說，正交編碼器不是絕對位置感測器，因為它無法確定軸的位置作為直接讀取。相反，配備正交感測器的數位系統必須計算觀察到的轉換次數。這樣的系統必須在已知的「家」或「零」位置初始化計數。因此，所有的位置測量都被解釋為相對於主位置。錯過計數或失去記憶將導致丟失位置。

再一次，我們認識到相應的數位系統必須追蹤正交編碼器。它透過監控感測器灰色碼的「方向」來實現這一點。數字系統會在每次灰碼轉換時更新計數（位置變數）。

## 正交編碼器和相關係統會出現什麼問題?

這種系統級的整合需要仔細的程式設計。也許最大的挑戰之一與相關微控制器或可程式邏輯控制器（PLC）所使用的速度和程式技術有關。如果設備很慢或程式很慢（阻塞），它將錯過感測器轉換。因此，我們必須防範這種類型的錯誤以及噪音、感測器故障和間歇性電線問題。

一個典型的錯誤是從程式的超級循環（如Arduino loop()函數）內部監視編碼器感測器。系統看起來會正常工作，但隨著旋轉速度的增加，可能會失去計數。這個問題是複雜的，當馬達和感測器被納入一個回授系統，如比例積分導數控制器（PID）。這是非常困難的調試，因為問題可能是在PID程式碼或在推算位置（計數）。

使用中斷將大大有助於消除位置錯誤。然而，當我們考慮到維持這個臨界數字的重要性時，這是不夠的。當旋轉編碼器用於定位大型機器時，尤其如此。當一個錯誤的位置數字導致機構撞到末端停止時，這樣的系統往往會發生災難性的故障。我們必須包含一種偵測錯誤的穩健方法。

## 使用狀態機來監控旋轉編碼器的灰色碼

仔細檢查正向和反向的灰色碼，可以發現它們是相關的。使用圖 4 所示的狀態圖表示可以最好地看到這一點。如果我們順時針方向「行走」圖 4，我們得到正向（圖 2）關係。如果我們順時針方向「行走」，我們會看到圖3的模式。

這個狀態圖為一種簡單而穩健的確定方向的方法提供了一個框架。從我們的數位系統內部，我們維護一個內部的狀態推算。然後，我們從 Q1 和 Q2 感測器中尋找適當的轉換。例如，如果我們處於狀態 00，則有三個有效條件和一個故障條件。這個表格給出了基於感測器輸入的結果。

- 00：保持目前狀態
- 01：移動到狀態01並將位置計數增加1
- 10：移動到狀態10，並將位置計數減1
- 11：錯

每個狀態都需要類似的表格，所有這些表格都可以從圖 4 中匯出。請注意，故障條件沒有回傳值。相反，必須重置系統，並在必要時執行歸航操作。

作為測試條件，假設該機構處於過渡的邊緣，並且在感測器條件 00 和 10 之間切換。這對系統來說不是問題，因為它的內部推算將在兩個狀態之間反彈，增加或減少每個狀態轉換的數量。

在另一個測試條件下，考慮當感測器的灰色程式碼被違反時會發生什麼。回想一下，灰色碼允許改變單一位元。如果我們處於內部狀態 00，感測器過渡到 11，就表示出了問題，計數被破壞了。正確的反應是進入故障狀態，關閉系統。

 ![image](https://global.discourse-cdn.com/digikey/original/3X/7/f/7f480d707af551f17b6282b38a067c99d38d5f76.png)

**圖 4** ：正交編碼器訊號的狀態圖表示。氣泡代表狀態，線條上的數字代表感測器值。為了清晰起見，已經消除了剩餘狀態迴路。

## 基於正交編碼器系統的歸位

歸位（零位置）方法取決於系統的複雜程度。對於一些旋轉編碼器應用，通電重設到零或重設到最後一個已知值就足夠了。例如，旋轉編碼器可以用作音量控制。當設備通電時，可以​​從非揮發性記憶體位置檢索計數。音訊系統現在具有與關機時相同的音量。

一個更複雜的例子是一台有獨立的 X、Y 和 Z 馬達加上編碼器的機器。通電重設是不合適的，因為當設備關閉時，我們對機器的刀具位置沒有移動的置信度為零。對於這種情況，我們使用經典的歸位程序:

1. 移動到主位置限制開關
2. 檢測到家時停止
3. 稍微後退
4. 非常緩慢地移動以激活開關

也許你已經看過這個演算法的實際操作。同樣的技術也被用於許多 3D 列印機的步進馬達。這是另一個系統的例子，其中位置以數字計數的形式保存。

## 正交編碼器代碼的實現

請將此頁加入書籤。

這是指向未來裝置的連結的佔位符。期待一個基於梯形邏輯的正交編碼器狀態機的實現，以及一個用 C 寫的例子。

## 結論

本文章介紹了正交編碼器。最重要的考慮因素之一是正交編碼器與相關 PLC 或微控制器不可分割的性質。狀態機實作提供了一種健全的方法來防止各種錯誤，包括緩慢的硬體或軟體 PLC 或微控制器實現以及感測器和間歇性接線故障。
