パスコンパスの日記

何か色々作るのが好きです

【キョロキョロV⑥】m5StickVを無理矢理歩かせてみました

m5StickVというマイコンにサーボを2つつけたキョロキョロVというマシンの作り方やプログラム等を公開しています。

yoichi-41.hatenablog.com

元々固定型で首振りさせる想定で作っていたのですが、いざ動かしてみると振動で位置がだんだんずれていって「ひょっとするとこれは意図的に歩かせることができるのではないか」と思ったため今回試してみました。

目次

プログラム

最初の記事のサーボを動かすプログラムを少しいじって上下を早めに動かす様にし、値を調整してみました。

※2020/04/03追記
SG-90 PDFデータシート
http://akizukidenshi.com/download/ds/towerpro/SG90_a.pdf

 上記データシートの様にサーボは本来50Hz固定でduty比を変えることで角度を変えるのですが、この記事では周波数を変えてしまっていました。
それでも動いてはいたのですが、dutyを0.025~0.12に変更する方が良さそうです。
動かすところを抜粋するとこんな形になります。

from machine import Timer,PWM

tim0 = Timer(Timer.TIMER0, Timer.CHANNEL0, mode=Timer.MODE_PWM)
ch0 = PWM(tim0, freq = 50, duty = 5, pin = 6)
d0_count = 10  #if文などでここを変える

duty0 =ChangeDuty(d0_count)

この方法でMaixBitを動かしている記事です。

yoichi-41.hatenablog.com

追記終わり

from machine import Timer,PWM
import time
import lcd

import sensor
import image
import lcd

lcd.init()
lcd.rotation(2) #add
sensor.reset()
sensor.set_pixformat(sensor.RGB565)
sensor.set_framesize(sensor.QVGA)
sensor.set_windowing((224, 224)) #add
sensor.run(1)

tim0 = Timer(Timer.TIMER0, Timer.CHANNEL0, mode=Timer.MODE_PWM)
tim1 = Timer(Timer.TIMER1, Timer.CHANNEL1, mode=Timer.MODE_PWM)
ch0 = PWM(tim0, freq= 60, duty=10, pin=34)  #f 80 straight
ch1 = PWM(tim1, freq= 50, duty=10, pin=35)
freqval = 70    #初期角度

val = 1.5 #角度変化量
max_freq = 110
min_freq = 60

while True:
    freqval = freqval + val
    if freqval > max_freq:
        val = -val
    if freqval < min_freq:
        val = -val
    ch1.freq(freqval)
    time.sleep(0.05)

調整したパラメータは主に以下の値です。

val = 1.5#角度変化量
max_freq = 100 #最大周波数
min_freq = 10 #最小周波数
freqval = 80    #初期角度

動作の様子

初回テスト動作

最初ストロークを小さめにしていた時です。確か以下の様な値だったと思います。前進しない時とする時が混ざってあまり良い動きとは言えないと思います。

val = 1#角度変化量
max_freq = 100 #最大周波数
min_freq = 65 #最小周波数
freqval = 80    #初期角度

数回試行錯誤後の動作

ストロークを伸ばすと良い感じになってきましたが重心の関係か、だんだん右に曲がって行ってしまいます。(下の動画です。)

パラメータは確かこんな値でした。

val = 1.5#角度変化量
max_freq = 80 #最大周波数
min_freq = 70 #最小周波数
freqval = 80    #初期角度

更に調整した動作

やっと画面の端から端まで行ける位はまっすぐ進める様になりました。左右のサーボの首を少し左に回した状態で固定することでバランスを取ってみました。(下の動画です。)

パラメータはこんな感じでした*1。意図的に首を右に回しています。

val = 1.5 #角度変化量
max_freq = 110
min_freq = 60
freqval = 70    #初期角度

まとめ

今回は小ネタという感じでしたが、キョロキョロVを歩かせて(?)みました。移動できるとなると、コンセントのAC電源からの給電ではなく単体動作可能な様にバッテリからレギュレータで電圧落としてサーボに電源を供給したくなってきますね。次回は色々動かして見えてきた課題に対しての設計変更に関しての記事を書く予定です。
読んで下さり、ありがとうございました。

*1:初期取り付け角度やサーボの型番によってばらつきはあるかと思います