雑記

過去の雑記

2010年1月9日(土)くも・すこしはれ

除雪機のクラッチの切れが悪いのを修理した。エンジンの排気がクラッチのケーブルに直接当たっていたせいで、ケーブルの中でプラスチックが溶けてワイヤーの動きを妨げていたのが原因だったので、ワイヤーを交換した。ケーブルに排気が当たっているのは購入当初からわかっていたんだけど、こういうものかと思ってそのまま使っていた。

ダイソーで売ってる100円の自転車用ブレーキワイヤーに交換して、動作良好。100円ケーブルは元のケーブルよりも細いけど、それほど強い力が掛かるわけではないので問題無なさそう。というか、元のケーブルが太すぎな感じがする。

ケーブルを交換した後、排気がケーブルに当たらないようにケーブルの取り回しを修正して完成。

2010年2月13日(土)はれ

LANカード交換で電源を落とす前に、記念撮影。uptime 245日だって。

2010年3月13日(土)はれ

ロードスターのECUの回路を調べた。疲れた。半分くらい終わったかな?

2010年3月21日(日)はれ 風が強い

ECUのコネクタが欲しかったので、ハーネスを買った。リレーとかヒューズとか全部付き。

2010年3月28日(日)くも

ハーネスをほぐして、大まかな配線を確認してからECUのコネクタ部分を切断した。ECUの回路を調べたときに、点火コイルの駆動トランジスタがずいぶん小さいなぁと疑問に思っていたんだけど、ハーネスを追いかけてみたらエンジンルーム内にパワートランジスタが付いていた。知らなかった。

2010年4月29日(木)はれ

芋を植えた。

2010年5月2日(日)はれ

ネギとニンジンと枝豆のタネをまいた。

車にオイルクーラーを付けた。

2010年5月3日(月)はれ

車の錆びを落としていたら、左のサイドシルのところにぼっこりと穴が開いてしまった。どうしたもんか。

2010年5月4日(火)はれ

ロードスターのリアブレーキのシール・ブーツ類の交換をやった。初めての作業だったけど外して付けるだけで特に難しくなかった。スナップリングプライヤーが無くて、サイドブレーキのシールを交換できなかったので、これはまた今度作業する。

スライドピンの所のブーツ内側が形状変更されていて、固着し難そう。

フロントのブレーキパッドが剥離していた。応急処置で別のパッドを付けて、部品注文した。

フロントのパッドが、左右とも内側ばかり減っていた。下側のスライドピンが少し渋かったのでそのせいだろうか? フロントもブーツ交換することにした。


オイルクーラーを付けてから初めて試走してみたけど、油圧の低下は無く、サーモスタット付いてないけど、この時期だと冷え過ぎる感じも無かった。調子良い。冬場はオイルクーラーの前に板でも置いて走るつもり。

2010年5月15日(土)はれ

こないだ作業できなかった、サイドブレーキのシール交換をやった。ちょうどいいスナップリングプライヤーが無かったので、ピックツールとマイナスドライバーで作業した。

キャリパーに付いているサイドブレーキのレーバーを分解洗浄してシール交換したらとっても動きがスムーズ。手でぬるぬる動く。左のサイドブレーキが戻り悪かったんだけど、これで直った。よく効くようになった。

部品が来たので、フロントブレーキのブーツとブレーキパット4輪分交換。ブレーキローターも4輪分を鉄工ヤスリで研磨。

ブレーキばらしての洗浄と手作業でのローターの研磨ですごく時間がかかって、全部で8時間くらいかかった。

2010年6月16日(土)はれ フルバケットシート購入

椅子を購入。ジャンク品で1,500円だった。

とりあえず、スポンジとカバーを外せる分だけ外して洗濯した。

2010年6月21日(月)くも シンガー nuinui 5805C ミシン修理

動かないミシンを購入。500円だった。本体に型番の記載が無いんだけど、付属品の小物入れに5805Cと書いてあるので、シンガー nuinuiシリーズ 5805Cのようだ。たぶん定価10万円弱くらいの機種。

電源を入れても全く反応が無くて、はずみ車を手で回そうとしても回らないという症状。軸受なんかが固着しただけなら、モーターがうなったりしそうなものだけど、どうしたんだろう? 電気関係は後でみることにして機械周りからみてみた。

上下に動く針棒のスライド軸受が固着しているようで、軸受に浸透潤滑剤を少しつけて指で押したら動くようになった。しばらく手で動かして汚れを染み出させてから拭きとった後、注油して機械部分の修理は完了。

機械部分は直ったけど、電源を入れても全然動かない。テスターで電源コードまわりの断線が無いか調べてみても異常なし。足踏みコントローラーを分解してみても異常はなさそう。(見たことの無い可変抵抗が付いてた)

モーターユニットをミシンから取り出して調べてみると、電源スイッチを入れてもスイッチの導通が無かった。接点の汚れのようだ。スイッチは取り出しにくい作りだったので分解せずに、スイッチにパーツクリーナー吹きかけて、カチカチとON-OFFを繰り返したらモーターが回るようになった。スピードコントロールも良好。クリーナーが乾いてから、錆止めに浸透潤滑剤を少し吹きつけておいた。簡単な故障で良かった。

あとは、もとどうりに組み立てて外装の清掃をして修理完了。修理に3時間30分くらい時間がかかった。

ためしに雑巾を縫ってみたら、とても調子良い。

本体に貼ってあった、販売店の保証シールに平成1年10月23日と書いてあった。20年前のミシンだ。

古いけど、ミシンの中に糸屑や綿埃が全然無くてテーブルや針板の擦れも無いので、ほとんど使われていなかったようだ。ちょくちょく使って、時々油を注してやっていれば今回のような故障を防ぐことができる。

500円でたっぷり楽しめた。

2010年6月27日(日)

シートのカバーを作成中。

材料はこれ。

使わなくなった防寒インナー。

2010年7月5日(月)

適当に現物合わせでクリップで挟んだり、仮縫いしたり、安全ピンで止めたりしてから

ミシンで縫いつけて

シートカバーが出来上がった。最後、穴を開ける位置がズレてシワが多くなってしまった。

古着を材料にしたから、どう布を組み合わせたらいいか考えながらの作業で、かなり面倒だったけどそこそこちゃんと出来た。ミシン使うの初めてなのに。

スポンジのカバーは、材料がもう無いので作らなかった。破れてないからこのままでいいや。

2010年7月7日(水)くも 風呂壁・天井掃除

カビだらけになってる風呂の壁・天井を掃除した。

邪魔な配管を外して、カビキラーをかけた後しばらく放置して、クレンザーとスコッチブライトで擦って綺麗にしてから、ヒビをセメントで埋めた。半日かかった。

2010年7月8日(木)くも/あめ 浴室モルタル塗装

風呂場の色塗りをやった

まず、ローラーの入らないスミなんかをハケで塗装。二度塗りした。これが時間かかる。

その後、ローラーで塗る。これも二度塗り。ローラーは作業早い。

ひび割れもわからなくなった。

使った道具は、全部ダイソーの100円商品。

ペンキは2年前に本棚を作ったときに、本棚の色を塗ろうと思って買ったけど使わなかった水性塗料を使った。1.6L缶をちょうど使い切った。

2010年7月25日(日)くも

年中電源入れっぱなしのPC二台で、電気料金がどれくらいかかっているのかと思って電流を測ってみた。(1Ω5Wのセメント抵抗で測定)


PentiumIII 933MHz HDD 4台(NASとして使用)

Athlon II X4 620 HDD 3台

(HDDのアクセスの多さでは、ほとんど電流変わらなかった。)


NASとしてつかっているPCは、負荷がかかることがまずないので、アイドル時の50Wで計算すると

50W×24時間×30日=36000W=36kw

電気料金 25.37円×36kw=913.32円

メインPCは、5時間くらいフルロードで残りアイドルくらいかな?

110W×5時間+60W×19時間×30日=50700W=50.7kw

電気料金 25.37円×50.7kw=1286.259円

月1000円くらいだ。NASは電源落とすことにした。


家が歪んで、ふすま二箇所の開け閉めができなかったので、敷居を外して丸のこで切って薄くした。これで開け閉めできるようになった。

2010年9月8日(水)晴れ

枝豆が膨らんできていたので、採って食べた。ほったらかしでも、雑草に負けずに実が付いた。

一緒に植えたジャガイモは7月末、蒸し暑い日が続いたころに枯れてしまった。長ネギは芽が出なかった。人参はいまでも元気がよさそう。

冷凍枝豆より味が濃くて美味しかった。

2010年9月18日(土)くも

間引きした人参を使って

かき揚げ丼。

人参の葉っぱは、春菊?パセリ?みたいで、なかなかおいしい。

2010年10月01日(金)はれ

土の上だと、ジャッキを使うのに板を敷いたりしなきゃならなくて不便なので、コンクリートで舗装してみた。セメント1に土3くらいを混ぜてから、水を加えて練った。(ソイルセメントのセメント増量版?土コンクリート?)

草の根っこは、混ぜるのに邪魔なので取り除いたほうがいい。

2010年10月02日(土)はれ

スローが調子悪かったキャブレターを調整して、走ってきた。海の向こうに見えるのほ国後。

適当に走っていたら、砂防ダムがあった。


セメントと土を混ぜて

水を加えて練る

2010年10月03日(日)くも

また、セメントと土を混ぜて

広くした。

1.9m×3.6m×厚さ10cmで25kg入のセメントを13袋使った。ホームセンターで一袋698円だったので、合計9074円だ。安売りの時には498円で売っているのを見たことがあるんだけど、今回買いに行ったときには698円だった。

2010年10月09日(土)くも

コンクリートの周りに、余ったセメントを混ぜた土を入れて、車で踏み固めた。セメントを混ぜておくと、雨が降ってもぬかるみにならなくて具合が良い。

2010年10月18日(月)くも

タイヤ外径

最近14インチだと激安タイヤの扱いが少ないので、ロードスターで履けそうな外径のタイヤサイズを調べてみた。

195/50R15 あたりのサイズが、タイヤの種類が多くてよさそうな様子。15インチの中古純正ホイールも安いし。

2010年10月30日(土)くも

寒くなってきなので、車のオイルとタイヤを冬用に交換。除雪機のオイルも交換。溶接機冬眠のために燃料タンクを満タンにして、キャブレターからガソリン抜いた。

2010年11月21日(日)はれ

バイクの冬眠で、キャブレターからガソリン抜いた。チョークを戻した状態で回転を下げるとエンジンが止まってしまうので、10月にパイロットスクリューを閉める方向に調整したんだけど変化がないみたい。ちょっと調べてみたら、1と1/8回転戻しが標準みたいなので、春になったらまた調整してみる。ジェベルはキャブレターを外さなきゃ調整できないのでめんどくさい。

あと、切れが悪かった、除雪機の走行クラッチも調整した。

2010年11月28日(日)くも ストーブ修理 コロナ SV-85MR7 1999年製

ストーブが点火しなくなってしまった。またヤフオクで中古を買おうかなと見てみたら、たくさん出品がある。買い替え時期で出品が多いのかな?

入札前に、自分で修理できないかと分解してみたら、点火ヒーターが切れてた。ヒーターが太いので繋げられるかもと思って、

圧着端子を流用して、カシメてつないで試運転してみた。

動いた。何度か点火消化を繰り返してみて大丈夫そう。ストーブ買い換えずに済んでよかった。

点火ヒーターを外すのは面倒くさいのかな?と思っていたんだけど、簡単に取り出すことが出来た。

2010年12月11日(土)くも

PIC24を使ってみているんだけど、PIC16のCコンパイラであったようなディレイ関数がみあたらないので作ってみた。出来上がったものはすごく単純だけど、いろいろ試しているうちに作るのに一日掛かってしまった。


#define FREQ 8000000
#define delay(a) {register unsigned int count; count=a; asm("repeat %0\n nop" : /* no outputs */ : "r"(count));}
#define delay_us(a) delay((a*(FREQ/(2*1000000)))-3)	// 8MHzの場合、1〜4096usのディレイ

delay(10);	// 10+3サイクルのディレイ

delay_us(10);	// 10マイクロ秒のディレイ

2010年12月15日(水)ゆき/はれ

初雪。

北海道にしては遅いけど、毎年こんな感じ。


左のマイコンでクランク角センサーの出力をシミュレートしてECUを動かしてみた。

ECUから点火信号は正常に出るんだけど、インジェクタの駆動信号が出ない。たぶん、点火確認信号を作ってやれば動くんだと思うので、そのうち点火確認信号のタイミングを調べる。

2010年12月16日(木)はれ

Visual C# でシリアルポートを使うテスト。


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO.Ports;  // SerialPort.GetPortNames()を使うために追加

namespace serialport_test
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
  
            comboBox1.Items.AddRange(SerialPort.GetPortNames());    // 有効なシリアルポート一覧を取得してコンボボックスにセット
            comboBox1.SelectedIndex=0;

        }

         private void comboBox1_SelectionChangeCommitted(object sender, EventArgs e)
        {
            textBox1.Text += comboBox1.SelectedItem;    // コンボボックスのテスト。変更されたら値を表示
        }

         private void button1_Click(object sender, EventArgs e) // 接続ボタンが押された
         {
            if (serialPort1.IsOpen == false)    // オープン済みじゃないか調べる
            {
                serialPort1.PortName = (string)comboBox1.SelectedItem;
                //serialPort1.PortName = "COM1";
                serialPort1.BaudRate = 9600;
                serialPort1.DataBits = 8;              // 8ビット
                serialPort1.Parity = Parity.None;      // パリティ無し
                serialPort1.StopBits = StopBits.One;   // ストップビット1
                serialPort1.RtsEnable = Enabled;       // RTC/DTR 端子の状態をセット?
                serialPort1.DtrEnable = Enabled;
                serialPort1.Handshake = Handshake.None;    // ハンドシェイク無し

                serialPort1.Open();
                textBox1.Text += "\r\n" + serialPort1.PortName + " 接続\r\n";

            }
            else
            {
                serialPort1.Close();        // オープン済みならクローズ
                textBox1.Text += "\r\n切断\r\n";
            }
         }

        private void textBox1_TextChanged(object sender, EventArgs e)
         {
             // textboxが更新されたら、最後の行にスクロールする
             textBox1.SelectionStart = textBox1.Text.Length;    //カレット位置を末尾に移動
             textBox1.Focus();              //テキストボックスにフォーカスを移動
             textBox1.ScrollToCaret();      //カレット位置までスクロール フォーカスが当たっていないと動かない
         }

        public delegate void MyDelegate(byte val1);

        private void serialPort1_DataReceived(object sender, SerialDataReceivedEventArgs e)
         {
             //シリアルポートの受信イベント

            // > ここで、重要な注意点があります。DataReceivedイベントハンドラはセカンダリスレッドから呼び出されます。
            // > そのためWindows.FormsのUI要素にアクセスする場合はControl.Invoke()メソッドを使用する必要があります。
            // > また、データ構造などにアクセスする場合は排他制御を行うなどマルチスレッドプログラミングと同様の注意が必要となります。
            // > http://msdn.microsoft.com/ja-jp/library/cc825644.aspx

            // だそうです。
            // バッファに書くだけとかなら必要無いみたい。

             int a;
             a = serialPort1.ReadByte();
             if (a != -1) BeginInvoke(new MyDelegate(rxcopy), (byte)a);
         }

        private void rxcopy(byte mes)
         {
             if (mes == 13) textBox1.Text += "\r\n";    // 改行
             else textBox1.Text += (char)mes;
         }

    }
}

クラスと構造体 (C# プログラミング ガイド)を100回読んで勉強中。

だいぶ前にJAVAとかC++とかDelphiの練習で少し勉強したけど、オブジェクト指向がよくわかっていない。

2010年12月17日(金)はれ


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO.Ports;  // SerialPort.GetPortNames()を使うために追加

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();

            comboBox1.Items.AddRange(SerialPort.GetPortNames());    // 有効なシリアルポート一覧を取得してコンボボックスにセット
            comboBox1.SelectedIndex = 0;
        }

        private void timer1_Tick(object sender, EventArgs e)
        {
            // タイマー割り込み
            while (true)
            {
                int a;
                if (serialPort1.BytesToRead == 0) break;    // リードバッファが空になったら終了

                a = serialPort1.ReadByte();
                if (a == 13) textBox1.Text += "\r\n";    // 改行
                else textBox1.Text += (char)a;
            }
        }

        private void button1_Click(object sender, EventArgs e)
        {
            if (serialPort1.IsOpen == false)    // オープン済みじゃないか調べる
            {
                serialPort1.PortName = (string)comboBox1.SelectedItem;
                serialPort1.BaudRate = 9600;
                serialPort1.DataBits = 8;              // 8ビット
                serialPort1.Parity = Parity.None;      // パリティ無し
                serialPort1.StopBits = StopBits.One;   // ストップビット1
                serialPort1.RtsEnable = Enabled;       // RTC/DTR 端子の状態をセット?
                serialPort1.DtrEnable = Enabled;
                serialPort1.Handshake = Handshake.None;    // ハンドシェイク無し

                serialPort1.Open();
                textBox1.Text += "\r\n" + serialPort1.PortName + " 接続\r\n";

                timer1.Interval = 10;   // タイマーを10ms間隔にセット
                timer1.Enabled = Enabled;   // タイマースタート
            }
            else
            {
                serialPort1.Close();        // オープン済みならクローズ
                textBox1.Text += "\r\n切断\r\n";
                timer1.Enabled = false;   // タイマーストップ
            }
        }

        private void textBox1_TextChanged(object sender, EventArgs e)
        {
            // textboxが更新されたら、最後の行にスクロールする
            textBox1.SelectionStart = textBox1.Text.Length;    //カレット位置を末尾に移動
            //textBox1.Focus();              //フォーカスが当たっていなくても動くみたい?
            textBox1.ScrollToCaret();      //カレット位置までスクロール フォーカスが当たっていないと動かない
        }
    }
}

シリアルポートのイベントを使わずに、タイマーイベントで定期的にシリアルポートの受信バッファにデータがあるかどうかをチェックするとスッキリ簡単だった。

serialPortクラスには、初期状態で4096バイトの受信バッファがあるので、あまり忙しく処理しなくても大丈夫。バッファ容量はプロパティで簡単に自由に変更可能。


オブジェクト指向プログラミング (C# および Visual Basic) 100回読んで勉強中

2010年12月18日(土)ゆき


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();

            Bitmap img = new Bitmap(640, 480);
            Graphics g = Graphics.FromImage(img);
            g.FillRectangle(Brushes.White, g.VisibleClipBounds);
            g.DrawLine(Pens.Black, 0, 0, 640, 480);
            pictureBox1.Image = img;

            //img.Dispose();    img はpicturboxで使っているから開放できない?
            g.Dispose();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            Graphics aa = panel1.CreateGraphics();      // おまけ:別にpicturboxじゃなくても描画できる。でも保存?されない
            aa.DrawLine(Pens.Black, 0, 0, 640, 480);

            aa.Dispose();
        }
    }
}

線を引いてみる練習。

シリアル通信と画面描画ができるようになったので、マイコンと通信してロジアナとかオシロ作れるな。


雪が10センチくらい積もった。でも、月曜から暖かいようなので放っておけば融けそう。

2010年12月21日(火)はれ

今日は皆既月食だった。

ニコン D50+300mm単焦点レンズで撮影。撮影間隔は等間隔ではないし、露出も一定じゃないです。ホワイトバランスは太陽光に固定。

2010年12月31日(金)はれ・少し雪

雪が少ない。


パソコンでシリアル通信のやりかたがわかったので、マイコンと繋いでエンジンシミュレータが出来た。オシロスコープで見たパルス幅と一致するので、ちゃんと動いているみたい。

パソコン側で回転数とエアフロ電圧を指示すると、点火とインジェクタの信号がピコピコ変化する様子を見ることができる。

マイコン側はこんな

中古で買ったAT車用のECUで動作確認をしているんだけど、AT用の(アナログの)スロットルポジションセンサーの配線をしていないせいか吸気量が多いときにおかしな値が出力される。たぶんスロットルが閉じているのにエアフロセンサーは開いているような、本来ありえない状況が生じるせいじゃないかとおもうので、そのうちMT用のECUでテストしてみる。MT用のECUは車にもともと付いている一個しかないので、外すのめんどくさい。テストで壊さないように注意しなきゃ。


過去の雑記

webmaster@kyoutan.jpn.org

('A`)