まごころせいじつ堂

浜町庄金 研究開発  マイコンで遊んでばっかりで

汎用ロジックICによる早押し回路

 35年くらい前、ラジオの製作で見かけた74LS00一個による早押しゲームというのがあって、どんな回路だったか思い出せないでいた。おそらく基本はSRラッチで、早く押した方が確定したら自分はONのまま他方はONさせないんだろうなと考えてたら風呂で思いついた。

 SRラッチを中心に、一度確定した方の入力をホールドしてしまえばよい。

2016hayaoshi-kentou

 で、手持ちの部品で作ってみた。秋月片面D基板。電源はUSBからもらう。

2016hayaosi

 赤い方のボタンを先に押したら赤のLEDが、緑の方を先に押したら緑のLEDが点灯してそれ以降はどう操作しても変化しない。リセットするには電源をいったん切る。

 さてコレで完成……ではなかった。試しに74LS00の代わりに無印7400と74HC00に差し替えて実験してみたら、電源投入後に片方のLEDが点灯したままロックしてしまう。74HC00では常に発生し、7400では高い頻度で発生する。74LS00でもたまに発生することがわかった。
 このSRラッチの出力が両方とも"H","H"の初期状態になるためには、入力が両方共"L"になっていないといけない。その前段にあるNANDの出力が、電源投入時に"L"とみなされればうまくいくが、無印7400と74HC00では"H"となりどちらか片方に確定してしまうようだ。そこでこの部分をプルダウンしてみるとうまくいった。
2016hayaoshikairo

 これは修正済みの回路。Y,Zをプルダウンしているので電源投入時は"L"とみなされる。これによりSRラッチの出力B,Dは両方とも"H"になりLEDは消灯。
 A,Cはスイッチ入力でプルアップされているので開放時は"H"。B,Dも"H"なのでY,Zは両方とも"L"である。
 Aのスイッチが先に押されたとする。Aが"L"になり、Yが"H"となる。Y,Dが"H"なのでSRラッチの出力Bが"L"となりLEDが点灯する。Bが"L"になるとYは常に"H"となりSRラッチはこれ以降動かない。この状態でCのスイッチを押すと、Zは"H"だがBが"L"なので出力Dは"H"のままで変化しない。

 先程の素子によってはレベルが確定せずどちらか片方が先にセレクトされてしまう問題は等価回路や出力/入力のスレッショルドレベル、ディレイなども確認しないといけないが、そもそも電源投入直後は論理演算素子として正常動作していない状態である。この時の信号線は不定値"X"として扱う。不定値"X"は"H","L"のどちらでもないが、NANDゲートの場合は片方の入力が"L"ならばもう片方の入力が何であろうと出力は"H"で確定する。過去に見た早押し回路にはプルダウンはなかった記憶なので、74LS00を使うことにより電源投入後の状態がスイッチの入力待ちになることをアテにしていたのだろう。

SN74LS00 (供給中) クワッド 2 入力 正論理 NAND ゲート
http://www.tij.co.jp/jp/lit/an/slva700/slva700.pdf
高速 CMOS ロジック HD74HC シリーズ アプリケーションノート

 なお、LSIの中の同期回路ではこのような設計は避ける。意図しないラッチができるとクロックに同期せずに状態を記憶する部分ができてしまい検証が困難になる。

2016hayaoshi-normalTTL

2016hayaoshi-HC


おまけ:USBを電源にしているが、スマホ用のバッテリーの中にはある程度の電流が流れないと切断してしまうものがある。PanasonicのQE-PL203はロジックIC一個程度でも切れないで実験に使用できた。


パナソニック モバイルバッテリー 5,800mAh 無接点充電(Qi)対応 USBモバイル電源 ホワイト QE-PL203-Wパナソニック モバイルバッテリー 5,800mAh 無接点充電(Qi)対応 USBモバイル電源 ホワイト QE-PL203-W

パナソニック 2013-06-26
売り上げランキング : 14475

Amazonで詳しく見る
by G-Tools

pcbeで設計した秋月C基板

 2015年の夏頃に秋月電子C基板で試作したものをそのままpcbeでプリント基板化した。これはその外形とネジ止めの穴を残し、2.54mmピッチのパターンを追加したもの。外形とネジ止め穴は実績あり。

akiduki-c-single

akiduki-c-single.pcb ファイルはこちら。ご自由にお使いください。
https://onedrive.live.com/redir?resid=A51ACEA3F5739277!287&authkey=!AJzuddh7hE1p6tY&ithint=folder%2cpcb

レーザーカッターでICの樹脂パッケージは削れるか→無理っぽい

 レーザーカッターでICを封止している樹脂を削ることはできるかやってみた。通常は硝酸を使うのだが普通のご家庭にはないし危険。
半導体パッケージの開封(NC Network)

アームの移動速度とビームの割合(40Wの何%)を変えながら試してみる。対象は書き損じのPLD、PLCCパッケージ。

W:11.0 H:11.0 CenterX:47.0 CenterY: 8.5 の長方形で中央を狙う。

10mm/s 10% - あまり焼けていない
10mm/s 40% - 少し削れる 指先で触ってわかる程度
10mm/s 90% - 同上

繰り返し同じ所を狙って削ろうとしてみたが大して深くならない。ちょっとこれは無理だろう。
2016laserdie

 作業している所が光るとつい目が向いてしまうので、簡単なカバーを作った。
2016lasermado

 ↓ なんか面白そうなのあるね。

ウンカン 強化版 ミニ型 レーザー彫刻機 ブラック 500mW USB対応 16.5×13.5x13cm 電子自作 DIY道具
ウンカン 強化版 ミニ型 レーザー彫刻機 ブラック 500mW USB対応 16.5×13.5x13cm 電子自作 DIY道具
ウンカン
売り上げランキング : 224100


Amazonで詳しく見る
by G-Tools

メモ:レーザーカッター SmoothieBoard

 HACKADAY経由。
3D Laser Carving with the Smoothieboard(HACKADAY)

 よくある40Wレーザーカッターのコントローラを替えて、立体的な彫刻をやったようだ。
SmoothCarve(NON-NEWTONIAN)
https://github.com/koswix/SmoothCarve/releases
Laser Cutter(NON-NEWTONIAN)

MatLABが必要らしい。

オープンソースのCNCコントローラ。
http://smoothieware.org/smoothieboard

水晶振動子の実験用基板

 水晶振動子(または水晶発振子)の実験用基板を作ってみた。
メモ 水晶振動子
秋月電子のD基板を1/4に切ったものに実装。4ピンを出して中央2ピンが水晶振動子の端子、左右の端子がショートプラグで選択してGND。
http://akizukidenshi.com/catalog/c/cboard18/(秋月電子)


2016xtal3

 これはセラロックの例。だいたいどんな配線かはわかると思います。
2016xtal1

 裏面。
2016xtal2

 これでマイコンの実験が楽にできるようになる予定。

7セグメント用H68/TRフォントデータ

 最近作っているのは7セグメントLEDを使った電卓シールドなのだが、せっかくなら16進数も扱いたいし、できればアルファベットも表示したい。

 で、最近見かけたのはこのフォントデータ。
7セグ・14セグフォント 「DSEG」(keshikan.net)

 だが、私の知っているものとは少し違う。こっちのほうです。
Hitachi H68/TR(IC Collection)

 H68/TRは電卓風のコンソールに7セグメントのEL管が入っていて無理やりアルファベットを表示していた記憶。では具体的にはどのような表示だったかというと、以下にありました。
トイレのドアを修理 H68/TR落札したかったな(今日を生きた証)
 こちらのマニュアルの写真を参考に、64文字分の7セグメント用データを作成。

 データ部分は以下をご利用ください。
https://gist.github.com/houmei/50bd6e7c56b60480f6e7

2016h68trfont

 ちょっとハマった所があって、配列の初期化のうち1要素がなぜか抜けるような動きをした。バックスラッシュの字体を定義するところを
  0x06, // B00000110, // \
としたら継続行とみなされ次の要素がコメントアウトされた。
  0x06, // B00000110, // "\"
でOK。
C 言語の「//」コメントは、バックスラッシュで継続行になる!(私の二次記憶)



マイコンと表示器をつなぐ10の方法 (マイコン活用シリーズ)マイコンと表示器をつなぐ10の方法 (マイコン活用シリーズ)
後田 敏 中西 一雄 世古 伸治 長田 直之

CQ出版 2006-05
売り上げランキング : 607010

Amazonで詳しく見る
by G-Tools

Arduinoでスケッチのコンパイル時 undefined reference to `loop' などが出る場合の対処

 特にライブラリを作りながらスケッチも書いている場合、Arduino IDEでスケッチをコンパイルすると
undefined reference to `setup' や undefined reference to `loop' が出てエラーになることがある。どうやらスケッチをスケッチとして認識せずC++ソースとみなしてコンパイルしているような動作。

 以下は作業フォルダの例。

BYODというフォルダ以下に
BYOD.ino (Arduino IDEスケッチ)
BYOD.cpp (作成中のライブラリ)
BYOD.h (同上)

 このような構成のときにエラーがでる。スケッチのファイル名はフォルダ名と同じでなければならないので、次のようにリネームすると解決する。

BYODtestというフォルダ以下に
BYODtest.ino (Arduino IDEスケッチ)
BYOD.cpp (作成中のライブラリ)
BYOD.h (同上)

参考:
Arduino: undefined reference to `loop'



Arduinoをはじめよう 第3版 (Make:PROJECTS)Arduinoをはじめよう 第3版 (Make:PROJECTS)
Massimo Banzi Michael Shiloh 船田 巧

オライリージャパン 2015-11-28
売り上げランキング : 723

Amazonで詳しく見る
by G-Tools

Arduinoボードの識別方法

 ArduinoのUNOとLeonardoは性能的には似通っているが割り込みやタイマなど微妙に違う部分がある。それぞれのボードに対応したスケッチを分けずに書きたいなあと思っていた。

 以下の方法でボードを識別することができる。
Determine Arduino Board Model and Version Programmatically

Arduino UNO系では:
#if defined(__AVR_ATmega328P__)

Arduino Leonardo系では:
#if defined(__AVR_ATmega32U4__)

で判断することができる。Arduino IDEの1.0.6 / 1.6.7 / 1.7.8 で動作確認した。
これらはスケッチ内だけではなく、よりマイコンの内部構成に依存した書き方が必要なライブラリ内でも利用できる。

激光 はんこをつくろう

 はんこを作ってみた。

 材料はダイソーで買ってきた木の素材で30x15x15mmのもの。寸法は目安でばらつきは大きい。これの30x15mm部分にレーザー彫刻する。

2015hanko2

レーザーの強さ、彫刻の速度、同じ面に対する彫刻の回数で色々試してみた。
2015hanko3

 速度が遅いと弱いレーザー光でもよく焼けるが、細部が潰れてしまう。回数を増やすと深く彫れるが、時間がかかる。今のところ40W 5.5%で50mm/s 1回がよさそうだった。

2015lisp_stump



さて、最初は消しゴムに対してやってみたのだけど溶けてしまってうまくいかなかった。レーザー彫刻用のゴム印があるらしいので次回試してみる。
2015hanko1

激光 両面白色 厚紙のテスト

 ダイソーに売ってある厚紙A4用 両面白色8枚入でレーザーの強度を変えつつテストしてみた。
40W 5%からスタートして0.5刻みで上げていく。速度は100mm/s。6%で表面の白い部分は飛んでしまってるようだ。なので、6%以降は厚紙の茶色い部分を焼いていることになる。

2015LASERENGLAVEsample

どうも偏りがあるみたいなので40W 8%に揃えておなじように焼いてみた。
2015LASERENGLAVEmura

 右側中央辺りが強いようだ。

記事検索
プロフィール

hardyboy

カテゴリ別アーカイブ
月別アーカイブ
QRコード
QRコード
  • ライブドアブログ