「ほっ」と。キャンペーン
ネオリューブの代用品見つけた
 車輪などを手軽に黒染め風にできるケミカルとして知られているネオリューブですが、ここ何年も流通しておらず買えない状況でした。最近、数年ぶりに買えるようになったようですが、30mlで6千円とかなりの値上がり。
 幸い、うちには以前に買ったものがまだ残っていますが、この不安定な入荷状況も値段も気に入らないので代用品を探してみました。まあネオリューブはMILに準拠したものなので、成分はグラファイトと分散・定着材(とIPA)でその割合もわかっている。似たものを探して見つけたのがファインケミカルジャパングラファイトスプレーでした。

続きを見る
[PR]
# by r34_gtt | 2017-02-11 15:10 | 活動(鉄) | Comments(0)
lpc1114+mbedで作るTOMIX 5001ニューパワーユニット風PWMパワーパック(1)
 「最近のいわたさん」の所で何か触発されて、いにしえのTOMIX 5001 ニューパワーユニットのような左右につまみを回すだけで前後進するパワーパックを作ってみたくなった。

 もちろんmbedベースのPWM制御に。ということで先に作ったmbed習作のパワーパックをベースにして改造してしまう。使ってなかったしw
 * * *
 5001のようなパワーパックをマイコンで作り出す方法はいろいろ考えられるが、まずは肝心のボリュームをどうするか?という問題がある。

 オーディオアンプのバランスボリュームに使われているようなMNカーブ、中点クリック付の2連ボリュームを使えば楽と言えば楽なのだが、値段も高いしそんなの持ってない。(ボリュームのカーブの話はボリュームの抵抗変化特性について東播ラビットおやじのブログさんのところがわかりやすい)

a0008202_2241057.jpg

 在庫の中に中点クリック付の10kΩ Bカーブのボリュームがあったのでこれを使う。中点クリックがあるとは言え、これは所詮普通のBカーブのボリュームなので中点は電気的には直接わからない。
 中点検知は電源投入時にはボリュームを中点にセットするという前提でソフト的にキャリブレーションすることにする(アルプス製だけあって、中点の抵抗を測定したらほぼぴったり50%ではあったが)。

 回路は簡単、この通り。先の習作からほとんど変わっていない。
a0008202_0315677.png
(クリックすると大きくなります)

a0008202_22405756.jpg


 ソフトも簡単。最初に中点をキャリブレーションして求めたら、その値を元に中点から左に回しているか右に回しているかを判断し、左右に応じて前後進させている。

---------------
#include "mbed.h"

AnalogIn vThin(dp9);
AnalogIn vIlin(dp10);
//AnalogIn vDirin(dp11);
InterruptIn vRstin(dp13);

DigitalOut vLDir(dp14);
DigitalOut vRDir(dp28);

PwmOut rPwm(dp24);
PwmOut lPwm(dp18);

Ticker tick1;
float fMid;
float fLlim;
float fRlim;
int iIntlim;

void mid_reset(){
if (iIntlim >= 0){
fMid = vThin;
// 中点から外れすぎていたら無視
if (fMid < 0.4f || fMid > 0.6f){
fMid = 0.5f;
}
// 中点遊びの設定 1%
fLlim = fMid * 0.99f;
fRlim = fMid * 1.01f;
// 1秒間は再リセットを無視
iIntlim = -50;
}
}

void tick(){
float fThin;
float fIlin;
float fArrin;

fThin = vThin;
fIlin = vIlin;

if (fThin > fLlim && fThin < fRlim){
rPwm = 0;
lPwm = 0;
vLDir = 0;
vRDir = 0;
}
else if (fThin <= fLlim){
rPwm = 0;
fArrin = 1 - (fThin / fLlim);
lPwm = 0.2f * fIlin + (1 - 0.2f * fIlin) * fArrin * fArrin * fArrin;
vLDir = 1;
vRDir = 0;
}
else{
lPwm = 0;
fArrin = (fThin - fRlim) / (1.0f - fRlim);
rPwm = 0.2f * fIlin + (1 - 0.2f * fIlin) * fArrin * fArrin * fArrin;
vLDir = 0;
vRDir = 1;
}
}

int main() {
// 初期化
vRstin.mode(PullUp);
mid_reset();

rPwm.period_us(33);
lPwm.period_us(33);

vRstin.fall(&mid_reset);

tick1.attach(&tick, 0.02);

while(1) {
}
}
---------------


 ソース中、fArrin(計算で導いたスロットル開度。値は0~1)を3乗しているのは、低速域での操作性を良くするために、ボリュームで言えばAカーブのような特性にするため。
 また、習作のパワーパックで常点灯ボリュームに使っていたIlボリュームは、出力の最低値(中心から少し動かした時の値)を動力ごとに調整する役目を持たせています。
 合わせて図にすると下のようになります(横軸がThボリュームの回転、縦軸が出力の絶対値。黄線がIlボリューム最大時の出力、青線がIlボリューム最小時の出力)。Thボリュームが中心のときは出力は無しです。
a0008202_132170.png
(クリックすると大きくなります)


 * * *
 動力の整備や手元のレールでちょっと遊びたいときは、このように逆転スイッチが無いほうが気楽で良いですね。次はケースに組み込んで見た目を整えます。
[PR]
# by r34_gtt | 2015-12-05 00:52 | 活動(鉄) | Comments(0)
鉄道フェスティバル2015に行ってきました。
 土曜日に鉄道フェスティバル行ってきました。家族と一緒に(死)

 当然思ったようには見て回れないのですが、トーマスショーw の隙にいいもの手に入れてきました。

a0008202_121360.jpg

 西鉄の復刻版車両カタログ、1000形、1100形、1200形です。と言うか、こういうの売ってたんなら早く言ってくれ。。。 西鉄好きにとっては1100や1200が実に渋くて良い。
 西鉄柳川駅、購入物福岡県民のブログさんのところより)によれば、以前は600形や5000形もあったようではないか! 欲しい!

 実は、今回購入したものは私が買おうとしたときは既に売り切れてしまっており、『これは欲しかった』と悔しがっていたところ、後ろに下げられていた見本を売っていただけたのだ。(む、むりやり売らせたわけではありません)

a0008202_121066.jpg

 特に1000形のカタログは40pもあり、今まで知らなかったような詳細について教えてくれるまさに宝物。
a0008202_12776.jpg

 巻尾には沿線案内が載っており、福岡・北九州市内線や福島線は当然載っていますが、筑豊地区には炭鉱が残っていたり、筑豊電鉄の飯塚-福岡予定線も載っていたりするところが興味深いです。

 600などのカタログも欲しいな。。。
[PR]
# by r34_gtt | 2015-10-12 01:23 | 活動(鉄) | Comments(0)
営繕3連発(2)-脱衣所のメンテ
 続きましては脱衣所兼洗面所のメンテナンス。
 脱衣所はどうしても湿気で床がやられやすいので、気休めとは思いつつもコーキング施行。
a0008202_002437.jpg

a0008202_002856.jpg

 床と壁の境目に3, 4mmの隙間を空けてマスキングし、クリアのシリコンシーラントでコーキング。撫で付けるときは、私はアイスの棒を使ってます。
a0008202_001882.jpg

 まあまあキレイに仕上がりました。

 そして、以前お風呂の照明・換気扇スイッチはコスモシリーズワイド21の希望の物が廃番になり仕方なくフルカラーのものを使用していたが、
a0008202_2353499.jpg

a0008202_2352967.jpg

 ついに! デッドストック新品のWTC53956W(換気扇強弱は不要なのでWTC53946Wで良いのだが…)を見つけたので即購入。ここだけ主要部分で唯一フルカラーの器具が残っていてモヤモヤしていたのが解消しました。
[PR]
# by r34_gtt | 2015-08-31 00:14 | 活動(家) | Comments(0)
営繕3連発(1)-鍵(錠)を換える
 夏休みは休めない。旅行に子供の遊びにそれに家などのメンテナンスである意味仕事より面倒だ。
 夏休みのメンテ作業を3連発で紹介する。

 ある日、義母か玄関鍵を開けようとするとガチャガチャやっても開かない。半ば無理やりオリャとひねってやっと開いたそうだ。
(参考:鍵の交換@dob**oku009のブログさんのところ)
 2本のねじを外してシリンダーを外してみると、デッドボルトを動かすためのベロのような部分(角軸って呼ぶのか?)がクニャクニャに曲がっていた(画像では既にかなり修正済)。
a0008202_0121981.jpg

 別に動作がこれまで重かったわけでもないので、材質が悪いんじゃないかなあ…と思いつつ、とりあえずプライヤーを2本使ってできるだけまっすぐに戻して応急処置とした。
 ともあれ同じシリンダー(KODAI(長沢製作所) KCY-51)を注文して交換。ネジ2本で固定するだけ。鍵屋に頼むと3万円くらいするようだが自分で換えれば(シリンダーにもよるが)数千円だ。
 また、ディンプルキーのスペアキーは作ると1本3千円くらいしてしまうが、新品のシリンダーと同時に注文すれば1本千円だったりする。シリンダー付属の4本に加えて、3本スペアを頼んだのでシリンダーが新品になってスペアキーも十分ということで悪くない話とも言える。

 * * *

a0008202_026544.jpg

 ついでに鍵が1本しかない上、古典的なギザギザ鍵だった勝手口ドアの錠(ドアノブごと)も交換。ピッキングに強く、多メーカーのドアノブに対応していて、キー5本付きと内容充実で値段も手頃(送料込みで4千円以下だった)なユーシン・ショウワ W2-DACにした。
 あちこちの鍵屋さんのサイトでお勧めされているのも納得です。
a0008202_026314.jpg


 これは室内側ドアノブの根元の台座(ローズと呼ぶらしい)を外してネジ2本外して交換。分かりやすい説明書も付いてます。

 * * *

 どちらの錠も数千円のコストで、工具といえばプラスドライバーくらい、所要時間は10分以下と手軽な作業でした。安心・安全にも直結しますので、機会があればいかがでしょうか。
[PR]
# by r34_gtt | 2015-08-18 00:30 | 活動(家) | Comments(0)
スマホ用ダミーバッテリーを作る
 最近、スマホを買い換えたのだけど、古いGalaxy Noteも枕元でちょっと使うには十分な性能を持っているし据え置き機として活用してやりたいと思った。
 充電器につなぎっぱなしにするのが簡単だけれど、めったに発火などはしないとは言え、リチウムイオン電池は小さな爆弾のようなものだし、バッテリー自体膨らんできているので気持ちが良いものではない。そこでバッテリーレスで駆動するためにダミーバッテリーを作成することにした。ちょっと実験したところ、Galaxy Noteではスマホのバッテリー端子の+と-に4vくらいの電圧をかけてやれば普通に起動するようだ。

 まずは手元にあった4.5mm厚のベニヤ板をバッテリーケースに合うように切り出した。これはバッテリーより少し薄い(バッテリーは5.5mm厚程度)。左右が空いているのはバッテリーケースの底が丸くなっているのでそれを避けたため(ケース上部に出っ張りがあるし、ぴったりに切り出したのでカタカタ動いたりはしない)。
a0008202_1134722.jpg

 次に両面ユニバーサル基盤を適当に切り出し、本体側バッテリー端子の+と-に合うところに0.1mm厚の燐青銅板を半田付け。
a0008202_1144597.jpg

 そしてベニヤ板の一部を基板取付部として切り欠き、両者をゼリー状瞬間接着剤で固定し、電線を半田付けしホットボンド固定。電線は裏ふたに穴を開けて外に出してある。
a0008202_1144981.jpg

 これに4.3v ACアダプタから電気を供給してやると普通に起動した。
a0008202_1145290.jpg


 しかし、ACアダプタが古いせいか、電圧の安定性が良くなく5回に1回くらい起動途中でコケてしまう。そこでACアダプタとの接続用の小さな箱を作り、6.3v 1000uFと47uFの2つの電解コンデンサを入れてやった。これで起動に失敗することもなくなった。
a0008202_115567.jpg


 やはり安心して使えるのは良いものです。想定通り、毎日枕元でネットラジオを流したりして稼動しています。
[PR]
# by r34_gtt | 2015-08-17 01:34 | 活動(電気) | Comments(1)
mbedはじめました(3)
 うまくいったので、シンプルな常点灯パワーパックを作ってみることにします。ほとんどLPC1114とモータードライバ(BD6231)だけで出来ているような物です。
a0008202_23304161.png
(クリックすると大きくなります)

a0008202_23174220.jpg


 プログラムも実にあっさりしたものです。1/50秒毎に方向スイッチ、常点灯ボリューム、スピードボリュームの値を見てPWM出力でモータードライバを制御します。
---------------
#include "mbed.h"

AnalogIn vThin(dp9);
AnalogIn vIlin(dp10);
AnalogIn vDirin(dp11);

PwmOut rPwm(dp24);
PwmOut lPwm(dp18);

Ticker tick1;
float fDir;

void tick(){
fDir = vDirin;

if (fDir <= 0.1f){
rPwm = 0.0f;
lPwm = 0.0f;
}
else if (fDir > 0.1f && fDir < 0.4f){
rPwm = 1.0f;
lPwm = vIlin * 0.3 + (1 - vIlin * 0.3) * vThin;
}
else{
lPwm = 1.0f;
rPwm = vIlin * 0.3 + (1 - vIlin * 0.3) * vThin;
}
}

int main() {
// PWM周期33usec(30KHz)
rPwm.period_us(33);
lPwm.period_us(33);

// 割り込み周期0.02秒間隔
tick1.attach(&tick, 0.02);


while(1) {
}
}

---------------
 当然一発で動作。しかし、何かおかしい。
 2つのPWM出力でPWM周波数が少し違うし、片方のPWM出力はなんだかガタガタと、2%単位くらいでしか変化しない。そう、プリスケーラーの仕業です。
 mbedライブラリのソースを調べると、pwmout_api.cの中に次のようなところがある。
-pwmout_api.cより-------
(前略)
    if (timer == LPC_TMR16B0 || timer == LPC_TMR16B1) {
/* Set 16-bit timer prescaler to avoid timer expire for default 20ms */
/* This can be also modified by user application, but the prescaler value */
/* might be trade-off to timer accuracy */
timer->PR = 30;
}

(後略)
---------------
 16bitタイマーが割り当たっているPWM出力ピン(dp18)では30のプリスケーラーが設定されています。48MHzで動作するマイコンで、PWM周波数が30KHzの場合、PWMのデューティの分解能を1600段階持つことができますが、プリスケーラー30が設定されていると50くらい(つまり2%刻み)しか分解能を持つことができません。
 本アプリでは16bitタイマーでもプリスケーラーなしでもオーバーフローすることはないので、“timer->PR = 0;”としてしまいました。
 mbedライブラリソース(mbed src)の自プロジェクトへの取り込みはmbedの中を覗くのサイトが参考になりました。そのほかにもmbed関連の情報が載っていて助かります。
[PR]
# by r34_gtt | 2015-05-24 23:25 | 活動(電気) | Comments(0)
mbedはじめました(2)
 さて、簡単すぎるF401REのLチカで遊んでいても仕方ないので、たった140円で買えるLPC1114FN28にターゲットを変更します。
 140円とはいえ、そのスペックは立派な物です。
・ARM Cortex-M0 32-bitマイコン
・50MHzクロック(Max)、Flash:32KB、RAM:4KB
・UART x1、SSP/SPI x1、I2C x1、ADC x6、タイマ:32bit x2/16bit x2 、systickタイマ、ウオッチドッグタイマ、GPIO x22
・パッケージ:DIP28 ←重要

 F401REのようなボードタイプではなく単体のマイコンなので、LPC-LINK2というJTAG/SWD(プログラム書き込み機兼デバッガ)を使用してプログラム書き込みをする準備をします。
(1) まずLPC-LINK2のドライバ、ファームウェアなどダウンロード、インストールしてuVisionからCMSIS-DAPデバッガとして使用できるようにします。
(2) 次にオフライン開発環境を整備します。無料で使用できるMDK-ARM (uVision) Lightをダウンロード、インストールします。私はオンライン開発環境と相性が良い4.74の方をインストールしました。
(3) LPC-LINK2とLPC1114の接続は当然SWDで、LPC-LINK2の端のLPCxpresso用コネクタを使用して接続します(秋月のLPC1114の説明書の2ページ目に結線が記述されています)。LPC-LINK2のピンアサインはこちら
(4) 最後にオンライン開発環境からLPC1114のサンプルLチカをエクスポートしてuVisionにインポート、ビルドしてターゲット(LPC1114)に書き込みます。とりあえずLEDを1個付けてLチカです。先の記事のようなPWMで明暗のコントロールはLPC1114のLED1端子(dp14)ではできないので、PWM1端子(dp24)にLEDを接続しました。
a0008202_01175.jpg
(クリックすると大きくなります)

 既に基板上には次の実験のための用意をしてあります。
[PR]
# by r34_gtt | 2015-05-02 00:13 | 活動(電気) | Comments(0)
mbedはじめました
 突然、またワンチップマイコンの類をいじりたくなった。

 最近のマイコン事情を調べてみると、安い物では百円くらいから、5千円出すとかなりリッチな環境が手に入る事が分かった。そして百円くらいと言えども、昔とはマイコンの能力やライブラリの充実度などがまったく異なる。

 代表的な物をいくつか挙げると
arduino
 AVRマイコン。オープンソースハードウェアの先駆け。シールドと呼ばれる種々の拡張基盤が売られている。
mbed
 ARMマイコン。Web上のオンライン統合開発環境で開発(オフラインもある)、USBメモリへの実行ファイルコピーでマイコンにプログラムがダウンロードされる。
raspberry pi
 教育用ワンボードマイコン。最近raspberry pi2が出てハードが著しく強化された上に、Windows 10の提供も発表されている。

などなと。それぞれに特色があるが、少なくとも昔のPICをいじっていた頃の無駄な苦労(書き込みハードやマイコン毎の違いなどの学習)を減らす工夫がされている。

 中でも個人的にはmbedの言語仕様の美しさが気に入ったし、一家に一個はある?USBシリアル変換器があれば百円位で始められる所も良いと思ったので、mbedを環境として選ぶことにした。

 そうと決まれば秋月で買い物だ。
NUCLEO-F401RE 1500円
 mbed対応のCortex−M4コアのマイコンボード+書き込み/デバッグボードが一体化しているもの。この内容で1500円は安い。
LPC1114FN28 140円
 Cortex-M0コアのマイコン単体。ARMマイコンで貴重なDIP品。マイコン単体の場合、USBシリアル変換器やSWD(Single Wire Debug)でプログラムを書きこむ。
LPC-LINK2 2800円
 JTAG/SWDボード。書き込み、デバッグ時にUSBシリアルより便利だし、LPC1114の一個しかないシリアルを塞ぎたくないのて購入。

 まずはF401REでLチカ。

(1) mbedサイトでユーザ登録。使用するmbedデバイスも登録(うちの場合はF401REとLPC1114)
(2) F401REのドライバ(“Related Tools and Software”のところ)をダウンロードしてインストール。F401REをUSBで接続。
(3) mbedサイトのオンライン開発環境で新規プロジェクト→サンプルLチカを選んでコンパイル。そうすると実行ファイルがダウンロードされるので、F401REを接続した時に出来たUSBメモリに保存する。
(4) 自動的に実行ファイルがF401REのマイコンに書き込まれ、実行される。

 事前に学習していたとはいえ、(1)から(4)まで10分足らず。恐ろしい程の取っ付きの良さです。

 サンプルLチカを改造して、0.01秒間隔でタイマ割込をかけ、LEDをPWM制御で1%ずつ明るく/暗くするようにするのもあっという間。ちなみにコードは↓こんな感じ。実に直観的でかつ言語的にも美しい。

---------------
#include "mbed.h"

Ticker toggle_led_ticker;

PwmOut mypwm(LED1);

float fDuty;
float fAdd;

void toggle_led() {
if (fDuty >= 1.00f){
fAdd = -0.01;
}
else if (fDuty <= 0.00f){
fAdd = 0.01;
}
fDuty += fAdd;
mypwm.write(fDuty);
}

int main() {
fDuty = 0;
fAdd = 0.01;
mypwm.period_ms(1);

toggle_led_ticker.attach(&toggle_led, 0.01);

while(1) {
}
}

---------------

 次はターゲットをLPC1114に変え、更にオフライン開発、LPC-LINK2での書き込みにチャレンジしてみます。
[PR]
# by r34_gtt | 2015-04-21 23:36 | 活動(電気) | Comments(0)
塀のペンキ塗り
DIYの王道であるペンキ塗り。ウチの家では家の外壁などはきれいなのですが、ブロック塀の塗装は劣化したままなので塗る必要がありました。

使用したもの:
 ・モルタル、シリコンシーラント:ひび割れ修理に
 ・シーラー:日本ペイントの水性シリコン下塗りシーラー
 ・ペンキ:アサヒペンの水性多用途(ツヤあり)のアイボリー
 ・マスキングテープ(ビニールのヒラヒラがついたもの)、養生テープ、はさみ:マスキング用
 ・ローラーとトレイ、刷毛、ゴム手袋:塗装工具

a0008202_041102.jpg

事前に大きなヒビ・欠けについてはモルタルで、小さなヒビはシリコンシーラントで埋めて十分に時間を置いてあります。
また、塀全体をデッキブラシで力を入れて磨いて、劣化した塗膜や汚れを落としておきました。
地面に接した角は砂が溜まってマスキングの障害となるので、これまたよく洗い流しておきます。
その上でマスキング。Nを塗るときに比べたら、マスキングの精度は10倍以上適当ですw
a0008202_041728.jpg

下塗りのシーラーはとぎ汁のようなさらさらした液体です(塗るとほぼ透明なので塗った感がないので画像なし)。壁面と塗料の密着性を上げてくれます。
透明なのであまり神経質にならず(でも塗り残しが無いように)ローラーメインで手早く塗りました。色つきのもあるようなので、そっちの方がお勧めです。
a0008202_041580.jpg

シーラーの乾燥待ちの間に“いきなり団子”を自作。
a0008202_041238.jpg

十分にシーラーが乾燥したら、いよいよペンキの出番です。まずは狭いところや端っこを刷毛で塗ります。
a0008202_040598.jpg

刷毛塗りが終われば、後は豪快にローラーでどんどん塗ります。
ピンホール的に塗料が塗れていない点々が多いと、いかにも素人塗装くさくなるので要注意です。

塗り終わったら、完全乾燥する前にマスキングテープを取って、はみ出したペンキを湿らせたぼろ布で取ってやります。これは水性塗料のメリットですね。

暗くなるまで塗装してなんとか終わりました。全身筋肉痛ですw
[PR]
# by r34_gtt | 2014-11-04 01:01 | 活動(家) | Comments(0)