久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1215|回復: 3
打印 上一主題 下一主題
收起左側

請教如何使用光電計數確定電機位置

[復制鏈接]
跳轉到指定樓層
樓主
ID:773929 發表于 2024-10-12 15:27 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
50黑幣
各位師傅,老板要求用一個光電傳感器+電機+齒輪控制滑軌上的滑塊來回運動,通俗點就是類似編碼器一樣的裝置,要求滑塊可以到指定位置,目前思路是 利用正反轉輸出IO做正反轉反饋,以此來確定光電計數是否應該加或減,以下是一些疑惑的地方:

1.這個雖然不是編碼器,但定義計數值變量的時候要不要考慮正負?
2.電機齒輪上只有5個齒,光電輸入中斷應該設置為 上升沿觸發 還是上升沿+下降沿觸發?
3.滑軌開端有一個行程開關,我想將其作用到滑塊歸零設置上,但領導建議作為出軌報警功能,哪一個更好?

這個電機是帶有剎車的。

還請問各位師傅我這個思路可行嗎,或者有什么建議?

代碼框架:

unsigned long 計數值

光電中斷函數()
{
   if(正轉 == 1)
  {
     計數值++;

   }else 計數值--;

}

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:982617 發表于 2024-10-14 10:22 | 只看該作者
你的思路總體可行,但是細節上需要調整。以下是對你提出的問題進行解答:
1. 計數值變量是否要考慮正負?
要考慮正負。你需要定義一個方向變量,例如 ,用于記錄滑塊是正向運動還是反向運動,然后根據方向變量來決定計數值是加還是減。direction
2. 光電中斷觸發方式?
建議使用上升沿 + 下降沿觸發。這樣可以確保每次光電傳感器檢測到齒輪上的齒,都能觸發中斷,即使滑塊速度很快,也不會漏掉計數。
3. 行程開關功能?
你的領導建議將其作為出軌報警功能更合理。因為行程開關主要用于檢測滑塊是否超出滑軌范圍,作為出軌報警可以提高系統安全性。而將行程開關用于歸零設置,需要考慮滑塊初始位置的不確定性,可能導致歸零不準確。

改進建議:
添加方向變量: 定義一個 變量,用于記錄滑塊運動方向,初始值為 (正向)或 (反向)。direction1-1
修改中斷函數: 將 的加減操作與 變量關聯起來。計數值direction
使用剎車功能: 使用電機剎車功能,可以更快速地停止滑塊運動,并保證滑塊停在目標位置。
考慮誤差累計: 齒輪只有 5 個齒,可能導致計數誤差累積。建議考慮增加齒輪的齒數,或者使用其他傳感器來輔助定位,例如霍爾傳感器。
代碼框架示例:
unsigned long 計數值 = 0;
int direction = 1; // 初始值為正向運動
void 光電中斷函數()
{
  if (direction == 1)
  {
    計數值++;
  }
  else
  {
    計數值--;
  }
}

void 設置目標位置(int targetCount)
{
  // ... 根據計數值和方向變量控制電機正反轉,直到計數值達到目標值
}

void 行程開關中斷函數()
{
  // ... 設置報警標志
}
其他建議:
使用更專業的傳感器,例如編碼器,可以提高定位精度,減少誤差累積。
考慮使用 PID 控制,可以更精確地控制滑塊運動,并減少抖動和誤差。
希望以上建議能夠幫助你更好地實現你的項目!
回復

使用道具 舉報

板凳
ID:982617 發表于 2024-10-14 10:24 | 只看該作者
你的思路基本上是可行的,但有一些細節需要注意和調整。以下是針對你提到的幾個疑惑的具體建議和思考:
1. 計數值的正負
是否需要考慮正負取決于你的設計邏輯。如果你的電機有明確的正向和反向,那么最好使用正負值來表示滑塊的運動方向。比如:
- 正值表示正向運動(向右)。
- 負值表示反向運動(向左)。
通過這種方式,計數值可以反映滑塊相對于初始位置的偏移,更加直觀。
2. 光電輸入中斷的觸發方式
由于電機齒輪上只有5個齒,如果你希望在每個齒到達光電傳感器時都能進行計數,那么可以設置為**上升沿 + 下降沿觸發,這樣每次齒的進入和離開都能觸發中斷,從而更精確地進行計數。
3. 行程開關的作用
關于行程開關的用途,建議將其除了作為出軌報警功能外,最好也作為滑塊歸零設置的功能。這里有幾個理由:
- 歸零設置可以為滑塊提供一個參考位置,使得在系統中可以更容易地計算滑塊的確切位置。
- 設定歸零位置后,滑塊可以在這個位置上進行校準,避免誤差積累。
- 如果單獨作為出軌檢測,可能在滑塊正常工作時無故產生誤報,容易導致不必要的停機。
4. 代碼框架的完善
以下是改進后的代碼框架示例,考慮了你提到的正負計數和光電中斷的觸發模式。

```c
unsigned long 計數值 = 0;      // 移動計數值
int 正轉 = 1;                  // 設定運動方向標志

void 光電中斷函數() {
    // 在中斷處理函數中判斷觸發方向
    if (光電傳感器觸發 == 上升沿) {
        // 進入時,當電機正轉
        if (正轉 == 1) {
            計數值++;
        } else {
            計數值--;
        }
    } else if (光電傳感器觸發 == 下降沿) {
        // 離開時,亦可反向計數
        if (正轉 == 1) {
            計數值++;
        } else {
            計數值--;
        }
    }
}

// 設置歸零位置的行程開關函數
void 行程開關處理() {
    if (行程開關觸發) {
        計數值 = 0; // 歸零
        // 可能還需要增加電機停止或其他安全機制
    }
}
```
其他建議
- 剎車控制:考慮電機剎車的觸發條件,確保在滑塊到達目標位置或出軌時能夠及時剎車。
- 安全性:在程序上增加安全檢查,以避免滑塊在達到行程開關時仍繼續運動。
- 調試與測試:完善調試過程,確保每個部分都能正常工作。可以在光電中斷和行程開關上增加LED指示燈,便于實時觀察狀態。
總的來說,考慮到準確性和安全性,是非常重要的。希望這些建議對你有所幫助!
回復

使用道具 舉報

地板
ID:844772 發表于 2024-10-14 15:03 | 只看該作者
1.要不要考慮正負?
原則上不考慮,把初始點設成原點,不存在負值。
2.電機齒輪上只有5個齒,光電輸入中斷應該設置為 上升沿觸發 還是上升沿+下降沿觸發?
看你要求控制精度,以及光電模塊輸出特性,上下同時的理論精度高一倍。
3.滑軌開端有一個行程開關,我想將其作用到滑塊歸零設置上,但領導建議作為出軌報警功能,哪一個更好?
應該設置在歸零點。我理解滑臺一端歸零點,一端為出軌點,因為歸零點風險最大,滑塊經常滑到,不做保護比出軌端風險更大,而且歸零點有開關可以消除累積誤差。
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 久久久久久久久久久久久9999 | 久久精品视频免费观看 | 性欧美精品一区二区三区在线播放 | 精品亚洲一区二区 | 日本不卡一区 | 亚洲一区综合 | 91色在线| 精品久久一区 | 亚洲免费在线 | 男女羞羞视频网站 | 国产不卡一区在线观看 | 久久亚洲一区二区 | 91欧美激情一区二区三区成人 | www免费视频| 在线成人av| 中文一级片 | 久久久视频在线 | 91av视频在线播放 | 狠狠操狠狠搞 | 伊人激情综合网 | 日韩欧美在 | www视频在线观看 | 成人欧美一区二区三区黑人孕妇 | 成人精品视频在线观看 | 国产丝袜一区二区三区免费视频 | 中文字幕日韩在线观看 | 日韩中文字幕在线 | 99久久精品国产一区二区三区 | 久久久久91 | 久久国产欧美日韩精品 | 国产精品伦一区二区三级视频 | 四虎精品在线 | 福利二区 | 欧美日韩成人影院 | 一区二区三区四区在线视频 | 欧美日韩一| 日日网| 91在线视频播放 | 亚洲欧洲日韩 | 成人99 | 韩日av在线|