「Arduino自動カーテンオープン目覚まし時計」の編集履歴(バックアップ)一覧はこちら
追加された行は緑色になります。
削除された行は赤色になります。
*計画
朝になったら自動でカーテンを開ける目覚まし時計を作りたい。
カーテンの端っこにひもを引っかけて朝になったらタイマーが作動してひもを巻き取りカーテンが開くという仕組み。
**材料
-[[Arduino2009>http://www.amazon.co.jp/gp/redirect.html?ie=UTF8&location=http%3A%2F%2Fwww.amazon.co.jp%2Fs%3Fie%3DUTF8%26x%3D12%26ref%255F%3Dnb%255Fss%255Fgw%26y%3D28%26field-keywords%3Darduino%26url%3Dsearch-alias%253Daps&tag=arduino-22&linkCode=ur2&camp=247&creative=7399]]
-[[モータードライバ BD6211F>http://www.switch-science.com/trac/wiki/BD62xx-Basic]] ←いただきもの
-[[6速ギヤボックスHE>http://www.amazon.co.jp/gp/product/B00061HIEY?tag=arduino-22]]
-リアルタイムクロック
-ブレッドボード
-ひも&フック(カーテンを引っ張る)
-円柱ゴム(ひもを巻き取る)
-木の板&ねじ
-抵抗とかコンデンサとか配線材とか
**消費電流
RE-260 http://www.mabuchi-motor.co.jp/motorize/branch/b_0100.html
適正電圧適正負荷で700mA
負荷によって変わるだろうから動作させながら実測する!
**[[6速ギヤボックスHE>http://www.amazon.co.jp/gp/product/B00061HIEY?tag=arduino-22]]
広いギヤ比に組み替えられるのでとりあえずこれにした。
クラッチギアが付いているので大きい負荷がかかっても少し安心。
**完成品は
-mega88 Arduino内蔵クロックで動かす。
-過電流で電源を止めるやつをつける。ポリスイッチ?
**電源
-開発時はUSB 5V
-ACアダプタ
-5V or 3V
http://www.switch-science.com/trac/wiki/BD62xx-Basic
モーターの定格電圧が信号系(マイコン)の電源電圧よりも低い場合は困ってしまいます。
モーターによっては、PWMで一定のデューティよりも上げないように注意すれば大丈夫な場合があります。
arduinoは3Vで動くのか?
-モータとArduinoの電源が同じでOK?
**リアルタイムクロック
-秋月の時計IC
-バッテリバックアップしたい。
**ユーザインターフェイス
-正回転/逆回転ボタン
-タイマー時刻の設定/ロータリエンコーダ?
-7セグ時計表示
**巻き取り終了の検出
マイクでクラッチの音?
一定の秒数の作動でよい?
*(1)ざっと組み立て
-ギアボックス
-巻き取り部取り付け
-ギアボックス&ブレッドボードを板に固定
-Arduinoを固定
-モータドライバにピン取り付け
*(2)モータードライバの実験(2009/4/18)
-正転/逆転を実験
-スピード&パワーを確認
-消費電流を確認
スイッチサイエンスさんのスケッチで動作OK。
http://www.switch-science.com/trac/wiki/BD62xx-Basic
int FIN = 5;
int RIN = 6;
int LED = 13;
int OFFSET = 1.0 * 256 / 5; // Vref=5Vとして1.0V
int MAX = 1.5 * 256 / 5 - OFFSET; // Vref=5Vとして1.5V-1.0V(=OFFSET) = 0.5V
int degree10 = 0;
int i;
void setup() {
Serial.begin(9600);
pinMode(FIN, OUTPUT);
pinMode(RIN, OUTPUT);
pinMode(LED, OUTPUT);
for(i=0; i<5; i++){
digitalWrite(LED, HIGH);
delay(200);
digitalWrite(LED, LOW);
delay(200);
}
}
void loop() {
delay(100);
degree10 += 10;
degree10 %= 3600;
long v = int(sin(degree10 * 2 * PI / 360 /10) * MAX);
Serial.println(v);
if (v > 0) {
analogWrite(FIN, v + OFFSET); // vは0..MAX(=0.5V) => 1.0V..1.5V
analogWrite(RIN, 0);
} else
if (v < 0) {
analogWrite(FIN, 0);
analogWrite(RIN, OFFSET - v); // vは0..-MAX(-0.5V) => 1.0V..1.5V
} else {
analogWrite(FIN, 255);
analogWrite(RIN, 255);
}
}
正回転・逆回転をなめらかに繰り返す。
OFFSET1.0Vは回転開始の最低電圧かな。
正:1.0V => 1.1V => ... => 1.5V => 1.4V => ... 1.0V
逆:1.0V => 1.1V => ... => 1.5V => 1.4V => ... 1.0V
を繰り返す。
**ノイズ?
http://www.picfun.com/motorframe.html
*(3)リアルタイムクロック
*(4)7セグ時計
*(5)ロータリエンコーダ
*(6)バッテリバックアップ
*(7)Arduino mega88
*計画
朝になったら自動でカーテンを開ける目覚まし時計を作りたい。
カーテンの端っこにひもを引っかけて朝になったらタイマーが作動してひもを巻き取りカーテンが開くという仕組み。
**材料
-[[Arduino2009>http://www.amazon.co.jp/gp/redirect.html?ie=UTF8&location=http%3A%2F%2Fwww.amazon.co.jp%2Fs%3Fie%3DUTF8%26x%3D12%26ref%255F%3Dnb%255Fss%255Fgw%26y%3D28%26field-keywords%3Darduino%26url%3Dsearch-alias%253Daps&tag=arduino-22&linkCode=ur2&camp=247&creative=7399]]
-[[モータードライバ BD6211F>http://www.switch-science.com/trac/wiki/BD62xx-Basic]] ←いただきもの
-[[6速ギヤボックスHE>http://www.amazon.co.jp/gp/product/B00061HIEY?tag=arduino-22]]
-リアルタイムクロック
-ブレッドボード
-ひも&フック(カーテンを引っ張る)
-円柱ゴム(ひもを巻き取る)
-木の板&ねじ
-抵抗とかコンデンサとか配線材とか
**消費電流
RE-260 http://www.mabuchi-motor.co.jp/motorize/branch/b_0100.html
適正電圧適正負荷で700mA
負荷によって変わるだろうから動作させながら実測する!
**[[6速ギヤボックスHE>http://www.amazon.co.jp/gp/product/B00061HIEY?tag=arduino-22]]
広いギヤ比に組み替えられるのでとりあえずこれにした。
クラッチギアが付いているので大きい負荷がかかっても少し安心。
**完成品は
-mega88 Arduino内蔵クロックで動かす。
-過電流で電源を止めるやつをつける。ポリスイッチ?
**電源
-開発時はUSB 5V
-ACアダプタ
-5V or 3V
http://www.switch-science.com/trac/wiki/BD62xx-Basic
モーターの定格電圧が信号系(マイコン)の電源電圧よりも低い場合は困ってしまいます。
モーターによっては、PWMで一定のデューティよりも上げないように注意すれば大丈夫な場合があります。
arduinoは3Vで動くのか?
-モータとArduinoの電源が同じでOK?
**リアルタイムクロック
-秋月の時計IC
-バッテリバックアップしたい。
**ユーザインターフェイス
-正回転/逆回転ボタン
-タイマー時刻の設定/ロータリエンコーダ?
-7セグ時計表示
**巻き取り終了の検出
マイクでクラッチの音?
一定の秒数の作動でよい?
*(1)ざっと組み立て
-ギアボックス
-巻き取り部取り付け
-ギアボックス&ブレッドボードを板に固定
-Arduinoを固定
-モータドライバにピン取り付け
*(2)モータードライバの実験(2009/4/18)
-正転/逆転を実験
-スピード&パワーを確認
-消費電流を確認
スイッチサイエンスさんのスケッチをちょっと改造で動作OK。
http://www.switch-science.com/trac/wiki/BD62xx-Basic
int FIN = 5;
int RIN = 6;
int LED = 13;
int OFFSET = 0.7 * 256 / 5; // analogに255を出したら5V => 0.7V
int MAX = 3.0 * 256 / 5 - OFFSET; // RE-260なので3V 3.0V-0.7V = 2.7V
int degree10 = 0;
int i;
void setup() {
Serial.begin(300);
pinMode(FIN, OUTPUT);
pinMode(RIN, OUTPUT);
pinMode(LED, OUTPUT);
for(i=0; i<5; i++){
digitalWrite(LED, HIGH);
delay(200);
digitalWrite(LED, LOW);
delay(200);
}
}
void loop() {
delay(10);
degree10 += 3;
degree10 %= 3600;
long v = int(sin(degree10 * 2 * PI / 360 /10) * MAX);
Serial.println(v);
if (v > 0) {
analogWrite(FIN, v + OFFSET); // v(0V..2.7V) OFFSET(=0.7V) なので 0.7V..3.0V
analogWrite(RIN, 0);
} else
if (v < 0) {
analogWrite(FIN, 0);
analogWrite(RIN, OFFSET - v); // v(-0V..-2.7V) OFFSET(=0.7V) なので 0.7V..3.0V
} else {
analogWrite(FIN, 255);
analogWrite(RIN, 255);
}
}
正回転・逆回転をなめらかに繰り返す。
OFFSETは回転開始の最低電圧。
正:0.7V => 0.8V => ... => 2.9V => 3.0V => 2.9V => ... 0.7V
逆:0.7V => 0.8V => ... => 2.9V => 3.0V => 2.9V => ... 0.7V
を繰り返す。
**ノイズ?
たぶんモーターからのノイズのせいでシリアル通信が途中でとぎれてしまう。
まともにデバッグできないと困るので対策が必要かもしれない。
http://www.picfun.com/motorframe.html
モーターの端子と金属ケースの間にコンデンサをいれるといいらしい。
*(3)リアルタイムクロック
*(4)7セグ時計
*(5)ロータリエンコーダ
*(6)バッテリバックアップ
*(7)Arduino mega88