2025年9月9日火曜日

2色 8×8 マトリクスLEDを使う(その7)

 これまで、買った15個のマトリクスLEDのうち5個を使って基板を作成しテストをしていたが、残り10個分の基板も発注し作成した。14個を連結して表示させてみたが特に問題なく動く。次の動画は10個連結した例である。

  

製作の過程で経験したのは、ハンダペースト+ヒートガンでSMD(表面実装部品)をハンダ付けする場合、ハンダ付け後急に冷やすと基板と部品の熱膨張率の違いによりハンダにクラックが生じて著しく信頼性が低下する事である。

せっかく効率的にハンダ付けが出来ても後で細かく補修する羽目になる。 これが老眼の目にはきつい。USB顕微鏡が欲しい所である。 あと、注射器タイプのペーストハンダを直接基板に付けたが斑になり均一な量を塗布できなかった(概ね多すぎた)。基板と同時にステンシル(ハンダマスク)も発注したほうが均一に塗布できハンダ付けは上手く行くだろう。但しその場合は基板作成の値段が跳ね上がる覚悟が必要だ。

最後に、定電流LEDドライバーのTB62706BFは意外と異常電圧に弱い。最近のIC、LSI類は設計が良いのか多少手荒く扱っても、一瞬逆電圧をかけても滅多に壊れないが、TB62706BFは簡単に壊れ数個をダメにした。具体的にはENA端子が絶縁破壊されGNDとの間の抵抗値が170Ω程度に下がり(正常なICは十数MΩある)動作が不安定になった。注意が必要である。

 秋月のアウトレットで安く入手した2色8X8マトリクスLED15個を使い終わったので、このシリーズは終わりとする。

(終わり) 

 

2025年9月4日木曜日

出入り検知器をPCB化する(その26) インテグレーション3

 暫く作業をお休みしていたが、これまで作った基板を組み合わせて、人の通行を感知して挨拶する挨拶ロボットを作る。

そこで新たらしく必要になるのがロボットを制御する方法、即ちサーボモータによるロボットの動作とメロディ・音声を同期させる手法及びその記述法である。最初のステップとしてインテグレーション1で作ったサーボ制御ユニットのコマンドを次の様に整理した。

    <nn>A - Rotate Ch.1 to direction <nn>.(<nn>=-90..0..90)
    <nn>B - Rotate Ch.2 to direction <nn>.(<nn>=-90..0..90)
    <nn>C - Rotate Ch.3 to direction <nn>.(<nn>=-90..0..90)
    <nn>a - Rotate Ch.1 <nn>degrees.(<nn>=-90..0..90)
    <nn>b - Rotate Ch.2 <nn>degrees.(<nn>=-90..0..90)
    <nn>c - Rotate Ch.3 <nn>degrees.(<nn>=-90..0..90)
    <nn>x - Set Ch.1 speed to <nn>.(<nn>=1..253)
    <nn>y - Set Ch.2 speed to <nn>.(<nn>=1..253)
    <nn>z - Set Ch.3 speed to <nn>.(<nn>=1..253)
    <mm>s - Set all speed to <mm>.(<mm>=1..253)
     <m>S - Set all speed to level <m>. (<m>=0..9)
        Z - Rotate Ch.1,2,3 to origin(0,0,0).
        > - Wait Idle
        $ - Abort
        e - Echo OFF(default)
        E - Echo ON
        i - Idling OFF(default)
        I - Idling ON
        v - Show software version.
        V - Show configuration data.
 

これらのサーボの制御コマンドは制御モジュールに後置記法(逆ポーランド記法)で与える。つまり改行を待たずアルファベットや記号のコマンドを入力した時点で即動作する。いちいち改行を入れる必要が無いので連続的な指示が可能である。 


 メロディや音声に同期してサーボユニットへ指示を行うための記法を次の様にした。

    [A:B:C](D)E 

 ここでサーボへの指示は[]の中に記述し、メロディは()の中に記述する。つまりAはサーボの事前処理、Bがサーボの動きの記述、Cがサーボの終了処理、Dはメロディ、Eが音声メッセージである。例えば、

    "[200sZ>5s:90A90C>-90A-90C>:$Z>](@j)ohayo" 

と記述すると、

  1. スピード200で原点移動、 その後スピードを5に変更(A部)
  2. 「@j」で定義されるメロディを演奏(D部)
  3. その後「おはよう」と発声(E部)
  4. 2,3を行っている間にチャネル1とチャネル3のサーボモータを原点から+90度へ、次に-90度へ回転(B部)
  5.  発声が終了するとともにサーボの回転を停止し原点へ移動(C部)

 のように動作する。こういった1行をイベント毎に用意し、実行すればよい。

 (続く)