mochi12345's blog

日々のことをつらつらと綴っていきます

Aviutl インストール

動画編集をしたくなったので,巷で有名なAviutlを使って見ることにする.

AviutlはKENくんさんが開発されている動画編集ソフトです.
本体及び拡張機能はKENくんさんのページである以下からダウンロードできます.
AviUtlのお部屋

Aviutlをダウンロード及び設定する方法はインターネット上にたくさんあるので
検索してみてください.

しかし,今回は

↑この動画で紹介されているインストーラを用いてインストールしてみる.

インストーラーを実行すればほぼデフォルトの設定のままでAviutlと幾つかのプラグインがインストールできます.

注)動画にもありますが,x264,x265の設定を最後にしなければならないので注意!

arduinoをSublime Textで開発

arduino標準のエディタは使いにくい!


自動整形機能なども付いているが,
自動補完やシンタックスハイライトなどの機能がないので,
 >|digitalWrite

などの関数が大文字か小文字かを検索するときに時間が掛かる.


なので,入力はSublime Textを使って,
コンパイルと書き込みはarduinoIDEを使おうと考えた.


arduinoIDEで外部エディタを使う方法は,
ファイル→環境設定→外部エディタを使うにチェックを入れるだけ.


これでarduinoプログラムであるinoファイルを外部エディタで変更して,
保存してやれば,arduinoIDE上でコンパイルやボードへの書き込みをした時に
自動的に変更が適応されたプログラムがコンパイルされる.


Sublime Textの設定は多くのHPで書かれているので割愛する.
導入したpackageは「Arduino」である.
pakagecontrolからinstallでarduinoと検索すれば出てくる.

再起動後に最初,inoファイルを開いてもarduinoプログラムと認識してくれない時があるが,
表示→シンタックスArduinoシンタックスハイライトしてくれる.

ソーラーカーレース鈴鹿2015

8/1にソーラーカーレース鈴鹿に行ってきた.

様子はUstreamで配信されているので,時間があれば見ていただきたい.
追記)公開が停止されたようです.

4時間耐久レース前半
ない?

4時間耐久レース後半
http://www.ustream.tv/recorded/69606952www.ustream.tv


5時間耐久レース前半
http://www.ustream.tv/recorded/69631538www.ustream.tv

5時間耐久レース後半
http://www.ustream.tv/recorded/69648071www.ustream.tv

ltc6804-1のステータスレジスタの読み取り

電圧を読みだして過電圧と過放電を処理しようかと考えていたのだが,設定レジスタで過電圧と過放電の電圧値を設定できて,自動で判定してくれるようだったので実装してみる.

設定レジスタの1~3で過電圧と過放電の電圧を設定できる.

設定レジスタ1と2の下位4bitで過放電電圧,設定レジスタ2の上位4bitと設定レジスタ3で過充電電圧を設定できる.

これを読み取るためにltc6804ライブラリにia新しいコードを追加した.

uint8_t LTC6804_rdstatb(uint8_t total_ic, //Number of ICs in the system
				     uint8_t r_statb[][8] //A two dimensional array that the function stores the read configuration data.
					 )
{
  const uint8_t BYTES_IN_REG = 8;
  
  uint8_t cmd[4];
  uint8_t *rx_data;
  int8_t pec_error = 0; 
  uint16_t data_pec;
  uint16_t received_pec;
  
  rx_data = (uint8_t *) malloc((8*total_ic)*sizeof(uint8_t));
  
  //1
  cmd[0] = 0x00;
  cmd[1] = 0x12; //変更
  cmd[2] = 0x70; //変更
  cmd[3] = 0x24; //変更
 
  //2
  wakeup_idle (); //This will guarantee that the LTC6804 isoSPI port is awake. This command can be removed.
  //3
  output_low(LTC6804_CS);
  spi_write_read(cmd, 4, rx_data, (BYTES_IN_REG*total_ic));         //Read the configuration data of all ICs on the daisy chain into 
  output_high(LTC6804_CS);													//rx_data[] array			
 
  for (uint8_t current_ic = 0; current_ic < total_ic; current_ic++) 			//executes for each LTC6804 in the daisy chain and packs the data
  { 																			//into the r_config array as well as check the received Config data
																				//for any bit errors	
	//4.a																		
    for (uint8_t current_byte = 0; current_byte < BYTES_IN_REG; current_byte++)					
    {
      r_statb[current_ic][current_byte] = rx_data[current_byte + (current_ic*BYTES_IN_REG)]; //変更
    }
    //4.b
    received_pec = (r_statb[current_ic][6]<<8) + r_statb[current_ic][7];
    data_pec = pec15_calc(6, &r_statb[current_ic][0]);
    if(received_pec != data_pec)
    {
      pec_error = -1;
    }  
  }
  
  free(rx_data);
  //5
  return(pec_error);
}

そしてarduinoのプログラムに以下を追加して過電圧の判定を行った.

uint8_t rx_status[TOTAL_IC][8];
/*
 ステータス・レジスタ読み出し用配列
 データ(6バイト)+PEC(2バイト)
*/

//セル電圧過電圧エラーチェック
boolean cellcheckOV(){
  
  OV = false;
  int8_t error = 0;
 
  //配列内の電圧をすべて比較
  wakeup_sleep();
  error = LTC6804_rdstatb(TOTAL_IC,rx_status);
  if (error == -1)
  {
   Serial.println(F("A PEC error was detected in the received data"));
  }

  for(uint8_t current_ic=0; current_ic<TOTAL_IC; current_ic++){
   for(uint8_t i=2; i<4; i++){
      if(rx_status[current_ic][i]==0xAA) OV = true;     
    }
  }
  Serial.print(F("Over Voltave : "));
  Serial.println(OV);
  return OV; 
}

arduinoのSDカードシールド

arduinoのデータを保存するためにSDカードを使おうとしたが,電圧変換(5V→3.3V)が面倒なので,電圧変換ICのついたSDカードシールドを購入することにした.

検索したところ,sparkfunにSDカードのシールドが売っていたので購入した.

届いたのがこちら.

f:id:mochi12345:20150708025139j:plain

LTC6804-1とarduinoの通信

 

DC1894Bの通信テストも完了したのでBMSとして使うことを考える.

実際にBMSとして用いる場合はパソコンを積むわけには行かないので,arduinoを使って制御することを考えた.

LT社はLinduinoというArduino互換機を販売しており,1万円程度で購入することができそうだが,Digi keyで売り切れていたので,arduinoで代用することにした.

 

デモボードの回路図を見ると,DC590と通信しているリボンケーブルに通常のSPI信号を流せば良さそうだった.

f:id:mochi12345:20150708230302p:plain

使うピンは

3 GND(arduinoGNDと共通)

4 SCK

5 MISO

6 CS

7 MOSI

の5本である.これをarduinoに接続してやればいい.

早速プログラムを組んでみようと思ったが,なんとLT社にLinduino用のプログラムやライブラリがあるじゃないですか.(ここのQuick StartタブのDesignFilesのzipファイルを解凍して,Linduino.htmlでDC1894を検索するとサンプルプログラムが,Downloadsタブにライブラリがあります.)

基本的にLinduinoとArduinoの違いはQuik Evalコネクタ(リボンケーブルと接続するコネクタ)がないことと,絶縁されていることぐらいしかないので,これを流用すればいいと思ったので,そのまま使うことにした.

しかし,このQuik Evalコネクタが厄介で,7×2pinなのだが,なんと2mmピッチだったのだ.

しょうがないので,2mmピッチのpinを買って,基板を使ってピン間隔を変更するものを作製した.

リボンコネクタ変換基板をarduino用のシールド基板作成キットに接続してプログラムを実行してみた.

何も返ってこない...

 

後日調べたところ,原因はMISO端子が5kΩ抵抗でプルアップされていなかったことだったようだ.(ltc6804-1のデータシートに記載があった.)

とりあえず電圧が読めたので今回は終わり.

 

LTC6804-1(DC1894B)のテスト

LTC6804-1のデモボードDC1894Bを購入してテストを行った.

LTC6804-1のデータシートは日本語訳もついていたので見やすかったが,デモボードのデータシートは英語だったので少し面倒だった.

とりあえずテストとして,データシートにも書かれていた,100Ωの抵抗を12個直列に接続して,電圧入力端子にそれぞれの抵抗の電圧が入るように接続して動作電圧(11V)以上の電圧をかけてPCと通信してみた.

デモボードのウェブのページにあった通信用プログラムとDC590を使って通信した.

f:id:mochi12345:20150706225343p:plain

f:id:mochi12345:20150706225647p:plain

 

きちんと電圧を取ることができ,パソコンの画面に表示することができた.

 

続く.