• 車種別
  • パーツ
  • 整備手帳
  • ブログ
  • みんカラ+

黒っ9(クロック)のブログ一覧

2015年05月14日 イイね!

デジタルスピードメーター(車速表示)を自作してみる

デジタルスピードメーター(車速表示)を自作してみるスピードメータについて問い合わせをいただきました.いままで単独でのスピードメータは作ったことがなかったので、せっかくなのでちょっと考察してみました.メモとして残しておきます.細かい計算には触れません.考え方と、その結果の紹介になります.

以前、多機能タコメータを作ったのでハードはこれを使います.



◆タコメータとスピードメータってほとんど同じじゃないの?
タコメータとスピードメータは一見似ていますが、プログラムの難易度としては後者がより高く、難しくなります.タコメータは基本的にパルスが入力され続けることが保証されていますが、車速パルスは車が停車するとパルスも止まります.高性能メータは基本的にカウンタをソフト的に内蔵していて、車速パルス1パルスの間に何回カウントできたかで車速を算出します.これを ”レシプロカル方式” と呼びます.

分解能”1km/h”とか唄っていても、例えば200km/hと201km/hで、カウント数の差が1しかないとか・・・ 理論的には速度差を分離できますが、まー使い物になりません.そこで、ネットでもそー見かけない方法でメータを作ってみることにしました.

※パルス計測方法としては”ゲート方式”があります.一定時間内に何個のパルスが来たかを・・・.市販品を始め、YouTubeやWebページで見られるように世の中に出回っている殆どのメータの計測方法です.どんくさいので技術的に魅力を感じません.

しかし、一方でレシプロカル方式は極めて低速なパルスが来ると内部カウンタはいつまでもカウントし続け、ついにはオーバーフローしてしまいます.普通はそうならないようカウンタの周波数を遅くして、しかし高い速度のパルス(高周波)でも速度に応じてわずかにカウント数に差ができるようにしているのが、レシプロカル方式で試している方の大部分を占めるやり方です。

◆パルス計測をちょっと工夫してみる
基準カウンタを1マイクロ秒で組み込んでみます.勘のよい方なら、”そんなの絶対無理!”と思われるかもしれません.それもそのはず、今回使った8bitマイコンの割り込みタイマは16bit(65535=2の16乗)までしか数えられないので、1マイクロ秒でカウントしたら65msec長のパルスまでしか測定できないことになってしまうからです.ネット検索で出てくる自作愛好家の極めて多くの方は基準カウンタ時間を長くして、65535回以下になるようにな苦しいプログラミングをしていることに気付きます.

しかし、65535を”オーバーフロー”した回数を別に用意した変数で数えておけば、最長で32bit(マイクロ秒)が測定できることになります(long=4byte=2の32乗).周期が数時間といった極低周波も検出できますし、それでいて200-201km/hのカウント差は、35カウントになりスレッシュホールドとして判定に余裕ができることになり、非力なマイコンでも高精度な計測が可能になります.

マイコン内蔵クロック:8MHz
プリスケーラ:2 (初期値=0xFFFF)
タイマ1の周期:1マイクロ秒=1MHz

これがエクセルで計算したカウント数と、PICシミュレータで内部変数(カウンタ値)をリアルタイムに表示したものです.この例では1km/h、つまり0.71Hzのパルスを観測しています.1マイクロ秒での理論カウント数は、141万回. 一方のシミュレータでは140.9万回でほぼ一致しています.カウンタのオーバーフロー回数は21回となっており、これも理論値と一致しています(^^


◆ノイズによるパルス計測誤差に関して
車速パルスは車速が大きくなるほど短く(高周波)なります.これにノイズが含まれると0-12V、あるいはその中間で変化してパルス周期があたかも変化したようになります.つまり、本来のカウント数よりも少ないカウント数になることは簡単に想像できます.逆にノイズによってパルスが長くなることはありません.この現象をうまく利用します.

具体的には、 時系列でカウントしたものを例えば5つの変数(箱)に入れ込みます.これを大きい順に並べ替えて一番最初の変数、つまりノイズを含んでいない確率の高い品質のモノをとってきて、現在の確からしいカウント値とする方法です.ローパス機能をもたせることができ、高周波パルス(高速域)に対して移動平均やメジアンフィルタを施すよりも強力なノイズ除去性能が期待できます.並べ替えは、バブルソートや挿入ソートなどが有名です.

◆高性能ビデオカメラに対応したディスプレイ
表示器は7セグ.ダイナミック点灯方式で4個の7セグを1こずつ横にずらしながら高速で切り替えて点灯させています.これは配線数を減らすために用いる一般的な手法ですが、切り替えを早くしないと目線を通過させたときに点灯の切り替えが見えてしまい煩わしくなります. さらに、車載動画などで60fpsで撮影したときに切り替えが遅いとちらついてよく分からなくなります.市販のドライビングモニターはちらつきが激しくてよく分からない動画をよく目にします.こうならないために、十分高速に表示を切り替えることにします.



一番左の7セグを表示させてから、隣の7セグに移るのに100マイクロ秒.つまり4桁表示するのに400マイクロ秒(2500Hz)の超高速切り替えとしています.これだけ切り替えが高速だと、目線を左右に動かしても一切ちらつきが見えず連続点灯に見えます.これは一般的な表示器の50~100倍の早さになります.車載メータとしては重要なこだわりポイントでもありますね.

◆ユーザビリティとプログラマビリティ
プログラム変更せずに各種設定ができるようメニューを埋め込んで、ユーザが自由に呼び出して実行できるようにしています.ここで悩ましいのがメニューの表示方法.というのも、7セグで表現するには限度があります.当然、表記は数字・アルファベットに限定されますが後者は全て表現できるわけではありません.限られた記号を使ってなるべく分かりやすく、それでいてプログラムのしやすさにも配慮してみました.

プログラムの中ではbitの1/0で各セグメントを操作します.例えば7セグに”b”と表示する場合、内部では ”0b11110100 (0xF4)”と表します(配線の仕方によって表記は異なります).1文字ならこの表記で事足りますが、”Abcd”とか別の表示をしたい場合は都度めんどくさい・・・.イチイチ表現を考えていては効率が悪いので、JISの文字コード表(ASCIIコード)をメモリー内に持たせました.ただし、bit表記とアスキー文字の対応表は最初の1回だけ自分で作らなければなりませんが、エクセルを使えば一瞬で作ることができます.

エクセルに各セグメント7つを配置し、光らせたいセグメントに”1”を入れると黄色く反転して自動でプログラムコードをはき出すようにしました.あとは、プログラムソースに貼り付けるだけでOK.アスキーコードを参照する関数を書いておけば、 SetChar7seg("Abcd"); と記述するだけでよいので、プログラムがはかどります.※この自作関数は文字列リテラルの先頭アドレスをポインタで受け取り、ポインタ変数をインクリメントすることで4文字処理する関数.

 

今回使ったマイコンのメモリー使用量です.

◆スマートシリーズ(SmartDigitalTachometer)
メニュー設定の雰囲気はこんな感じ(以前作ったスマートタコメータ)
サイズも get in shape♪


TOP画像左下のは車輌パルス発生機として昔自作したパルスジェネレータ.
(アジア圏の基板メーカに製作依頼したモノ.カラー基板でも安い)

あまりメジャーじゃない方法でやるってのが好き.真似だとつまらん.普通に考えると下記の項目は欲しいと思われる機能なのに、これらを盛り込んだものを作ってる人っていない.なぜだろう??

【MCU】
PIC16F88(4KWORDメモリ内蔵)

【配線】
only 4 wires!
1)12V(10 to 14V)
2)GND
3)車速信号(pulse)
4)イルミ信号

【仕 様】
 設定はメニューを呼び出して変更可能
   ※停車中・走行中でも変更可能
1) 車速パルス:
  1, 2, 3, 4, 6, 10 [パルス/回転]
  ※プログラムにより種類を増やすことも可
2) 表示分解能:
   1, 2, 5, 10, 20[km/h]
3) HUD(ヘッドアップディスプレイ):
   ON / OFF
4) 夜間減光(イルミ信号より判定):
   輝度→10,20,30,40,50,60,70,80,90,100 %
5) ゼロサプレス::
   ON / OFF  例:"0825" → " 825"




以前、LCDタイプのモノも作りました.
大きな画面で動画再生する(YouTube)

4万回以上再生されているので、結構興味を引くようです.
コントラストや輝度、パルス設定はメニューから呼び出して変更できるようにしました.





【キーワード】
デジタル スピードメーター タコメーター パルス2 パルス4 自作 作る つくる 製作 お手製 DIY 回路 永井電子 ウルトラ マイコン 0から 0から 1から 1から ゲート方式 レシプロカル ギア比 ギヤ比 タイヤサイズ シフト ギア変速 から計算 計算 JIS パルス計測 クラッチ レシプロカル方式 ゲート ゲート方式 判定方法 高精度 高性能 パルス設定 パルス計測 移動平均 メジアンフィルタ デジタルフィルタ 三菱車 subaru車 自作基板 基板製作 基板 基板設計 回路図 秋月 秋月電子 車速表示 車速 表示 オーバーフロー デジタルスピードメータ 電源部 車速入力 設定 メニューから 7セグ ダイナミック点灯 ダイナミック 制御 表示 シミュレーション HUD ヘッドアップ ヘッドアップディスプレイ デジタルスピードメーター デジタルタコメーター JIS規格 電子回路 設計 コンパクト 小型 超小型 JIS JIS-D5601 JIS D5601 ascii table tach tachometer tacho 7seg 7segment segment segments simulation ISIS proteus speedmeter speed meter gear shift position indicator indicater 5speed 6speed Assembly Desk transmission manual automotive pulse display ultra ratio gearposition shiftposition mikroc hi-tech compiler PIC microcontroller microchip arduino avr PIC16 PIC16F PIC16F88 PIC16F628A PIC16F648A akizuki timer timer0 timer1 HUD headup head display
Posted at 2015/05/14 01:15:52 | コメント(1) | トラックバック(0) | PIC+電子工作 | 日記
2014年07月27日 イイね!

Segwayをマイコンで実験♪(慣性センサ応用)

Segwayをマイコンで実験♪(慣性センサ応用)前回に引き続き、Segwayに関して. 

久しぶりに時間ができたので、前回試したシミュレーションをマイコンを使って本当に1輪だけで倒れずに制御することができるのか?
試してみました.も~好奇心でしかありません(笑)
Segwayの基本となる倒立振子を制御してみます.



基本的にPID制御ならばそこそこいい加減な制御パラメータでもうまくいっちゃうことが多々あるので(限界感度法でざっくり推定しても可)とりあえず?的なノリで挑戦してみました.ま~大人版 『夏休みの工作♪』


素材はTAMIYAの工作シリーズを使ってみました.20年ぶりか???  ギアボックス、シャーシ、タイヤ、電池BOXもAmazonでそろえてみました.その他に、マイコン/センサ/配線を少々でOK.世の中に見られるような物々しい倒立振子ではありません.お手軽に実現する!のも今回の目標でもあります.1ブレッドボード!
シングルギヤボックス スリムタイヤセット ユニバーサルプレート

簡単そーなギアBOX.でも実際組み立てようとすると子供の頃のようにサクサクと進みませんね(^^; 結構複雑で、説明書をじっくりと見てしまいました・・・.小さい頃は説明書なんてあまり見なかった気がするなぁ.

さて、このSegway(倒立振子)、制御の考え方は簡単です.シャーシの角度をセンシングして倒れないようにモータに推力指令を出してバランスを取るだけ!! です.ハイ.

モータに出力させたい推力は、やんわりと動かすために弱く出力したり、瞬間的に大推力を出したり、といった具合に変化させたいのでPWMで制御します.マイコンでは大電流を扱えないので、モータドライバを適当に購入しました.あとで、Segway同様にステアリング機能を持たせたいので、2個のモータを駆動できるモノにしてます.

能書きはさておき、完成した動画がこちらです.部品は動画の通り、たったこれだけ!想像以上に簡単にバランスしてくれました! 理論的に成立することはわかりきっているのですが、実際にひょこひょこと机の上でバランスとってる姿を見ると、なんだかかわいらしくもあり、感動さえも覚えます(^ー^o


大画面で見る

Bluetoothでリアルタイムに、パラメータ読出/書込/データ出力もできるようにプログラムしてみました.
スマホで、操作することも難しくないかな. 通信ソフトはフリーソフト等でOK.動画では9600bpsですが、データ項目を増やすと送信が間に合わず制御に影響を与えていたので、115200bpsに変更しました.データ項目を増やして100Hzで取得しても制御に全く影響を与えません.バッチリです.


大画面で見る

角度検出センサとして加速度計とジャイロを採用してみました.なぜ2種類のセンサを使うかというと、検出した値が様々な要因でドリフト(何もしないのに値が変かしていく)してしまうのを、それぞれの得意な周波数帯の合わせ技で補正するために2個のセンサを搭載しています. しかしながら、それぞれの観測値にはノイズを含んでいるのでカルマンフィルタを使って真の値を推定してみたのが下のグラフです.意図的に手で揺らしてみました.
※ ノイズの共分散Q,Rは適当に定めました.

ちなみに、フィルタせずに制御するとじゃじゃ馬になります・・・.
カルマンフィルタは予測と更新を繰り返して推定していきます.MAやFIRのように過去にいくつもさかのぼってデータを保持しなくてもいいのもこのフィルタの特徴です.



こうなると、人が乗れるSegwayもどきを作ってみたくなりますね♪ 本物みたいに坂道もすいすい走るにはちょっと工夫が必要そうです.斜面で倒れずにバランスさせるためには、前傾姿勢で踏ん張らなければなりません.つまり、制御ゲインを上げなければならないのです.まーこれは、人間が操縦するときに自ずと前傾に操作するので、それにあわせてフィードフォーワードゲインをあてればよいでしょう.
動画はUPしてませんが、坂道でのバランスにも成功しました(^^

ちょっとしたマイコンプログラムで、パラメータと挙動の関係が実際に見て取れておもしろいですね/ 
制御のお勉強にもなります. DIY倒立振子で有名なのは、制御の専門家が運営するこちらのHP→【半日で作る倒立振子】.制御を知らない人でもで現代制御”風”に倒立振子をDIYできる内容を紹介しています.

同じではつまらないので、黒っ9は部品点数を極力減らしてPIDで制御してみました.
↓部品はたったこれだけ.




Posted at 2014/07/27 21:05:54 | コメント(1) | トラックバック(0) | PIC+電子工作 | 日記
2014年07月20日 イイね!

Segwayを計算してみる(慣性センサ応用)

Segwayを計算してみる(慣性センサ応用)前回は車輌慣性データの高速ロギングについて書きました.
今回は、 ”慣性センサ” を利用した乗り物についてふれてみます(^^

慣性センサ+乗り物=? で連想するモノの一つとして、Segwayを思い浮かべる人も多いのではないでしょうか.この乗り物を初めて知ったときには、その発想にたまげました(笑) 

最近は半導体製造工程を利用したMEMS技術が発達したこともあって、慣性センサは産業界だけでなく、趣味の世界でも利用され始めてますね. 



さて、Segwayはどうやって操作するのでしょうか?? ググってみるとSEGWAY JAPANにその方法が書いてありました(^^; 簡単に言うと、体を前後に傾けて重心を移動させることで操るようです.つまり、倒立振子の振り子の角度を制御目標値として力をコントロールすることで、あのように運転できるんですね. 一方、方向転換は振り子を左右に傾けることでホイールを差動操作してコントロールしてるようです.なるほど!想像したまんま(笑)

Youtubeで倒立振子で検索するとDIYで一輪車倒立させていたり、Segwayもどきを作っている方もいらっしゃいます(@0@ 実際に作るにはそれなりの準備が必要ですが、シミュレーションならば簡単なので試してみました.

倒立振子に限らず対象物を制御する手法としては古典制御理論があり、世の中の大抵の制御で使われています.一方で航空宇宙工学や複雑な制御を必要とする分野では、MIMO系/線形時変システム(ABCDが時間関数でない時はLTIシステム)が扱える現代制御理論が使われています.が、まずは簡単な古典制御で試してみましょう.マイコンでも制御できるように離散系で制御してみます♪
理系の大学ならば両制御系は必ずお勉強する内容ですね.

Fig.制御モデル(古典制御)
※ジャイロセンサ、モータ制御用のPWM分解能は手持ちのデバイスに合わせてます.
※運動方程式をブロックや状態方程式を使って記述してもよいですが、SimMechanicsで構成.
※センサーノイズや減速機のバックラッシュも加味.

デジタル制御なので推力波形を拡大するとこんな感じでギザギザ.

とりあえず本体の総重量は1kg程度、モータ推力はあまり大きなモノは用意できないと仮定して、±2Nというひ弱な小型モータを想定してみました.慣性テンソルはCADでモデリングて求めてます(手計算でも可).PIDパラメータは連続時間系で最適化して、離散系で適当に係数を調整しました.サンプリングはSegwayと同じ100Hzに設定.これならマイコンでも十分対応できそうです.PIDパラメータとモータ性能次第で、50Hzでも可.
人間はモデル化してませんが、重心を移動してアームを倒している状態を動画にしてみました.


YouTube
加速(安定系)
前後移動(安定系)
パラメータ調整不足
体を前に一定に傾けてる状態
前後に傾けて行ったり来たり♪
あわわわわな、状態(汗)


Segway同様にモータを2個搭載して、各車輪に推力配分してあげれば、XY平面を自在に動き回るようにラジコンで操作できるSegwayもどきも比較的簡単ですね(^^ それにしても、こんな不安定な乗り物を商品化したその発想は本当にすごいなぁ.



せっかくなので、現代制御版も作ってみました.1階の微分項として状態変数を定め、状態空間方程式を立てます.A(4x4),B(4x1),C(2x4).可制御性を判定して、最適フィードバックゲインを推定します.閉ループの極を判定すると、当然複素平面の左側っ.

Fig.制御モデル(現代制御)
※FBゲインは極配置法でなんぼでも安定解を求められるけど人間の操作が入るので評価関数を使って決定.
※ジャイロからは角速度を検出、そしてホイールの回転数をモニタできると仮定して絶対位置を検出して制御.
※このモデルは小型の倒立振子(セグウェイ)を想定
 

Fig.状態変数と推力

たまにこういう事やるとおもしろいですね(^ー^o



慣性センサならではの応用例でしたが、一昔前より格段に高性能になったIMUはQuadcopterにも使われ始めています.Quadcopterはその応用範囲が広いため、海外では技術者の必要性が高まっているらしいですね.大学の研究対象としても選ばれるくらいに未知の可能性を秘めていたりもします.

TED(海外の人気プレゼンカンファレンス)で紹介されたQuadcopterの動画
Raffaello D'Andrea: The astounding athletic power of quadcopters
彼が説明している通り、リルレクタマーカをインドアトラッキングシステムでキャプチャし位置を制御しています.棒を機に立てますが、棒の先端にもマーカが設置してあり機との差分で棒の角度を2自由度で検出しています.グラスにはマーカーがありません.じゃ~どうしてこぼれないのかって?説明を聞くとあ~そりゃそうだ思っちゃうけど、空間トラッキング、トラジェクトリー推定、といった複雑なことをいとも簡単に実現してますね/
Posted at 2014/07/20 09:30:05 | コメント(1) | トラックバック(0) | PIC+電子工作 | 日記
2014年07月12日 イイね!

超高速データロギングに挑戦♪(車両慣性データ)

超高速データロギングに挑戦♪(車両慣性データ)”車の位置/姿勢をロギングする”
と一言で言っても、利用する目的や内容、そして要求精度によってもソフト&ハードの構成が変わってきます.低サンプリングデータを後に内挿するのか、あるいは高サンプリングで忠実に記録するのかは議論が分かれるところですが、後者の方がより統計的処理ができるので分析する側としては好まれます.


ググってみると気付きますが、市販のマイコンチップとお手頃なSDカードを使ってロガーを作ることは、それほど物珍しくないことに気付きます.物理センサやGPSデータ、ECUデータを低サンプリング(~5Hz)で保存することはそんなにハードルは高くありません.では、さらに1桁や2桁サンプリングレートを上げるにはどうしたらよいのでしょうか?

単純にSDカードに保存する間隔を短くすればいいんじゃない? と思って実行してみましたが、実はSDカードに保存するプロセスは凄く遅いし(※1:10~50ms)ばらつきもあるため、短い間隔でデータを保存できないことが分かりました.流れてくるデータをいちいち相手にして保存していては解がないということです.
※1:マイコンで操作しやすいSPI方式の場合

ではどうすればよいか? こんな方法を考えてみました.
簡単に言うと、AとBの2個のバケツを用意します. 高速で流れてくるデータをバケツAに流し込み一杯になるまで待ちます.バケツAが満たされたらすぐにデータの流れをバケツBに移します.それと同時にバケツAのデータをSDカードに保存する方法です.これをA/Bで繰り返します.この方法ならば、他方のバケツが一杯になるまでにSDカードとのやりとりを終わらせればよいことになります. イラストにするとこんな感じ.

    Fig.高速データロギングアルゴリズム
    ※マイコンのSRAM領域をバケツA/Bに割り当てます.


このやりとりをプログラムで表現するにはどうしたらいいんでしょう(ToT;;
ちょっと悩みましたが、ほんの数行で実現できるようにしてみました.
※5msecの割込処理で実行します.


とってもシンプルなプログラムですが、その実力を見てみましょう.
200Hzでデジタル6DOF-IMU(加速度/ジャイロ)データを取り込んでみました♪

time
omegaX
omegaY
omegaZ
accX
accY
accZ
sec
deg/s
deg/s
deg/s
G
G
G
0.000 0.6300 -10.7538 43.4438 0.4528 0.1872 0.9997
0.005 -3.7713 -11.3925 45.5700 0.4216 0.2028 0.9685
0.010 -6.9125 -11.5500 48.8950 0.4841 0.2185 0.9997
0.015 -10.1763 -12.7050 50.5050 0.3278 0.2341 0.9997
0.020 -13.3788 -11.5588 51.7388 0.3747 0.2341 0.9997
0.025 -14.6300 -13.9475 53.0425 0.3122 0.2341 0.9685
0.030 -16.2050 -14.2275 55.7900 0.3747 0.2653 0.9060
0.035 -14.0438 -9.4238 58.9050 0.4216 0.2810 0.9216
0.040 -12.2325 -6.6413 60.0600 0.5153 0.2966 0.9685
0.045 -8.3563 -7.1313 61.6613 0.4997 0.3278 1.0153
0.050 -4.9000 -11.4800 63.2625 0.5466 0.3435 1.0310
0.055 -2.8700 -17.4300 65.6688 0.4372 0.3435 0.9997
0.060 -1.5400 -21.2450 69.0550 0.4841 0.3278 0.9528
0.065 -1.1288 -20.4488 71.0150 0.4685 0.3122 0.9060
0.070 -1.5925 -17.9813 71.6450 0.4528 0.3122 0.8903
0.075 -1.4175 -9.3100 72.7300 0.2341 0.3278 0.9060
0.080 0.5688 -4.0338 73.1238 0.2028 0.3591 0.9528
0.085 3.8763 -3.5000 72.3450 0.5466 0.3591 0.9997
0.090 9.3975 -5.9588 71.7500 0.4216 0.3747 0.9997
0.095 15.7238 -11.4450 71.4963 0.3278 0.3591 0.9997
0.100 18.2263 -16.6425 70.5338 0.3122 0.3278 0.9841
0.105 16.5025 -20.8775 68.5650 0.2810 0.2810 0.9528
0.110 13.6675 -18.0513 68.9063 0.1872 0.2810 0.9216
0.115 9.8175 -14.9975 67.6200 0.0000 0.2966 0.8903
0.120 8.6888 -9.6338 66.4738 0.1560 0.3435 0.8903
0.125 7.3413 -5.7313 65.9750 0.3278 0.3435 0.9216
0.130 7.3413 -5.7313 65.1875 0.4372 0.3435 0.9372
0.135 7.3413 -5.7313 65.1875 0.4216 0.3435 0.9372
0.140 7.3413 -5.7313 65.1875 0.3278 0.3435 0.9372
0.145 7.3413 -5.7313 65.1875 0.3903 0.3435 0.9372
0.150 7.3413 -5.7313 65.1875 0.3903 0.3435 0.9372
0.155 7.3413 -5.7313 65.1875 0.3903 0.3435 0.9372
0.160 -40.1188 12.7050 52.1850 0.3903 0.1247 0.7497
  数十万行続くので、表示はここまで.
             

※ センサ値の更新は400Hz以上で更新されるためレスポンスとしては十分です.
※ロギングを終了するときは、両方のバケツをSDカードに流し込むだけ.
※数時間ロギングしましたがデータ欠損も皆無です.
※50Hz更新のGPSデータ(NMEA)も楽ちんでした♪


見た目はちっぽけなプログラムですが、非常に強力なアルゴリズムになっていることが確認できました(^0^/
データ量にもよりますが、数百Hz(~1000Hz)のロギングも安いマイコンで実現できちゃいますネッ.
この方法を使えばSDカードだけでなく、例えば無線通信を使ったデータ転送にも応用できます.
ちなみに画像の左下のやつはBluetoothユニット.無線でPCとデータの送受信を行ってます♪


こういった慣性データと古典制御理論あるいは現代制御理論を組み合わせて、
何かオモチャを作ってみるのもおもしろそーだなぁ~

↓以前作った6DOFセンサを使ったお遊び動画↓

Posted at 2014/07/13 00:12:07 | コメント(1) | トラックバック(0) | PIC+電子工作 | 日記
2014年02月08日 イイね!

ステッピングモータをつかってみる♪ EDFCとかのあれ

ステッピングモータをつかってみる♪ EDFCとかのあれ雪スゲ-(@0@ ・・・・

お昼にワイパー上げに外でたら、ま~雪がこんこんふってること.
明日も続くみたいですね.こーさむいと、部屋でのんびり.
前回コメントでステッピングモータに関して質問頂いたので、
せっかくなので、挑戦してみました.



ステッピングモータ.概念は知っていますが、実際に使ったこと無い.でもGoogleで調べると、ずらっと使い方から制御方法まで出てきます.水曜に注文していたモータが昨日届いていたのでちょいと試してみました.世の中では至る所に使われているけど、車ではメータやブーストコントローラ、スロットル調整など、機械的に回転を発生させて制御する物に使われてるようです.

ステッピングモータはパルスを1回与えると、決まった量だけ回転させることができるので、オープン制御が可能になります.そして駆動回路に関しても、モータの磁気回路を順番にスイッチングしてくれる専用のICも用意されているので、とても簡単に使えるようです. ドライバICは色々あって用途に応じて選びます.マイクロステップ制御ができるICなら高精度に角速度をコントロールできますね.

能書きは、Google検索にゆだねるとして黒っ9が試した構成はこんな感じ.秋月で注文しました.
内 容
型 番
購入先/備考
ステッピングモータ
SPG20-1362
ユニポーラ, 1(deg/pulse)
ドライバIC
TA7774PG
バイポーラ用(二相励磁)
マイコン
PIC18F25K22
8bit, 64MHz

このモータは360ステップで1回転するので、1秒間に360回パルスを送ると、1秒で1回転します.とても単純ですね.パルスを変えてあげれば、任意の回転速度と回転角度を制御できることになります.ドライバICは、小型で安かったのでコレにしました(^^;

モータのトルク特性は入力パルスの周波数で決まります.負荷をかけた状態で始動できる回転トルクは、グラフの実線を見ると分かります.60Hzでは 36[mN*m] つまり、0.36[kg*cm]という結構なトルクが得られます.指で本気でぎゅっとつまんでも到底かないません.

任意の角速度(rpm)と回転角を指定して、モータを動かすプログラムを書いてみました.
たったこれだけのプログラムなので、あっという間に完成です(^ー^ モータ発熱防止も制御してます.



モータの状態を表す変数は構造体で定義し、配列にして管理してみました(4個のモータまで可).


モータドライブは80usec単位で 超正確に駆動させるために割込関数内で制御してみました.
メイン関数では、センサ処理やLCD表示、ユーザからの指令定義などを行えるようにするためです.

※プログラムはド素人です.もっと効率的な方法があるかもしれません(^^;


主となるプログラムはたったこれだけ.あとは、モータ毎の構造体に変数を入れてあげればOK♪ なぜ割込関数内に書いたのか? もしメイン関数内に書いてしまうと、usec単位での時間管理ができない.そして、1このモータを動かしている間に、別のモータを動かす指令を与えたりすることができない.センサーやLCDと同時に通信できない.といった、残念なことになるからです・・・.

↓動画:いろんなパラメータで自動運転してみた↓


①左回転, 10rpm, 180度,繰り返し:1回
②左回転, 80rpm,1800度,繰り返し:1回
③右回転, 60rpm, 870度,繰り返し:1回
④左回転,110rpm, 90度,繰り返し:5回
⑤右回転, 50rpm, 60度,繰り返し:10回
⑥右回転,130rpm,原点復帰,繰り返し:1回

いとも簡単に動かすことができちゃいました(^^



車高調のバルブをコントロールするEDFC(テイン製).大きなステッピングモータが使われてますね.この回路で、ユニポーラ、バイポーラなら他のモータでもOK.トルク的には今回のモータでもいけるかな? 制御は超簡単なので、はじめて自作する題材としても良いかもしれませんね(^^
このプログラムをちょいと変更すれば良いだけですから♪
車高調への取り付けステイも、簡単に作れちゃいますしネッ.

本家テインのようにGPSと同期させても良いけれど、サーキットのコース長が分かっていれば、フィードフォワードで減衰調整してあげた方が現実的かな.でもEDFCは制御対象としてはつまらない.やっぱり、センシングしてフィードバック制御をつかったアカデミックな物を作ってみたいですね/ 複素領域でゴニョゴニョするあれ.





Posted at 2014/02/08 20:40:13 | コメント(0) | トラックバック(0) | PIC+電子工作 | 日記

プロフィール

「倉庫から色々出てきたでござる http://cvw.jp/b/194408/41272537/
何シテル?   03/27 20:35
黒っ9(クロック)といいます。 黒のエボ9オーナーだったので クロック(笑) 休日は主にドライブです♪ 旅先の露天風呂なんか最高だね! 手作...
みんカラ新規会員登録

ユーザー内検索

<< 2019/11 >>

     12
3456789
10111213141516
17181920212223
24252627282930

リンク・クリップ

自作♪パルスジェネレータ(車&バイク用) 
カテゴリ:その他(カテゴリ未設定)
2017/01/30 21:33:58
自作♪GPI++:ギアポジションインジケーターVer5(MT用) 
カテゴリ:≡ 電子工作にチャレンジ♪
2016/08/27 23:18:43
【PSI++】自作ドライビングモニター でけたぁ~♪ 
カテゴリ:≡ 電子工作にチャレンジ♪
2014/09/16 23:08:56

愛車一覧

三菱 ランサーエボリューションX 三菱 ランサーエボリューションX
セクシーなXにあこがれて9GTから乗り換えました♪ ファントムブラックの5MTです. ...
三菱 ランサーエボリューションIX 三菱 ランサーエボリューションIX
納車されました(^^ セクシーなエボⅨにあこがれて思い切って買い換えました。ん~黒のボで ...
三菱 ランサーエボリューションVII 三菱 ランサーエボリューションVII
頭文字D見てマニュアルの車にあこがれ、ワイルドスピード×2見て刺激され買ってしまいました。
三菱 パジェロ 三菱 パジェロ
幼少の頃からパリダカで活躍するパジェロに興味があり、初めての車にパジェロを物色していると ...

過去のブログ

2018年
01月02月03月04月05月06月
07月08月09月10月11月12月
2016年
01月02月03月04月05月06月
07月08月09月10月11月12月
2015年
01月02月03月04月05月06月
07月08月09月10月11月12月
2014年
01月02月03月04月05月06月
07月08月09月10月11月12月
2013年
01月02月03月04月05月06月
07月08月09月10月11月12月
2012年
01月02月03月04月05月06月
07月08月09月10月11月12月
2011年
01月02月03月04月05月06月
07月08月09月10月11月12月
2010年
01月02月03月04月05月06月
07月08月09月10月11月12月
2009年
01月02月03月04月05月06月
07月08月09月10月11月12月
2008年
01月02月03月04月05月06月
07月08月09月10月11月12月
2007年
01月02月03月04月05月06月
07月08月09月10月11月12月
2006年
01月02月03月04月05月06月
07月08月09月10月11月12月
ヘルプ利用規約サイトマップ
©2019 Carview Corporation All Rights Reserved.