n_shinichi’s blog

日々の備忘録、 趣味のあれこれなど紹介

MENU

ledcwrite() より digitalWrite() の方が速い?

連続回転型サーボでの 超単純構成の倒立振子ロボ  全部品はこれだけ。

はめ込み式です。

f:id:n_shinichi:20220403114455j:plain

 サーボホーンタイヤではどうにも不安定で木楽らぼさんに相談で・・・

 駆動信号はledcwrite() ではなく サーボ.h使うでもなく

 digitalWrite()を使ってる。

ledcwrite()がパルス幅入れるだけでいいのに比べれば結構手間が掛かってる...

 自分でポート立ち上げた時間覚えといて、時間を計って、

 指令パルス時間経てばポートを立下げる。

 

なんでかお聞きすると、そもそも以前製作されてた倒立ロボは GR-KURUMI

を使っててledcwrite()がなかったとのことだった。

 

でも・・・ そういえば ledcwrite()はけっこうな高機能の関数...

 関数実行してパルス幅が変更されるまでの時間ってどうなんだろう?

 打ってる最中のパルスは変更されないなら

 規定50Hzで駆動してるとタイミング悪ければ反映されるのは

 1周期遅れの20ms後? ・・・ だとしたら、、、

 振子周期の短い倒立ロボでは痛い。。。

ポート直叩きのdigitalWrite()ならμsecの遅れしかない。

 

ちゃんと測るのは手間なので作り変えて動かしてみることにした。

 

そしたら、ファット君仕様

  『タミヤでは ナロータイヤ で売ってるけど

   サーボホーンOリングタイヤに比べると極太なので...』

 

で試すと、、、ほぼ停止で立ってしまった。。。


www.youtube.com

ledcwrite() より digitalWrite() の方が遅れは少ないかもしれん...

 

これを参考にしてサーボホーンタイヤ版も調整してみよう。。。

f:id:n_shinichi:20220403114724j:plain