« 2025年11月 | トップページ

2026年1月

2026年1月18日 (日)

マウスホイールによるズーム方向の変更

主に図面などの画像をあつかうアプリを操作する際に、マウスホイールによるズームイン/ズームアウトはとても便利な機能だが、アプリによってズーム方向が違ったり、ズーム方向の設定ができなかったりした場合、たいへんあつかいにくい。

私の場合、主にKicad、LTSpice、DesignsparkMechanicalあたりをよく使うが、KicadのZoom方向に慣れていて、LTSpiceとDesignSparkは逆なので扱いにくい。

そこで、今回はアプリ別にスクロール方向を変更する簡単な方法を備忘録として書いておく。やり方は次の通り。

①フリーのWindowsスクリプトツール”AutoHotKey”をダウンロードしてインストールする。
AutoHotKeyサイトのDownloadボタンを押して、V1.1をダウンロードして実行してインストールする。

②スクリプトを作成する。
テキストエディタで次のようにスクリプトを書き、適当な場所に保存する。ここではファイル名をZoomReverse.ahkとした。ファイル名は任意だが、拡張子はahkにすること。

;ここから
;DesignsparkMechanical
#IfWinActive ahk_exe SpaceClaim.exe
WheelUp::Send {WheelDown 1}
WheelDown::Send {WheelUp 1}
#IfWinActive

;LTSpiceXVII
#IfWinActive ahk_exe XVIIx64.exe
WheelUp::Send {WheelDown 2}
WheelDown::Send {WheelUp 2}
#IfWinActive

;LTSpice26
#IfWinActive ahk_exe LTspice.exe
WheelUp::Send {WheelDown 2}
WheelDown::Send {WheelUp 2}
#IfWinActive
;ここまで

この例はDesignsparkとLTSpiceXVII、LTSpice26の3種類のアプリのズーム方向を逆に設定している。
WheelDown 2
WheelUp 2
の数値はズームスピードの設定で、数値が大きいほど早くなる。

スクリプトが書けたら保存して、これを右クリックして、「プログラムから開く」→AutoHotKeyを実行すれば有効になる。
PCの起動時に自動的に有効になるように、スクリプトファイル(ahkファイル)のショートカットをスタートアップに登録しておくと便利。
スタートアップホルダはスタートメニューの「ファイル名を指定して実行」から
shell:startup
とすれば開くことができる。

注意すべきことは、これは対象のアプリがアクティブな場合のみ有効ということなので、そのアプリが画面に表示されていても別のアプリがアクティブな場合は有効にならない。

ちょっと慣れが必要かもしれないが、だいぶ便利です(^-^)

 

| | | コメント (0)

2026年1月15日 (木)

【備忘録】XilinxのWebPack ISE14.7をWindows11にセットアップする

昔は電子機器開発部署の部品棚にはロジックICの74シリーズのほとんどすべてが用意されていて、これらを使って開発の予備実験や試作などを行っていたものだが、もうそんなやり方は効率が悪いので、CPLDの開発環境を導入して74シリーズを使うのはやめようと思い、Xilinx(現AMD)のXC95xxとISE14.7をセットアップしたのは2010年頃だったろうか。それでもかなり遅い。
マイコンを使えばロジックICを使うような場面はだいたい賄えるので、CPLDを使う機会はほとんどなかったが、それでもロジック回路が組める環境があると安心感があった。

※注記 XC95シリーズのCPLDは生産中止品で、開発ツールISE14.7はほとんどこのXC95にしか使い道がないので、未来があまりないが、XC95シリーズは流通在庫が豊富であり、まだ当面の間入手は可能と思われます。

2016年頃にWindows10を導入したらISE14.7が動かなくなってしまい、ときどき思い出したようになんとか動かす事はできないかいじったりしていたが、結局決定的な解決策がないまま放置して、あれから10年近くCPLDが使えない状態になってしまっていた。
2026年年初からパソコンを新調し、環境を整備していたが、このときにまた、もう一度ISE14.7を導入してCPLDが使えるようにできないかな……?と思い、ネットで調べてみると、いつの間にやらAMDのISEアーカイブサイトにWindows10、11対応のISE14.7が上がっていたので、テストしてみることにした。ただこれは、Windows上にlinuxの仮想マシンを導入して、そこにISE14.7をインストールするというやり方で、デバイスドライバやダウンロードケーブルがちゃんと動作するのか?という不安があった。
結論を先にいうと、特に問題はなく、すんなり使えるようになった。備忘録として以下にまとめておく。

Windows10またはWindows11にISE14.7を導入する場合、あらかじめOracleのVirtualBox(仮想マシン)を入れておく必要がある。私は別の用途ですでにVirtualBox7.1.10をインストールしていたので、とくに問題はなかった。
VirtualBoxが入ったら、AMDのアーカイブサイトより、
Xilinx_ISE_14.7_Win10_14.7_VM_0213_1.zip
をダウンロードし解凍したら、Windows上からxsetup.exeを実行して、あとは案内に沿ってインストールする。
※ちょっとうろ覚えだが、途中ダウンロードケーブルのデバドラを入れるチェック項目があったように思う。入れ忘れ注意!!

インストールが完了したら、VirtualBoxのVirtualBoxマネジャーを開くと、図1のようにISE14.7が追加されているのが確認できる。
(windows98seとubuntuの22.04、14.04は先に入れてあったもの。)
Virtualbox
図1.VirtualBoxにISE14.7が追加されている


このままでも動くのかもしれないが、ネットで情報収集したところ、いくつかの設定を行う必要があるらしい。
ISE14.7_VIRTUAL_MACHINEを選んだ状態で、設定アイコン(歯車)をクリックすると、各種の設定ができる。
※以下の設定は、VirtualMachineが停止している状態で行います。

上から順に、
まず一般→高度でクリップボードの共有を双方向に設定。
次にシステム→マザーボードで
・メインメモリーを6144MBに設定。
・チップセットをPIIX3に設定。
システム→プロセッサーで
・プロセッサー数を2に
・PAE/NXを有効化にチェック
システム→アクセラレーションで
・仮想化支援機能:ネステッドページングを有効化
ディスプレイ→スクリーンで
・ビデオメモリーを128MBに設定
・グラフィックコントローラーをVBoxSVGAに設定。
ネットワーク→アダプター1
・割り当てをNATに設定
USB
・USBコントローラを有効化にチェック、USB2.0にチェックを入れる。
・USBデバイスフィルターで、Xilinx USB Cable、Digilent USB Cable、Digilent USB Cable2の3つに☑が入っていることを確認。
・共有フォルダーに、Windowsと共有する任意のフォルダーを設定しておく(右の+マークで追加)。
ユーザーインターフェイス→デバイス
・共有フォルダ、クリップボードの共有にチェックが入っていることを確認。

以上で触れていないところはデフォルトのままでいいと思われる。

すべての設定ができたら、ISE14.7_VIRTUAL_MACHINEをダブルクリックするか、これを選んだ状態で起動ボタンを押すと、Linuxの仮想マシンが起動する(図2)。

Linuxforise14_7
図2.Linuxの仮想マシンが起動

これでこの仮想マシンのデスクトップ上にあるProject Navigatorをダブルクリックすれば、ISE14.7が起動する(図3)。


Ise14_7
図3.ISE14.7を起動している様子


起動できたので、簡単なテスト回路をVHDLで記述して動作確認しておく。使用デバイスはXC9572XL(PC44)。
テスト用の回路は図4に示す通り。電源の3.3Vは外部からACアダプタとレギュレータで供給し、クロックは部品箱に入っていた8.192MHzの水晶発振器を使用した。

Test_sch
図4.製作したテスト用回路


ISE14.7による回路記述は次の通り。
ファイルのNew Projectから、XC9572test20260110という名前(任意)をつけてプロジェクトを作成する。このときに、Locationに、上で設定したWindowsと共有しているホルダを指定するとWindowsからも見ることができるので管理しやすくなる。次のページでデバイスとパッケージ、開発言語(VHDL)を選択してFinishするとプロジェクトが生成される。
この状態ではソースファイルがないので、VHDLを記述するファイル(*.vhd)とピン接続を記述指定するファイル(*.ucf)を作成する。
左上ペインのプロジェクト名を右クリックして、"New Source"を選び、VHDL MODULEを選んで、"ledMain.vhd"と名前をつけてNext,Finish。同じく"New Source"から"Inplementation Constrains File"を選び、"led.ucf"と名前をつけて生成する。
ピン配置はGUIではできないのでucfファイルで行う。

今回記述したテスト用のledMain.vhdは次の通り

--ここから
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use ieee.numeric_std.all;

entity testmain is
    Port ( LED1 : out  STD_LOGIC;
           LED2 : out  STD_LOGIC;
           clk  : in   STD_LOGIC
);
end testmain;
architecture rtl of testmain is
signal ledcnt : unsigned(19 downto 0):="00000000000000000000";
signal led_sig : std_logic:='0';
begin
process(clk)
begin
if(rising_edge(clk)) then
  if ledcnt = to_unsigned(1000000,ledcnt'length)then
    led_sig <= not led_sig;
    ledcnt <= to_unsigned(0,ledcnt'length);
  else
    ledcnt <= ledcnt + 1;
  end if;
end if;
end process;
LED1 <= led_sig;
LED2 <= not led_sig;
end rtl;
--ここまで

これはクロックを100万カウントするごとにLED1を点滅させる回路で、LED2はLED1の反転。

次に、led.ucfは次の通り。

--ここから
# Clock
NET "clk" LOC = "P5";

# LEDs
NET "LED1" LOC = "P18";
NET "LED2" LOC = "P19";
--ここまで

vhdとucfが書けたら保存して、ledMain.vhdを選んだ状態で、左中段ペインのImplement Designを右クリックしてRun。
そうするとすべての処理が一括で行われて、最後に
Process "Generate Programming File" completed successfully
が出たら成功だ。

次に生成されたオブジェクトファイルをCPLDに書き込む。
製作した基板に電源とダウンロードケーブル(DLC9LPMCを使用)を接続し、
ISEのToolsからiMPACTを起動する。Warning はOKで抜けて、
まず左ペインのBoundary Scanをダブルクリックすると、右ペインに
”Right Click to Add Device or Initialize JTAG chain”
と出るので、その部分で右クリックして、"Initialize Chain"を選択。
すると、接続しているデバイスが表示されるので、"Yes"を選んでContinue。
先ほどビルドされたオブジェクトファイル"testmain.jed"をOPEN。
OKで抜けて、あとは左下ペインのProgramをダブルクリックすれば書き込まれ、書き込みが終了すると回路が動作する。
動作している様子は次の通り(動画1)。

動画1.動作の様子

コード記述でロジック回路が組めるというのは、いまだにちょっと感動します(^-^)
今回使用したXC9572というCPLDデバイスは、マクロセルという回路単位が72個入ったもので、マクロセルというのはざっとフリップフロップ1個とゲート数個だと考えれば、だいたい実装可能な回路規模のイメージができる。
今回は8.192MHzのクロックを100万分の1に分周してLEDを点滅させていて、100万分の1は大体2の20乗分の1なのでごく大雑把にはDフリップフロップ20個程度だと考えればよい。実際のところ、ISEのFitter Reportを見ると、72個のマクロセルのうち22個を使ったと書いてあるので、ほぼ計算が合う。

実務上はそれほど使う機会が多いとは思えないが、逆にこの程度の規模のCPLDでなにかおもしろいものができないか考えるのも面白いかもしれない。

 

| | | コメント (0)

パワーアンプ用スイッチング電源の起動不良

動画1.パワーアンプ電源のヒカップ(hiccup:しゃっくり)現象
(右側のスイッチング電源の緑LEDと、中央のコンデンサ基板のピンクLEDがチカチカしています。)


長らく使っている無帰還パワーアンプですが、どうもこのところ電源スイッチを入れるとスイッチング電源が起動に失敗し、ヒカップ動作に陥るようになってしまいました。ヒカップとは、スイッチング電源の過電流保護動作によって、しゃっくりのようにON→保護によりシャットダウン→ON→保護により……を繰り返す現象のことで、すんなり電源がONになることもあれば、ヒカップに陥って、もう一度電源を入れ直さないとONできないこともあります。ヒカップ現象の様子を動画1に示します。

このアンプを製作してから長らく問題なく動作していましたが、ここ最近はかなりの頻度でヒカップ現象が起こるようになったので、原因の調査と対策を行いました。

まず原因ですが、スイッチング電源の使い方が仕様外でした。申し訳ございません。
もし無帰還25WまたはFET入力無帰還25Wを、製作例通りCincon社製スイッチング電源CFM60S240を使用して製作された場合は同じ不具合が出る可能性があるので、本記事の内容にしたがってスロースタート回路を追加するか、スイッチング電源の出力に入れる平滑コンデンサを2500μF以下にしてください。

今回の不具合の原因は、スイッチング電源の出力につけた平滑コンデンサ(4700μF)が電源の負荷として重く、電源が起動に失敗するというもので、これは製作例に記載したCincon社製スイッチング電源CFM60S240の仕様書を読むと負荷コンデンサは2500μFとなっているので明らかにオーバーしています。仕様書はちゃんと読まないといけませんね(^-^;

ダウンロード - datasheetcfm60sseries.pdf

それはこの仕様書の3ページ目の、"Load Capacitance"のところに記載されていました。
つまり外付けの平滑用のコンデンサは2500μF以下にする必要があります。


製作例にも書いた通り、従来は±24Vの両方の電源出力に4700μFの平滑用ケミコンを付けていました。なので、これをそのまま使えるように、スロースタータ回路を製作しました。回路を図1に示します。


Delay_sch
図1.ヒカップ対策用スロースタート回路

図1の回路中、C1とC4の4700μFが平滑用のコンデンサです。電源ON時に、このコンデンサにドカッと充電電流が流れることでスイッチング電源の保護回路が働いてヒカップ状態に陥るので、対策としてMOSFETで充電電流を緩やかにします。そのためにゲート入力電圧を100kΩと47μFでゆっくり上昇させています。47μFと並列に入れた100kΩはゲート電圧が最大定格を超えないようにすることと、47μFの放電のために付けています。FETは部品箱に大量に入っていたIRFW540で、これは以前秋月のお楽しみ袋に入っていたものです。定格は100V28A、ON抵抗は52mオームです。50V10A以上で、Vgsが5V前後でON抵抗が0.1Ω以下のMOSFETならおおむね大丈夫だと思います。
マイナス側の回路はPチャネルを使って上下対象にしたほうが見た目かっこいいですが、部品の入手性が良くないので、同じデバイスを使って同一回路としました。

配線してしまってから写真を撮っていないことに気がついたのでわかりにくくなってしまいましたが、写真1に実装の様子を示します。この裏側に4700uFのコンデンサが2本付いています。
スイッチONの様子を動画2に示します。

Imgp5021
写真1.スロースタート回路実装の様子

動画2.スロースタート回路による対策後の電源ON


そういうわけで、4700uFでも安定して起動できるようになりました(^-^)



| | | コメント (0)

2026年1月 9日 (金)

格安タブレット P85T のバッテリー交換   

20240920p85t_20260109123401

関連記事:格安タブレット TECLAST P85T の不具合と対処方法


2024年の夏に約9500円で購入したTECLASTの格安タブレットP85Tだが、予想より早く電池が劣化し、2025年末には実用上かなり厳しい状態となった。

今回の電池寿命による症状は、従来とは様子が異なっていて、電池残量が80%とか、まだまだ余裕がある場面で突然電源が落ちるというものだ。故障かもしれないと思いいろいろ調べてみたが、どうやら電池がくたびれてきて内部抵抗が上がってくると、突発的な電流増加のときに大きな電圧降下が生じ、リセットしてしまうということらしい。
これは高性能で演算能力の高いCPUに対して、AIなど高負荷なアプリを使用したときに起こるらしく、確かに最初にこの現象が出たときも、AIによる詰将棋をやっているときだった。
この現象が出始めたのが2025年の10月頃だったので、購入からわずか1年2ヶ月ほどだ。ただ、突然落ちる場面もそれほど頻度が高くはないし、バッテリーも半日以上もつ状態だったので、まだしばらくは大丈夫だろうと、だましだまし使っていた。
そこから2ヶ月が過ぎて、年が明けてからは、AI詰め将棋だけではなく、ほかのアプリを使っているときでも突然落ちる頻度が増えてしまったので、電池の交換に踏み切ったのだ。

以下にP85Tの電池交換を記すが、リチウムイオン電池は発熱発火などの危険を伴う電池であるため、自己責任でお願いします。

さて、まずは蓋を開けて電池サイズを測ったところ、102x98xt3.5ほどだった。電池の写真を写真1に示す。

P85t_orgbatt00
写真1.元々入っていた電池。3410298というモデルナンバーはそのまま寸法をあらわしている。

Model:3410298
と書いてあるが、これは厚さ3.4mm、102mmx98mmという寸法をあらわしているようだ。
写真2に接続の様子を示す。

P85t_orgbatt
写真2.オリジナルの電池の接続

オリジナルの電池は6ピンのコネクタで接続されていた。赤2本が+、黒2本が-(GND)、黄色が温度検知用サーミスタ、そして青が謎なのだが、観察したところディスプレイのON/OFFを示す信号が来ていた。なんのために電池に接続されているのかは謎のままだ。
交換に使えそうな電池を探したところ、aliで同じくらいのサイズのものを見つけた。購入した電池のリンクを付けるつもりだったが、いま見てみるとすでに販売されていない。試してみたい方は同サイズでコネクタが付いたものを自力で探してください。
購入品はコネクタピッチは同じで、配線が赤赤白黒黒となっていて5ピン、白はサーミスタで、1本足りないが挿入は可能なので、装着してみたところ動作はOKのようだ(^-^)(写真3)

P85t_battconnect
写真3.新しい電池をコネクタに接続。1本足りないが装着できて、動作OK。


さて、この作業の最大の難所は蓋開けだ。
この手のタブレットはネジ止めではなく強固なパッチン止(はめ殺し)で蓋が閉まっているため、開けるのはかなりのテクニックと慣れが必要だ。今回は0.15から0.2mmほどのステンレスの隙間ゲージをじわじわ差し込んで拠点を作り、そこに細いマイナスの精密ドライバを入れてこじ開けたが、かなりの難易度で、ここを乗り越えなければ電池交換はできない(写真4)。

P85t_open
写真4.タブレットのこじ開け作業。P85Tは側面下側から50mmの箇所にヘラを差し込み拠点にするとよさそうだ。

また、この作業に入る前に注意したいのが、SDカードの取り出しだ(写真5)。SDカードが入ったまま無理やり開けようとすると、SDカードホルダを壊してしまうので、要注意だ(写真5)。

Sdcard
写真5.SDカードは忘れずに抜いておくこと!


もう一つ気をつけたいのが、スイッチのところに付いている樹脂製のスイッチボタンだ。これを折ってしまったり、なくしたり、再度蓋を閉めるときに入れ忘れないように注意が必要だ(写真6)。


P85t_sw
写真6.プラスチックのスイッチパーツを無くしたり破損したり付け忘れたりしないよう注意。


今回入手した電池のコネクタは5PINで、1ピン少ないため、抜けやすくなっている。抜けないようにセロテープなどで補強するといいかもしれない。新しい電池を装着した様子を写真7に示す。ちょっとピンボケになってしまった。申し訳ない(^-^;

P85t_all
写真7.新しい電池装着の様子。コネクタリードが長いので、うまく収まるようにループさせる。


そういうわけで、これであと1年くらいは使えるのではなかろうか(^-^)


| | | コメント (0)

« 2025年11月 | トップページ