Ene-1GP

Ene-1GP MOTEGIに行ってきた話

 私はReUsというサークルに入っていて、その活動をたまにしていることはこのブログでも度々触れていますが、今回はその大会があったので行ってきました。

 まずサークルとしての大会の結果を書くと、予選敗退でした。この大会は1ラップのタイムの予選の後、一時間の耐久レースがあるのですが今回私のサークルでは予選突破タイムの15分を切ることが出来ませんでした。
 最大の原因は電池ボックスの接点不良です。先週末(11/23)は茂木では一日中雨が降っており、そのせいで機体および電気系統は常に濡れてしまうような状態でした。また事前から予兆はあったのですが、使用開始から三年目に入る電池BOXのバネや配線が弱くなっており、それが当日になって弾けました。
 当日会場に行ったところ、それまで入っていたコントローラの電源が入らず、入ったとしても電圧が低くモーターを回すことが出来ない状態でした。これはバネの間にマステを挟んだり、配線を強引にはんだ付けしたりしてどうにか動くようにして車検を通過しました。
 しかし、実際のレースになるとコースに出て行く際の段差で電池が外れてしまい、2系統あるうちの1系統の電源が使えない状態になってしまいました。そのため出力電流が低くなり、思うように走れませんでした。

 まあそんなこんなでサークルとしての結果はあまり良くありませんでしたが、私個人の担当箇所の一つである表示計器と賑やかしはある程度の結果でした。レース本番ではコードが脱落して起動しなかったり、そもそも取り付けていたケースが脱落したり、散々な結果でしたがそんなものはすべて雨が悪いということにします。
 今回は表示計器をなるべく単純に作りたかったので、LCDに経過時間と自機速度だけ表示するようにしました。去年は電池電圧と電池温度を表示していたのですが、使うことがなかったので今回は削りました。そのため今回はarduino一台で測定表示装飾を行うことに成功しました。
 今回の基板はこちら。
ene1-2019_ブレッドボード
 なんか説明することもないんですが、LCDはこれをつかっています。また、ブレボ上右にあるDIP基板は前回のmp3プレイヤーです。イルミネーションLEDと書いているものは千石で売っていたジャンクテープLEDです。またホール素子はタイヤについた磁石で作動させて速度計にしました。左の四つのスイッチでmp4プレイヤーで流す音を変えています。

 次にプログラムを紹介しますが、つまらないので最後の方に置いときます。

 実際に動作させた場合はこちら まあいい感じにゲテモノで良いんじゃないでしょうか。
 
 今回はここまでです。ReUsは非公式なので全額自己負担なのがつらいです。使っている自転車のインバーターはあまり性能が良くないらしいので、ちゃんとブラシレス用のインバータを作ろうと思います。それではまた今度。

↓[プログラムです]↓
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include "SoftwareSerial.h"
#include "DFPlayer_Mini_Mp3.h"

LiquidCrystal_I2C lcd(0x3F, 16, 2); // I2C: 0x3F, 16x2 LCD
SoftwareSerial mySerial(12, 13); // RX, TX

int v, c;
int pi[360];
int mode;
unsigned long timeset;
unsigned long beforetime;
int V;
float velo;

void setup() {
  lcd.backlight();
  lcd.init();
  delay(2000);
  mySerial.begin (9600);
  Serial.begin(9600);
  mp3_set_serial (mySerial);
  mp3_set_volume (100);
  for (int i = 0; i < 180; i++) {
    pi[i] = 255 * sin(PI * i / 180.0);
  }
}

void loop() {
  if (analogRead(0) >= 1000 && v == 0) {
    mp3_play (2);
    mode = 2;
  } else {
    if (analogRead(0) >= 500 && v == 0) {
      mp3_play (3);
      mode = 3;
    } else {
      if (analogRead(0) >= 300 && v == 0) {
        mp3_play (4);
        mode = 4;
      } else {
        if (analogRead(0) >= 200 && v == 0) {
          mp3_play (5);
          mode = 5;
        }
      }
    }
  }

  if (analogRead(2) > 500) {
    timeset = millis();
   lcd.setCursor(0, 1);
      lcd.print("                ");
  }

  if(V==0 && analogRead(1)>100){
    velo=((22*2.54)*PI)/((millis()-beforetime)/1000.0)*0.036;
    V=1;
    beforetime=millis();
    //Serial.println("A");
  }
  if(analogRead(1)<100){
    V=0;
  }
  
  int mini = (millis() - timeset) / 1000 / 60;
  int seco = (millis() - timeset) / 1000 % 60;

  lcd.setCursor(0, 0);
  lcd.print(velo);
  lcd.print("km/h   ");
  lcd.setCursor(0, 1);
  if (mini > 9) {
    lcd.print(mini);
  } else {
    if (mini > 0) {
      lcd.print(" ");
      lcd.print(mini);
    } else {
      lcd.print(" 0");
    }
  }
  lcd.print("m");
  lcd.setCursor(5, 1);
  
  if (seco > 9) {
    lcd.print(seco);
  } else {
    if (seco > 0) {
      lcd.print(" ");
      lcd.print(seco);
    } else {
      lcd.print(" 0");
    }
  }
  lcd.print("s");

  
  if (mode != 0) {
    v++;
    if (mode == 2 && v > 30) {
      mode = 0;
      v = 0;
    }
    if (mode == 3 && v > 30) {
      mode = 0;
      v = 0;
    }
    if (mode == 4 && v > 30) {
      mode = 0;
      v = 0;
    }
    if (mode == 5 && v > 30) {
      mode = 0;
      v = 0;
    }
  }

  c++;
  analogWrite(11, pi[c % 360]);
  analogWrite(10, pi[(c + 120) % 360]);
  analogWrite( 9, pi[(c + 240) % 360]);
  analogWrite( 6, pi[c % 360]);
  analogWrite( 5, pi[(c + 120) % 360]);
  analogWrite( 3, pi[(c + 240) % 360]);
  delay (10);
}

ArduinoでDFPlayer mini 使って.mp3の音楽を流した話。

 今回はタイトル通りアマゾンで安く売ってたDFPlayer miniというものを使ってArduinoでmp3を流した話です。



 このDFPlayerというものですが簡単に言うと、Arduinoで操作できるmp3プレイヤーのようなものです。今回はこの使い方を説明していこうと思います。

・回路
 まず、下のように配線します。後でプログラムを見るとわかりますが、D10,D11はシリアル通信で使っています。このとき、このモジュールのI/Oは3~4V程度を想定しているそうなので、1kΩ抵抗を入れた方が良いそうです。まあ入れなくても動きます...(電源だけ3.3Vにしたほうが音質がいい気がします)
Untitled Sketch_ブレッドボード


・プログラム
 まず、ここhttps://github.com/DFRobot/DFPlayer-Mini-mp3)からライブラリをダウンロードしzipを解凍した後、中にある「DFPlayer_Mini_Mp3」というファイルをArduinoのシステムフォルダのLibraryに入れます。そうしたらArduinoに下のプログラムを書き込みます。
  1. #include "SoftwareSerial.h"
  2. #include "DFPlayer_Mini_Mp3.h"

  3. SoftwareSerial mySerial(10, 11); // RX, TX

  4. void setup () {
  5. delay(2000); //モジュール起動の待機時間
  6. mySerial.begin (9600);
  7. mp3_set_serial (mySerial); //set softwareSerial for DFPlayer-mini mp3 module
  8. mp3_set_volume (20);
  9. }

  10. void loop () {
  11. mp3_play (1);
  12. delay (60000);
  13. }

・ファイル
 このモジュールに入れるmicroSDカードに下画像のように"mp3"というフォルダを作り、その中に"0001","0002"のように番号付けしたmp3ファイルを入れます。

キャプチャ



 これらの準備が整ったら実際にSDカードを挿して動作させてみます。うまくいっていれば、下のツイートのようにスピーカーから音楽が流れるはずです。

 今回はここまでです。次は二足歩行の続きでも作れたらよいと思います。それではまた今度。

2020/10/13更新 多分プログラムが読みやすくなったはずです。

透過ディスプレイ?を作ってみた話

 なんか最近YouTubeでよく透過ディスプレイの動画が流れる気がするので、適当なモニターをあきばおーで買ってきて作ってみました。

 あきばおーで買ったモニターはこちら。決め手はHDMI入力と5V入力でした。これならラズパイと一緒に使える時が来るかもしれません。
DSC01274


 まあ本題の作成に入ります。
DSC01262
 まず裏返してネジを全部外します。


DSC01263
 フロントパネル?を外すと基板が出てきます。左の小さい基板は両面テープで止まっているだけなのではがします。右の基板はネジで止まっているので全部外します。


DSC01264
 外すとこうなります。とりあえず、スピーカーは今回使わないので外します。また、この後の作業のためにディスプレイのコードも外しておきます。

DSC01265
 バックライトのコードを切ってしまうのでそのために絶縁用のシートをはがします。


DSC01268
 液晶のパネルの分解に入ります。まず側面にある爪を全部で12か所外します。

DSC01275
 これで中から出てくる黒い板が出てきます。これが今回使い物本体になります。

DSC01276
 コネクタを戻して体裁を整えれば完成です。

DSC01271
 電源とHDMIを挿せば映ります。これは写真のために裏にiPhoneを置いてますが、ある程度の明るさの場所で肉眼で見る分には普通に見えます。

 今回は透過ディスプレイを作ってみました。このブログ恒例行事の全然VVVFを作るといいながら作っていない状態なので、今度こそ作ろうと思います。それではまた今度。

パソコンの買い物をした話

 なんか今年度末くらいに弟がパソコンが欲しいとか言ってるので、自分のパソコンを売ることになってしまいました。
 売るときのスペックは以下のような感じでいいそうです。
・core i7 8700
・GTX1050
・4GB*2 RAM
・256GB SSD
ぐらいでいいそうです。

 そのため、7月ぐらいからいろいろ買っていて、GTX1080Ti,1TB SSD,1050W電源,をすでに用意してありました。
 そして先日、秋葉原をうろついてるとパソコン工房で、ASUS PRIME H370-AとCeleron G3900の組み合わせが7500円くらいで売ってました。これはアマゾンで買うと15000円ぐらいの値段がするのでとてもお買い得だと思い衝動買いしてしまいました。

 これにより、パソコンが一台分できる部品がそろったのでパソコンを組んでみました。構成は
・ASUS PRIME H370-A ・ntel Celeron G4900 ・玄人志向 GT710 ・CWT 500W BRONZE+ 電源 ・SanMax DDR4 4GB*2
・I-O DATA 256GB SSD
になりました。

 ケースとかはないので実際の様子はひどいことになりました。

DSC01258
 ベンチマークを回してみた結果がこちら
EBF-ckMUcAAkwaq
 さすがにファンレスのGT710で3DMarkを回す気にはならなかったのでCINEBENCHで許してください。

 最近のCPUとグラボを搭載してるのでブラウジングは普通にできました。今この記事を書いているMBAがほとんど同じベンチマーク結果なので、マイクラなどの軽いゲームぐらいなら無理なくできそうです。


 余談ですが私は昨日(8/3)にMFTに行ってきました。DSC01255
DSC01256
 いろいろなメイカーさんの作品を見て自分もなんか作んなきゃと思いました。

 あと国際展示場にモバイルバッテリーのレンタルの自販機があって驚きました。存在は聞いたことがあったのですが、実物を見たことがなかったので面白かったです。DSC01257

 あと帰り道に秋葉原によったらラジオデパートの地下でCPUガチャを見つけてしまいました。
 この↑同行してた友達はi5を引いていたのに、自分はCeleron E3400で世の不条理を感じました。
DSC01260
 LGA1151世代のマザボしか持ってないのでマジでいらない子です。

 そんなこんなで、いろいろありましたがサブPCができました。サブPCができてもあまりやらせることはありませんが、テキトーに作業BGMでも流そうかと思います。それではまた今度。

fusion360で傘歯車を作る方法

 最近投稿してなかったし、ちょっと傘歯車を作る用事があったので記事にしました。
 傘歯車はアドインを利用すると簡単に作れるので、今回はそれを使います。


現在このアドインが使えないので↓の記事の方法で作ってください。

https://www.chisatofu.com/archives/30490075.html


・インストール手順
 アドインをクリックし、下のFusion 360 App Storeをクリックします。
キャプチャ
 このような画面がブラウザで開くので「Bevel Gear Design」を検索し、クリックします。
キャプチャ
 そうするので詳細画面が出てくるので、右側のFreeの中にあるDownloadをクリックします。ここで、人によってはAUTODESKのログイン画面が出てくるかもしれません。その時はログインしてください。

 ダウンロードできたものを実行し、fusionを再起動するとアドインがインストールできています。

 インストールができたらスケッチの一番下に「Create Bevel gear」が追加されます。それを選択するとパラメーターの設定が出てくるのでちょちょいっといじればできます。
キャプチャ

 今回はここまでです。いろいろあって記事の投稿ができませんがこれからもあんまりできないと思います。それではまた今度。

三相用のトランスを作った話

 三相200V定格のモーターは内部抵抗が100Ω以上あり、電圧が低いと全然パワーが出ません。
 しかし、VVVFに入力する電圧には制約があり、特にene1GPではどう頑張っても60Vほどまでしか上げられません。直流電源の昇圧は難しいし電流取り出せないしロスが大きいので、三相交流にしてからトランスを逆接続し電圧を上げる方法を今回は試しました。

 今回考えたのはこのような回路です。キャプチャ
 秋月で一個600円ぐらいで売ってるトランスをY結線して三相用のトランスのように使ってしまおうという魂胆です。三相用のトランスもあるにはあるのですが、値段が高いのでこれが成功したらコストカットにつながります。

 LTspiceでシミュレーションしたところうまく行きそうな感じがしました。D8qrFHhVsAEzMSX
 VVVFじゃないしそもそも三相電源ですらないし出力先も三相モーターじゃないしいろいろ不安ですが作ってみることにします。

 今回やることは、前に作ったVVVFインバータと三相モーターの間にトランスを突っ込むだけです。

 作成したトランスがこちら。絵面がひどいですが動けば関係ありません。
i5wzvY-v


 で、実際これを動かした結果なのですが、12V/100Vの逆接続なので8倍ほどの電圧が出力されてないとおかしいのですが、4倍ほどの電圧しか出てませんでした。
 これには様々な要因が考えられますが、大きな要因の一つが三相用のトランスとは磁気回路が全然違うという点が考えられます。本物の三相トランスは鉄心1つにコイルを三相分巻いて作るのですが、今回使った者はそれぞれの相の鉄心間に磁気経路は存在しません。
 そのほかの原因としては、周波数が60Hzではないこと、波形が正弦波ではないことなどが挙げられます。


 今回はここまでです。今回の実験は成功とも失敗とも言えない微妙な結果になってしまいましたが、実際に使えるようになるといいです。それではまた今度。

LTspiceでトランスを使う方法

 最近はキーボードを作ったらうまく行かなくて没になったのもあり、投稿感覚が遅れていました。これからはもっと進捗を出せるように頑張ります。
 さて、今回はLTspiceでトランスを使ったシミュレーションをしたくて、いろいろ調べてできたので記事にしました。

 今回の最終目標はこんな感じです。
キャプチャ
 
 まず用意するものはAND回路のタブから出てくる"ind2"を二つと"voltage"です。両方とも"ind"と"bv"という似たようなものがありますが、こちらではできないので注意してください。
 あとは適当に抵抗とGNDを置きます。


①電源の設定
 V1は右クリックしてこの画面が出てきたらAdvancedを選択します。キャプチャ

 出てきた画面でこのように設定します。キャプチャ


②インダクタの設定
 先ほど置いたind2の設定を行います。右クリックして出てきた画面でこのように設定してください。この時にSeries Resistanceを0にしてしまう(設定しない)と無限に電流が流れてしまいエラーを図れるので1uほど入れておいてください。
キャプチャ

 そして、右上の.opというところを押し、このように入力してください。これは「結合係数の番号 コイルの番号 コイルの番号 結合係数」という風に決めています。キャプチャ


 あとは適当に配線するとできます。
 実際にシミュレーションしてみるときちんとトランスとして機能してくれます。キャプチャ


 今回はここまでです。次回はこれを使った面白いことをしたいと思います。それではまた今度。

VVVFインバータをArduinoで作ってみた話

 前々から作っていたVVVFインバータがやっと形になったので記事にしました。


 2021/1/6 追記 こちらの記事(http://blog.livedoor.jp/chisato_tofu/archives/25916654.html)が最新版のVVVFになっています。こちらの記事より動作の信頼性が上がっておりますので是非ご確認ください。


・基本原理
 こんな感じの動作になります。Hブリッジをちょっと拡張した様な回路をしています。ただし、Hブリッジとは違い交流モーターを回すためにスイッチングするので、クロックが速いです。

・回路の制作
 上の動作原理をそのまま素子に置き換えるとこのようになります。
Untitled Sketch_回路図

 しかし、この回路は実際には動きません。
 実際に動いている際のある一瞬の模式図はこのようになります。

Untitled Sketch_回路図2
 この状態から位相を進めるためにはSのトランジスタを動かすことが必要です。
 しかし、Sのトランジスタのエミッタ側の電位は15V程度あり、マイコンなどでこれを上回る電圧をベースにかけることは難しいです。
 いろいろ解決策があるのですが、今回は簡単に使えるハーフブリッジドライバというものを使いました。
 
 これは中間の電圧から底上げしてベースに電圧を加えてくれる優れものです。
 今回はIR2302というものを使うことにしました。そして、できた回路はこうなりました。
VVVFhbd_回路図
 ハーフブリッジドライバを使ったおかげでFETが6個で構成できてます。


・プログラム
 特に難しいことは考えずに矩形波を出力しました。配慮することは、ハーフブリッジドライバの特性上コンデンサのチャージ時間が必要なので、Arduinoの出力をanalogWrite(250)程度に抑えておくくらいです。
float t;
void setup()  {
  Serial.begin(250000);
  pinMode(3, OUTPUT);
  pinMode(9, OUTPUT);
  pinMode(11, OUTPUT);
}
void loop()  {
  t = analogRead(0);
  if(t<1){
    t=1;
  }
  Serial.println(1000/6/t);
  analogWrite(11, 250);
  delay(t);
  analogWrite(9, 0);
  delay(t);
  analogWrite(3, 250);
  delay(t);
  analogWrite(11, 0);
  delay(t);
  analogWrite(9, 250);
  delay(t);
  analogWrite(3, 0);
  delay(t);
}


・動作
 意外とスムーズに回ります。ロリコンなどを積んでなく、周波数は手動制御です。
 30V 0.1A程度で動いているので、エコロジーです。直流安定化電源が30Vまでの対応だったのでこれ以上電圧は上げられなかったのですが、FETの発熱はほとんどなかったのでスライダック+全波整流回路などでもっと電圧を上げればより大きなパワーが出ると思います。


 今回はここまでです。もうそろそろ3Dプリンターや16GB*2枚のRAMなどが届くはずなので、それらになれたらまたいろいろやりたいです。

ミニマップを追加した話

 最近ずっと作っているメーターにミニマップをつけてみました。

 流れは以下の通りです。

 me-ta-

 Arduino-Arduino間でI2Cをしても、なぜかGPSのデータを送ることができません。それなので、座標のデータを演算するときにStringで出てくるのでそのまま一文字ずつmasterに送っています。
 そのデータとセンサーの値を一定周期でProsessingに送りそれを表示します。

 このような感じで動作します。

 今回はここまでです。プログラムがまだ不安定なのでそこを改良したいと思います。それではまた今度。

メーターの改良をした話

 今回も開発していくメーターですが、去年使ったデータはすべて表示できるようになりました。今になって時計を表示するのを忘れてることを思い出しましたが、そのうち追加したいと思います。


 今回行ったことはほとんど前回前々回のコピペなのでプログラムは載せませんが、一つ不具合が出ました。
1
 これはArduinoからシリアル通信で送られてくるデータなのですが、二つしかデータが格納されていません。Arduinoから送られてきたデータを、一つの配列に格納して使うようなプログラムにしているので、データが格納されていないところがあるとエラーを吐かれます。それなので、読み取るかどうか判断する部分部分のプログラムを"
if (inString != null && split(trim(inString),',').length==4) {
のようにすることで解決しました。

 そんなわけで出力は下のようになります。
me-ta-
 それっぽくなってきているんじゃないでしょうか?

 今回はここまでです。次回はまたちょっと改良しようと思います。それではまた今度。
アクセスカウンター
  • 今日:
  • 昨日:
  • 累計:

読者登録
LINE読者登録QRコード