8/18追記 トラブル発生中で困ってます。何か情報をお持ちの方がいらっしゃいましたらコメントお願いします。
9/27 追記 トラブルの発生していたPCが故障+メインPCのマザーが帰ってきた事により、
PCを変更したので動くようになりました。
尚、トラブルの解決法は結局分からずじまいですので、トラブル状況についての記述は削除させて頂きました。
Arduino Unoと比較しよう!
Edisonのピンめちゃくちゃ細かいですね!
ボードの高さとしては、USB-B端子がない分Edisonの方がわずかに薄いです。
ピンはもちろんですが、固定用の穴の位置もかぶってます!
さて、ではEdisonのArduino用キットってどのくらいの大きさなのよ?って事で比較しました!
幅がHDDと変わらないくらい
高さはiPhoneと変わらないくらい
そこそこ大きいですね!
【目標】バイク用多機能デバイスを作ろう!
~きっかけ~
私の愛車はNS-1っていう古めの原付です。知人から譲り受けましたが、その時点でボアアップされており62ccだったかになっています。
そのため、もともとじゃあ冷却性能が足りない。でも、べらぼうのファンを回してしまうと冷えすぎて冬場に困る。うーむ、どうしようか・・・そうだ!つくろう!
あと何があると便利かな・・・盗難防止とか面白そう!ということで。
製品コンセプト的なものを目標に作っています。こんなものが量産されたら嬉しいな!っていう。
だからこそのこだわりとして、極力モジュール化をしています。
基本は水温に応じてファンを制御するデバイスを作ります。
そこから、せっかくのこのEdisonの機能を活用してやろうかと。
ひとまず、水温に応じて制御するところで1つの完成とさせてください。
ただ、いろいろとネタは用意しております・・・
1.部品選定
・ファン RDL1225S
理由:Xinruilianが好きだから。
ネット上の話では5VのファンでOKだったなんて話はあるだけに、そこまで風量はいらないかな?という事で適当にこれにしました。
・モータドライバ TA7291P
理由:I2C制御のモータードライバを扱った事はあるけど、規定の電流が出せなかったので。
また、これなら1Aまで安定して供給でき、ファン2個をまとめて回してくれそうだから。
あと使い慣れているっていうのもありますね。
・Aukey 大容量モバイルバッテリー PB-T1
理由:レギュレータで12Vから5Vに落としても良かったけど安定性に不安があるから。
(実際、放置時にバッテリーは10Vくらいまで落ちるし、エンジンがかかっていると14V程度、なんてのを聞いた記憶が)
・SEIWA シガーソケットUSBチャージャー D405
理由:24V車対応、つまり12Vを超える入力を加えても安定して出力できそうだから。
また、走行中にはバッテリーへの給電もさせたいので、2A出力のできる物を選定
電源部分のモジュール化という目的もあります。
あと他社製品で過去に遊びで9Vを加えても動いた、なんていう経験があったからむやみに意地を張って自分で組まずにこれを使うほうが安心かなと。
2.予備検証
2.1 ノイズについて考察する
回路制作にあたり、一番面倒なのはモータのノイズです。一般的なモータを使って作ると厳しそうです。
そこで、PCのケースファンを検討する事に。
学校のオシロスコープで測定してみました。
(すみません、画像は失念したのでまた見つけたら貼ります)
予定通り、PC向けのファンという事だけあって非常にノイズは少ないと感じました。
2.2 AnalogReadを考察する
ArduinoのAnalog Readは5V(デフォルトの場合)をベースに255段階で表されます
※1024段階でした、適当言ってごめんなさい
また、この水温計の仕様は温度に応じて抵抗値が変わります。
参考測定値:
指先の温度 32度 抵抗値 163kΩ
ヒーターで加熱 55度 抵抗値 66kΩ といった具合です。
よって、まぁ50kΩくらいで70度前後じゃないでしょうか。
(実際、定温に保つのが難しいです。。本体に接続して60度くらいのお湯で60kΩと出ました。)
その抵抗をArduinoに読ませるべくAnalogReadを用います。
ただ、Analog Readは電圧を見ています。
そこで、分圧比を用います。
VOut = R2 / (R1+R2) * Vin
という計算です。
まぁAnalogReadの真ん中くらいをしきい値としておきたいので、Vout=2.5を目標に、値を代入します。
Vout = 2.5
R1=固定抵抗
R2=温度計(50kΩとする)
Vin=5
以上をR1について解くと50kΩとなります。
あ、設計間違えて電圧が温度が上がると数値が下がっちゃうや・・・みんなは気をつけてね!
なので、
0←熱い 70度 冷たい→255→1024
という事になります。
もし70度より冷やしたいなー、55度でファンを回したい!
→AnalogRead=144→582をしきい値
なんていう具合に調整ができます!
配線が汚いのは気にしないで・・・
(画像がうまくアップロードできないのでレビュー環境についても多少見直します)
実装するファンは上記の静音のファンですが、デモではわかりにくいので手持ちのサイズの爆音ファンで動画を撮ります。
3.ソフトウェア
3.1 ソースコード
int tempsens = 0; //温度センサーピン
int fan_a = 5; //ファンPWMピン
int fan_b = 6; //ファンPWMピン
int val =800; //温度取得用変数
int sens_mode =0;
void setup(){
pinMode(fan_a, OUTPUT); // sets the pin as output
pinMode(fan_b, OUTPUT); // sets the pin as output
pinMode(tempsens, INPUT); // sets the pin as input
digitalWrite(LOW,fan_b);
Serial.begin(9600);
}
void loop(){
/*===================
回路の設計ミスにより、温度が大きいと値が小さくなるんです。。
一応512あたりで70度を想定しています。
====================*/
val = analogRead(tempsens);
Serial.print("tempValue");
//case文の仕様より、比較が使えないので大まかな温度の場合のケースを定義
if(val<400){
sens_mode = 90; //32kΩ程度、90度くらい?
}else if(val < 450){
sens_mode = 80; //40kΩ相当 80度くらい?
}else if(val < 512){
sens_mode = 70; //50kΩ相当 70度を想定
}else{
sens_mode = 60;
}
switch(sens_mode){
case 80:
digitalWrite(HIGH,fan_a); //HIGH、つまりフルパワーでファンをまわす
break;
case 70:
analogWrite(200,fan_a); //およそ8割の出力でファンをまわす
break;
case 60:
digitalWrite(LOW,fan_a); //ファンをとめる
break;
}
delay(10000); //レビュー用にチェックの間隔を縮めました
//delay(60000); //60,000ミリ秒、つまり1分を目処に制御
}
3.2 ソースコード解説
では、上からこのソースについて説明して行きます。
変数定義はそこに書いた通りです。
また、valの初期値が800な理由としてはそうすると抵抗が180kΩ程度と20~30度くらいで常温相当なので今後に影響を与えないため。
setupについて
定義文でpwm_bにLOWを代入するのはこのファンに逆転やブレーキを与える必要がないため、こうしました。
また、シリアル通信はデバッグ用の物です。
mainについて
switch文では比較の演算子が使えないので、大まかに何度くらい、とif文でValを分けました。
80度(とは書いた物のもう少し高い温度を予想) : 強力に冷やす
70度 : 急ぎではないのでちょっと回転を落とす
60度以下 : 無理に冷やす必要はないのでファンを止める
という制御です。
4.ハードウェア
回路と温度計です。
上の抵抗が分圧比から電圧を出すための 抵抗です。
その左の真鍮が温度計です。
そして、モータドライバ回路です。
良くあるTA7291Pで、Vrefは特に使用しないので抵抗で逆流を防止
ノイズ対策として、信号の所にタンピング抵抗として抵抗をいれてあります。
動作の様子はこんな感じです。初めて動画を撮ったので非常に拙いです・・・。あと手慣れていない感が凄い。。。
ということで、ひとまず完成しました!!
え、回路に怪しい部品が付いている? お楽しみに!
yosyos888さん
2015/08/18
これではわからないのですが、Edisonの罠は経験してます。w
harmankardonさん
2015/08/18
1のFTDIドライバーがドライバーがインストールされていれば,OS上からEdisonが見えるはずです.
また,デバイスマネージャーにCOMポートが出現します.このCOMポートがないと,PuTTYから認識されません.
PuTTY自体は,インストール不要なので,起動しないことはないと思います.
私の環境ではPuTTYでは上手く行かなかったので,TeraTermを使いました.
Edison Labの説明は古い(手順が異なる)ので,みなさんのレビューを参考に,再度環境構築されたらいかがでしょうか.
Hiroさん
2015/08/18
思ったほど簡単にEdisonさんは動いてくれなさそうですね・・・
harmankardonさん、ありがとうございます。
一応COMポートは見えました。
PuTTYでログイン画面まで辿りつけなかったですね。
そうですね、他の方のレビューを参考にする事を考えてませんでした、改めてやってみます!
yosyos888さん
2015/08/19
Edisonは中々てごわいですよね。
Arduino IDEを単独で導入してみてはいかがでしょうか?
本家Arduino.ccへのリンクが下の方にありました。