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

能登半島地震で被災された方々にお見舞い申し上げます。

or 管理画面へ

全年全月26日の投稿(時系列順)[30件](2ページ目)

2022年7月 この範囲を新しい順で読む この範囲をファイルに出力する

Icon of admin
 クロックストレッチングについて改めて調べましたが、最新のRaspberryPiで治っている情報はありません。
 2022年7月現在、Broadcom社製のBCMシリーズを使ったRaspberryPiは総じてダメなようで、ソフトウェアデバイスであるi2c-gpioを使うのが有効な対策だと思います。
 もちろん、ハードウェアデバイスに比べたらCPUに負担がかかるので、CPU負荷が多いシステムやI2Cメモリなどの扱うデータ量が多いデバイスでの使用は避けるべきかもしれません。
 あくまで、扱いデータ量が比較的少なく多少の遅延が発生しても支障がない機内通信で使うのがよいと思われます(I2Cはそもそもそういうモノらしいですけど)。

 今回はPICをインターフェースとして用い、パラレルバスのLCDキャラクタディスプレイ(SC1602やSC2004を用いた製品)をI2Cで接続しANSIエスケープシーケンスっぽいASCII文字列で制御できるシステムを目指します。
 もちろん、UART(シリアル)でも動く様に考えます。8PのDIPスイッチを取り付け、1PでI2C/UARTを選択し、残りの7PでI2CのアドレスやUARTのビットレートを設定できる様にすれば汎用性が高まるでしょう。

#RaspberryPi #電子工作
Icon of admin
 RaspberryPiのハードウェアI2Cをマスタにしてどうにかならないかと考えてみました。
 BFで送受信の終了を監視し、SSPIF(ACKの終了)を監視してCKPをセットすれば良いっちゃ良いのだけど、不可能ではないけど面倒くさい処理の典型と化します。
 クロックストレッチングを使わなくても(ACKの直後に次の送受信が始まっても)動く様にしておけばよいのはわかっていますが、PICのI2Cはクロックストレッチングが前提の構成(特にスレーブ送信)だし、RaspberryPiに限った問題なのでi2c-gpioを使ってクロックストレッチングを用いた方が素直な気がします。i2c-gpioが凄い足かせになるワケでもないようですし。

追記
 どうにもモヤモヤするのでクロックストレッチングを使わない方法を考え続けてみました。帰りの車中は考え事に最適です。
 条件を整理します。RaspberryPiのI2CがクロックストレッチングをしてくれないのですからPIC側の条件です。
 タイミングチャートを読みますと、ACKのクロック(ワードの9クロック目)の立下りで割り込みフラグSSPIFがアクティブになった後、次のワードの最初のクロックの立ち上がりまでに送受信のコンディションを整えられれば何事もなく次のワードが扱えるようです。これはSSPIFで割り込みが発生してから半クロック分の時間が使えるとも言えます。I2Cのビットレートは一意ではありませんが、標準的なビットレートである100kbpsに限って考えるなら半クロックは5usec。32MHz動作のPICなら40命令ステップに相当する時間です。
 PICは割り込みの入りと出にパイプラインロスが発生するのでそれぞれ1命令ステップが消費され、I2CのクロックとPICの動作クロックは同期していないし信号の立ち上がり立下り時間もあるので2命令ステップくらいの誤差は起こりえます。となると実処理のために使える命令ステップ数は最大で36程度です。
 ザックリと考えるならSSPIFで割り込みに入ってから30命令ステップ以内に送受信コンディションを整えて割り込みから抜ければよいのでは?となる。
 30命令ステップあれば書き込み(RaspberryPi→PIC)は間に合いそうです。
 I2Cは1フェーズ内では読み出しか書き込みかどちらかしか出来ませんので、Pythonの読み出しコマンド(PIC→RaspberryPi)はI2Cにおいて2フェーズ(1つ目のフェーズでコマンドや読み出すアドレスを書き込み、2つ目のフェーズでデータを読み出す)で実行されます。すなわち、PICが受け取ったワードをキーに処理して次のワードで即応する必要はありません。受け取るだけ受け取ってから処理をし、次の返信フェーズに備えればいいのです。もし鬼連続でコールされても2つ目の読み出しフェーズでデバイスアドレスを送受信する時間は返信データを作るのに使えます。1ワードは9bit分ですから100kbpsなら720usecです。足りる足りないではなくこの時間で済むように作ればいいのです。つか、PICにとっては5,760命令ステップに相当する時間です。私はPIC16をアセンブラで書きますが、5000ステップ以上の処理など書きたくもない・・・。
 割り込みベクタが一つしかないPIC16系で多重割り込みをするとI2Cのタイミングを外す可能性があります。他の処理はポーリングとなりますが、DMX512の送受信や位相制御のトリガー処理もポーリングで十分間に合っているので問題ないっしょ。むしろPIC1個にそんな沢山の仕事させるなってね(笑

 あれ?クロックストレッチングを使わないで組めそうな気がしてきた。

 なんのことやらオレメモ暴走独り言ですみません。

#RaspberryPi #電子工作
Icon of admin
 ようやくですが、138度の低融点ソルダーペーストでリフローを試してみました。
 熱電対温度計で計測しながらの作業です。

 まず100度設定でオーブン自体の予熱。外装が暖かくなるまで行い、庫内温度が85度くらいになるようにする。
 物を入れてダイヤルを140度にし、庫内温度が100度になるまで待つ。
 庫内温度が100度になったらダイヤルを100度にし90秒計測開始。この間、庫内温度が100~110度を維持する様に操作する。
 90秒経ったらダイヤルを180度にし、ソルダーペーストを観察。
 庫内温度が150度近くになるとソルダーペーストが熔け始めるのがわかる。
 庫内温度が160度になったらダイヤルを100度まで下げ20秒計測開始。この時間ならヒーターの残熱で庫内温度が上がるくらいですが、160~170度を維持するように操作。180度は越えない方がいい。
 20秒経ったら(30秒を越えない様に注意)オーブンの電源を落としフタを開いて冷却。
 素手で触れるくらいに冷めたら完成。

 ハンダの溶ける様が分かりやすいので思ったより簡単で、前回の様にLEDの樹脂が変形することなく綺麗にハンダが付きました。
 185度のソルダーペーストと違い部品の耐熱温度に対して十分に余裕のある温度ですから、高すぎず長すぎずに注意しながらも十分に余熱をし、160~170度20秒間をキッチリやればよいようです。予熱後から最高温度までの過程はオーブンの成り行きに任せてOK。部品を100度以上の環境にさらす時間は3分以内ってイメージも大事かもしれません。

#ガチ工作 #電子工作
Icon of admin
 リフローは基本が見えたので、棚上げになっていたSPI-DMXの組み上げも可能になりました。
 これは表面実装部品を多用しているのでリフローの条件が整わないとどうにもならなかったのです。
 リフローでこれに付ける部品はチップ抵抗とチップコンデンサですから温度条件は比較的緩い。185度のソルダーペーストでも部品は持つと思いますので、138度のを使えば比較的簡単に出来そうです。

 このSPI-DMXはRaspberryPiからレガシーDMXを出力するためのインターフェースです。PICのファームウェアを書かなければなりませんし、トリッキーな処理の検証もあるので完成まで時間がかかりますが、最終的にはArt-Netデコーダになるので速やかに進めたいですね。LCDディスプレイモジュールをI2C化するのもこれに使いたいからだったりしますが・・・。

#電子工作

2022年8月 この範囲を新しい順で読む この範囲をファイルに出力する

Icon of admin
 RaspberryPiを32bitOSにしてチェックし直しました。何をやっても安定してます。
 まだしばらくは32bitOSでいきましょう。

 今はRAID1の設定と操作を色々試しています。RAID1を構成するには何かと時間がかかりますが、コマンド操作は少なく待ち時間が長いだけなので、本業が忙しい時には丁度良い作業です。
 RAID1をHDD2台で構成していますが、交換手順を試しておかないといけません。PCマザーのSATA直刺しで使うことはありましたが、RaspberryPiに接続した裸族のカプセルホテルでRAID1を使うのは初めてだからです。
 ディスクの入れ替えが容易に出来ればRAID1の扱いは一人前と言っていいのかな?

#サーバー #RaspberryPi

2022年9月 この範囲を新しい順で読む この範囲をファイルに出力する

Icon of admin
 先日Googleマップを使っていて疑問がありました。
 高速道路を使って現場に向かっていたのですが事故で通行止め。現場に支障はなかったものの30分ほど遅刻。
 ただ、Googleマップには通行止め表示はなく、高速道路を使ってあと何分と表示が出ていました。
 道路公団とGoogleマップがリンクしていないので通行止めの表示が無いのは理解出来るのですが、所要時間が出ていることが不思議。

#雑談
Icon of admin
 クリアカムのパワーサプライを増やそうと中華電機に部品を頼んだのですが、10月3日入荷予定の物が9月中に届いてしまいました。
 早いにこしたことはないのですが、良くも悪くも到着日が予想出来ません。遥か彼方から安い送料で送られてくるので運次第なのかな?

 届いたのはプラケースです。タカチ電機さんの汎用ケースを使うことが多いのですが、最近はシンプルで丈夫な製品が廃番傾向にあるため、試しに中華電機に頼んでみたのです。
 中華電機で550~1,000円で販売されている汎用ケースです。見た目や寸法精度は可もなく不可もなく、価格ナリってところでしょうか。強度はもう少し欲しい気もしますけど、合わせ目に補強を入れればいいかな?
 余談ですが、中華電機では同じ製品でも販売店によって単価が倍以上違うことがあります。特に低単価の小物にはこの傾向が強いのですが、単価が安いところは送料が高く、単価が高いところは送料が安いので、単価に惑わされず総額に注意するべきです。関税も注意ポイントですけど。

 XLRコネクタの前にリセッタブルヒューズを入れるなどの過電流対策は必要だと思いますが、クリアカムのパワーサプライの中身はDC24vの安定化電源に抵抗2個とコンデンサ1個で構成するターミネーターを取り付けるだけです。シンプルです。
 安定化電源の品質が定在ノイズの有無に直結するので出来るだけ良い物を使うべきですが、この辺りはお財布と相談ですね。
 あとは、筐体を作る工作力次第。

#電子工作 #舞台の小物

2022年10月 この範囲を新しい順で読む この範囲をファイルに出力する

Icon of admin
 段取りモノやら作り物が伴う現場が毎週の様に続いています。
 んで、上流の奴らは自分の段取りが追いついていないことを「なんとかしといて♪」と投げてきやがる。
 一晩寝ればほぼ回復・・・とはいかないお年頃ですので心身が悲鳴を上げています。特に精神的な胆力の落ち込みが酷い。
 コロナが抜けた感じでイロイロやりたいのはわかりますし、売り上げを得られることは有難いことですが、限度ってものがあります。
 12月の下旬まで持つかな・・・。

 趣味の製品も作り進めたいのですが、カラダにムチ打って取り組む様では趣味の製作とは呼べません。

 120%愚痴ですが、ちょっとシンドイ今日この頃。

#雑談

2022年11月 この範囲を新しい順で読む この範囲をファイルに出力する

Icon of admin
 ちょっと過労気味です。
 アドレナリンを出せば瞬間的に動くことは出来ますが、気を抜くと立ち眩みが起こることもしばしば。
 ヤバイ。

 ですが、出てしまったアイデアを試さずにいることはモヤモヤして気持ちが悪い。
 このところ客席に卓を据える現場が続いているので客席テーブルを使うことが多いのですが、テーブルとしてはとても良いものの重い。改造に改造を重ねてきたので余計な重量が加わっていることはわかっているのですが、全く同じ物を新造しても十分な軽さになるとは思えません。機能や強度を損なわず十分に軽くできないか。
 ひょっとしてのアイデアですが、スタイロフォームを薄合板でサンドイッチしたら軽くて強い板材にならないかと以前から夢想していたのですが、今回の解決策になりそうな予感がして試しかったので、現場上がりの深夜、ジャンク材料を貼りあわせてみたのです。スタイロフォームを芯材にしたモノコック板みたいと思いながらニヤニヤ。
 接着には木工用ボンドを水で薄めてローラーで塗布。水で薄めたので硬化には時間がかかりそうですが、数日先まで忙しいので丁度良いかも。
 どうやって脚を取り付けるかという設計上の課題はありますが、軽くて強度のある板材を得られれば新しいアイデアが出てくるかも。

#ガチ工作

2023年1月 この範囲を新しい順で読む この範囲をファイルに出力する

Icon of admin
 ダンプ表示のライブラリは出来ました。何の変哲もない16進数のカラム表示です。
 データ配列のポインタ、表示データ数、列数、行数、最上行値のポインタなどを引数にして関数を呼ぶと表示します。
 地味ですが、こういったライブラリがあると開発の効率が良くなるのでは?という想いで作ってみました。後でDMXデータを表示する画面を作る際にも同様のことをするので習作でもあります。

 以下オレメモです。
 ANSIエスケープシーケンスにおいてパラメータに変数を用いたい場合。

 // カーソルをx=10,y=5にして文字列を表示する
#define ESC 0x1B
int main(void) {
 int x = 10 ;
 int y = 5 ;
 printf("%c[%d:%dHカーソルを指定の位置に", ESC, x, y ) ;
 return 0 ;
}

 ※ このブログシステムでは#や[が機能文字扱いなので、上記ではこれらを全角文字で書いています。

 などとします。大昔のN-BASICの「LOCATE + PRINT」みたいなことをしています。
 printfの文字列中のエスケープを\eと直で書くと後に続く%dが機能しませんが、#defineで定義したESC(0x1B)を%cで読み込めば機能します。
 もちろん、printfのESCの位置に0x1Bと直書きしてもいいのですが、#defineした方が読みやすいと思います。

 C言語ではこういった不思議な記述が多いです。正規表現的でもありますが、バイナリ的な指向が各所に出てきます。
 アセンブラに慣れた身に違和感はありませんが、理解に苦しむ要素かもしれません。

#C言語

■当面の課題

花粉症シーズンも一段落したようで重傷者にも笑顔が戻ってきました。私は原始人なので花粉が酷い日でも鼻の中が埃っぽいなぁくらいにしか感じませんけど。
気温の変化が激しいようですので、みなさま健康管理には注意してください。

編集

■全文検索:

複合検索窓に切り替える

■複合検索:

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

■日付検索:

■カレンダー:

2022年7月
12
3456789
10111213141516
17181920212223
24252627282930
31

■カテゴリ:

■最近の投稿:

最終更新日時:
2024年5月19日(日) 23時11分32秒