🗐 電装工芸日記 - 舞台照明機器の製作とか -

今年は開発案件を進めたい

or 管理画面へ

全年全月7日の投稿[45件](5ページ目)

2022年3月 この範囲を時系列順で読む この範囲をファイルに出力する

Icon of admin
 RaspberryPiからレガシーDMXを出力する方法を妄想しています。
 直接出すのは無理があります。UARTはありますが、2系統出すのが関の山。BreakTimeも出しにくい。
 ならば、RaspberryPiからはSPIで出力し、PICで250kbpsのUARTに変換するのがいいかなと。

 RaspberryPiからCS(チップセレクト)を使ってPICを選択するのがノーマルな方法ですが、レガシーDMXを出来る限り数多くだすには効率が悪い。SPIを休みなく送りつけたらPICは処理しきれませんので1ワード毎に休み時間を入れないといけない。また、PIC1個毎に一気にデータを送り付けるにはPICがデータをキャッシュ出来なければなりませんが、512バイト以上のメモリを持ったPICは選択肢が少なくピン数も多い。
 しかるに、SPIを普通に使ったら2系統扱うのが限界だと思われます。

 で、考えた方法が、複数のPIC(レガシーDMX1系統に付き1個使用)がRaspberryPiから1個に見える方法です。
 RaspberryPiからは複数のユニバースのデータを適切に並べ替えて一気に送出します。RaspberryPiにとっては一番ストレスが無い方法です。
 もちろんPICはこれを捌くことが出来ませんから、RaspberryPiとPICの間に仕掛けを入れます。

 SPIはクロック同期型の送信方法ですからデータ線の他にクロック線があります。受信はクロックによって実行されますので、CSがアクティブでも、データ線に変化があっても、クロックが伴わなければ何も起こりません。通常ならCSを用いて受信先を決定しますが、クロックの出力先を仕分けても同じことです。
 送信が始まって1から8カウントの間は1番目のPICへSPIのクロックを送り、9から16カウントの間は2番目のPICへSPIのクロックを送り・・・以下末番のPICまで繰り返します。RaspberryPiから送信があっても、クロックが行かない受信器にとってはワードとワードの間の休み時間でしかありません。
 これなら、送信するRaspberryPiからはPIC達が1個に見え、受信するPIC達には自分宛のデータがだけが届きます。RaspberryPiが休みなく送信してもPIC側は他が受信している間に処理を進められますし、RaspberryPiの送信タイミングが適切であれば受信したSPIのデータをUARTに渡すだけでPIC内でのスタックは不要です。ピン数が少ないPIC12F1822でも対応可能ということ。

 これを実現するクロックの仕分けは汎用ロジックICで行います。
 バイナリカウンタ74HC4040
 3to8 ラインデコーダ TC74HC138
 この二つです。
 数日前はGALを使おうかと思ったのですが、16ピンの汎用ロジック2個で可能ならこちらの方がいいかと。ファームウェア書かなくていいし、安いし、30年以上確実に動くし。

 バイナリカウンタはクロックをカウントして2進数相当の出力をするICです。これにSPIクロックを入力し、下から4~6bit目の出力を使います。SPIクロックの8倍周期でカウントされる3bitのバイナリと見なせます。
 8倍周期の3bitのバイナリをラインデコーダに入れます。ラインデコーダは入力された3bitのバイナリに相当するピンだけ出力します。このデコーダにSPIのクロックも入れれば8カウント毎に送り先が切り替わるクロックが出力されます。
 SPIのモードは74HC4040の特性に合わせてmode3がよいと思われます。

 文章で伝わりにくいのは承知していますが、アイデアがまとまってスッキリした。
 オレメモってことで。

 整理しきらないとモヤモヤして本業が手に付かなかったので回路図を描いてみました。気分スッキリ。
 折角なので揚げてみました。
 クリックして表示されるモノはぼやけてしまいますので、回路を追いたい方はサムネのリンク先の画像本体をダウンロードして見てください。
20220307150548-admin.jpg
 追記
 回路図に間違い発見!
 74HC4040のCLKにはSPI_CLKが入らないといけません。
 74HC4040から74HC138のA,B,Cに行くのもQ4,Q5,Q6です。なら74HC4020でもいいな。
 データは手直ししましたが、ここに再アップするのは面倒。まぁいいか。

 さらに追記
 クロックカウントの考え方が根本的に間違っているような気が・・・74HC4040(4020)のカウントの進み方がズレてね?最初のビットをサンプリングする前に1カウントされてしまうぞ。
 ならばSPIをmode0で使えばいいか?mode0ならアイドル・ローだから74HC138ではなく74HC238か?
 考え直し。

#電子工作 #RaspberryPi

2022年2月 この範囲を時系列順で読む この範囲をファイルに出力する

Icon of admin
 ANSIエスケープシーケンスは何とかモノになりました。
 画面の試作段階ですから受信データを表示することは出来ませんので、仮のnumpy.arrayを加算し続ける処理で動きを確認しています。インクリメントした値の256の剰余(割った余り)です。
 チラつくことなく求める動作をしていますし、画面処理の負荷は(topにて)7%くらい。いいんでないか?
 ちなみにpi4のCPUは4coreなので、topコマンドでの最大値は400%です。

 この後はArt-Netの受信とキー操作です。

 Art-Netはsocket通信で受信したパケット(バイナリ)を適切に変換してデータ化するだけです。通信の難しいことはライブラリがやってくれるので、たぶん、それ程難しくはないと思います。
 キー入力は最終的なコマンド実行までどう持っていくかです。様々な手順が考えられますが、どうやるのがいいかよく考えてみましょう。

#RaspberryPi #Python
Icon of admin
 ANSIエスケープシーケンスのチラつきの原因がわかりました。
 行削除です。コードは'\033[2K'。
 上書きしないと文字が消えないので行を削除してから書いていたのですが、消すのではなく空白で上書きすることで解決しました。
 いやはや。

#RaspberryPi #Python

2021年12月 この範囲を時系列順で読む この範囲をファイルに出力する

Icon of admin
作っても作っても課題が終わりません。
今はちょっと大きな木箱を修理しています。
屋外に置くPCのケースですが、湿気でやられてしまったので防水をやり直しです。

#ガチ工作

2021年11月 この範囲を時系列順で読む この範囲をファイルに出力する

Icon of admin
昨冬のライトアップが今期も開催されることになり、プロジェクションマッピングで使うプロジェクタのケースの改造を始める。ごく普通のプロジェクタを屋外に2か月設置する無謀を何とかするために作った箱。
前回は誤魔化したもののクーリングが不足。オーバーヒートでプロジェクタが止まって夜中に呼び出されるのは面倒なのでクーリングのパワーアップが必要。
そのためには外気を取り入れる送風機をどうしにかしないといけない。
前回はハンドブロアを使ったけれど十分に冷える送風をすると騒音的にダメ。既製品のブロアファンを使えば簡単だがコスト的に無理。
なので、ハンドブロアからフィンと少しの部品を流用しオリジナルのブロアファンを作ることにした。3Dプリンタで取り付け具を作り、中華互換品のRS775モータでファンを回す方針。試したところ風量は豊かで静圧も高い。無音ではないが十分に許容範囲な騒音。
問題はRS775モータとフィンを繋げる方法。既製品で都合の良いものなどあるわけがない。
仕方ないので、ホームセンターで鉄の丸棒を買ってきて卓上ミニ旋盤でシャフトを削り出す。
作るのは問題ないけれど、卓上ミニ旋盤では鉄製品の切削に時間がかかる。1本削るのに1時間半近くかかる。ガチなマシニングセンタなら1-2分、その筋ならどこにでもある汎用旋盤でも15分くらいで削れる製品なのに・・・
15本必要だけど丸2日かけて現在12本。明日も半日は作業だわな。
シャフトが出来ても箱本体の改造という本丸がある。あと何日かかることやら。幸い11月は現場が少ないので現地施工に間に合いそうではあるが・・・
客席テーブルを進めたいがしばらくお預けである。

#ガチ工作

■思ってみた

春ですねぇ~。
花粉症の部下は死にそうですが、暖かいってのはいいことです。

編集

■全文検索:

複合検索窓に切り替える

■複合検索:

  • 投稿者名:
  • 投稿年月:
  • #タグ:
  • カテゴリ:
  • 出力順序:

■日付検索:

■カレンダー:

2022年3月
12345
6789101112
13141516171819
20212223242526
2728293031

■カテゴリ:

■最近の投稿:

最終更新日時:
2025年4月29日(火) 20時16分48秒