Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

PWM 出力 (アナログ出力) の周期を制御したい #26

Open
dynamis opened this issue Nov 19, 2020 · 2 comments
Open

PWM 出力 (アナログ出力) の周期を制御したい #26

dynamis opened this issue Nov 19, 2020 · 2 comments

Comments

@dynamis
Copy link
Contributor

dynamis commented Nov 19, 2020

現在アナログ出力対応の拡張が実装されているが、
https://chirimen.org/chirimen-micro-bit/guidebooks/extendedFunctions.html

pins.analogWritePin() だけ使っていて ping.analogSetPeriod() を一切使っていない。従って単にアナログ出力として使う分には問題無いが、PWM として使いたい場合には未対応。

この結果、例えばタミヤの mi-01 を使いたいという人がすんなり使えない。
https://www.tamiya.com/japan/robocon/topics/faq190711.html

実際には mi-01 を使うだけなら analogSetPeriod(pin, 1000) などと PWM 周期の初期化を processGpioAwrite() の最初に一度だけ呼ぶようにするとか適当に書き換えれば使えるが、ちゃんと?拡張 WebGPIO API 的に (または WebPWM API として) 定義したい。

https://github.com/chirimen-oh/chirimen-micro-bit/blob/master/micro-bit/custom.ts#L115-L118

    export function processGpioAwrite(): string {
        pins.analogWritePin(getPinAddr(gpioPort), gpioVal)
        return (gpioPort + "," + gpioVal)
    }

https://makecode.microbit.org/reference/pins/analog-write-pin
https://makecode.microbit.org/reference/pins/analog-set-period

@satakagi
Copy link
Collaborator

このタミヤのキット、超音波センサーがI2Cになっていたりいろいろ興味深い造りのようですが、ちょっと検証用だけの調達はハードル高いですね。
https://www.denshi.club/cookbook/arduino/microbit/post-11.html
に少し解析された情報が載っていますが、実物がないと動作の確認は難しそうですね。
よくあるフルブリッジのモーターコントローラにPWM信号を入れる場合は、PWMの周波数はそれほどシビアでないと思いますが、これはPWMのデューティ比1:1で停止となるようなので、ちょっと異なるように見えます(360°連続回転サーボ(ローテーションサーボ)に近い?)

とりあえずPWM周波数を設定できる仕組みの実装を試してみます(課題はmicrobit側のリソース不足か)

@satakagi
Copy link
Collaborator

satakagi commented Nov 26, 2020

https://chirimen.org/chirimen-micro-bit/alpha/pwmExtension/
つくってみました

gpioPort.setPwmPeriod(pwmPeriodInMicroSec);

SoCの制約からと思いますがいろいろクセのある振る舞いをします。 PWM周波数は全ピン共通(ピン指定で周期を設定しても他のピンにも波及する・・そうだろうとは思ったけど)、ただしPWMデューティー比はピンごとに設定可能とか・・

ここまでできれば、サーボは直接駆動できるかな。あと、圧電スピーカーつけて音を出すとか

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants