ステッピングモーターを配線する方法は?


10

最近、これらのステッピングモーターとドライバーボードの 1つを購入しました -それをRaspberry Piに接続する方法のドキュメントが見つかりません-AdaFruitチュートリアルを使用しようとしています が、適切な接続がすべて確立されていますgpioピンが接続されている(ドライバーボードのLEDが正しく点灯し、モーターは何もしない)。

ラズベリーpiをステッピングモーターに接続する方法に関する詳細情報をどこで探したらよいか知っている人はいますか?

更新:2013年11月15日私のプログラムコードはこれです

import RPi.GPIO as GPIO
import time

GPIO.setmode(GPIO.BCM)

#enable_pin = 18
coil_A_1_pin = 4
coil_A_2_pin = 17
coil_B_1_pin = 23
coil_B_2_pin = 24

#GPIO.setup(enable_pin, GPIO.OUT)
GPIO.setup(coil_A_1_pin, GPIO.OUT)
GPIO.setup(coil_A_2_pin, GPIO.OUT)
GPIO.setup(coil_B_1_pin, GPIO.OUT)
GPIO.setup(coil_B_2_pin, GPIO.OUT)

#GPIO.output(enable_pin, 1)

def forward(delay, steps):  
  for i in range(0, steps):
    setStep(1, 0, 1, 0)
    setStep(0, 1, 1, 0)
    setStep(0, 1, 0, 1)
    setStep(1, 0, 0, 1)

def backwards(delay, steps):  
  for i in range(0, steps):
    setStep(1, 0, 0, 1)
    setStep(0, 1, 0, 1)
    setStep(0, 1, 1, 0)
    setStep(1, 0, 1, 0)


def setStep(w1, w2, w3, w4):
  GPIO.output(coil_A_1_pin, w1)
  GPIO.output(coil_A_2_pin, w2)
  GPIO.output(coil_B_1_pin, w3)
  GPIO.output(coil_B_2_pin, w4)

while True:
  delay = raw_input("Delay between steps (milliseconds)?")
  steps = raw_input("How many steps forward? ")
  forward(int(delay) / 1000.0, int(steps))
  steps = raw_input("How many steps backwards? ")
  backwards(int(delay) / 1000.0, int(steps))

ブレッドボードはこんな感じ ここに画像の説明を入力してください

ドライバーボードはこんな感じ ここに画像の説明を入力してください

私が持っています

IN1 => GPIO 4

IN2 => GPIO 17

IN3 => GPIO 23

IN4 => GPIO 24


LEDは、0.5秒の遅延で正しい順序で点灯していますか?
John La Rooy、2013年

何度も投票できたらいいのに。
Loko、2013年

彼らは遅れを伴って正しい順序で点灯しています。
スティーブフレンチ

回答:


6

3.3ボルトから5ボルトのバスドライバーが必要です。購入したモーターキットは5ボルトのgpioを使用するArduino用で、rpiは3.3ボルトを使用しています。3.3ボルトの制御ラインを受け入れるモーターコントローラーを入手することもできます。

必ず電圧定格を確認してください!!


[スマックスヘッド]考えていませんでした-モーターコントローラーを動作させる方法はありますか-ここで奇跡的なことを求めているのに気づきましたか、それとも運が悪かったのですか?
スティーブフランス語

@SteveFrenchは、電圧間でバッファするデュアル電圧バスドライバーを作る理由です。私はebayで数か月前にいくつか購入しましたが、パーツ番号を思い出せません。それらは一般的で、すぐに利用できます
2013年

しかし、写真の赤は3.3ではなく5Vピンに接続されています。大丈夫じゃないですか?私自身は使用していませんが、いくつか注意点があると思います
。– goldilocks

1
@goldilocksそれはコントローラーチップに依存しますが、おそらくそうではありません。コントローラチップのデータシートは調べませんでしたが、vccが3.3vに接続されている場合、ほとんどのデュアル電圧チップは3.3v ioを使用します。しかし、それを試す前に、それはデュアル電圧チップであり、ほとんどが単一電圧です。広い電圧チップもありますが、肝心なのはチップのデータシートを確認することです。
hildred

0

アダフルーツの記事は言う

以下のコードでは、GPIOコネクタのピン18が有効ピンとして使用されていることを示していますが、これはL293Dを使用する場合にのみ必要です。

LEDが点灯していて、赤い線に5Vがあることを再度確認した場合は、モーターに障害があると思われます。

モーターを外した状態で、マルチメーターを使用して各ワイヤーと赤いワイヤー間の抵抗をチェックします。それらはすべてほぼ同じである必要があります


enable_pinをコメントアウトし、別のモーターを使用しましたが、まったく役に立ちませんでした。私は今日mutimeterのアプローチをしようとしています-あなたの助けをありがとう
スティーブ・フレンチ

私は抵抗をチェックしました-抵抗に違いはありません-非常に困惑しています。
スティーブフランス語

赤い線で5vをテストする良い方法は何でしょうか?私はマルチメーターを直接そこに置いてみましたが、パルスは何かを登録するのに十分な長さではないようです。
スティーブフランス語

0

まず、どの電源を使用していますか?私が見る構成では、同じVccがRPi、モーター、およびボード(ジャンパーの短絡)の駆動に使用されています。ラズベリーがリセットされないことに驚いています(+ 5Vからの引き過ぎはそれを行う傾向があります)が、モーターの特性が本当にわからないので、たぶん?

電源から+ 5Vをモーターから赤に、そしてGNDを順番に残りの4つの端子に接続することで、ステッパーを動かすことができますか(最小でシングルステップ)?

LEDが点灯し、モーターが動かない場合は、十分な電流が流れていないようです。この場合は、より強力な電源を入手するか、(推奨)モーターに電力を供給するために別のPSUを追加します-ジャンパーを取り外し、代わりにVccを最も外側のピンに接続し、GNDをブレッドボードの同じラインに接続します。 「-」線(共通グラウンド、既にあるものを切断しないでください。)

(ボードにも問題がある可能性が少しあります。ボードの裏側の良い写真を提供できますか?(はんだ側)?


ステッピングモーターを直接動かすことができます。他の方法を試しています。
スティーブフランス語

vccメソッドを試したところ、同じ結果が得られました。たぶん、これらのボードは何らかの理由でpiで使用できません。
スティーブフランス語

LEDが正しく点灯すれば、ボードは正常に機能しています。モーターが故障しているか、十分な電流が供給されていません(または、モーター側の配線/コネクターが損傷している可能性は低いです)。モーターをボードを使用せずに動かし、接点に直接電源を接続しただけですか?
SF。

0

AdaFruitコードとあなたのコードを見ると、ステップシーケンスが間違っているようです。特に、1つだけでなく2つのピンを同時に駆動する必要があるようです。

次のシーケンスはAdaFruitコードに基づいて機能するはずです。

# Define simple sequence
StepCount1 = 4
Seq1 = []
Seq1 = range(0, StepCount1)
Seq1[0] = [1,0,1,0]
Seq1[1] = [0,1,1,0]
Seq1[2] = [0,1,0,1]
Seq1[3] = [1,0,0,1]

私は誤ってプログラムの実際のシーケンスがあなたが持っているシーケンスであることをコピーしたに違いありません。
スティーブフランス語

0

私はここでガイドhttp://www.raspberrypi-spy.co.uk/2012/07/stepper-motor-control-in-python/をフォローしてきましたが、GPIOピンを適切にグループ化していましたが、モーターは何もしていませんでした。それがあったことを除いて。拾ったとき、LEDが変わるたびに小さな「ハートビート」を感じることができました。0.001が8.5秒で完全に回転するまで、WaitTimeパラメータを0.5から次第に小さな値に変更しました。

しかし、タイプ1は「ハートビート」が機能していてもモーターが時々停止するようだったので、シーケンスタイプを2(メーカー)に変更しました。

コードを変更して、完全な回転にかかるステップ数をテストできるようにし、時計回りまたは反時計回りに回転するコマンドラインスイッチを作成しました。

0.001のWaitTimeでテストCWを実行し、同じ数のステップを使用すると、CCWは少量のエラーを生成しました。つまり、開始した場所に整列しませんでした。

WaitTimeを0.01に設定すると、CWまたはCCWが常に同じポイントで終了する4100ステップの繰り返し実行を示すことができました。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.