知識中心

STM32視覺採集開發:工業相機觸發與影像同步控制全攻略

本文深入解析STM32在工業視覺採集中的核心應用,涵蓋相機觸發訊號設計(GPIO/定時器/編碼器)、影像同步控制策略(多相機/光源協同)及實戰開發案例。透過程式碼示例與效能最佳化技巧,助力開發者構建穩定、穩妥的工業缺陷檢測與尺寸測量系統。

知識中心 2026-04-08 穩格科技
文章正文知識中心

在智慧製造與自動化檢測領域,工業視覺系統已成為提升生產精度與效率的核心工具。而STM32憑藉其高即時性、低功耗及豐富的外設資源,成為實現工業相機觸發控制與影像同步採集的理想平臺。本文將從硬體選型、觸發邏輯設計、同步控制策略及實戰案例四個維度,系統解析STM32在視覺採集中的關鍵技術,助力開發者構建穩定、穩妥的工業視覺系統。


一、工業視覺系統架構:STM32的核心角色

1.1 典型系統組成

工業視覺系統通常由以下模組構成:

  • 工業相機:支援外部觸發(如GPIO、光耦隔離輸入)的高解析度相機(如Basler、FLIR、海康威視等品牌)。

  • STM32控制板:負責觸發訊號生成、光源控制、影像採集同步及與上位機通訊。

  • 光源系統:透過PWM或數字訊號控制LED光源的亮度與頻閃(如環形光、背光源)。

  • 上位機/PLC:接收影像資料並執行演算法分析(如缺陷檢測、尺寸測量)。

1.2 STM32的優勢

  • 即時性:透過硬體定時器(TIM)或PWM模組生成納秒級觸發訊號,滿足高速採集需求。

  • 靈活性:支援多種觸發模式(如單次觸發、連續觸發、編碼器同步觸發)。

  • 低成本:相比專用視覺控制器,STM32方案可有所降低以上的硬體成本。

二、工業相機觸發控制:硬體介面與訊號設計

2.1 觸發訊號型別

工業相機通常支援以下觸發方式:

  • 硬體觸發:透過GPIO輸入(如上升沿/下降沿)啟動曝光。

  • 軟體觸發:透過相機SDK傳送指令(如GigE Vision協議的ForceTrigger命令)。

  • 編碼器同步觸發:根據電機編碼器脈衝生成與運動同步的觸發訊號(適用於飛拍場景)。

2.2 STM32硬體介面設計

  • GPIO觸發:配置為輸出模式,透過HAL_GPIO_WritePin()生成觸發脈衝。

    c// 示例:生成10μs寬度的觸發脈衝(STM32 HAL庫)HAL_GPIO_WritePin(TRIGGER_GPIO_Port, TRIGGER_Pin, GPIO_PIN_SET);HAL_Delay(10);  // 粗略延時(實際需用定時器或DWT計數器)HAL_GPIO_WritePin(TRIGGER_GPIO_Port, TRIGGER_Pin, GPIO_PIN_RESET);
  • 定時器觸發:使用TIM的PWM模式或輸出比較模式生成精確脈衝。

    c// 示例:TIM2通道1生成100kHz觸發訊號(週期10μs,高電平1μs)TIM_OC_InitTypeDef sConfigOC;sConfigOC.OCMode = TIM_OCMODE_PWM1;sConfigOC.Pulse = 1;  // 高電平時間(CCR值)sConfigOC.Period = 10;  // PWM週期(ARR值)HAL_TIM_PWM_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_1);HAL_TIM_PWM_Start(&htim2, TIM_CHANNEL_1);
  • 光耦隔離觸發:透過光耦(如TLP521)隔離STM32與相機,提升抗干擾能力。

2.3 觸發時序最佳化

  • 曝光時間匹配:觸發訊號需與相機曝光時間(由上位機設定)同步,避免影像過曝或欠曝。

  • 延遲補償:測量STM32觸發訊號到相機實際曝光的延遲(通常<1μs),透過軟體調整觸發時刻。

三、影像同步控制:多相機/多感測器協同

3.1 多相機同步採集

  • 硬體同步:透過同一觸發訊號驅動多臺相機(需相機支援級聯觸發)。

  • 軟體同步:STM32分別觸發各相機,並透過時間戳或編碼器位置對齊影像資料。

    c// 示例:雙相機同步觸發(使用兩個定時器通道)HAL_TIM_PWM_Start(&htim2, TIM_CHANNEL_1);  // 觸發相機1HAL_TIM_PWM_Start(&htim2, TIM_CHANNEL_2);  // 觸發相機2(需相位對齊)

3.2 光源與相機同步

  • 頻閃控制:透過PWM調節光源亮度,並與相機曝光時間同步(如曝光期間光源全亮)。

    c// 示例:光源PWM控制(與相機曝光同步)void Camera_ExposureCallback() {    HAL_TIM_PWM_Start(&htim3, TIM_CHANNEL_1);  // 曝光時開啟光源    HAL_Delay(exposureTime);  // 曝光持續時間    HAL_TIM_PWM_Stop(&htim3, TIM_CHANNEL_1);   // 曝光結束關閉光源}
  • 編碼器同步光源:根據運動速度動態調整光源頻閃頻率,避免運動模糊。

3.3 外部事件同步

  • 編碼器觸發:透過STM32的編碼器介面(TIM的編碼器模式)讀取電機位置,在特定位置觸發相機。

    c// 示例:編碼器位置觸發(TIM1編碼器模式)if (TIM1->CNT >= targetPosition) {    HAL_GPIO_WritePin(TRIGGER_GPIO_Port, TRIGGER_Pin, GPIO_PIN_SET);  // 觸發相機    TIM1->CNT = 0;  // 重置計數器}
  • 感測器聯動:結合光電開關、雷射位移感測器等,實現條件觸發(如檢測到物體時觸發相機)。

四、實戰案例:基於STM32的缺陷檢測系統

4.1 系統需求

  • 相機:500萬畫素工業相機,支援外部觸發。

  • 光源:高頻閃LED環形光。

  • 運動控制:步進電機驅動傳送帶,編碼器反饋位置。

  • 檢測任務:即時檢測產品表面缺陷(如劃痕、汙點)。

4.2 開發步驟

  1. 硬體連線:

    • STM32 GPIO輸出 → 相機觸發輸入(光耦隔離)。

    • STM32 PWM輸出 → 光源驅動模組。

    • 編碼器訊號 → STM32 TIM編碼器介面。

  2. 觸發邏輯實現:

    • 配置TIM2生成1kHz觸發訊號(週期1ms,適配相機較大幀率)。

    • 在編碼器中斷中動態調整觸發相位,有助於支援影像採集位置一致。

  3. 同步控制最佳化:

    • 透過示波器測量觸發訊號與光源PWM的相位關係,最佳化時序。

    • 在上位機(如OpenCV或Halcon)中驗證影像對齊精度(誤差<0.1mm)。

  4. 效能測試:

    • 連續觸發10萬次,統計丟幀率(目標<專案要求範圍內)。

    • 測量從觸發到影像傳輸至PC的延遲(通常<10ms)。

程式碼示例(STM32編碼器觸發+光源同步):

c// 主迴圈中處理編碼器位置與觸發while (1) {    currentPos = TIM1->CNT;  // 讀取編碼器位置    if (currentPos >= nextTriggerPos) {        HAL_GPIO_WritePin(TRIGGER_GPIO_Port, TRIGGER_Pin, GPIO_PIN_SET);  // 觸發相機        HAL_TIM_PWM_Start(&htim3, TIM_CHANNEL_1);  // 開啟光源        HAL_Delay(exposureTime);        HAL_TIM_PWM_Stop(&htim3, TIM_CHANNEL_1);   // 關閉光源        HAL_GPIO_WritePin(TRIGGER_GPIO_Port, TRIGGER_Pin, GPIO_PIN_RESET);        nextTriggerPos += triggerInterval;  // 計算下一次觸發位置    }}

五、總結:STM32視覺採集開發的核心要點

  1. 觸發訊號設計:根據相機規格選擇GPIO、定時器或編碼器觸發,有助於支援訊號精度與穩定性。

  2. 同步控制策略:透過硬體同步(級聯觸發)或軟體同步(時間戳對齊)實現多相機/多感測器協同。

  3. 光源與運動控制:結合PWM頻閃與編碼器反饋,最佳化影像質量與檢測效率。

  4. 效能驗證:透過示波器、邏輯分析儀及上位機工具測試觸發延遲、丟幀率等關鍵指標。


提交專案需求

留下聯絡方式和需求簡述,便於我們判斷技術方向、交付範圍和溝通方式。

線上諮詢
電話諮詢
13910119357
微信諮詢
WhatsApp
穩格科技 WhatsApp 二維碼 掃碼或點選聯絡
回到頂部