アーカイブ
カテゴリー

Archive for the ‘電子工作ネタ’ Category

いやー大変やった!ソーラーセルをつなぎ合わせてソーラーパネルをDIYしてみた!

ここ最近、日本列島のいろんなところで頻繁に地震が起きているようで、今度こそ首都圏に大きな地震が来そうな気配。。。

ちょっと前に起こった東日本大震災の時には、東京の赤坂から二子玉川まで4時間くらいかけて徒歩で帰宅したことを思いつつ、何か準備しときゃなきゃという思いはあるものの、何をしなきゃいかんのかというのがイマイチぴんとこない・・・

 

そんななか、今やスマホなどの携帯電話などの通信手段は必要不可欠な時代であり、万一の停電の時でも、このデバイスを最低限、稼働させるための電源の確保ができればそれなりに、情報収集ができてそれなりの対応ができるだろうということで、そのための電源確保しようと考えた!

そこで、今回は自然エネルギーである太陽光を利用して、最低限の電気エネルギーを確保するための、ソーラーパネルを利用した電気エネルギー蓄積システムを自作してみた。。。。

 

ちょうど、デサルフェーターの実験用に残しておいたクルマのバッテリーもあるし、これを利用して、ソーラーパネルを利用して常に充電しておけば、万一の時に電源として使えそうですしね。。。

これを使っちゃいましょう!

 

そんな安易な計画で、まずはソーラーパネルを調達することに。。。

 

でも、それなりの発電量を持ったソーラーパネルは結構なお値段。。。。

クルマのバッテリーをそれなりに充電するためには、最低でも40W程度の発電量が必要で、これのパネルの価格を調べてみると、どれもこれも10,000円クラス。。。

貧乏なサラリーマンの小遣いとしてはこの10,000円は高嶺の花です。。。

そんな高価なものをいきなり調達して検証失敗の結果であれば、エンジニアとしては悔しくて仕方ないので、今回は、安く調達して実験してみることを優先する方針でいろいろ調べてみた。。。

そうすると。。。

40Wクラスのソーラーパネルは、完成品でなければ、日本円にして約3000円くらいで中国から調達ができることが分かった!

でも、これは完成品ではなく、36枚の太陽電池セルがバラバラになった状態のもので、これを直列にはんだ付けしてつなぎ合わせて、18Vを作るというDIY製品!

まぁ、電子工作はしょっちゅうやってるんで、はんだ付けなんて問題なしと思って、これは安いということで、ポチってみました。。。

(以下のバナーで solar panel diy で検索すればいっぱい出てきます!)


 

(楽天だとこんなのもありました。。。)

 

>太陽光パネル 太陽光発電 ソーラー学習セット 太陽電池を気軽に体験♪ソーラー発電 ソーラー電池 【02P03Dec16】

価格:3,780円
(2017/2/20 19:05時点)
感想(31件)

発注から約1カ月で中国からようやく来ました!

cimg2034

こんな感じで結構、丁寧な梱包で到着!

ここ最近の中国の運送業界はひどくて、荷物を投げまくって仕分けするなんてことが当たり前のようで、少々心配してましたが、無事到着しました!

発注後に知ったんですが、中国の運送業界の実態はこんな感じみたいです!

https://www.youtube.com/watch?v=TJMoqnc_V-E

もー投げる投げる!!! でもけっこういいコントロールしてます! こんな状態で無事届いたのは奇跡としか言いようがいないっすねー!!

cimg2035

一応は、こんな表示があるんですけど、あの様子を見てるとこんなもんは全く意味をないしてないような気がします。。。

 

とりあえず、開けてみると。。。

cimg2036

こんな感じ!

奇跡ながら全量無事につきました!

 

セルは40枚! 当然全部バラバラ!

このセルは2インチ×6インチのサイズで、1セルあたりの電圧は0.5Vで電流は最大で2.2Aを発電するようです。。。

これを36枚、直列につないで、電圧は、0.5V×36枚で18Vで、電流は2.2Aなので、約40Wの発電をするってことなんですね・・・

 

これに、各セルをつなぎ合わせるタブ線とバス線、はんだ乗りを良くするためのフラックスペンがついてます。。

 

いよいよ、このセルを直列につなぎ合わせていくわけですが。。。

これが大変!!!!!!!

もー大変です!

大変!ってのは、とにかくセルは薄いこと!

例えるなら。。。

 

カルビーのポテトチップの上ではんだ付けしていくようなもの!!!!!

 

ちょっと気が抜けて、油断すれば。。。。

cimg2044

こんな状態。。。

割れまくります。。。

ソーラーセルのはんだ付けは超高度な技術を要します。。。

ちょっとしたはんだの段差でも割れまくります。。。

はんだ付けは結構、自信があったんですけど。。。凹みまくりです。。。。とほほ。。。

40枚のセットだったんで、18Vを作るためには、36枚が必要で、割ってもいい許容枚数はたった4枚!

ますますプレッシャーがかかります。。。。

 

格闘すること約4時間!!!!

 

なんとか、終わりました。。。

ちょっと無理な体勢ではんだ付けを余儀なくされたため、足腰が激痛です。。。

cimg2037

こんな感じで、組んでみた。。。

900mm × 450mm の合板の上に 1列あたり8セルを並べ、これを4列で、32セル

これと4セルを足して合計36セル!

 

これに、セルが割れないように周囲に30mmの高さのゲタを乗せて、セルの上下段にもゲタをかまして、その上に、0.5mm厚の透明PET樹脂を乗せて保護してます。。。

0.5mm厚だと薄いかなーと思ってたけど、ゲタのおかげで結構いい感じに強度が保てました。

 

いよいよこれで発電量を測ってみると。。。

cimg2039

おーーーーーー!!!!

今日はいいお天気だったんで、定格の18Vを上回る20Vを発電してます!!!

こりゃ期待できます!!!!

 

cimg2043

これに、レギュレーターを付けます。。。

これも中国からの輸入です。。。

このレギュレーターなんとMPPT方式です!

(MPPT:https://ja.wikipedia.org/wiki/%E6%9C%80%E5%A4%A7%E9%9B%BB%E5%8A%9B%E7%82%B9%E8%BF%BD%E5%BE%93%E5%88%B6%E5%BE%A1 )

国内で買えば3000~5000円位なんですけど、800円で調達しました。。。

(もう電子部品関係では、中国にはかないませんね。。。)

cimg2042

バッテリーとソーラーパネルをつないで、一応、ちゃんと充電しているようです。。。安心安心。。。。

cimg2040

完成した全景がこんな感じ。。。

まぁなんとかできました。。。

これから、テスト運用をしてみましょうかね。。。。

どんな感じになるかは乞うご期待のほど。。。。

 

でも、今回、セルのつなぎ合わせからのDIYでソーラーパネルを作ってみましたが、良く分かったことがあります。。。。

それは。。。

 

素人がソーラーパネルのDIYでやってもハンパなく手間がかかる!

こんだけの破損率があれば、それなりの値段がするのはよくわかった!

でもこんだけの苦労を考えたら、ハナから完成品を買ったほうが全然いい!

ほーら!

 

>ソーラーパネル40W

価格:10,000円
(2017/2/20 19:09時点)
感想(0件)

 

この分野は難易度が高すぎです!

ソーラーパネルはすぐ割れるんで、割れてもいい許容量を超えてしまうとタダのゴミにしかなりません!

こどもの教育用にはDIYはいいですけど、実用を考えたときには、絶対に完成品を調達したほうがいい!ってことを実感です。。。

 

もう二度とソーラーパネルの自作はしないっす!

でも、いい勉強になって、おもしろかったけどね!

なので、やっぱり、またやるかもしれないっす!

祝!『流れるウインカー』解禁!ということなのでちょっと作ってみる!(とりあえずブレーキランプを流してみる実験編)

久々のコンピューターネタです・・・

クルマのウインカーって、ちょっと前までは、流れるような点灯方式のものはダメだったけど、AudiやMercedesなんかの欧州車で標準装備化されたものが出てきた。

これらの欧州車メーカーは、大のお得意様である日本向けにも、同じ仕様で販売したいという思いがあったのかなかったのかは知らんが、結局のところ、国土交通省さんも外圧に負けて一部許可することになったようです。

国産メーカーも早速のところ、レクサスブランドのクルマの一部にはもう適用されてるもんね。。。

 

小生の小学校中学校時代くらいの40年前くらいには、自転車のフラッシャーで結構はやったようなモンやな。。。

こんなのこんなの!あったあった!!!

 

1970年代のフラッシャー付の自転車!

 

今、見れば結構ケバケバシイ。。。

コンピューターなんかがまだ超高価なものであった時代のものやったやろうから、電子回路的にはほとんどトランジスターとリレーで構成してたんやろか。。。

回路を見てみたいモン。。

 

とてもカッコいい!とはお世辞にもいえんわな。。。

でも、当時は斬新でかっこええと思ってたわけやし、そのころの憧れを今になって、クルマで再現させてみちゃいましょう!

 

 

今や時代は進化して、格安にマイコンが使える時代でもあり、今回は、ウインカーとともにあるブレーキランプも流しちゃおうということで、とりあえずブレーキランプを流してみるための試作をやってみることに。。

まぁかっこいいか悪いかは、作ってから考えるということで、かっこ悪かったら不採用ということにしましょうかね。。。

 

そういうことで、とりあえずどうやって作るか!

一応は小生は、コンピューターエンジニアの端くれでもあるので、今回は試作ということでもあり、PICを使ってLEDを制御する方法としましょうかね。。。

 

PICってのは、Microchip社から販売されているマイコンチップで、このチップの中にパソコンと同じようなCPUやメモリなんかが入ってて、この中にC言語やアセンブラでプログラムを作って書き込んで動作させるってもの。。。

詳しくは、PICフリーカーがいろいろと情報を発信してるのでそっちを見てみてちょうだい!

 

PIC 入門

 

PICは秋月電子で簡単に手に入りますんで、この中で今回は、PIC16F628Aというお手軽に使える石を採用してみました。

(時間に余裕があれば、以下のサイトから調達すると超激安で調達できますよー もう日本の価格とは比較にならないほどの価格ですよー)

 



 

今回の仕様は。。。

PIC(マイコンチップ) PIC16F628A 1個
点灯させるLED数 32列×2行 32個
32列のLEDを制御のためのシフトレジスタ 74HC595 4個
電流確保のためのトランジスタ(アレイ) TD62083AP 4個

 

こんな感じの部品で作っちゃいます。

 

とりあえずは、PICで動かすプログラムを作ります。。。

32列もあるので結構いろいろなパターンを作れそうです。。。

Microchip社のPIC開発環境(MPLABX)やC言語コンパイラは、ほとんどがタダで提供してくれているので、素人が作るようなものであればこれで十分です!

プログラムは、昔取った杵柄の馴染みのC言語を使って書くことに。。。

[html]
#include <xc.h>

#pragma config BOREN = OFF
#pragma config CPD = OFF
#pragma config FOSC = INTOSCIO
#pragma config MCLRE = OFF
#pragma config WDTE = OFF
#pragma config CP = OFF
#pragma config LVP = OFF
#pragma config PWRTE = ON

#define _XTAL_FREQ 16000000
#define SI RA0 // データ信号出力ピン
#define SCK RA1 // クロック動作出力ピン
#define RCK RA2 // ラッチ信号出力ピン

#define LightCount 32

#define Blank_Out_Interval 30
#define Full_Flash_Interval 30
#define Center_Diffusion_Interval_1 10
#define Center_Diffusion_Interval_2 10
#define Center_Block_Diffusion_Interval 30
#define Stack_Block_Interval 10

void shiftOut(int bitOrder, unsigned long value){
// bitOrder: 0=LSBFIRST 1=MSBFIRST
int x,i;
unsigned long up_data;
unsigned long lo_data;
up_data = value>>(LightCount/2);
lo_data = value <<(LightCount/2); lo_data = lo_data >>(LightCount/2);

for (i=0;i<LightCount;i++){
SCK=0;
if (bitOrder==0) {x=i;}
else{x=LightCount-1-i;}
if(x<16) {
if(lo_data&(1<<x)){x=1;}
else{x=0;}
}else{
if(up_data&(1<<(x-(LightCount/2)))){x=1;}
else{x=0;}
}
SI=x;
SCK=1;
}
}

void Blank_Out(){
RCK=0;
shiftOut(1,0);
RCK=1;
__delay_ms(Blank_Out_Interval);
}

void Full_Flash(int disp_mode){
//disp_mode = 1 全灯点滅
//disp_mode = 2 両端内側交互点滅

unsigned long Full_On=4294967295;
unsigned long Harf_Outside=4278190335;
unsigned long Harf_Inside=16776960;

RCK=0;
if(disp_mode==1){shiftOut(1,Full_On);}
else if(disp_mode==2){shiftOut(1,Harf_Outside);}
RCK=1;
__delay_ms(Full_Flash_Interval);

RCK=0;
if(disp_mode==1){shiftOut(1,0);}
else if(disp_mode==2){shiftOut(1,Harf_Inside);
}

RCK=1;
__delay_ms(Full_Flash_Interval);
}

void Center_Diffusion(int disp_mode){
// disp_mode = 1 中央から拡大
// disp_mode = 2 中央へ縮小

int i;
unsigned long up_data = 0;
unsigned long lo_data;
unsigned long disp_data;

for(i=0;i<LightCount/2;i++){
RCK=0;
if(disp_mode==1){
lo_data = 65535;
up_data=(up_data<<1)+1;
lo_data=lo_data<<((LightCount/2)-i-1);
lo_data=lo_data<<(LightCount/2); lo_data=lo_data>>(LightCount/2);
disp_data=(up_data<<(LightCount/2))+lo_data; }else if(disp_mode==2){ up_data=65535; lo_data=65535; up_data=up_data>>i;
lo_data=lo_data<<i;
lo_data=lo_data<<(LightCount/2); lo_data=lo_data>>(LightCount/2);
disp_data=(up_data<<(LightCount/2))+lo_data;
}
shiftOut(1,disp_data);
RCK=1;
if(disp_mode==1){
__delay_ms(Center_Diffusion_Interval_1);
}else if(disp_mode==2){
__delay_ms(Center_Diffusion_Interval_2);
}
}
}

void Center_Block_Diffusion(){

int i;
unsigned long disp_data;

for(i=0;i<LightCount/4;i++){
RCK=0;
unsigned long up_data=771;
unsigned long lo_data=49344;

up_data=up_data<<i;
up_data=up_data<<(LightCount/2); lo_data=lo_data>>i;
disp_data=up_data+lo_data;
shiftOut(1,disp_data);

RCK=1;
__delay_ms(Center_Block_Diffusion_Interval);
}
}

void Center_Stack_Block(){

for(int i=0;i<(LightCount/2);i++){
for(int x=0;x<(LightCount/2)-i;x++){
RCK=0;
unsigned long out_data;
unsigned int up_data=1<<x; unsigned int lo_data=32768>>x;

out_data=up_data;
out_data=out_data<<(LightCount/2);
out_data=out_data+lo_data;

if(i!=0){
for(int z=0;z<i;z++){
unsigned long tmp;
tmp=1<<((LightCount/2)-z-1);
tmp=tmp<<16;
out_data=out_data+tmp;
}
out_data=out_data+((1<<i)-1);
}
shiftOut(1,out_data);
RCK=1;
__delay_ms(Stack_Block_Interval);
}
}
}

void main(){
int i,x;

TRISA=0b00000000;
PORTA=0b00000000;

for(i=0;i<8;i++){
if(i<4){
Full_Flash(1);
}else{
Full_Flash(2);
}
}

while(1) {
for(i=0;i<4;i++){
Center_Diffusion(1);
Center_Diffusion(2);
}
Blank_Out();
for(i=0;i<4;i++){
Center_Block_Diffusion();
}
for(i=0;i<4;i++){
Center_Stack_Block();
Center_Diffusion(2);
Blank_Out();
}
}
}
[/html]

 

まっこんな感じ。。。

あんまり綺麗なプログラムじゃないんで、C言語の勉強には使わないほうがいいかもね。。。(とほほ。。。)

 

これをMicrochip社のXC8のC言語コンパイラでコンパイルして、RCDライタでPICに書き込みをするわけですけど・・・

ここのサイトの回路図を参考に。。。

こんな感じでRCDライターを作ってみました。。

 

これでPICに書きこんだもので。。。

実際に稼働させるための電気的な回路は、単純シンプルでPICから発信されるデータピンとクロックピンとラッチピンをシフトレジスタに流して、単純にシフトレジスタをイモヅルで4個ぶら下げるってもの。

 

とりあえず、PICとシフトレジスタだけで32個のLEDを光らせてみたら。。。

 

こんな感じ。。。

INTERVALの時間をもうちょっと調整しなきゃね。。。

こんなパターンでPIC16F628Aのプログラム領域は大体90%くらい!

ちゃんと効率的なプログラムを組めばもっと下げられるかもね。。。

もうちょっといい点灯パターンはないかねー。。。芸術的なデザイン能力は無いのでこんなもんしかできません。。。

 

まぁとりあえず、こんな感じ!

次はウインカーバージョンをやってみるかね。。。

 

〜後日追記〜

激安でリアガーニッシュをGetしました。

クルマやバイクなどのメカ好きにはたまらないパラダイスを発見!アップガレージで3KJエンジンとE51エルグランドのリアガーニッシュをGET!

これを使って本格的にやってみる計画中!

乞うご期待!

はやりのRaspberry Piと大気圧センサーで気圧を図ってみた

久しぶりに秋葉原の秋月電子通商へ行ってきました。

何かおもろいモノはないかと物色してると、”大気圧センサー”ってのがありました。。。

気圧といえば、低くなると頭痛になるとか言われることが多々ありますけど、本当にそうなのか気になるところです。

じゃぁそれを検証してみようということで、大気圧センサーで実験してみることに決定!

 

シゲシゲと見てると、ボッシュ社のBME280は、気圧だけでなく、温度も湿度もワンチップで図れるという優れもの!!!

こりゃいい!と思って探してみたらあいにく売り切れ!

仕方ないので、MPL115A2というセンサーを使った商品があったのでこれでとりあえず実験してみることに。。。

 

Raspberry Piと簡単に接続してとりあえず実験してみるために、今回はI2C接続バージョンを購入してみました。

これなら、簡単に接続できてアプリケーションも簡単です。。。

 

ということで、チャラチャっと接続してみました。。。

CIMG1158

こんな感じ。。。

真ん中へんにあるちっちゃいDIPが大気圧センサー!

センサー自体は、3mm×5mmくらいなもの!

これじゃとてもじゃないけど手で半田付けするのは無理なので、DIP版を購入してみました。

 

これをI2CでRaspberry Piと繋ぐんですけど、このチップは、1(Vdd)、4(Shdn)、5(Rst)番のピンをVddに繋げなければ動きませんので要注意です。

これがわかるまでに2日かかりました。。。

 

これがようやく分かってPythonで5分毎に気圧を計り、SQLITEにデータをスタックするプログラムを作って動きました!

 

単にこの数字を見ててもおもしろくないので、Jpgraphを使ってグラフ化してみました!

ほぼリアルタイムな測定結果です。。。(画像をクリックりたら現在の状態が見えるでー)

確かに天気が悪い時は、一気に気圧が下がってます。。

天気予報の通りということを身もって体感できました!

 

次は、LCDに表示させてみますかね。。。

 

なかなかおもしろかった!

 

 

はやりのRaspberry Pi のGPIOを使ってPWMでLチカしてみた

久々のコンピューターネタです。

いろいろな分野で活躍中のRaspberry Pi君を引っ張り出して、チョット遊んでみましょう。。

 

単純に動かすのは簡単なので、GPIOを使ってさらにPWMを使った、”高級版Lチカ”です。

まずは、制御するプログラムですけど。。。

最近はやりのPythonを使ってやってみますかね。。。


無題

こんな感じでちゃらちゃら。。。っと書いて。。。

pythonってわかりやすい!

これからの言語としてはいいねって感じです。。

 

今回は、17個のLEDを制御して2パターンの点灯パターンで光らせるようにプログラムしてみました。。。

 

それと、GPIOピンとブレッドボード上のLEDとの配線。。。

ピン配列があっちこっちに飛んでるんで、結構これをマッピングするのは大変でしたね。。

CIMG1139

こんな感じ。。。

これを実行すると。。。。

 

おもしろかった!

またなんかおもろそうなん考えてみよ。

RAPIRO君の健康診断

年末に長年おついきあいのある会社のエライひとから、”クラウドファンディングで出資して貰ったRAPIROの右足が動かんから見てくれ”とのご相談を頂き、結構な大きなものであるにもかかわらず、わざわざ会社まで持ってきていただけたので、それではということでとりあえず、お借りしました。。。

 

今年の年末は、少々の有給休暇をもらって怒涛の11連休で帰省するので、これにお伴させて、帰省先で健康診断してみることに。。。

 

まずは、外観の初見から。。。

 

うんー。。ちょっと組み立て方が雑やな。。。って感じ。。。まぁその人の性格が出てますかね。。。(失礼!)

これじゃなかなかスムーズには動かんなということで、一旦、全部ばらしてオーバーホールしてみるという大手術をすることに決定!

 

で、早速開始!

 

開始後、すぐにわかりました。。

CIMG0955

右足のサーボモーターのピンが1本ずれてますね。。。

これを。。。

CIMG0956

はい!終了。。。

これを組み立てて、終了。。。

ばらした後は各サーボモーターの初期状態を調整するわけだけどこれが超微妙!!!

結局、2時間くらい格闘して、なんとかまともに動くようになりました。。。。

組み立て自体はカンタンだけど、これがいちばん大変でしたね。。。

 

今回、調整した結果は。。。rapiro_init_set

まだなんとなく、左に曲がっているような感じはあるものの、まぁこれは持ち主に頑張ってもらうことにします。。。

 

まぁこれで、なんとかすべてのサーボモーターの調整ができたので、Teratermのマクロを使って。。。

rapiro_macro

 

せっかくお正月ということもあるので、こんな感じで動かしてみました。。。

 

 

【RAPIROからのお正月メッセージ】

http://norisuke.servehttp.com/rapiro2.mp4

人型ロボットの入門編としてはなかなか面白いものでしたね。。。。

これにraspberry pi を組み込んで、今度は、SiriProxyをつかって音声認識させるってのも面白いかも。。。

持ち主にちょっとアイディアを授けて頑張ってもらおう。。。