2012-10-16 52 views
3

如何用linux的串口發出一個pwm信號? (使用python或C++)用linux的串行端口輸出PWM信號

我想直接連接電機來改變速度旋轉。

+0

? – PherricOxide

+3

您不應該將接收器芯片之外的任何東西連接到串行端口 - 它們不是被設計爲/替換電源 – drahnr

+1

沒有任何本地化的問題。用一種足夠好的方式來解決你需要解決的問題的可能性是常見的。 –

回答

3

這個想法可能是不明智的,除非你真的知道你在做什麼接口。任何由這些引腳驅動的信號(如果全部使用的話)都應該只提供信號電平驅動 - 您必須使用它來控制電機控制器或放大器實際電機驅動器,請勿直接連接電機。此外,串行端口的信號擺動-ve和+ ve而不是零/ + ve。

一種可能性是使用DTR信號,因爲其通常可以被獨立地控制(如在Set serial port pin high using python例如所描述的),但是通過軟件可能無法獲得準確或有效,並且如果控制馬達所需的頻率或精度軟件會失效,您可能會使電機全速運轉 - 因此需要小心。

一個更好的解決方案是獲得專用的數字和/或PWM I/O卡或USB設備,甚至是專用的電機控制器接口。像研華這樣的工業計算機供應商將擁有一些合適的產品,並且成本較低,可能有更多的機器人愛好供應商。我假設在Linux上有

+0

謝謝,我會嘗試使用DTR信號(我不需要高精度)。 – o1863176

+0

@ o1863176:你這麼說,但如果控制過程是餓死的CPU時間的電機可能會瘋狂失控由於其他進程,使電機要麼完全打開或完全關閉的時間不確定性的長度。硬件生成的PWM和/或RTOS通常是合適的。有一些方法可以緩解Linux中的時序抖動,這可能會產生可接受的結果。參見[this](http://www.ibm.com/developerworks/linux/library/l-real-time-linux/index.html)和[this](http://www.linuxfordevices。com/c/a/Linux-For-Devices-Articles/Seven-realtime-Linux-approaches-Part-C) – Clifford

+0

我意識到我所需要的電機的pwm頻率不能由非實時操作系統管理,那麼我必須使用類似arduino或其他的手動控制器。謝謝。 – o1863176

1

懷疑你能做到這一點,你使用的UART接口...只是得到一個Arduino或someat和發送串行命令到Arduino(串行鍼),然後把正確的PWM信號進行了銷...大概5 Arduino的的代碼行和Python代碼的另一個5 ...

說了這麼多,你或許可以找到一些非常困難的,哈克的方式來輸出通過串行PWM信號...但你需要考慮如果多數民衆贊成真的很合適......

+0

我會避免使用arduino或其他外部電路。如果我不能這樣做,我會使用手動控制器。謝謝。 – o1863176

+0

只是好奇嗎?爲什麼? arduino是非常棒的imho ...很容易做嵌入式的東西,這似乎是一個很好的時間讓你的雙手弄溼集成電路的和arduino是一個很好的入門級,一個簡單的學習曲線......這可能是一個真正的原因你不想... –

+0

我已經使用Arduino的,但在這種情況下,我不喜歡的Arduino解決方案,沒有技術的動機:) – o1863176