「ホタログ1」の編集履歴(バックアップ)一覧はこちら
「ホタログ1」(2007/06/30 (土) 16:51:43) の最新版変更点
追加された行は緑色になります。
削除された行は赤色になります。
**2007.6.30.
#image(millis.JPG) 図6.29-1
-&bold(){今日は就活?みたいな感じで}
何も進んでない。
ホームページを作っている。
明日からnew pageに移ります。
>&bold(){コメント}
#comment(vsize=2,nsize=20,size=40)
----
**2007.6.29.
#image(millis.JPG) 図6.29-1
-&bold(){ArduinoのSerial.begin()について}
どうやら、本プログラムは一定の時間で動いていない模様。1回のroop()の経過時間は上記図のように一定ではない。一定で動かなくてもちゃんと動かないことはない。ノイズの原因がこの辺りにあると思ったが、また違った要因かもしれない。
アー!!やーばーいー。予想以上に時間がかかっている。
さらに、roop()の中身に1秒ごとにLEDを点滅させるプログラムを置いてみたところ、およそ3秒ごとに点滅したので、実行速度が本来の1/3にまで低下していることが分かった。
そもそもこのマイコンはどうやって1秒を測っているんだろうか? コンピュータ側の1秒と連動しているんだったら、それはもう一定ではない。
と、思って、コンピュータから切り離して電池で駆動させてみた。すると、まあ大体同じ時間で動いた。しかも同様に時間間隔は不安定であった。(あと、LEDの明るさがほぼ半分になっていたのが多少気になるところ。)
-&bold(){赤外線リモコン受信モジュール(Photo Modules for PCM Remote Control Systems)と赤外線LED(狭放射タイプ)を用いて、赤外線送受信にトライ。}
今一瞬分からなくなったので、メモ。
ミリsec = 1/1000sec
マイクロsec = 1/100000sec = 1/(10^-6)sec
1Hz = 1secに1周期
1kHz = 1secに1000周期
38kHz = 1secに38000周期
使える関数
delayMicroseconds();
今先ほど、できたー。500msecごとに信号"1"を発する。
ちなみに、pulsos[]の中身を書き換えることによって、いろんなパターンの信号が送れるようになっている。
#highlight(c){{
int ledPin=13;
int IRPin=5;
int pulsos[]={1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1};
int cont=0;
int cont2=0;
void setup() {
pinMode(ledPin, OUTPUT);
pinMode(IRPin, OUTPUT);
}
void loop(){
digitalWrite(ledPin,HIGH);
for(cont=0;cont<28;cont++){
if(pulsos[cont]==1){
for(cont2=0;cont2<38;cont2++){
digitalWrite(IRPin,HIGH);
delayMicroseconds(13);
digitalWrite(IRPin, LOW);
delayMicroseconds(13);
}
}else{
digitalWrite(IRPin, LOW);
delay(1);
}
}
digitalWrite(ledPin,LOW);
delay(500);
}
}}
#image(070629_1702~01.jpg) 図6.29-2
#image(070629_1701~01.jpg) 図6.29-3
受信中の様子。
>&bold(){コメント}
#comment(vsize=2,nsize=20,size=40)
----
**2007.6.28.
-&bold(){ArduinoのSerial.begin()について}
今、Serial.begin(9600)と設定している。これはReferenceには、
&bold(){Description}
Sets the data rate in bits per second (baud) for serial data transmission. For communicating with the computer, use one of these rates: 300, 1200, 2400, 4800, 9600, 14400, 19200, 28800, 38400, 57600, or 115200. You can, however, specify other rates - for example, to communicate over pins 0 and 1 with a component that requires a particular baud rate.
&bold(){Parameters}
int datarate, in bits per second (baud)
と書かれている。ためしに1200に設定したところ、一秒という時間が実時間より1200/9600程度遅くなったっぽい。
そして実行時間中ループする関数、roop()のなかの実行回数を見たかったので、long i;を置いてi++してみたところ、平均i=22106.25だった。
-&bold(){iの値}
22432
44645 22213
66832 22187
88956 22124
111134 22178
133235 22101
155305 22070
177317 22012
199445 22128
221553 22108
243618 22065
265640 22022
287707 22067
----------------
22106.25
※iの値。1秒ごとに1行。右列が行ごとの差。下が平均値。
>&bold(){コメント}
#comment(vsize=2,nsize=20,size=40)
----
**2007.6.27.
今日はプログラミング演習の質問タイム等で進まなかった。
これはよくないよー!
-&bold(){ホタル通信。ものすごくノイズが乗るので、除去のための検証。23日~}
どうやら規則的な周期は、プログラムに要因がありそう。
その辺りを明日以降調整していこう。
-&bold(){赤外線リモコン受信モジュール(Photo Modules for PCM Remote Control Systems)と赤外線LED(狭放射タイプ)を用いて、赤外線送受信にトライ。}
今日はなし。
>&bold(){コメント}
#comment(vsize=2,nsize=20,size=40)
----
**2007.6.26.
-&bold(){ホタル通信。ものすごくノイズが乗るので、除去のための検証。23日~}
今日はなし。
-&bold(){赤外線リモコン受信モジュール(Photo Modules for PCM Remote Control Systems)と赤外線LED(狭放射タイプ)を用いて、赤外線送受信にトライ。}
この辺に詳しい人に教えてもらった。何がいけなかったかというと、送信側が38kHzで送信しないと駄目らしい。この辺は、マイコンでプログラム書けば何とかなるかな。DigitalWrightの関数で。
以下はメモ。
(1)送信側 (2)受信側 (3)38kHzに設定しないと駄目
#image(赤外線.JPG) 図6.26-1
>&bold(){コメント}
#comment(vsize=2,nsize=20,size=40)
----
**2007.6.25.
-&bold(){ホタル通信。ものすごくノイズが乗るので、除去のための検証。23日~}
前日のコメントありがとうございました。アドバイスにしたがって、さらに検証してみました。
今日はなぜかノイズが少なく、熱電対の値が反映された。でもまだノイズはある。
以下の図6.25-1は、3回分の呼吸。まあまあうまく出ている。(後半はノイズの極大値)図6.25-2が、定期的に乗っているノイズ。かなりはっきりしている。パソコンの電源を抜いても直らなかった。まだ謎。
このノイズは、回路から来るものではない。というのは、オシロスコープで見たところ、マイコンまでのところではノイズが乗っていなかったから。
そして、交流から来るものかと思い、パソコンの電源を抜いてみたところ、図6.25-3が得られ、変化がないことがわかる。すみません、値見にくいかも。そしてガッカリ。
#image(呼吸070625_2.JPG,width=400) 図6.25-1
#image(呼吸070625.JPG,width=400) 図6.25-2
#image(呼吸070625_3.JPG,width=400) 図6.25-3
-&bold(){赤外線リモコン受信モジュール(Photo Modules for PCM Remote Control Systems)と赤外線LED(狭放射タイプ)を用いて、赤外線送受信にトライ。}
この辺に詳しい人を発見! でも今日は話を聞けなかった。
>&bold(){コメント}
- ホタログ・トップページに基本情報を載せました。&br()よろしければ参考にしてください・・・ -- ninja(管理人) (2007-06-25 19:56:33)
#comment(vsize=2,nsize=20,size=40)
----
**2007.6.24.
-&bold(){ホタル通信。ものすごくノイズが乗るので、除去のための検証。23日~}
パソコンにつないだ状態で実行すると、信号の極大値maxxをとったときの振幅widthhは常に3に。熱電対の値は全く反映されず。
24日~、ホーマックで銅網を探すが、売ってない。
櫻沢研から銅の金網をかりる。一瞬止んだが、またノイズィに。以降、ずっとノイズィ。
パソコンから孤立させて起動。すると、ノイズはほぼ消えた(ように見えた)。でもパソコンにつながないと、データ記録とデバッグはできないので、どうにかしたい。
#image(070624_2318~01.jpg) 図6.24-1
#image(070624_2320~01.jpg) 図6.24-2
-&bold(){赤外線リモコン受信モジュール(Photo Modules for PCM Remote Control Systems)と赤外線LED(狭放射タイプ)を用いて、赤外線送受信にトライ。}
ちなみにPCM方式とは、一定時間毎に信号が有るか無いかで0、1を区別する感じ。送信側と受信側で「一定時間」と言うのをずれない様にしなければならないらしい。ホタル通信に関しては近距離だから、あとはシステムが滞りなければ大丈夫だと思う。
なんとなく仕組みが分かったところで早速トライ。
受信機はとりあえずモジュールにGNDと5Vを接続。
LEDを光らすみたいにスイッチと1.5V電池×2を用いて発信機を製作。
これだけじゃだめなのか。受信機が全く反応しません。
ワッショイ!訳わかんなす。
◆参考になりそうなページ [[オーグチさんの卒業研究>http://www.niit.ac.jp/tslab/gakusei/h17/oogu/oogu.html]]
>&bold(){コメント}
- 測定系が直流だとうまくって、交流が入ってくるとだめなんだと思う。&br()だから、ノートPCなら電源だけ抜けばノイズがなくなると思う。&br() -- Kuni (2007-06-25 07:11:07)
- パソコンとシリアル接続してるってこと?&br()もしそうなら、回路にバグがあるということなんじゃないだろうか?&br()どこかで短絡してるとか -- 奉行 (2007-06-25 08:53:39)
#comment(vsize=2,nsize=20,size=40)
----
today: &counter(today)
yesterday: &counter(yesterday)
**2007.6.30.
-&bold(){今日は就活?みたいな感じで}
何も進んでない。
ホームページを作っている。
明日からnew pageに移ります。
>&bold(){コメント}
#comment(vsize=2,nsize=20,size=40)
----
**2007.6.29.
#image(millis.JPG) 図6.29-1
-&bold(){ArduinoのSerial.begin()について}
どうやら、本プログラムは一定の時間で動いていない模様。1回のroop()の経過時間は上記図のように一定ではない。一定で動かなくてもちゃんと動かないことはない。ノイズの原因がこの辺りにあると思ったが、また違った要因かもしれない。
アー!!やーばーいー。予想以上に時間がかかっている。
さらに、roop()の中身に1秒ごとにLEDを点滅させるプログラムを置いてみたところ、およそ3秒ごとに点滅したので、実行速度が本来の1/3にまで低下していることが分かった。
そもそもこのマイコンはどうやって1秒を測っているんだろうか? コンピュータ側の1秒と連動しているんだったら、それはもう一定ではない。
と、思って、コンピュータから切り離して電池で駆動させてみた。すると、まあ大体同じ時間で動いた。しかも同様に時間間隔は不安定であった。(あと、LEDの明るさがほぼ半分になっていたのが多少気になるところ。)
-&bold(){赤外線リモコン受信モジュール(Photo Modules for PCM Remote Control Systems)と赤外線LED(狭放射タイプ)を用いて、赤外線送受信にトライ。}
今一瞬分からなくなったので、メモ。
ミリsec = 1/1000sec
マイクロsec = 1/100000sec = 1/(10^-6)sec
1Hz = 1secに1周期
1kHz = 1secに1000周期
38kHz = 1secに38000周期
使える関数
delayMicroseconds();
今先ほど、できたー。500msecごとに信号"1"を発する。
ちなみに、pulsos[]の中身を書き換えることによって、いろんなパターンの信号が送れるようになっている。
#highlight(c){{
int ledPin=13;
int IRPin=5;
int pulsos[]={1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1};
int cont=0;
int cont2=0;
void setup() {
pinMode(ledPin, OUTPUT);
pinMode(IRPin, OUTPUT);
}
void loop(){
digitalWrite(ledPin,HIGH);
for(cont=0;cont<28;cont++){
if(pulsos[cont]==1){
for(cont2=0;cont2<38;cont2++){
digitalWrite(IRPin,HIGH);
delayMicroseconds(13);
digitalWrite(IRPin, LOW);
delayMicroseconds(13);
}
}else{
digitalWrite(IRPin, LOW);
delay(1);
}
}
digitalWrite(ledPin,LOW);
delay(500);
}
}}
#image(070629_1702~01.jpg) 図6.29-2
#image(070629_1701~01.jpg) 図6.29-3
受信中の様子。
>&bold(){コメント}
#comment(vsize=2,nsize=20,size=40)
----
**2007.6.28.
-&bold(){ArduinoのSerial.begin()について}
今、Serial.begin(9600)と設定している。これはReferenceには、
&bold(){Description}
Sets the data rate in bits per second (baud) for serial data transmission. For communicating with the computer, use one of these rates: 300, 1200, 2400, 4800, 9600, 14400, 19200, 28800, 38400, 57600, or 115200. You can, however, specify other rates - for example, to communicate over pins 0 and 1 with a component that requires a particular baud rate.
&bold(){Parameters}
int datarate, in bits per second (baud)
と書かれている。ためしに1200に設定したところ、一秒という時間が実時間より1200/9600程度遅くなったっぽい。
そして実行時間中ループする関数、roop()のなかの実行回数を見たかったので、long i;を置いてi++してみたところ、平均i=22106.25だった。
-&bold(){iの値}
22432
44645 22213
66832 22187
88956 22124
111134 22178
133235 22101
155305 22070
177317 22012
199445 22128
221553 22108
243618 22065
265640 22022
287707 22067
----------------
22106.25
※iの値。1秒ごとに1行。右列が行ごとの差。下が平均値。
>&bold(){コメント}
#comment(vsize=2,nsize=20,size=40)
----
**2007.6.27.
今日はプログラミング演習の質問タイム等で進まなかった。
これはよくないよー!
-&bold(){ホタル通信。ものすごくノイズが乗るので、除去のための検証。23日~}
どうやら規則的な周期は、プログラムに要因がありそう。
その辺りを明日以降調整していこう。
-&bold(){赤外線リモコン受信モジュール(Photo Modules for PCM Remote Control Systems)と赤外線LED(狭放射タイプ)を用いて、赤外線送受信にトライ。}
今日はなし。
>&bold(){コメント}
#comment(vsize=2,nsize=20,size=40)
----
**2007.6.26.
-&bold(){ホタル通信。ものすごくノイズが乗るので、除去のための検証。23日~}
今日はなし。
-&bold(){赤外線リモコン受信モジュール(Photo Modules for PCM Remote Control Systems)と赤外線LED(狭放射タイプ)を用いて、赤外線送受信にトライ。}
この辺に詳しい人に教えてもらった。何がいけなかったかというと、送信側が38kHzで送信しないと駄目らしい。この辺は、マイコンでプログラム書けば何とかなるかな。DigitalWrightの関数で。
以下はメモ。
(1)送信側 (2)受信側 (3)38kHzに設定しないと駄目
#image(赤外線.JPG) 図6.26-1
>&bold(){コメント}
#comment(vsize=2,nsize=20,size=40)
----
**2007.6.25.
-&bold(){ホタル通信。ものすごくノイズが乗るので、除去のための検証。23日~}
前日のコメントありがとうございました。アドバイスにしたがって、さらに検証してみました。
今日はなぜかノイズが少なく、熱電対の値が反映された。でもまだノイズはある。
以下の図6.25-1は、3回分の呼吸。まあまあうまく出ている。(後半はノイズの極大値)図6.25-2が、定期的に乗っているノイズ。かなりはっきりしている。パソコンの電源を抜いても直らなかった。まだ謎。
このノイズは、回路から来るものではない。というのは、オシロスコープで見たところ、マイコンまでのところではノイズが乗っていなかったから。
そして、交流から来るものかと思い、パソコンの電源を抜いてみたところ、図6.25-3が得られ、変化がないことがわかる。すみません、値見にくいかも。そしてガッカリ。
#image(呼吸070625_2.JPG,width=400) 図6.25-1
#image(呼吸070625.JPG,width=400) 図6.25-2
#image(呼吸070625_3.JPG,width=400) 図6.25-3
-&bold(){赤外線リモコン受信モジュール(Photo Modules for PCM Remote Control Systems)と赤外線LED(狭放射タイプ)を用いて、赤外線送受信にトライ。}
この辺に詳しい人を発見! でも今日は話を聞けなかった。
>&bold(){コメント}
- ホタログ・トップページに基本情報を載せました。&br()よろしければ参考にしてください・・・ -- ninja(管理人) (2007-06-25 19:56:33)
#comment(vsize=2,nsize=20,size=40)
----
**2007.6.24.
-&bold(){ホタル通信。ものすごくノイズが乗るので、除去のための検証。23日~}
パソコンにつないだ状態で実行すると、信号の極大値maxxをとったときの振幅widthhは常に3に。熱電対の値は全く反映されず。
24日~、ホーマックで銅網を探すが、売ってない。
櫻沢研から銅の金網をかりる。一瞬止んだが、またノイズィに。以降、ずっとノイズィ。
パソコンから孤立させて起動。すると、ノイズはほぼ消えた(ように見えた)。でもパソコンにつながないと、データ記録とデバッグはできないので、どうにかしたい。
#image(070624_2318~01.jpg) 図6.24-1
#image(070624_2320~01.jpg) 図6.24-2
-&bold(){赤外線リモコン受信モジュール(Photo Modules for PCM Remote Control Systems)と赤外線LED(狭放射タイプ)を用いて、赤外線送受信にトライ。}
ちなみにPCM方式とは、一定時間毎に信号が有るか無いかで0、1を区別する感じ。送信側と受信側で「一定時間」と言うのをずれない様にしなければならないらしい。ホタル通信に関しては近距離だから、あとはシステムが滞りなければ大丈夫だと思う。
なんとなく仕組みが分かったところで早速トライ。
受信機はとりあえずモジュールにGNDと5Vを接続。
LEDを光らすみたいにスイッチと1.5V電池×2を用いて発信機を製作。
これだけじゃだめなのか。受信機が全く反応しません。
ワッショイ!訳わかんなす。
◆参考になりそうなページ [[オーグチさんの卒業研究>http://www.niit.ac.jp/tslab/gakusei/h17/oogu/oogu.html]]
>&bold(){コメント}
- 測定系が直流だとうまくって、交流が入ってくるとだめなんだと思う。&br()だから、ノートPCなら電源だけ抜けばノイズがなくなると思う。&br() -- Kuni (2007-06-25 07:11:07)
- パソコンとシリアル接続してるってこと?&br()もしそうなら、回路にバグがあるということなんじゃないだろうか?&br()どこかで短絡してるとか -- 奉行 (2007-06-25 08:53:39)
#comment(vsize=2,nsize=20,size=40)
----
today: &counter(today)
yesterday: &counter(yesterday)