自分自身のための ものづくり / 自分自身のためのものづくりメモ

* デジタルRGB → アナログRGB 簡易変換

#電子工作 #メモ
 8bitパソコン黎明期のデジタルRGB出力をアナログRGBに。

5Vp-p → 0.7Vp-p @75オーム終端 簡易変換

 470Ωの抵抗を直列に入れる。

0.7[V]/75[Ω] = 9.33[mA]
4.3[V]/9.33e-3[A] = 461[Ω]
E24系列で近いのは、470Ω
#461Ωは±5%の範囲。470*0.95=447

5Vp-p → 0.3Vp-p @75オーム終端 簡易変換

 1.2kΩの抵抗を直列に入れる。

0.3V/75[Ω] = 4[mA]
4.7[V]/4e-3[A] = 1175
E24系列で近いのは、1.2kΩ


 XORでの同期合成に74ACT86を使う。4ゲート入りで、残り3ゲートをRGBのバッファに。

 デジタルRGBのは仕様に「TTLレベル」とあるから、74AC86より74ACT86の方が安心。ACでもちょいプルアップしておけばいいだろうけど。

 多めの電流を流すとV(OH)・V(OL)がVCC・GNDまで振り切れない。CD54ACT86のデータシートによれば、VCC=4.5Vにて、VOH=3.94V@IOH=-24mA,TA=25℃、VOL=0.36V@IOL=24mA

 あくまで簡易変換。素直に、1.4Vp-pになるよう分圧して、150Ω負荷駆動のためのバッファを入れたほうがいいかな。

* PC Engine の AV Booster PI-AD2 の分解

#PCEngine #分解


 入力側と出力側のノイズフィルタが印象的。元々、本体からして当時の機器としてはずいぶん厳重にシールドされているからな。
 基板の長穴からすると、AVブースターの回路もシールド板に包むことも検討したようだが、そこまではやっていない。

 音声は、オペアンプのμPC358を用いた反転増幅回路がバッファになっている。フィードバック抵抗に、同じ穴に差し込んでコンデンサがパッチ的に追加されている。


 映像は、2SC2785を用いたエミッタフォロア。出力側に75Ωの整合抵抗無し。0.7Vp-pで入ってくるのを、そのまま出力。

 いいのか?こんなで。入出力にやたら厳重にノイズフィルタが付いているのとの落差に、ちょっと違和感を感じた。


* Bad Apple!! PV-FC (2) がファミコン実機で映像が乱れる。原因は黒より暗い黒

#ファミコン
※最新版では問題は修正済

発端

Bad Apple!! PVをファミコンで再現してみた。(その2)
http://www.nicovideo.jp/watch/sm9170895
に感動した。
 エミュレータでの再生では満足できず、実機で再生するためにMMC3搭載カセットのROMを剥いでEP-ROMを載せたカセットを作成した。


事象

 RF接続した赤白ファミコン(HVC-001)では映像が乱れる。RP2C03を載せたRGB出力AV仕様ファミコン+XRGB-2plusでは乱れない。

↑MTV-2000にRF接続し、キャプチャ

調査とわかった事

 後期型ファミコンの裏蓋を外し、オシロスコープでPPUの出力を眺めた。その結果、映像の黒部分に、バースト直後の黒レベルよりも低いレベルの信号が出ていた。

↑はAV仕様ファミコン(無改造)の映像出力

黒より暗い黒

http://nesdev.parodius.com/2C02%20technical%20reference.TXT
+-----------------------+
|Video signal generation|
+-----------------------+
(中略)
Luminance value 0, mixed with chrominance value 13 yield a "blacker than 
black" pixel color. This super black pixel has an output voltage level close 
to the vertical/horizontal syncronization pulses. Because of this, some 
video monitors will display warped/distorted screens for games which use 
this color for black (Game Genie is the best example of this). Essentially 
what is happening is the video monitor's horizontal timing is compromised by 
what it thinks are extra syncronization pulses in the scanline. This is not 
damaging to the monitors which are effected by it, but use of the super 
black color should be avoided, due to the graphical distortion it causes.

 パレットについての関連参考資料。
ファミコンの詳しい話
http://www.wizforest.com/OldGood/FamiCom/FamiMisc.html

 Bad Apple!! PV-FC では、黒として 'Luminance value 0, mixed with chrominance value 13' つまり 0x0D を使っているのだろう。(未確認。VirturalNESのパレットビューアでは、どのパレットを使っているかが数値では表示されない)
 作者の門真なむさんは実機で動かしているが、RP2C05-99を積んだツインファミコンで動かしたために、普通のファミコンで映像が乱れる(モニタにもよるだろう)ことに気づかなかったのかな。

追記

 問題が出る環境はかなり限られている模様。悪条件に相当弱い機器でなければ、はっきりした問題にはならないのかも。
 うちでは、MTV-2000にRF接続でノイズだらけになる。(MTV-2000はノンスタンダード信号に弱いので、blacker than black 以前の問題もあるかも)LGの安物VHSビデオデッキにチューナが死んだテレビデオ(普通のテレビ放送でも同期外れがたまに出るほど、同期周りが弱い)にて、同期外れが頻発。

* 携帯殺菌ライトでEPROMの消去

#電子工作


 タニタの携帯用殺菌ライト EC-966 を、ROMイレーサとして使っている。普通の殺菌灯よりも小型で、単4電池2本で動くので、便利で手軽。一度に1個しかイレースできないのが欠点。
 15分で消去が完了する。10分だと消えてないビットが残る。

 ボタンを押している間だけ照射なので、トグルスイッチを並列にして連続照射できるように改造した。
 タイマーをつければもっといいが、面倒なのでやってない。キッチンタイマーをセットして、手動で切っている。

 EC-966は現行商品ではないが、中古品や新古品はまだヤフオクなどで入手可能。

* NEO GEO 用メモリカード(等)のSRAMの、FRAM化の検討

#NEOGEO #メモ
MCS48(8048)マイコンのページ(2007-05)
http://www.protom.org/micon/?date=200705
通常のSRAMのように扱えるので乗せ変えるだけと思いきや、これが全く動かず。しばしデータシートを眺めると、/CS(チップセレクト)端子を動かしてアドレスを内部にラッチさせないとダメとありました。この8048ボードは/CS線はGNDに繋がっているので原因究明。空きスペースにTTLの74LS08を置いて、8048からのPSEN,RD,WRでNegative-ORして/CS線に繋いであげると動き出しました。

  • FRAM Design Considerations
When designing with FRAM for the first time, users of SRAM will recognize a few minor differences. First, bytewide FRAM memories latch each address on the falling edge of chip enable. This allows the address bus to change after starting the memory access. Since every access latches the memory address on the falling edge of /CE, users cannot ground it as they might with SRAM.

 富士通の場合は、/CEがLにて/WEか/OEの↓でラッチアドレス?
 非同期SRAMと置き換えるだけでは、ダメか…。

* NEO GEO / MVS 用メモリーカード (MV-IC) の 分解

#資料 #NEOGEO #分解

フタを剥がした


同様のタブの付いた電池があれば、電池交換できるだろう。が、試していない。
#分解したのは2006年頃だが、放置中。

Digi-Keyにタブ付CR2016の在庫あり。
http://search.digikey.com/scripts/DkSearch/dksus.dll?Detail&name=P222-ND
単価108円。最小数量1。

タブ付CR1616の在庫もあった。
http://search.digikey.com/scripts/DkSearch/dksus.dll?Detail&name=P273-ND
NEO GEO とは関係ないけど、メモ。ゲームボーイのソフトの電池交換に。


載っているのは、16Kbit(2KByte)のSRAM、他

高解像度画像


HP200LXにてフォーマット。容量は16Kと誤認されている。


カード自体が認識されれば、dd等でデータの待避・復帰ができるだろう。
ただし、他のDOSやWindowsやLinuxでの認識は未確認。

* LP3872/LP3875 1.5A 高速超低ドロップアウト・リニア・レギュレータ

#電子工作 #メモ #部品 #電源
http://www.national.com/JPN/ds/LP/LP3875.pdf
ドロップアウト電圧: 超低ドロップアウト電圧。 代表値は150mA負荷電流時38mV、1.5A 負荷電流時380mV。
 入力電源電圧上限7.0Vが、昔ながらの5VのICに使う際にやや面倒。別のLDOで6Vでも作っておくか?


RSオンラインにて取り扱いあり。
LP3875EMP-5.0,Fast,Ultra LDO,Linear Reg,5.0V
(1.5A, SENSE, SOT223-5)
5〜 @360

LP3875ES-5.0,Fast,Ultra LDO,Linear Reg,5.0V
(1.5A, SENSE, TO-263-5)
5〜 @410

TO220 の LP3875ET の取り扱いは無し、か。


 入力コンデンサ・出力コンデンサは、データシートの「代表的な性能特性」によると、各々100uFのOSCONでいいか。それで、1.5A・100usの負荷にて2.5V出力の電圧変動を20mV以下に抑え込めるようだ。
 RS扱いの面実装のだと、
導電性高分子コンデンサ,SMT,PCG0J151MCL1GS,105°C,6.3V,150μF
あたりか。5〜で@200。
 入力側を耐圧10V(6.3x6),出力側を6.3V(5x6)。各々150uF。
http://www.nichicon.co.jp/products/pdf/cg.pdf

 面実装のタンタルでもいいか?
コンデンサ,固体タンタル,面実装,7343,T491D107K010AT,10V,100uF
10〜 @68
T 491 D 107 K 010 A T
タンタル 491シリーズ Dサイズ 100uF ±20% 10V
Dサイズ:L7.3 W4.3 H2.8


プリント基板のレイアウト設計
プリント基板の設計が適切でない場合、グラウンド・ループと電圧ドロップが原因となり不安定動作を引き起こすので、必ず適切なレイアウト設計を行わなければなりません。入力コンデンサと出力コンデンサは、他の回路の電流が流れないよう独立した配線パターンを用いてLP3872/3875 の入力ピンまたまたは出力ピンとグラウンド・ピンに直接接続します( ケルビン接続)。
(中略)
VIN に対しては大電流が流れ込み、またVOUT からは大電流が流れ出しますが、入力コンデンサと出力コンデンサのグラウンド側リードをケルビン接続すれば、配線パターンによる直列抵抗分の影響を考慮する必要はありません。

 SENSEピンは使うか、使わないか。
また、LP3872/3875 の出力に接続されている負荷が、例えばクロックなど高速にスイッチングするような場合、LP3872/3875 の出力コンデンサが過渡的な負荷電流を供給できるように設計しなければなりません。これはレギュレータのループ帯域が100kHz 以下と低いため、そのような高周波の過渡的な負荷変動に対してレギュレータの制御ループが応答できないからです。すなわち、100kHzを超える周波数領域でのLP3872/3875 回路の実効的な出力インピーダンスは、出力コンデンサによって決まります。
 ちょっと遠目程度なら、SENSEを引き回すより、その分電源パターンを太くした方がいいだろう。

* ビデオゲーム機のRGB出力、傾向と対策

#RGB #メモ
機種工作難易度部品入手難易度信号源信号備考
ファミコン普通至難RP2C05-99等-
スーパーファミコン容易普通背面端子0.7Vp-p(75Ω終端時)-
Nintendo64 前期型普通普通VDC-NUS0.7Vp-p (0〜0.7V)-
Nintendo64 後期型不明アナログRGB無し?
SG-1000II 前期型無しTMS9918Aはビデオ出力のみ
SG-1000II 後期型普通普通カスタムチップ1.4Vp-p-
SEGA MarkIII普通背面端子1.4Vp-p (0〜1.4V)150Ω負荷の駆動不可
MASTER SYSTEM背面端子0.7Vp-p (75Ω終端時) CXA1145の出力に100μFと75Ωが付いている
MEGA DRIVE背面端子1.4Vp-pCXA1145のピンがそのまま繋がっている
スーパーカセットビジョン背面端子-
PC Engine普通HuC6260 0.8Vp-p (4.2〜5V)-
NEO GEO背面端子-

* シリアルマウス

PC mouse info
http://www.tkk.fi/Misc/Electronics/then/mytexts/mouse.html
更新:リンク変更

PIC K iT PS/2⇔シリアル マウスインターフェイス
http://members.jcom.home.ne.jp/irv/documents/sermouse/0511123_SirialMouse_manualB0.pdf
スクロールマウスのデータフォーマットの情報あり。その他にも色々参考になる。


 比較的簡単なハードウェアとソフトウェアでWindows機(等)にマウス扱いされる自作ハードを繋げるのは魅力だが、Windows2000, XPでは電源ON時にしか認識されない(?)等、微妙に面倒が多いのが難点。
 あと、近頃はシリアルポート搭載率が減少傾向。USB<->シリアル変換はシリアルマウスには対応していないのが多い。

#電子工作

* Vista環境にて、PL-2303を使用したUSB接続COMポートで、TEXCELLのRubyシリアル通信ライブラリを用いてデータを受信できない。その原因と対処法

#プログラミング #Ruby #シリアルポート

事象

 Windows Vista の環境にて、USB接続のCOMポート(シリアルポート)を介して繋いだ機器のデータを、TEXCELLのRubyシリアル通信ライブラリ wincom.rb にて全く受信できない。teratermでは受信できる。。
 同じ接続対象機器・同じプログラムでも、レガシーな COM1 に繋いだならば受信できる。
 同じ接続対象機器・同じUSB接続シリアルポート・同じプログラムで、WindowsXP 環境では受信できる。

原因

 Vista環境にて、USB接続シリアルポートでは、ReadFileを実行した際、「読み取ったバイト数」として常にゼロが帰ってくるため。
 ドライバのバグか?

対処

 ReadFileの「読み取ったバイト数」は使わず、ClearCommErrorを実行した際に得られた COMSTAT構造体 の「受信バッファにあるデータのバイト数」を使う。
 ReadFileでそのバイト数読むと指示しているのだから、問題ない…と思う。問題あったとしても、常に0バイトよりはマシだ。
    def receive
(中略)
#                rcvchar = @wcrecv.unpack("a#{irlen[0]}")[0]
                rcvchar = @wcrecv.unpack("a#{ilen}")[0]

補足

 試したUSB接続シリアルポートアダプタは、以下2点。
 UC-232Aのドライバは、uc232a_windows_vista.rar (Ver._v1.0 2007-7-10)を使用。
 URS232GFは、Vista標準ドライバで利用できるとの事だが、できなかった。「URS232GFは一部ロットにて使用できません。」とのこと。チップ製造元であるProlificのサイトから、PL2303_Prolific_DriverInstaller_v10518.zip (2009/7/23 v1.0.5.18 )をダウンロードし、インストール。
 上記2点、チップ自体は同じか。ならば、ドライバもほぼ同一なのだろう。

あとがき

 今までTEXCELLのwincom.rbをありがたく便利なブラックボックスとして使わせて頂いていたのだが、中身を見て、色々と面倒な Win32API を隠蔽してくれていた事を実感した。今回必要に迫られてベールの下を覗いたけど、Win32APIは直接触らずに済むならそうしたい代物だ。


関連ページ

TEXCELL Rubyシリアル通信ライブラリ
http://www.texcell.co.jp/ruby/wincom/rubywincom.html

hirax.net::wincom.rbのCOM10以上対応
http://www.hirax.net/diaryweb/2009/07/29.html

Serial Communications in Win32
http://msdn.microsoft.com/en-us/library/ms810467.aspx

Windows/Vista/USB-RS232C(シリアル) - Tomocha WikiPlus
Windows Vista で動く、USB-RS232C変換ケーブル情報
http://wiki.tomocha.net/Windows_Vista_USB-RS232C.html

* Windows環境にて、USB接続COMポートを、個体識別する

#メモ #プログラミング #シリアルポート #Ruby
 Windows環境(少なくともWindows XP)では、USB接続のRS-232C(正確にはEIA-574)アダプタのCOMポート番号は、差すUSBポートを変えるとコロコロ変わる。COM19になったりCOM6になったり…。とても困る。
 一方、USB接続のその手の機器は、デバイスマネージャ上で個体識別できる。ならば当然、自作プログラムでも個体識別し、COMポート番号を自動設定できる。
 WMIを介して情報を得る。Win32_SerialPortではUSB接続の情報が得られない(場合が多い?)ので、Win32_PnPEntity からCOMポートを抜き出すのが確実。

require 'win32ole'

def ports
    locator = WIN32OLE.new("WbemScripting.SWbemLocator")
    services = locator.ConnectServer(".","root/cimv2")
    ports = services.ExecQuery "Select * From Win32_SerialPort"
    ports.each do |port|
        p port.Caption
        p port.Description
        print "\n"
    end
end

def ports_pnp
    ps = []
    locator = WIN32OLE.new("WbemScripting.SWbemLocator")
    services = locator.ConnectServer(".","root/cimv2")
    ports = services.ExecQuery "Select * From Win32_PnPEntity"
    ports.each do |port|
        if /\(COM\d+\)$/ =~ port.Caption
            p port.Caption
            p port.Description
            p port.Manufacturer
            print "\n"
        end
    end
end
   


print "Select * From Win32_SerialPort\n"
ports

print "Select * From Win32_PnPEntity\n"
ports_pnp

ruby -Ks comports.rb

Select * From Win32_SerialPort
"通信ポート (COM1)"
"通信ポート"

"通信ポート (COM2)"
"通信ポート"

Select * From Win32_PnPEntity
"Prolific USB-to-Serial Comm Port (COM19)"
"Prolific USB-to-Serial Comm Port"
"Prolific"

"USB-to-Serial Comm. Port (COM6)"
"USB-to-Serial Comm. Port"
"Aten"

"通信ポート (COM1)"
"通信ポート"
"(標準ポート)"

"通信ポート (COM2)"
"通信ポート"
"(標準ポート)"


参考文献:

Kick4 BBS
USBシリアルのポート名を知る方法?
http://www.kick4.net/bbs/c-board.cgi?cmd=ntr;tree=4;id=

Win32_SerialPort Class (Windows)
http://msdn.microsoft.com/en-us/library/aa394413(VS.85).aspx
Win32_PnPDevice Class (Windows)
http://msdn.microsoft.com/en-us/library/aa394352(VS.85).aspx

* RandomNoteWiki記法 - TextFormat

* オムロンツーフォーサービス オンラインショップ、他

#電子工作 #部品調達

2008年3月29日追記

2009年8月1日、変化に合わせて訂正

 「オムロンツーフォーサービス株式会社」が「オムロンエフエーストア株式会社」に社名変更し、扱う品々がオムロン商品に特化された。
 これで、個人の電子回路工作には、ほぼ縁のないWebショップになってしまった。送料525円(送金手数料込み)は小物の買い物に魅力的だったんだけどなぁ。

 オムロンツーフォーサービスで扱っていた品は、チップワンストップで扱われるとのこと。<DEL>送料が1000円(注文金額が8000円未満の場合)なので、個人のちょっとした買い物には微妙に使いにくい。(まぁ、秋月---代引き手数料と合わせて800円---と同程度なのだけど)</DEL>
 チップワンストップは配送料が送金手数料込みで450円になったので、少量のパーツも割と手軽に注文できる。注文5000円以上で、配送料無料。
 Webサイトの検索結果が返ってくるのがかなり遅いのが不満。5秒は待たされる。RSオンラインなら1秒で表示されるのに。

<DEL>
 チップワンストップのWebサイトは、RSオンラインの激しく使いづらいWebサイトよりは、使いやすい。なんといっても、RSと違って、個々のパーツを別のウィンドウ|タブで開けるし。
RSのが不便すぎるだけだけど
</DEL>
 RSオンラインのWebサイトは、だいぶ前のリニューアルで、だいぶ使いやすくなった。以前はリンクがJavaScriptで何かと不便だったが、普通のリンクになって新しいタブで開いたりとか普通にできるようになった。


506 名前:774ワット発電中さん 投稿日:2007/02/04(日) 21:24:30 ID:rcOaP9bn
チップ抵抗は5%品は千石でチェック。1%品はオムロン・ツー・フォーでミニリールを買うようにしている。
digikeyも代引き使えればありがたいね。
_【代引き】_____電子部品通販のスレ_____【送料】_
http://science5.2ch.net/test/read.cgi/denki/1131720549/

OMRON | 通販・通信販売のオムロンツーフォーサービス オンラインショップ
http://www.omron24.co.jp/

 コンビニでの後払い(手数料はオムロン負担)ができたり、クレジットカードが使えたりと、個人での利用がしやすそうだ。
 また、計5000円以上で送料無料。

 精度1%のチップ抵抗を扱っているのはありがたい。千石とかじゃ扱ってないからなぁ。
 RGB用バッファアンプとかR-2Rラダーとかに使えば、金皮のリード品よりも大幅にコンパクトにできるだろう。

面実装抵抗器角形チップ抵抗器(精密級)【RK73H】
http://www.koaproducts.com/catalogue/rk73h.htm
2.0x1.2mmなので、手作業にはほどよい大きさ。

* press-n-peelとMDプリンタ

#プリント基板 #Press-n-Peel #途中経過
 マイクロドライプリンタでも、Press-n-Peelブルーを使える。

 ファインブラックでうまくいった。
 黒リボン1回では、うまくいかない? ラミネータでは熱が不足なのかも。
 ファインブラックは、CMYKでリボン4枚重ねで厚くなるのか、パターンの潰れが少々生じた。

MD-5500で印刷した



切り取った



貼り付けた



ラミネータを数回通した



水につけた



剥がした





切り取った



エッチングした


* MDプリンタとラミネータによる転写プリント基板の作成 2

#途中経過 #プリント基板
これが勝利の鍵だ:「ファインブラック」

 CMYKの4本のリボンで黒を作るので、「ページ合成」にチェックを入れたりする手間なしに厚く丈夫な皮膜を作ることができる。更に、黒の重ね刷りよりも剥がれにくい。
#そういや、フラッシュシルバーとかを印刷する際に、下地にCMYKが使われていたな。