Skip to content

これは現在ハード班が開発しているドローンの検証コードと日記を載せています。

Notifications You must be signed in to change notification settings

DTK-CreativeStudio/Drone2020

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

73 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ハード班ドローン作り

記録
2020年

  • 11/10(火)現在

複数のプログラムを試みたがうまくいかず...
試みたプログラムとその参照先のアドレスはinception.inoにのってます。
誰かいつか検証して下さい... (さすピンはあってた)


  • 11/21(土)活動報告(報告者:田中裕)

・4つのモーターにおいて単一のピンでのPWM制御に成功した。(tanaka\brushledd_solo_control.inoを使用) 


  • 11/23(月)活動報告(報告者:田中裕)

・4つのモーターにプロペラをつけて、実機が暴れないように木材に括りつけてモーターを作動させた。 結果、括り付けた木材が若干床から離れる位の揚力が観測できた。


  • 11/24(火)活動報告(報告者:田中裕)

・4つのモーターを2つのPWM信号で2つづつ制御しようと、試みたところ、プロペラをつけていない状態での正常運転はPC電源及びリポバッテリーともに確認した。しかし、プロペラをつけて再度試みたところ、リポバッテリーの場合は正常に運転したが、PC電源を用いた際、途中でモーターが停止し、電源のファンの停止も確認した   (tanaka\brushledd_double_control.inoを使用) 

11_24


  

  • 11/25(水)活動報告(報告者:田中裕)

 11/24(火)の実験と同手順の実験を鉛蓄電池によって行ったところ、初回は正常に動作し、プロペラの回転数制御も行えた。

11/24に作成したスパークキラーを作動させた所、モーターが回らず、原因究明をする必要がでてきた。ここで、まずは単一のモーターにて実験することを計画し、PC電源で行った結果回らなかった。(後に確認した所、モーターのプラグを抜き差しする際に数本arduinoのジャンパー線が抜けていたことがわかったので、それが原因だと思われる。)その後4つともにプラグをつけてPC電源、リポバッテリーで行ったがうまくいかず、鉛蓄電池で実験を行うことになった.
 鉛蓄電池にワニ口クリップつき同線を用いてモーターの電力供給部分を短絡させた所、いままでにない激しいスパークとともに鉛蓄電池の金属端子部分の樹脂から白い煙が噴き出した。危険を感じ、鉛蓄電池からワニ口を外し、鉛蓄電池を食塩水を用いて、無極性化した。 その後、arduinoに正常にプログラムが書き込めていることを確認し、白煙噴出の原因のために、配線を調べたが極性もすべて正しく、arduinoのリード線が抜けていたこと以外に異常が見受けられなかった。その後、同じ配線でarduinoのみ繋ぎ直した所、リポバッテリーにおいて正常に動作することを確認できた(回転数制御もきちんと行えた。)。結局、鉛蓄電池がお釈迦になった理由はわからなかった。
追記)以下に正常なarduinoの配線を添付する。 arduino_brushless_malch 
(無極性化の際に参考にした動画:https://www.youtube.com/watch?v=78alVithOEg)


  • 11/26(木)活動報告(報告者:田中裕)   

11/25に行った鉛蓄電池の無極性化の結果、水色の液体が発生した。鉛蓄電池の中に希硫酸が含まれることから、水色が硫酸銅を示していると判断し、イオン化傾向の低い鉄やアルミを投入することで、銅が分離できると考えた。そこで、鉄のワイヤーをコイル状にし、やすったもの(表面積を増やすため)を無極性化を行っているバケツの中に入れたところ、10分程度で水色の液体が少し、黒色に変わっており、うっすらと溶液内に茶色の層ができていることを確認した(銅が析出したと考えている)。その後、同バケツにアルミ箔をくしゃくしゃにしたものを入れ、放置すると、10分程度で、茶色の沈殿が目立つようになったとともに、バケツの中から水色の溶液が確認できないようになったため、ダイソーで購入した灯油をくみ上げる機器を用いて、別のバケツに黒色になった溶液を移した。


  • 11/30(月)活動報告(報告者:田中裕)

リポバッテリーの充電器が届き、従来使用していたスパークキラー(写真1)を噛まして動作確認を行ったところ、スパークが発生した。充電が満タンになったことで、電力が増し、従来のスパークキラーではスパークを抑えることができなくなったと考える。このことから、スパークキラーの調整が必要になった。 まず、3[Ω]の抵抗を5つ並列にして試した所、バッテリーの接点から火花が確認できた。

spake1

さらに、2つの直列の抵抗を並列に2本接続した所、スパークの音はなったが火花は出なかった。

spake_2

 上記の状態のスパークキラーを用いることで、ゆっくり接点を短絡させることで、スパークが高確率で起こらないようになった。また、リポバッテリーの充電器を得たことで、安定して動作実験が行えるようになった。今後は、姿勢制御に力を入れていきたい。
  • 12/3(木)活動報告(報告者:田中裕)

モーターの4つそれぞれを、4つのPWM信号を用いて制御することに成功した。 (tanaka\brushless_quad__control.inoを使用) 

brushless_quad_control

gy-251(六軸ジャイロセンサ)にて、arduinoのI2Cdevライブラリを用いたyaw,pitch,roll角の測定に成功した。

[手順]
(1)(https://github.com/jrowberg/i2cdevlib) でi2cdevライブラリをダウンロードする。
(2)ダウンロートファイルの中の「arduino」というディレクトリの「i2cdev」および「MPU6050」を自前のarduinoの「libraries」に保存。
※もし、もともと「libraries」が存在しなかった場合、arduinoというフォルダに直で「libraries」というフォルダを作成すればいい。
(3)この段階で実行中、または展開中のarduinoIDEがあればすべて閉じて、再びIDEを開く。
(4)IDEのメニューから「ファイル」→「スケッチ例」→「MPU6050_DMP6」という手順でファイルを開く。
(5)ソース上部に記述してあるとおりにGY-251とarduinoの配線を行う。

arduino_gyro


  • 2/17(水)活動報告(報告者:田中裕)

    ・PID制御をExcelで実験してみた (tanaka\PID制御(操作量-(g-U),誤差量-a).xlsxを参照)
    詳しくはpdfにまとめてているので(tanaka\z軸方向のドローンの位置制御(PID).pdf)を見てください。

    ・Excelで目的値に収束した式、ゲインをUnityの物理エンジンで試した見たところドローンモデルが振動した。 →今後は物理エンジンで目標値に収束しなかった原因を究明する。
    ↓見ずらいと思いますが一応gifを載せておきます。(赤い平面が目標の高さ)   Videotogif (1)


  • 2/20(土)活動報告(報告者:田中裕)

・従来1秒ごとにモーターの回転数を変換していたものを0.005秒ごとに変更した。 →(tanaka\sampling_control.ino)参照

ジャイロセンサ(gy-251)を用いてピッチ角(-180°180°)にモーターの信号(10002000)を対応させて回転数を変動させた。
[手順]
※i2cdevライブラリをすでにインストール済みの場合は(1)~(3)は省略してよい
(1)(https://github.com/jrowberg/i2cdevlib) でi2cdevライブラリをダウンロードする。
(2)ダウンロートファイルの中の「arduino」というディレクトリの「i2cdev」および「MPU6050」を自前のarduinoの「libraries」に保存。
※もし、もともと「libraries」が存在しなかった場合、arduinoというフォルダに直で「libraries」というフォルダを作成すればいい。
(3)この段階で実行中、または展開中のarduinoIDEがあればすべて閉じて、再びIDEを開く。
(4)(tanaka\R3.2.20gyro_moter_control.ino)をarduinoに書き込み、以下の配線を行う。

gyro_moter

(5)モーターをバッテリーに接続すると音だけがなって動かない(音がなったのは初期化が完了した合図で実際のピッチ角をまだジャイロセンサから読み取っていないためモーター自体は動作しない) (6)その後ArduinoIDEの上部の[ツール]からシリアルモニタを開きしばらく待つと、英語で「何か文字を打て」と言われるので、テキトーに文字を打つ。すると、なにかのロードが始まり、ピッチ角が読みだされ、また、モーターが動き出す。
  • 3/2(火)活動報告(報告者:田中裕)

ドローンの姿勢制御におけるpitch角のPID制御のモデル実験を行い、成功した。 この実験は腕の長さ30cmのドローンを想定し、モーターの回転が与えるyaw、rollの影響を無視した場合、PID制御でpitchが制御できるのかという実験であった。
操作量を左右のモーターの入力信号とし、制御量をpitch角(動画ではどっちかというとrollになってる)としたとき、以下のようなPID制御を行った。
image

このとき、実験装置は動画(tanaka/movie/pitch)のような挙動を見せた。我々はこれでpitch角のPID制御が可能であると判断した。
使用コード(tanaka/R3.3.2.gyro_moter_control_Pid_pitch_success)
配線:11/24の配線に12/3のジャイロの配線を合わせた感じ

  • 3/17(水)活動報告(報告者:田中裕)

ドローンの姿勢制御におけるyaw角のPID制御のモデル実験を行い、成功した。 この実験は腕の長さ30cmのドローンを想定し、モーターの回転が与えるpitch、rollの影響を無視した場合、PID制御でyawが制御できるのかという実験であった。
操作量を左右のモーターの入力信号とし、制御量をyaw角としたとき、以下のようなPID制御を行った。
image このとき、実験装置は動画(tanaka/movie/yaw)のような挙動を見せた。我々はこれでyaw角のPID制御が可能であると判断した。
使用コード(tanaka/R3.3.13.gyro_moter_control_Pid_yaw_success)
配線:3/2と同じ

  • 8/9-8/25活動報告(報告者:田中裕)

地下室が使えなくなったことで自宅での開発を余儀なくされた。

自宅でブラシレスモータを回すことが怖かった(リポバッテリーを持っていることが怖い)のでブラシ付きのマブチモータ(FA-130RA)にてミニドローンを作成することを決定
FA-130RAのデータシート

モーターの回転数を制御するためにトランジスタのスイッチング特性を利用したarduinoのPWM制御を考え、モータ(適正電流500[mA],適正電圧1.5~3.0[V])のスイッチングを満たすトランジスタ(2SC2235)を調達する。
2SC235のデータシート

arudinoの最大出力定格が5[V],40[mA]であり、コレクタ電流が500[mA]、コレクタ電圧が3[V]となるためのベース電流は、2SC2235の伝達特性よりぴったり7[mA]くらいであることがわかる。よって5[V]の電圧を印加すると7[mA]になりそうな抵抗を適当に家から持ってきて以下のように配線し実験した。
image 実験使用ソース

単一でのモーター制御に成功したため、4つのモータの制御基板を同様に作成し、同様に制御に成功した。なお、3Vは単三乾電池2本を使用した。


今後の課題

・4つのモーターの制御にはPCの定電圧電源を用いたので、その制御がリチウムポリマーバッテリーでもできるのかを検証する。
リチウムポリマーバッテリーを使っても4つのモーターの動作確認ができた。

リポバッテリーの充電器を購入する。
動作確認済み

鉛蓄電池がぽしゃった理由の究明
スパークが原因であると考えることができるため、早急にスパークキラーを開発した。

・モーターを一つ使うときにモーターに流れる電流、および、モーターの回転数を測定し、それを基準として4つのモーターがそれぞれ適切な動作を行っているかを確認する。

傾きの変化を感知して、モーターが動くような制御をおこなう。
→ジャイロセンサによって実現

ドローンのスライディング動作の実現

スロットル(ドローンの上下)の実験を行う

ドローン自体の実験機を作成し、姿勢制御が可能かを調べる。

参照

https://www.robotshop.com/community/blog/show/rc-speed-controller-esc-arduino-library
みんなVS CodeでArduinoしよう
https://qiita.com/narikei/items/847613a8f01a9e1527d7

About

これは現在ハード班が開発しているドローンの検証コードと日記を載せています。

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages