mieki256's diary



2016/07/26(火) [n年前の日記]

#1 [raspberrypi] Raspberry Pi3でDCモータを制御するテストその2

Raspberry Pi3 でDCモータを制御してみたい。

回路図。 :

ブレッドボード上で配線。

dcmotor01_bb.png

dcmotor01_c.png

入力端子には、GPIO 22番と23番を繋いでみた。

DCモータドライバ TA7291P は、3つの電源を要求する。
  • Vcc ... ロジック側電源端子。Raspberry Pi3の +5V を繋ぐ。
  • Vs ... 出力側電源端子。モータ側で使う電源。単三 x 4本の電池ボックスを繋ぐ。新品のアルカリ電池なら、+6V程度が入るはず。
  • Vref ... 制御電源端子。ココにかかった電圧が、モータにかかる最大電圧になる。らしい。
_TA7291Pデータシート - ta7291p.pdf
_TA7291P - 滴了庵日録
_Raspberry Pi 2でDCモーターを制御する - カイワレスタイル
_Raspberry Pi 2 で小型モーターを制御する | 桜のはなびら.ネット(12歳)

Vref(制御電源端子)に何を繋いだらいいのかでちょっと悩んだり。PWM制御をしたい場合は、Raspberry Pi3 のGPIOのどれかを繋ぐ場合が多いらしいけど、今回は全開で回してみたいわけで…。

使おうとしているギヤボックスは、 _TAMIYA 6速ギヤボックスHE 72005 で、「RE-260モーター付き」の製品。 RE-260てのは、おそらく _マブチモータ RE-260 だろうと。1.5V-4.5Vをかけられるけど、3Vで使うことを前提にしてるらしい。

なので、Vref(制御電源端子)には、最大でも3V前後をかけたい。GPIOのどれかを繋ぐと、PIOは +3.3V だから、まあ大丈夫だろ、ってことになるのだろう。

ググってみたら、全開で回したい場合、Vref(制御電源端子)に、Vs(出力側電源端子)と10KΩの抵抗を挟んで繋いでる事例をいくつか見かけた。自分もその通りにしてみたけれど、どうして10KΩなんだろう…。実は+6Vかかってしまっている、てことはないのかな…。

Pythonスクリプト。 :

Python + pigpio で制御してみる。dcmotor_pigpio.py として保存。
#!/usr/bin/python
# -*- coding: utf-8 -*-
#
# DC Motor control with TA7291P - pigpio

import pigpio
import time

PIN1 = 22
PIN2 = 23

pi1 = pigpio.pi()
pi1.set_mode(PIN1, pigpio.OUTPUT)
pi1.set_mode(PIN2, pigpio.OUTPUT)

def set_motor(pi1, a, b, t):
    pi1.write(PIN1, a)
    pi1.write(PIN2, b)
    time.sleep(t)

try:
    set_motor(pi1, 0, 0, 0.5) # stop (neutral)

    for i in range(4):
        set_motor(pi1, 1, 0, 0.3) # normal rotation
        set_motor(pi1, 1, 1, 2.0) # brake

    for i in range(4):
        set_motor(pi1, 0, 1, 0.3) # reverse rotation
        set_motor(pi1, 1, 1, 2.0) # brake

except KeyboardInterrupt:
    print "done."

set_motor(pi1, 0, 0, 0.5) # stop (neutral)
pi1.set_mode(PIN1, pigpio.INPUT)
pi1.set_mode(PIN2, pigpio.INPUT)
pi1.stop()

sudo python dcmotor_pigpio.py として実行。こんな感じになった。



ウルセー。動作音がウルセー。けど、そこは置いといて。一応動いてくれた模様。ただ、回り始める時にガクッと動いてから回る時と、そうでない時がある。うーん。

ちとよく分からないのが、モータにブレーキがかからないこと。止めたつもりがズルズルッとそのまま動き続けて惰性で止まるというか。入力端子の両方を1,1にしてるのだけど、ブレーキがかかってくれるわけではなさそうだなと…。

もしかして、止めたいと思った瞬間に一瞬だけ逆回転させる、てな感じの処理が必要なのだろうか。でも、モータに余計な負荷がかかりそうでもあるし…。

_模型用モーターを回転させ、ピッタと止めるには... - 工学 | Yahoo!知恵袋

やっぱり逆回転させると壊れるらしい。

PWM制御で速度を変化させてみる例。 :

Vrefに+6Vかかってたりしないかと不安になってきたので、GPIOを繋いで、ついでにPWM制御を試してみようかと。

回路図は以下の通り。
dcmotor02_pwm_bb.png

dcmotor02_pwm_c.png

Vref に GPIO 13番を接続。

Python + pigpio でPWM制御。dcmotor_pigpio_pwm.py として保存。
#!/usr/bin/python
# -*- coding: utf-8 -*-
#
# DC Motor control with TA7291P - pigpio

import pigpio
import time

PWMPIN = 13
PIN1 = 22
PIN2 = 23
pi1 = pigpio.pi()
pi1.set_mode(PWMPIN, pigpio.OUTPUT)
pi1.set_mode(PIN1, pigpio.OUTPUT)
pi1.set_mode(PIN2, pigpio.OUTPUT)
pi1.set_PWM_frequency(PWMPIN, 50)
pi1.set_PWM_range(PWMPIN, 100)
pi1.set_PWM_dutycycle(PWMPIN, 0)

def set_motor(pi1, a, b, t):
    pi1.write(PIN1, a)
    pi1.write(PIN2, b)
    time.sleep(t)

def set_motor_pwm(pi1, a, b, t):
    set_motor(pi1, a, b, 0.2)
    for i in range(25, 100, 25):
        pi1.set_PWM_dutycycle(PWMPIN, i)
        time.sleep(t)
    # set_motor(pi1, 0, 0, 2.0) # stop (neutral)
    set_motor(pi1, 1, 1, 2.0) # brake
    pi1.set_PWM_dutycycle(PWMPIN, 0)

try:
    set_motor(pi1, 0, 0, 0.5) # stop (neutral)
    set_motor_pwm(pi1, 1, 0, 1.0) # normal rotation
    set_motor_pwm(pi1, 0, 1, 1.0) # reverse rotation

except KeyboardInterrupt:
    print "done."

pi1.set_PWM_dutycycle(PWMPIN, 0)
set_motor(pi1, 0, 0, 0.5) # stop (neutral)
pi1.set_mode(PWMPIN, pigpio.INPUT)
pi1.set_mode(PIN1, pigpio.INPUT)
pi1.set_mode(PIN2, pigpio.INPUT)
pi1.stop()

sudo python dcmotor_pigpio_pwm.py として実行。こんな感じに。



duty比が、25%、50%、75%の時に、動作音の大きさと回転速度が微妙に違ってることが一応分かる、だろうか…。

TAMIYA製ギヤボックスの問題。 :

_TAMIYA 6速ギヤボックスHE 72005 を使って実験してるけど、ちょっとこの製品、マズいなと…。停止してるはずの状態でも、ガクガクと動いてしまうわけで…。以下の動画を見れば分かるだろうけど…。



ピタッと止まっていてくれないと、上にカメラを乗せて撮影しようとしたときにブレてしまって困るんだけどなあ…。どうしよう…。どうしたもんか…。何か手は無いか…。

どうしてガタガタしてしまうのか、ギヤボックスをじっと眺めてみたけれど。
  • 一つは、金属製の軸の六角形部分と、オレンジのプラスチック製のギヤの穴の形がピッタリと合ってない。オレンジのギヤに穴が開いているけれど、その穴が結構緩いというか。
  • 複数のギヤが組み合わさっているので、一つ一つのギヤの遊び(?)が積み重なって、大きなガタガタになってる。
前者は、ギヤボックスを今後分解することを諦めてガッチリと接着すればなんとかなるかもしれないけど。後者は仕組みからして解決策が思いつかない…。

#2 [raspberrypi] Amazonから色々届いた

Amazonに注文していた工具その他が届いた。

_精密圧着ペンチ エンジニア製 PA-20 , 3,063円
_USB Type A - microUSBケーブル ELECOM MPA-AMBS2U12BU (1.2m、2A出力高耐久、ブルー) 764円
_TAMIYA 楽しい工作シリーズ No.157 ユニバーサルプレート2枚セット 70157 , 445円。

圧着ペンチについて。 :

結局、精密圧着ペンチを買ってしまった…。絶対に元が取れない予感。とはいえ、QIコネクタ(2550コネクタ)を圧着する際、こういうのが無いと厳しいし…。

いやまあ、一応、ラジオペンチ + 電気工事用の安くて大味な圧着ペンチでも、やれないことはなかったのだけど。ピンの圧着部分を、ラジオペンチででチマチマと折り曲げてから、大味圧着ペンチの1.25や2.00あたりをつかってグイッと圧着して、熱収縮チューブで無理矢理隠せばどうにか使えなくもないソレが作れたし。ただ、ソレもなかなか大変で。大味圧着ペンチの溝にピンを入ってもずれちゃって何度も何度も位置調整する羽目になるし。しかも、まず間違いなくハウジングなるケースっぽいものに入るほど綺麗な形にはならないわけで。

てなわけで早速 PA-20 を使ってみたり。 _デジットBlog:【Tips】電子工作でよく使う『QIコネクタ』の圧着方法 を参考にして作業。

いやはや、さすがプロ用工具。圧倒的に簡単…というわけでもなかった。評判通り、「意外とデリケート」な工具で、やはりコレも位置調整が面倒臭い。油断すると向きがズレる…。

とは言え、さすがに大味圧着ペンチを使った時よりも、それらしい形になってくれた。や、最初、うっかり被膜部分の折り曲げを1.9あたりでやってしまってなんか変だなと思ったけど。2.3で軽く丸めてから、圧着ペンチの先端で3回ぐらい押して形を整える、のですな…。

コレ、そのへんのフツーのペンチや、 _ホビー用クランプ で、グイッと挟むとらしくなる的なアタッチメントっぽい工具を作れないものかな。もちろん圧着ペンチに比べたら圧倒的に作業時間はかかるけど、その代りにお安く圧着できますよ、みたいな製品があれば…。まあ、需要が無いか…。

microUSBケーブルについて。 :

SWITCHSCIENCEさんの、 _Raspberry Pi 3の電源問題について(pdf) の中で、「1.2mもあるのに、実測ではなんだか抵抗値がめっちゃ少ないので、電圧降下が少なくて済むケーブル」としてリストアップされてたので、試しに購入してみたり。

Raspberry Pi3 + Anker PowerCore 10000 で使ってみたけど、電圧不足表示(画面右上の虹色の四角)は出てこなかった。たしかに抵抗値が少ないっぽい。

ケーブルは、他のケーブルと比較すると固い感じで。パッケージに折り曲げられた状態で入ってたわけだけど、その折り曲げ部分がそのままずっと曲がっていて、元に戻そうとしても手に反発を感じるぐらいに固い。つまりはそれだけ導線部分が太いケーブルを使ってる = 抵抗値が少ない、ということかもしれないなと。

共立エレショップからも届いた。 :

共立エレショップに注文していた品が届いたので、ついでにメモ。

_QIコネクタ 01P QI-1 , 16円 x 10 = 160円
_QIコネクタ 02P QI-2 , 16円 x 10 = 160円
_QIコネクタ用コンタクトピン メス QI-ZU , 10円 x 20 = 200円

小さい部品なので、クロネコヤマトのネコポス便が使えて、送料がちょっと安くて済んだ。…他のお店も、このネコポス便とやらが使えたらいいのに。

以上、1 日分です。

過去ログ表示

Prev - 2016/07 - Next
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31

カテゴリで表示

検索機能は Namazu for hns で提供されています。(詳細指定/ヘルプ


注意: 現在使用の日記自動生成システムは Version 2.19.6 です。
公開されている日記自動生成システムは Version 2.19.5 です。

Powered by hns-2.19.6, HyperNikkiSystem Project