一通りの配線確認を行い、それなりにセンサーの値を読み取り、モーターも正転、逆転できるところまではきました。
本体を組み立てていきます。
まずは、ギヤボックス。ネジ位置が板とあわないので、カッターでちょっと切り欠きます。後ろにプラスチックの板でユニバーサルプレートをネジで挟んで両側止めます。ここがグラグラすると全体に波及するので、プラスドライバーとラジオペンチでしっかりとめます。
真ん中と上部に基板を引っ掛けるL字金具を取り付けます。基板は幅広ゴムで止めます。
微妙に配線がきついですが、何とかなりました。
全体はこんな感じです。
上部は、ESP32と9軸センサーです。
DCモーターコントローラー。LEDは、PWM出力を明るさで確認できます。
ギヤボックス
背面はモーター駆動用の電池をゴムで取り付けます。
なんとか、全体的な形になりました。
再度配線を確認して、これまで個別のプログラムを 引っ付けて、センサーとモーターの動きを制御したいと思います。
さて、GW中に倒立するのか。
小型PCのRasspberyPiや各種マイコン(ESP32,STM32)をベースに、Ambientクラウドを連携させたり、モーターやセンサーを連動させたりします。環境構築や出来ましたをまとめたblogです。
登録:
コメントの投稿 (Atom)
ラズパイ日記...esp32(arduino)+mpu6050
# esp32で6軸センサー読み出し esp32で6軸センサーを読み出し、値をグラフ表示して動作を確認します。 ## 準備 ハード的な接続は、センサーが3.3V駆動できるので、3.3VとGNDの2線で電源供給します。I2C用にSDAとSCLのデータ線が必要ですが、esp...
-
師匠に触発されて、9軸センサー購入しました。 動き系のセンサーは、どんなものか調べてみるのと、動力系と合わせて倒立振子をつくってみようと思ってます。 どんなものかは、Youtubeに沢山出てます。 センサー情報を元にモーターを制御するのはいろいろと難しい感じですが、結構...
-
# STM32F303K8ボードでCAN通信を しばらく「ラズパイ日記」の更新滞っていましたが、また始めます。昨年バイクを買ったのでそのデータを吸い出して 走行データと一緒に可視化できればと思い始めました。マイコンも新しい小型なものを購入し動作確認から始めたいと思います。 ...
-
一通りの配線確認を行い、それなりにセンサーの値を読み取り、モーターも正転、逆転できるところまではきました。 本体を組み立てていきます。 まずは、ギヤボックス。ネジ位置が板とあわないので、カッターでちょっと切り欠きます。後ろにプラスチックの板でユニバーサルプレートをネジ...
なぜか片方のモーターが動かなくなりました。コントローラは壊れてないし、配線もおかしくないし。地道にテスターで配線を確認中です。
返信削除できるだけ軽く、重心が低い方が制御への負担が軽くなるような印象です。
返信削除アドバイスありがとうございます。
削除昨日から配線確認してますが、モーターが片方しか動かない状況継続です。ただいま、DCコントローラの基板入れ替えて、再度配線中です。事前確認しっかりしても、組み合わせるといろいろとあります。重心は、低めを目指します。
両モーター動くようになり、全体組立てと動作確認OKとなりました。
削除pythonコードもそれなりに書いて、動かしてみました。
https://youtu.be/KxeUnTHbbns
これは、いつになったら立ち上がるのでしょうか? センサー値とパラメータの調整頑張ってみます。
結構、座高が高いのでアルゴリズムとパラメーター値の選び方に大きな影響を受けそうな気がします。カーペット上では、なんとか自立したバージョン:https://m.youtube.com/watch?v=0F1cNDqROBQ
削除パラメータ調整2hほど休み休みやりました。ちょっとは大人しくなりましたが、倒立する気がしません。リフレッシュして、また明日頑張ります。今日はここまでです。
削除https://youtu.be/3xS6EIGuFdI
パラメータ調整頑張ってみましたが、高重心は一旦休憩します。重心を落として低重心版で再度トライしてみます。
削除重心の位置に加えて、私の環境では「十分余裕を持った電源」が必須のようです。エネループやモバイルバッテリーを昇圧し、6VでESP32とモータを駆動していますが、あまり長い時間は持たない印象です。電源が十分でないと制御が不安定になって、自立しません。
返信削除ESP32はUSB給電、モーターはエネループ×3です。エネループは、毎日充電してます。確かにどこかのblogでモーター電池は、劣化すると制御不安定になると読んだことあります。誠意低重心版、パラメータ調整中です。
削除バッテリーとステップアップコンバータを仮搭載してみました。https://youtu.be/NMLnAi5Pjzo
返信削除無謀な操作(?)をすると倒れたり、ハンチングのような動作を繰り返したり、面白い動きをします。
独自バージョンは、今のところカーペット上なら自立しますが、硬い床では直ぐに倒れる状態です。動画のバージョンの元ネタは https://www.jjrobots.com/much-more-than-a-self-balancing-robot/ で、使っているモータは異なりますが、元ネタのほぼデッドコピーです。元ネタは、パラメータ(4種類)設定もスマホから可能で、それぞれのパラメータの影響を確認しながら、独自の実装へ取り込みたいと思っていますが、はたして、、、、
パラメータ決まると、静止するんですね(笑)。低重心版も、静止する感じがしません。元ネタページ楽しいですね。パーツにArduinoスケッチ、3Dプリントのデータとすべて揃ってます。GW残り少ないですが、低重心版の安定化頑張ります。 パラメータ外部入力できたらなと、昨日思いつきましたが、動かしながら値を入力する方法を探しきれませんでした。
返信削除制御プログラムはどんな構成でしょうか? いろいろな記事を参照すると、メインループの中でセンサーの情報などからモータ駆動の値をグローバル変数へ書き込み、実際のモータ駆動は、メインループとは別に、タイマー割り込みでグローバル変数の値に従ってモータの回転を制御しているようですね。私の元ネタも、そのような構成になっています。
返信削除初期設定でジャイロ調整→main loop→chk_power()→forward() or back()→main loop
削除が大きな流れで,chk_power()でセンサー値を読んで処理して、モーター出力を返します。モーター動かすところは、モーター出力値と前進か後進を指示して一定時間(300ms)sleepです。
モーター出力は、割り込み処理にしたほうがいいのですかね。
「半日で倒立振子」https://www.instructables.com/id/Another-Easier-Inverted-Pendulum-in-Japanese/を参考にのデジタル版arduinoスケッチをほぼそのままmicropythonに書き換えました。
その記事は私も見ています。どの記事にも、パラメータ値の設定方法が見当たらないので苦労しますね。WiFiで制御できるようになったバージョンも、最初は自立せずに何が原因か悩みました。一旦自立すると、ネタ元のパラメータの値はデフォルトのままでも自立するようになりました。今になって思うと、最初に自立しなかった原因は、機械的なバランスとモータ駆動の電源の2点が問題だったような気がします。
返信削除そうなんですよ。パラメータは、環境に依存するのと、結構組み合わせがシビアなようです。低重心版、重心の調整とタイマー割込によるモーター駆動を頑張ってみます。
削除