2019年11月
          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30

サイト内検索

最近のトラックバック

無料ブログはココログ

書籍・雑誌

2019/10/06

digifi付録のOlasonic社製DD/DAコンバーター基板をaitendoのアルミケースに収めた

2014年刊のdigifi15号特別付録のOlasonic社製DDコンバーター基板と同digifi16号のDAコンバーター。

Konnano<-こんなの(digifi記事より切り抜き)


長いことむき出しのままアクリルパネルにネジ止めして使っていたが、aitendoのアルミケース(E) [E88X38X120]に押し込んでみた。


Pa020420

line in/outと同軸デジタルデータ用のピンジャックはケースにネジ止めできるよう出っ張りがあるが、これが邪魔になってケースに収まらない。
そこでline in/outはこのネジ止め部を削り落として、同軸デジタルデータ用のピンジャックはDD/DA基板を組み合わせれば使わないので取り外した。
その上で両者を背中合わせにして積み重ねるとアルミケースにピタリと収まった。
フロントパネルがちょっと薄めで頼りない感じだけど、なかなかの仕上がりだと思う。

Front

 

使ってみるとline outから何も出てこないのであせった。
基板のパターンを追っていくとHP J301(3.5mmジャック)のスイッチを使って音声信号の出力先をヘッドホン側(多分アンプの入力)とline outに切り替えている様だ。
DAC基板のline outはヘッドホン(3.5mmジャック)を差し込むとGNDに落ちるようになっている。つまりヘッドホンを差し込むとlineからは何も聞こえない。

* HP J301 ヘッドホンが刺さってない時
               gnd - O O -> line out L
                           |            signal L -> line out L
(headphone L) - O O <- signal L
(headphone R) - O O <- signal R
                           |            signal R -> line out R
   
           gnd - O O -> line out R

* HP J301 ヘッドホンが刺さっている時
              gnd - O-O -> line out L
                                       gnd -> line out L
(headphone L) - O O <- signal out L
(headphone R) - O O <- signal out R
                                       gnd -> line out R
              gnd - O-O -> line out R

面倒なのでスイッチを通さず signal -> line out にした。

 




 

 

続きを読む "digifi付録のOlasonic社製DD/DAコンバーター基板をaitendoのアルミケースに収めた" »

2016/10/30

トラ技2016年11月号の付録基板を組み立ててみた

トランジスタ技術2016年11月号の付録基板を組み立ててみた。

Tr1611piccaso

 距離センサーと気温気圧湿度センサーは手持ちがあった。アンプ部分は実験用に作った外付け回路を使いまわすから組み立て不要。
 なんで、部品キットは買わずに済ませようと思った。<-これが間違いだったのかも。

 R,Cは部品箱をかき回して集めた。PIC16F1509と2N7000はRSコンポーネンツで見つけて発注。

 残ったのがI2Cインターフェースの液晶モジュール。

 ググると、なんとAmazonで見つかる。Amazonで売ってる、ということに驚く。もう、文字通り、何でもありだわAmazon。
 それも似たようなモジュールがぞろぞろと出てくるのに驚く。さらに値段もバラバラなのに驚く。

 記事で使っているのに近そうな物に当りをつけて発注したのがこれ。
EasyWordMall IIC / I2C / TWI 1602 LCD モジュール ブルー スクリーン IIC/ I2C Arduino用

 御推察の通り、こういったモジュールの出処は中国。
 当然安い。ほかの部品とまとめ買いしたので送料もかからない。
 こうゆうことだと国内の小売りもメーカーも太刀打ちできない。

 但し、データシートの類は一切ついてこない。ブツだけがエアキャップに包まれて郵便物扱いでやって来る。
 メーカー名もはっきりしないので、ネットサーフィン(死語?)というか、それっぽいところを探り探りしてデータをダウンロードする。
 が、得られたデータシートもその製品のものは見つからず、使われているコントローラのものだけだったり、中国語で書かれていて訳が分かんなかったりする。

 さらに、配送に時間がかかる。しっかり2週間、ええ、待ちますとも、子供の頃なんかは部品発注しても届くのはひと月先だったもんな...。
 注文したのをチョット忘れかけた頃合いで、それでもキチンと届くのだからから大したもんだ。

 幸い記事と同等のもの(らしい...)で寸法もあってる。
 PIC16F1509にファームを書き込んでRaspberryPiその他もろもろ実装して、起動したのですが...

   LCDに文字が出ない。


 ということで、ここからが本題ですが、結論から言えば液晶モジュールのI2Cのアドレスが違っていることがあるらしい、ということです。

 トラ技のサポートページからソフトウエア一式"TR1611P.zip"をダウンロードして解凍。
"第2特集第2章(2次試作)\PICスパコン拡張ボード[センサ版]"の中の"CQClock¥lcd1602_lib.c"を見ると

void lcd_out(unsigned char code, unsigned char flag)
{
    char data;
    data = ((code & 0xF0) | flag) | 0x08;   // +RS
    SendI2C(0x7E, data);                    // +BL
    SendI2C(0x7E, (data | 0x04));           // +BL+EN
    SendI2C(0x7E, (data & 0xFB));           // +BL-EN
    __delay_us(30);                         // 遅延
}

 I2Cのアドレスデータは0x7Eとなっている。但しアドレス値は7~1bit(最下位ビットはR/Wフラグ)なので実際の値としては0x3F。
 ところがネット上の他の使用例を調べるとアドレス値は0x27になっている。

Lcd1602a

Lcd1602b

 ここで使っているI2C液晶モジュールは秋月電子通商等でもおなじみのパラレルインターフェースの液晶モジュールに、I2C->パラレル変換ICである"PCF8574"を実装した回路基板を抱き合わせたもののようである。

 ややこしいのは同等品として"PCF8574A"という型番もあって、それぞれアドレス値が異なるということ(機能は同じ)。

 PCF8574   : 0x20~0x27
  PCF8574A : 0x38~0x3F
 (下位3bitは外部端子A2-A0で決まる)

 両方使えば最大16個まで接続できますよ、ということらしいのだけど、単に上位品、機能改良版かと思い込んでしまいそう。こうゆうの、製品化するときは怖いよねぇ。

 トラ技の記事で扱われたモジュールは、"PCF8574A"を使っていたのか?

 ひょっとして出回っているモジュールには"PCF8574"を使ったものと"PCF8574A"を使ったものとが混在しているのでは?
 しかも外部端子A2-A0の設定もよく判らない。全部PULLUPしてあるかPULLODWNしてあるかどっちかだろうけど、検索した画像では同じような基板なのにアドレス設定用のジャンパがあったりなかったりする。

 結局、やって来たモジュールが0x20,0x2F,0x38,0x3Fのどのアドレスかは運次第、だったりして。

 カオスじゃ。
 ビバ、ハロウィーン~!! トリック オア トリート!!ってか


 以下、その他の気づいた点もまとめて。

1.上述の通り、PIC16F1509に書き込むファームウエアはトラ技のサポートページの"TR1611P.zip"の中の
"第2特集第2章(2次試作)\PICスパコン拡張ボード[センサ版]"の中の"CQClock"をI2Cのアドレスを修正した上でコンパイル->焼き直しする必要がありそうです。

2.コンパイル、焼き込みにはMAPLAB X IDEとPICKIT3または相当品が必要。トラ技付録基板はPICKIT3に直結できるICSP端子があるけれど、5V系と3.3V系が混在するので、焼きこみは別途ブレッドボード等で行った方が無難そう。

3.PICKIT3に書き込むファームウェアのソースは上記の通り。一方、RaspberryPi上で実行するPythonのスクリプトは
  "第2特集第2章(1次試作)\ラズパイ\work\talk1.py"
 と、それぞれ別のフォルダにあるので注意。

4.そもそもPIC16F1509に書き込むファームウェアのhexファイルは"TR1611P.zip"の中の
  "第2特集第2章(2次試作)\PICスパコン拡張ボード[センサ版]\CQClock20160926.hex"
 らしいのだけれど、これはトラ技記事にある名称"Raspberry Speech"と異なっていて分かりにくい。

以上、自分で部品集める方の参考になれば。

2007/08/30

デアゴスティーニ『週刊 蒸気機関車C62を作る』

 デアゴスティーニさんが、なんか、また気合の入ったシリーズを出したようです。

    デアゴスティーニ『週刊 蒸気機関車C62を作る』

C62の金属製SL模型を作成するという新シリーズですが、スペックがすごい。
 全長950mm 高さ165mm 幅112mm スケール1/24
 ギミック 動輪が回転、前照灯と焚き口にLEDが点灯
 主要部品は真鍮製(未塗装)
 刊行予定 100号 (!!)

気合入ってますねぇ。真鍮むき出し1mのC62、かなり迫力ありそう。
で、作る方も気合入れないといけません。なんせ、

 総額...
 990(創刊号のみ)+99*1890=188100円

これは模型としては妥当な値段なんでしょうか?しろーとには分かりませんが、ただ完成写真とか動輪が動く動画とか見せられると納得してしまいそうです。さらに、

 完成するのは...
 (100-1)*14(<-隔週刊だから)/365=3年10ヶ月後

  (100-1)*7(<-週刊だから)/365=1年11ヶ月後  <- 訂正 ごめん、”週刊”でした。
ですから。続いた人はえらい!!4年というと結構な時間ですよ、世界がどうなってるかも分からない。2年だったら続くか...もしれない。予算があれば...

 昨今の鉄ヲタブームを見越してか、団塊の世代の時間と金のある人々をターゲットにしたのか、私にはちょっと手が出せないですね。
 でも完成品があるなら生で見てみたい(^^;)。

2007/07/14

古の時計vol.22

Imgp0867 また買ってしまいました。
古の時計vol.22 「庵」

蓋の付いてるタイプです。
チェーンは付いてません。

クロムメッキでしょうか。ピカピカツルツル。
付いた手垢をつい拭き取りたくなります。

Imgp0866
竜頭のポッチを押すと蓋が開きます。

文字盤も針もシンプルそのもの。
渋いです。




 ところで、先に紹介した止まってしまった時計ですが、秒針が長針に引っかかって止まっていたようです。引っかからないように秒針を少し曲げて修正したら正常に動くようになりました。
 但し、文字盤を無理に外そうとしたら、モジュールから竜頭に繋がる軸を折ってしまいました。瞬間接着剤で何とか繋げたけど、竜頭が若干飛び出してしまってカッコ悪くなってしまいました。

-広告-
MKSコジアケセット(広・細)
【mart】 SEIKOコジアケロ大用 S-282

2007/07/06

PSoCによるバットディテクタの製作(2) 

 以下、回路の要点を説明しておきます。
 超音波を可聴周波数に変換するには”2つの周波数の信号を乗算すると、それらの和と差の周波数を持つ信号が得られる”という原理に基づきます。

     2sin(2πf1)sin(2πf2)=
           -cos(2πf1+2πf2)+cos(2πf1-2πf2)

 で、詳しいことは置いといて(当ブログは全部こんな調子です、御容赦を)、実現する方法として最も簡単なのが「乗算する信号に方形波を使う」方法のようです。PSoCでもアナログブロックの入力にあるスイッチを切り替えて、信号入力の正負を反転させる(=半波長が1、残りが-1の方形波を乗算する)ことで実現できるそうです。乗算後の信号には和の周波数成分が含まれますが、これをローパスフィルタで取り除くと、差に相当する周波数が得られます。聞きたい超音波に近い周波数を乗算すれば、可聴周波数にまで落とすことができるわけです。
(参照:Application Note AN2111 Heterodyne with Quadrature Outputs,PSoC Style)
Blockzu_4

 
 

 
 

 乗算する信号すなわちスイッチの切り替えタイミングはデジタルブロックに構成したPWMで発生し(局部発振器と称する)、この出力を入力スイッチの制御信号(AMOD)に接続して変調を掛けます。
 局部発振器のPWMの設定とローパスフィルタの構成は開発用ソフトPSoC designerのメニューに従えば簡単に設定できます。本器では局部発振周波数を40kHz、ローパスフィルタのカットオフ周波数を10kHzとしています。
 しかし、”PWMの出力を入力スイッチのAMOD信号に接続”する方法はメニューにはありません。生成されたCPUのソースリストに追記する必要があります。

   //Enable modulator for ASC10 & ASC12
   M8C_SetBank1;
   AMD_CR0 |= 0x22; //modulator input connect to GlobalOutputEven[0]
   M8C_SetBank0;

 4行目、レジスタAMD_CR0の設定によりアナログモジュールASC10またはASC12のAMOD信号の接続先を設定することができます。
(ここではPWM出力をGlobalOutputEven[0]を通してAMODに接続している)

 以下にPSoCのプロジェクトファイルと、周辺回路図を置いておきます。

プロジェクトファイル batdetector.lzh (377.7K)

周辺回路図 batdetector.pdf (71.5K)

 周辺回路は電源、出力アンプと超音波センサぐらいです。
超音波センサには日本セラミック(株)製 空中用超音波センサR40-10を、出力アンプにはNJM2073を使用しています。

文献:
PSoC Technical Reference Manual  (Cypress  Semiconductor)
CY8C27442data sheet            (Cypress  Semiconductor)
Application Note AN2111 Heterodyne with Quadrature Outputs,PSoC Style  (Cypress  Semiconductor)
はじめてのPSOCマイコン   (桑野雅彦 著 CQ出版社 刊)

謝辞:
設計に当たり参考にさせていただきました。感謝の意を表します。
http://www5b.biglobe.ne.jp/~YASUSI/index.htm
  YS design studio様
http://bluefish.orz.hm/sdoc/ele.html 
  K.I様
http://www.pastelmagic.com/ 
  pastelmagic様
http://www003.upp.so-net.ne.jp/doggie/index.htm 
    doggie様
http://www.cypress.com/index.html
    cypress  Semiconductor様

-広告-
ミニプログラマセット/CY3210-MINIPROG1
PSoC混在シグナルアレイ/CY8C27443-24PXI

 

2007/07/05

学研 大人の科学 Vol.16 ミニ茶運び人形

性懲りもなく、また買ってしまいました。

 「学研 大人の科学 Vol.16 ミニ茶運び人形」

なんというか、完全に学研さんの術中にはまってますなあ。

Imgp0851_1 手前が「ミニ茶運び人形」
奥の前作「大江戸からくり人形」の半分の大きさ。

大きな違いは大きさの他、すり足機構が省略されたこと、首振り機構等が簡略化されたことですが、「茶運び」機構そのものは前作そのままです。


チョコマカと健気に動き回ります。

 調整した点が2点ほど。

  1. テンプが腕の固定軸に引っかかって動かなくなった。
    ->テンプの上面(錘代わりの木ネジを取り付けるところ)を少し削った。
  2. 回転しすぎて在らぬ方向へ去ってゆく
    ->回転板(カム)に取り付ける調整駒を5mm程切り取った

 これらは、多分個体差があるでしょうね。この位の手数を惜しんでは、先人に対して申し訳ないというもの。
 それにしても、よくできてます。

広告:

「大江戸からくり人形」

大人の科学マガジン(vol.16) 「ミニ茶運び人形」

からくり人形師 玉屋庄兵衛作 茶運び人形
プラスチックでない本物の「茶運び人形」 税込2,940,000円 (!)

2007/04/20

古の時計

アシェット・コレクションズ・ジャパン刊の「古の時計」 vol.13幸運
よくある付録付の分冊百科シリーズ。これはアンティーク調にデザインした(復刻版”ふう”の)懐中時計のコレクション。
電池が上がったようなのでバッテリを交換してみた。

ただし、うまくやらないと蓋を開けるときに傷を付けてしまうので慎重に。
蓋の開け場所がわかりにくいが、裏返しで5時方向(VIIとVIIIの間)あたりに隙間があるのでそこに-の時計ドライバー等を挿してこじれば開けられる。力を入れると傷を付けてしまうので注意。ビニールシートを挟んでやると良い。

Imgp0807 Imgp0808







製品には鎖は付いてない。

中身は至極簡単。薄い文字盤にムーブメント(小さい...)と白いプラスチックの押さえ。
竜頭はあるが、ゼンマイではなくクォーツのムーブメント。押さえは落とし込んであるだけなので持ち上げれば外れる。ムーブメント左下に電池。板ばね状の押さえを時計ドライバーか何かでずらすと外れる。同様にして代わりの電池を収める。電池はSR626SWを使用。
あとは蓋を載せ、縁に沿ってそっと押さえてやるとぱちんと閉まる。文字盤と裏蓋の柄の方向を間違えないこと。

\1990という値段のわりには重量感のある造り。以外にもしっかりと正確に時を刻む。
クオーツだから竜頭は時刻合わせ以外には使い道がない。回しても空回りするだけ。
ゼンマイを巻く時のカリカリという音が出るようなギミックがあればなおいいのだけど。
今度は正確さを無視する代わりに本物のゼンマイを使ったシリーズを出しませんか?アシェット・コレクションズさん。


-広告-
MKSコジアケセット(広・細)
【mart】 SEIKOコジアケロ大用 S-282

2006/11/18

本「LINUXによる画像処理プログラミング」のポーティング(2)

画像処理 続き。
imlib->GdkPixbufへの変更点。
http://members.jcom.home.ne.jp/maegawa/linux/gdkpixbuf.html (GdkPixbuf -Imlibの代替として)
http://www.gnome.gr.jp/docs/gtk+-2.8.x-refs/gdk-pixbuf/index.html (gdk-pixbuf ライブラリ)
等を御参考に。
詳しいことは?なのだけれど、GdkPixbufはimlibの上位互換的な位置づけらしい。
またGTK+2に取り込まれているのでGTK+2がインストール済みなら他にインストールの関係は気にする必要がない。
(Vine Linuxのパッケージリストにはgdk-pixbuf-0.22.0と言うパッケージがあるが、どうもGTK+1用らしい。GTK+2使うのならインストール不要)

1.Makefile
  コンパイラのinclude,libのパスをそれぞれ
    pkg-config --cflags gtk+-2.0
    pkg-config --libs gtk+-2.0
 で指定する。
imlibではimlib-config、旧バージョンのgdk-pixbufではgdk-pixbuf-configを使用していたが、GTK+2ではpkg-configに統合された。

2.ヘッダーのinclude
    #include <gtk/gtk.h>
    #include <gdk/gdk.h>
    #include <gdk-pixbuf/gdk-pixbuf.h>
  当然ながらgdk_imlib.hは不要になる。

3.GdkPixbufの初期化はgtkの初期化gtk_init()で行うため特に必要なし。
  imlibではgdk_imlib_init()が必要だった。

4.画像データのバッファの構造体をGdkImlibImage*からGdkPixbuf*に変更。例えば
   static GdkImlibImage* im = NULL;
     -> static GdkPixbuf* im = NULL;
  関数の定義も同様に
   GdkImlibImage* get_next_frame(GdkImlibImage* im){
      -> GdkPixbuf *get_next_frame(GdkPixbuf* im){

5.画像データの描画等の関数を置き換える。
     imlibの関数
    ->GdkPixbufの関数
      (im:画像データのポインタ)

  a).画像データの開放
   gdk_imlib_kill_image(im); 
    ->g_object_unref(im);

    b).画像データの生成
     画素のデータ配列に、高さ、幅、データのフォーマット等のデータを付加してGdkPixbufデータを作る
     im = gdk_imlib_create_image_from_data(b,NULL,V4L_WIDTH,V4L_HEIGHT);
     ->im = gdk_pixbuf_new_from_data(
         b,            //画素データの配列(RGBRGB...)
         GDK_COLORSPACE_RGB, //colorspace 画素データはRGB
         FALSE,        //has_alpha       αチャンネルはなし
         V4L_BITPS,    //bits_per_sample 画素(RGB)データはそれぞれ8bit
         V4L_WIDTH,    //width 画像の幅
         V4L_HEIGHT,   //height 画像の高さ
         V4L_WIDTH * V4L_BYTEPP,//rowstride 1ライン分のデータの大きさ
         NULL,         //destroy_fn 終了時に呼び出す関数の指定
         NULL          //destroy_fn_data 終了時に呼び出す関数に渡すデータ
        );

  c).画像のリサイズ
   画像の拡大縮小がこれ一発でできる
   gdk_imlib_render(im,w,h);//元のデータを上書きするらしい
    ->im = gdk_pixbuf_scale_simple(
            pixbuf,   //元の画像データ
            w,     //変更する画像のサイズ 幅
            h,          //変更する画像のサイズ 高さ
            GDK_INTERP_NEAREST //データの補間方法
          );

  d).画像データの描画
   ウインドの描画領域に画像データを展開して表示する
   gdk_draw_pixmap(
          widget->window,
          widget->style->fg_gc[GTK_WIDGET_STATE(widget)],
          im,
          event->area.x,event->area.y,
          event->area.x,event->area.y,
          event->area.width,event->area.height
    );
     ->gdk_draw_pixbuf(
             widget->window,        //描画するウインド
             widget->style->fg_gc[GTK_WIDGET_STATE(widget)],
             im,                           //画像データ
             event->area.x,event->area.y,  //画像を更新するエリア
             event->area.x,event->area.y, // の座標、幅、高さ
             event->area.width,event->area.height,
             GDK_RGB_DITHER_NORMAL,0,0
            );

   e).画像データのファイル出力
    好みのフォーマット("jpeg","png","tiff","ico","bmp")で出力できる
      gdk_imlib_save_image(im,filename,NULL);
     ->gdk_pixbuf_savev(
               im,         //画像データ
               filename,   //ファイル名
               "png",      //出力フォーマット
               NULL,NULL,NULL //オプション?
             );
        imlibではfilenameの拡張子(a.jpg等)で出力フォーマットを指定できたがgdk_pixbuf_savevでは別途指定しないといけない。

6).画像データから画素のデータ、画像のサイズ等を知りたい時には下記の関数を使う
   a).RGBの画素データ配列
    data = (guchar *)gdk_pixbuf_get_pixels(im);
   b).画像の幅
    w = gdk_pixbuf_get_width(im);
   c).画像の高さ
    h = gdk_pixbuf_get_height(im);
   d).1画素当りのByte数
    bpp = gdk_pixbuf_get_has_alpha(im) ? 4 : 3 ;
     (RGB3Bytes+αチャンネルのあり/なし)

2006/11/15

本「LINUXによる画像処理プログラミング」のポーティング(1)

「LINUXによる画像処理プログラミング」(オーム社雑誌局:刊 飯尾淳:著)という本がある。
GTK,imlib,video for linuxを使い、linux上でビデオ画像の取り込み、処理、表示を行うソフトの実例を解説している。
かなり前に購入し、詳しい内容はそっちのけ(著者様、ごめん!)でソースリストを打ち込んで楽しんでいた。
(昔のマイコン雑誌みたいだな。記事の半分がソースコードだったなんて、今の人は知らないかも)

 久しぶりに使ってみようかと引っ張り出してきたのですが、コンパイルが通りません。
この本が記されたのが2000年、その後のGTKのバージョンアップ等々が災いしているらしい。
そこで開発環境をGTK+imlibからGTK+2 + Gdkpixbuf(Vine Linux 4.0RC2)へポーティングすることにした。

下記がその結果。こんな感じになります。実際は動画像です(5フレーム/秒)。
Test





メニューで処理内容が選べます。上は反転表示ですね。

線描(エッジ検出)
Line





差分表示、動いてるところだけ表示してる
Diff





以下、変更点をメモ書きします。

1.imlib->GdkPixbufへの変更
http://members.jcom.home.ne.jp/maegawa/linux/gdkpixbuf.html (GdkPixbuf -Imlibの代替として)
http://www.gnome.gr.jp/docs/gtk+-2.8.x-refs/gdk-pixbuf/index.html (gdk-pixbuf ライブラリ)
等を御参考に。
長くなるので、詳細は後日。

2.文字コードの変更
 GTK+2では内部表現としてUNICODEを使うことになったため、そのままでは
Gtk-WARNING **: Invalid input string なるwarningが出てしまう。メニューも表示できない。
エディタでUTF-8としてsaveするか、nkf -w xxxx する。

3.プリプロセッサで文字列の連結(##)ができない
 例えば #define M_EF_X3 M_EF##"/X3" とすると
   x3.c:30:4: "M_EF" と "/X3" を貼付けましたが正常なプリプロセッサトークンとなりませんとなる。何で??。
 ##を止めて#define M_EF_X3 M_EF"/X3"とした。

4.g_strsplit(buf,"デリミタ",0) の仕様に違いがある?
 文字列bufからデリミタでトークンを切り出す関数g_strsplitの吐き出すデータ、その終わりをどうやって判断すればよいか?
 どうも最後のデータは0x00になるようで、つまり、配列から順次データを読み出して0x00が来たら終わり、とすればよい。
 しかし、原典での処理は「ポインタの値が >0 でない」時、終わりとなっている。(ポインタの値が設定されていないなら終わり)
 どっちが正しいのだろう。

 例えば、画像処理のプラグインファイルを読み込んでメニューに追加するモジュールcreate_menu.cの中で、シェアードライブラリxxx.soのファイル名リストを読み込ん(ls *.so)でstrbufにセットし、これをバラして配列**plistに収めるという処理がある。
     plist = g_strsplit(strbuf,".so\n",0)
 この後、plist内のデータの数をpitemsにカウントするのだが、
   for(plist0 = plist,pitems = 0;*plist0 > 0;plist0++,pitems++);
 配列の最後のデータ0x00の分もポインタの値は設定されているから、これだと最後のデータの分、+1多くカウントしてしまう。
 このため「0x00が来たら終わり」の処理を加えた。
 for(plist0 = plist,pitems = 0;(*plist0 > 0)&&(**plist0 != NULL);plist0++,pitems++);

5.cの低レベル入出力(read,write,etc...)を使うには#include <unistd.h>を追加する必要がある。

6.表示間隔を100msecから200msecにした。
 処理が間に合わないみたい。
 確かにキャプチャボード(GV-VCP/PCI IO DATA製)とか古いことは古いんだけど。
 もっとGdkPixbufとかの機能を使い切れれば速くできるのかも。

2006/08/29

スターリングエンジン(3)

大人の科学マガジン Vol.10 (10)のスターリングエンジンを組み立ててみました。
 お湯を入れたカップに乗せるだけで動作します。お湯と外気温との温度差が動力源です。
 以前紹介したα型スターリングエンジンとは形が違いますが、シリンダ(ここではマグカップに乗っかっている透明なプラスチックの筒)の内部の空気が加熱側(マグカップのお湯)と放熱側(上部側)との間を行き来するという構造であることは同じです。ただ、ここで見えているピストンは空気を上(加熱側)か下(放熱側)かに移動させるためだけのもので、直接動力を生み出しているのは、上面にあるクランクのつながったベローズ(白いゴムの膜)のほうです。
 空気が加熱側にある(ピストンが上にある)とき、空気は膨張しベローズが膨らみ、放熱側にある(ピストンが下にある)ときは、空気が収縮してベローズは縮みます。この時のベローズの上下動をクランクで回転運動に変えます。
 温度差が重要ですから上面の放熱を良くしてやると、もっと回るようになります。ここではアルミのブロックをおいてみました。少し回転数が上がってくれます。

 組み立てるときはシリンダ上下の黒い金属板の蓋をアクリルの筒にタッピングビスで止めるのですが、強く締めすぎると、アクリルがひび割れて止められなくなります。加減したほうがよさそうです。また、ピストンが斜めになったりすると、側面や上下にあたって動きを妨げますので、十分調整してください。

 非力ですが気持ちよく回ってくれます。回転数は下がりますが、40分ぐらい回っていました。

より以前の記事一覧

アフィリエイト

リンク

リンク3

  • livecam

写真:生目

  • 10号墳

    宮崎市北西部に位置する生目古墳群の写真を集めました。 なおcocologでは1MB以上のファイルがダウンロードできませんので生データが必要な下記のリンクへどうぞ。
            ikime0704