TOP  >  なーお'nぶろぐ  >  なーお

なーお さんの日記  [ メールで投稿 ]

765件のうち531 - 540件目を表示しています。


[投稿日   ] [タイトル   ] [アクセス数   ]
4月
23 (木)
カテゴリー  経営
タグ  会計 会社

しまったぁぁぁぁぁ!

赤字だと思っていたのですが、会計上は損金経理でやっているので表面的に赤。 ところが法人税法上は、昨年分の法人税も本年の中間納税分も損金不算入。 :-o

ということで、税法上はめでたく利益が出て、今期も法人税・県民税・事業税・市民税を、そこそこ支払う事に。 :-(

基本的なことなんだけどねえ。頭ではわかってても、実際の数字を見るだけでは気づかなかった。

続きを読む | 閲覧(26507) 
2月
26 (日)
カテゴリー  オーディオ
タグ  スピーカー 測定

さてさて、ようやく重い腰を上げて 測定機材の準備を始めました。
本日部品手配を開始したところでして、マイクは長納期で全て揃うのは1ヶ月ほど先になりそうです。

1、マイク:
 その1  スピーカー測定に定番になってきた
      Behlinger ECM8000 : SoundHouseで¥6,800円(税込)
 その2 簡易測定用。コンデンサ型でファンタム電源不要式
      ELECOM MS-STM55 : ネットで約¥900円

2、サウンドカード
 現行使用中のノートPC内臓はサウンドのF特が悪く、LINE入力
 も無いのでサウンドカードを新たに物色。
 上記Behringerマイクはマイクプリを通してLINE入力に。ELECOM
 マイクは直接マイク端子に入れる。
 汎用性を考えてノートPCでも使えるように、USBタイプを選んだ。
 ノートPCなら屋外での(無響室互換として)測定にもフットワーク
 が良い。また、あまり中途半端な仕様のものだとマイク端子
 だけでLINE入力がなかったりしたので、割と大きな出費となって
 しまった。
    Soundblaster Live! 24bit External : ネットで約¥8,000円

3、マイクプリ(ファンタム電源付き)
 オヤさんのブログをそのまま参考にして自作することにした。
 何しろ普段仕事で圧着工具を手にして制御盤内結線の手直しなど
 をすることはあっても、電子工作は苦手で(25年ぶり?)、 回路の
 意味を理解することから始めたので、千石電商のネット通販での
 部品手配もままならない。
 迷ったのがOPアンプ。 「何でも大丈夫」かと思ったのだが、一応
 動作的に互換であって、更に録音に使うかもしれないことを考え
 て音質の良いものに。
・ OPアンプ TI NE5532P : ¥210円
・ アルミケース タカチ電機工業   MB?3 : ¥600円
・ 抵抗その他、基板、XLRメスジャック、ピンジャック、006P電池
  スナップなど・・・通販だと最低ロットが10個だったりして、意外
  に高くついた。  総額¥4,000円くらい。
・ マイクケーブル
  XLRオス?メスバランス、5m :YAMAHA YBC05 : ¥2,050円

と、結構な出費ですが折角の趣味なので本格的 + 電子工作の
事始め的に楽しもうと思っています、ハイ。
将来的には、球AMP自作も視野に。(笑)

コメントあり 3  |  続きを読む | 閲覧(26560) 
8月
23 (土)
カテゴリー  Business
タグ  仕事 Motion FA

先日、機械屋脱却宣言をしたところだが、早速 近所の工場から電話が入り、緊急対応を要請された。

以前、前職場で作った仮想モードのソフトを、今回Qmotionへ置き換える仕事で、うまく行かないので来てほしいとのこと。 さて、どうなることか。
***
詳しい状況は書けないが、大きなメカが大きく振動して床が揺れていた。

1年も実践から離れていたのでmotionの勘を取り戻すのに時間がかかったが、共有メモリの設定ミスと、演算周期の設定の問題で、位置指令抜けが発生しているのが原因であった。

現場では散々悩んでいたようだが、嘘のようにスムーズに動くようになって感激された。

「仮想モードを安易に考えてはいけません。悩む前に私に相談してください」 (もちろん真意は、最初から私に発注してください、ということ。) と言っておいた。 :-D

久しぶりに自分の庭に戻ってきたような感じで、とても楽しく仕事ができた。 この続きは、また来週に続行。 やっぱりこれでなくっちゃ。

続きを読む | 閲覧(26639) 
8月
31 (水)

工場設備のソフト製作には様々な課題があるけれど、技術論や精神論を超えたところに「まず動くようにすること」の重要性がある。

久しぶりに、simulatorと向き合って仕事をすることになっているので、今日はこの話題にお付き合いください。

simulationを行うことは、実際の立ち上げ業務を速やかに行うために今や非常にウエイトが高いといえる。 5年前にシーケンサのシミュレータ という記事を書いたときにはまだまだ認識が低い人も多かったが、最近では「少なくともシーケンスとタッチパネル間のバグアウトくらいはsimulationかけておいてね」が常識になりつつある。

一昔前になるが、豊田スタジアム のソフト作成・現場仕様変更には、物を動かすまでテストができない状況もあり、simulatorが大変強力な武器であった。 ただ、この時の方式はsimulatorそのものをVisualBasicで作ったので、応用性とか 他のメンバーによる改造には不向きなシステムだった。。

現在携わっているのは、ブラックボックス化された古い制御装置のレトロフィット(置き換え)の案件。 この場合、「今まで動いていた装置」であり、置き換え後に許される立ち上げ時間は短く、そしてバグによって機械を壊すことは即生産阻害に繋がる。
まさにsimulatorに期待される場面なのだが、今回はできるだけ簡便に、且つ改造が容易な方法でやってみた。
t_0050c49535c90b1baef96236eaf6b9ced4.jpg画像のように、制御装置のシーケンサと通信するポスト通信アプリケーションをVB.netで作ってPC上で動かす。一方で同PC内で実体の無いsimulator側シーケンスをGX-simulator上で稼働させ、電磁弁・シリンダモデルや、サーボ位置モデルを動かして、結果をポスト通信アプリ経由で実シーケンサに返すもの。

このようにしておけばsimulator自身はシーケンスで書けるので誰でもメンテできるし、実ソフトとsimulatorは完全分離できるため転用性も向上する。

t_0181648a330076a6f4e613ba0a920ddf02.jpg
USBディスプレイアダプタを購入し、3画面体制

ということで、9月に制御盤出荷予定の案件で、これを十分に活用してソフト製作に取り組んでいる。 simulatorソフト製作は案外面倒で、バグアウトが目的なのかsimulator製作が目的なのか、わからなくなることもあるのだが、今回の方法が今後のsimulation環境へプラスになることを期待している。

 # 自分の仕事の歩みは、simulatorとの付き合い方の変遷という部分も大いにある、と思うこの頃。

続きを読む | 閲覧(26646) 
11月
11 (土)
カテゴリー  Business
タグ  仕事 FA

いつも自社のITばかり紹介していてはブログの意味が無いので、たまには本業の話題を。 

(右の写真の右側です)

g4s3.jpg

 三菱電機の AJ65BT-G4-S3 (通称:G4-S3) を買いました。 CCリンク経由でリンク内PLCのモニタ/書き込みを行うためです。
 ずいぶん昔からG4ユニットはありましたが、Aシーケンサ限定のものでした。 2000年にQモードに対応した後継機種G4-S3が発売になりましたが、あまり使う機会はありませんでした。

 今回は、古い機械でAnAシーケンサで制御している装置の一部をQモーションに置き換えるもので、全体制御は今までどおりAnAで行うものです。
 当時のネットワークはMelsecnet2でしたから、Qシーケンサは割り込めません。 かといって、このためだけにNet10にするのも勿体無い。 → 必然的に、CCリンク(トランジェント通信を使用:下記注2参照)を採用となりました。

 また、新規制御盤と既存制御盤が離れているため遠隔読み出しできないと不便なのですが、生憎AシリーズのCCリンクではCPU経由での読み書きは出来ません。 G4-S3ユニットをCCリンクに割り込ませておけば、AシーケンサもQシーケンサも読み書きできます。(注3)

下の画像はGX-Developerの接続先指定のスクリーンショット。

setsuzoku.jpg

 AnAシーケンサでは通信速度が通常のCPU接続では9.6Kbpsですが、G4-S3を経由すると38.4Kbpsになります。 今となっては38.4Kbpsでも遅いのですが、9.6Kbpsはめちゃくちゃ遅いので この速度アップはばかになりません。 Qシーケンサ相手なら、115Kbpsで通信できます。

 現場の効率アップを考慮すると今回の案件だけでも十分ですが、1つ持っていれば今後も有益か(?) とも考えて購入に踏み切りました。
 今月一杯はソフトデバグやら盤メーカー・機械メーカー立会いなどの出張で手一杯の予定。 現地が終わったら、このG4-S3は外して持って帰ります。(笑)

** 注意

注1: G4-S3を使用して、古い大型AシリーズのPLCを読み書きする場合は、CCリンクマスタ/ローカルユニット(AJ65BT11)の機能バージョンB以降、ソフトウエアバージョンJ以降が必要です。

 資料: PDFファイル

注2: AnAシーケンサへのトランジェント通信は、デバイス直接指定はできません。 ランダムアクセスバッファメモリ経由となります。

注3: 実はまだ通信できていなかったりします。 構成に無理があるのか、三菱電機へ問い合わせをしてみます。 
→ 061126追記: AnAのユニットが古かったようでして、00年の別のユニットに交換したら通信できました。 これで38.4Kbpsで通信できます。(嬉)

続きを読む | 閲覧(26693) 
4月
26 (日)

 先日、出張の合間に自宅に戻ったときに、久しぶりにエア録音をやってみました。

 8.5cmのフルレンジらしい音質でしょうか。高域のちょっとした荒れや、低域は伸びていますがスパイラルダブルバスレフの緩さ、中低域の薄さはそのまま録れていると思いますが、音のフレッシュさは得難いものがあります。
https://youtu.be/FGtxHNq8L7M

オーディオシステム

  • Player:Raspberry Pi 3 Model B (RS版) + Volumio2.599
  • DAC:(Mshow Hifi Store) ES9038PRO USB DAC Amanero Combo384
     OP AMP換装 OPA627AU/OPA827AID
  • PreAmp:自作不平衡/平衡JFET(元設計:ペるけ氏)改
    アッテネータは使わず、DACのデジタルボリウムがかなり優秀で劣化を
    感じないため、そちらで絞っています。
  • PowerAmp:(hypex) UcD32MP
  • スピーカー:(自作塩ビ管スピーカー) トルネードフライ (ダブルバスレフスパイラル)
    • ユニット:Fostex FE88-Sol
続きを読む | 閲覧(26764) 
6月
14 (月)
カテゴリー  ソフトテニス
タグ  健康 ランニング 試合

今日は、年に2回開催のソフトテニスの杉並大会(クラブ戦)に大学のOBとして参加してきた。

ここ2か月の減量も成功し、止まっていた足の動きが復活。 ボレーの成功率が下がってきたのが少々不安材料であったが、足でカバーできるさ、くらいの気持ちでいた。 髪も染めて(笑)若い気持ちで臨んだが。。
パートナーは現役で一番ストローク力のある後衛と組ませていただき、2試合に出場。1試合目は相手のレベルが高すぎて完敗。2試合目は勝てる相手・勝てる試合であったのだが、後衛の頑張りだけでは接戦を制せなかった。

ボレーの成功率は、2割程度であっただろう。 触ってもミスか、落とすだけしかできずに決まらずグシャグシャになって結局相手のポイントに。 触ったボールの半分でも決めていたら、すんなり勝てていたはずだ。

今回の自身のプレーを冷静に評価してみる。

  1. 足の動きに頼る気持ちが強すぎ、ここ数年減っていた余分な動きが復活。 自制できずに要らんところでサイドやミドルを抜かれ、後衛の守備範囲を広げてしまった。
  2. 減量のトレーニングで体が軽くなり、動きが早くなったぶん、相手がボールを打つ瞬間に眼がブレて軌道の認識が遅れ、ラケットにきちんと捉えられないことが多かった。
  3. 減量で足腰は強化された反面、上半身の筋力が下がってしまい、あれほど軽量なラケットなのに思い通りに扱えなくなってしまった。
  4. 成年・シニアの試合に慣れてしまって、速いボールに対応できない体になりつつある。。
  5. 入れるだけの1stサーブはやはり辛い。2試合でダブルフォルトが無かったのが唯一の救い。

まことに不甲斐ない出来で、パートナーにも応援している皆さんにも申し訳なかった。
今後は、上半身の筋力維持にも努めてみようと思う。動体視力の維持も重要。 べち君に今日も助言いただいたテニススタイルの変更は尤もではあるのだが、(今更ということもあって)なかなか難しい。 (身長の無い前衛ゆえ、ポジションを取るだけでは相手にプレッシャーを掛けられないという宿命も大きい。)

なお、自分も含め他の皆さんの試合、それぞれに楽しんでできのではないかと思う。 毎度この場を提供してくれる幹事さん、ありがとう。

コメントあり 2  |  続きを読む | 閲覧(26888) 
6月
30 (月)
カテゴリー  マイコン
タグ  mbed プログラム デバイス C/C++

まずは現物から

  • LPC1114FN28とFT232RL USB/serialコンバーターで、シリアル通信+サーボモーターを回してみる。
    t_00215f18aa1dcaf25bbcdb400acb72dfcb.jpg
    以下、準備から実際のプログラムソースまでメモっておきます。

まず頭に入れてくべきこと anchor.png

準備したもの anchor.png

    • mbed対応のマイコン。今回は、LPC1114FN28 を、秋月電子で購入。 1個たったの120円!(税込)
    • USB-シリアル変換モジュール FT232RL 秋月で購入
    • Arduinoスターターキット SGK-ARD-KIT 千石電商で購入 arduino uno 付きで4,940円。 arduino unoの他に付属のセット品が色々入っていて、初めてには良いですね。 arduinoからいじり始めてみたものの、mbedを教えていただいたら断然そちらが面白くなってます。

配線 anchor.png

  • 参考
    • mbed LPC1114でLチカしてみた(1):しなぷすのハード製作記
       マイコンとFT232RLの接続が参考になります。 プログラムを書き込んだあとリセットしなくても済みます。 なお、書き込みソフトはこのページの要領ではなく、LPC1114限定で下記ページのものが使いやすいです。
    • mbed LPC1114でLチカしてみた(2):しなぷすのハード製作記
       LPC1114限定で「LPCISP」というソフトを公開しておられます。USB/serialコンバーター経由で一発書き込み、即座にリセットが働くので、楽ちんです。
      LPCISP.jpg
  • ハード図
     ブレッドボードを使うとテストは楽にできるけど、一度バラしたら再現するのが面倒になっちゃいますんで、ちゃんと図面を書くクセをつけたいですね。今回は資料への使いまわしがしやすいようにEXCELでこんな感じで書いてみました。
    • LPC1114のLED回路はソース出力(PNP)でプラスコモン、FT232RLのLEDモニタ回路は、シンク出力(NPN)でマイナスコモンになっているみたいで、ちょっと混乱します。
       工業用制御部品に関していえば、日本国内やアジア圏ではシンク(NPN)でマイナスコモン、欧州ではソース出力(PNP)でプラスコモン が多いですが、欧州への輸出時にはCEマーク表示の関係で本質安全の考え方から必ずPNPにしないといけなくなるため、国内でもPNPへの変更が徐々に進んでいる・・ のかなあ?
       組み込み部品での状況は全くわからずです。
mbed_UART_SERVO.jpg
00215f18aa1dcaf25bbcdb400acb72dfcb.jpg

プログラム anchor.png

 mbedはarduinoと違い、ほぼ素のC/C++で書けます。 オンラインコンパイラでビルドが通ったプロジェクトをエクスポートして、外部のIDEで編集・コンパイルできることからもそれを実感できます。

 とはいえまずはオンラインコンパイラで。

mbed_WorkSpace.jpg
使用ライブラリ anchor.png
  • Servo
     mbedのオンラインコンパイラ上の「Import」でキーワード「Servo」で検索し、sford cstyles さんの mbed R/C Servo Libraryを試しに使ってみました。
  • MySerial
     自作ライブラリ MySerial です。mbed標準のRawSerialクラスを継承し、受信文字列のchar配列格納を簡単にできるようにしてみました。 現時点でのソースを貼っておきます。
    • GetString メソッドは、テンプレート化でオーバーロードしてあり、引数にポインタ変数指定でも char配列指定の参照でも使えるようにしました。
    • Wait時間の設定を追加してあります。
       その他APIは、こちらを参照
    • MySerial.h
      Everything is expanded.Everything is shortened.
       1
       2
       3
       4
       5
       6
       7
       8
       9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      23
      24
      25
      26
      27
      28
      29
      30
      31
      32
      33
      34
      35
      36
      37
      38
      39
      40
      41
      42
      43
      44
      45
      46
      47
      48
      49
      50
      51
      52
      53
      54
      55
      56
      57
      58
      59
      60
      61
      62
      63
      64
      65
      66
      67
      68
      69
      70
      71
      72
      73
      74
      75
      76
      77
      78
      79
      80
      81
      82
      
      -
      |
      |
      |
      |
      |
      |
      |
      |
      |
      !
       
       
       
       
       
      -
      |
      |
      |
      |
      |
      |
      |
      |
      |
      |
      |
      |
      |
      |
      |
      |
      |
      |
      |
      |
      |
      !
      -
      |
      |
      -
      |
      |
      |
      !
      |
      |
      -
      |
      |
      |
      !
      |
      |
      -
      |
      |
      |
      |
      !
      |
      |
      -
      |
      |
      |
      |
      !
      |
      -
      |
      !
      |
      |
      |
      |
      |
      !
       
       
      
      /** mbed Serial Library extend RawSerial
       * Copyright (c) 2014 Naoki Okino
       *
       * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
       * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
       * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
       * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
       * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
       * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
       * THE SOFTWARE.
       */
      #ifndef MBED_MYSERIAL_H
      #define MBED_MYSERIAL_H
       
      #include "mbed.h"
          
      /** MySerial control class, based on a RawSerial
       *
       * Example:
       * @code
       * #include "mbed.h"
       * #include "MySerial.h"
       * 
       * MySerial pc(USBTX,USBRX);   //instance of MySerial Class
       * char cWord[16]; //receive chars  or cWord[256], cWord[1024] etc..
       * 
       * void readbuf()
       * {
       *   // int iRtn =  pc.GetString(6,&cWord);    //Serial received chars by pointer cWord
       *    int iRtn =  pc.GetString(6,cWord); //Serial received chars byref of cWord
       * }
       * int main() {
       *    pc.baud(9600);                  //set baud rate
       *    pc.format(8, MySerial::None, 1);//set bits for a byte, parity bit, stop bit
       *    pc.SetRxWait(0.01, 0.001);       //set wait getting chars after interrupted, each char
       *    pc.attach( readbuf, MySerial::RxIrq );    //Set Interrupt by Serial receive
       * }
       * @endcode
       */
      class MySerial : public RawSerial{
          
      public:
          /** constructor to get chars received by serial
           * 
           * @param PinName tx
           * @param PinName rx
           */
          MySerial(PinName tx, PinName rx);
         
          /** set wait getting chars after interrupted
           * 
           * @param float _fRxStartWait wait getting a 1st char after interrupted
           * @param float _fRxEachWait wait getting each char
          */
          void SetRxWait(float _fRxStartWait, float _fRxEachWait);
       
          /** function to get chars after received chars by serial
           * 
           * @param int size for get chars
           * @param *cWord returns got chars by pointer
           * @param returns success by 0
           */
          virtual int GetString(int size, char *cWord);
          
          /** overload function to get chars after received chars by serial
           * 
           * @param int size for get chars
           * @param cWord returns got chars by ref
           * @param returns success by 0
           */
          template <class X> int GetString(int size, X cWord)
          {
              return GetString(size, &cWord);
          }
       
      protected:
          float fRxStartWait;
          float fRxEachWait;
          
      };  /*  class MySerial  */
       
      #endif
    • MySerial.cpp
      Everything is expanded.Everything is shortened.
       1
       2
       3
       4
       5
       6
       7
       8
       9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      23
      24
      25
      26
      27
      28
      29
      30
      31
      32
      33
      34
      35
      36
      
       
       
       
      -
      |
      |
      !
       
       
      -
      |
      |
      !
       
       
      -
      |
      |
      |
      |
      |
      |
      -
      -
      |
      !
      |
      -
      |
      -
      !
      |
      |
      !
       
      !
      
      #include "MySerial.h"
       
      MySerial::MySerial(PinName tx,PinName rx):RawSerial(tx,rx)          //constructor
      {
          fRxStartWait = 0.01;    //wait getting a 1st char after interrupted
          fRxEachWait = 0.001;    //wait getting each char
      }
       
      void MySerial::SetRxWait(float _fRxStartWait, float _fRxEachWait)
      {
          fRxStartWait = _fRxStartWait;   //wait getting a 1st char after interrupted
          fRxEachWait = _fRxEachWait;     //wait getting each char
      }
       
      int MySerial::GetString(int size, char *cWord)            //by pointer
      {
          int i=0;
          int ichar;
          memset(cWord, '\0', strlen(cWord));  //initialise chars
       
          wait(fRxStartWait);
       
          while(1) {
              if(!readable())    {
                  break;
              }
              ichar = getc();
              if(i<size) {
                  cWord[i] =ichar;
                  //putc(ichar);
              }
              i++;
              wait(fRxEachWait);
          }
          return 0;
      }
メイン anchor.png
  • シリアルコマンド
    ただの実験なので、<STX><ETX>などの制御コマンドは一切無しです。(汗)
    • 「start」で開始
    • 「pxxx」(xxxは角度)で位置決め
    • 「stop」で停止
      です。
  • 受信の割り込みと、50ms定時タイマ割り込みを受けてメインで動作及びLチカさせてみました。
    • 割り込みのIRQ変数名は、シリアルが「UART_IRQn」、定時タイマが「TIMER_16_0_IRQn」でしたので、割り込み優先度や割り込み禁止を個別に管理できます。 この辺の定義は、こちらに全部書いてありますね。
  • まだ試していませんが、フロー制御を入れないと9600bps以外では取りこぼしが発生します。
  • ソース
    volatile のつけ方などわかっていないので、まだ適当です。
    • main.cpp
      Everything is expanded.Everything is shortened.
        1
        2
        3
        4
        5
        6
        7
        8
        9
       10
       11
       12
       13
       14
       15
       16
       17
       18
       19
       20
       21
       22
       23
       24
       25
       26
       27
       28
       29
       30
       31
       32
       33
       34
       35
       36
       37
       38
       39
       40
       41
       42
       43
       44
       45
       46
       47
       48
       49
       50
       51
       52
       53
       54
       55
       56
       57
       58
       59
       60
       61
       62
       63
       64
       65
       66
       67
       68
       69
       70
       71
       72
       73
       74
       75
       76
       77
       78
       79
       80
       81
       82
       83
       84
       85
       86
       87
       88
       89
       90
       91
       92
       93
       94
       95
       96
       97
       98
       99
      100
      101
      
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
      -
      |
      |
      !
       
       
      -
      -
      !
      !
       
       
      -
      |
      |
      -
      !
      |
      -
      |
      |
      -
      |
      |
      -
      |
      |
      |
      -
      |
      !
      -
      |
      |
      !
      !
       
       
      -
      |
      |
      -
      |
      !
      |
      |
      |
      |
      |
      |
      |
      |
      |
      |
      -
      |
      |
      |
      -
      |
      |
      |
      !
      |
      |
      -
      |
      -
      |
      |
      !
      |
      -
      !
      !
      !
      
      #include "mbed.h"
      #include "Servo.h"
      #include "MySerial.h"
       
      Servo myservo(dp18);
      MySerial pc(USBTX,USBRX);         //instance of MySerial Class
      Ticker timer;
      DigitalOut led2(LED2);            //alive check LED
       
      volatile int cntRx=0;
      volatile int cntRx_old=0;
      volatile int timeUp=0;
      volatile int timeUp_old=0;
       
      char cWord[6]; //receive chars  or cWord[256], cWord[1024] etc..
      char *pCword = cWord;    //pointer for cword
      const char ccStart[6] = "start";
      const char ccStop[5] = "stop";
      const char ccMove_[2] = "p";
       
      int readSize = 5;
      int doStatus;
      int iDeg;
       
      void atRx()
      {
          NVIC_DisableIRQ(UART_IRQn);
          cntRx++;
      }
       
      void atTimer()
      {
          //NVIC_DisableIRQ(TIMER_16_0_IRQn);
          timeUp++;
      }
       
      void readbuf()
      {
          pCword = cWord;    //pointer for cword
       
          //int iRtn =  pc.GetString( readSize, &cWord[0] ); //Serial received chars by pointer of cWord
          int iRtn =  pc.GetString( readSize, cWord ); //Serial received chars byref of cWord
       
          if(strcmp(cWord, ccStart)==0) {     // start
              doStatus=1;
              printf("started\n");
          } else if(strcmp(cWord, ccStop)==0) { // stop
              doStatus=0;
              printf("stopped\n");
          } else if(cWord[0]==ccMove_[0]) { // 1st char matches
              pCword++;                    // increment pointer to get after 2nd chars
              iDeg = atoi( pCword );
              printf("%d\n",iDeg);
          } else {                        //no action except for start/stop
              printf(" no match %s\n" , cWord);
          }
          if ((doStatus == 1) && (0 <= iDeg) && (iDeg <= 180)) {
              wait(0.01);                           // waits for the servo to get there
              myservo.position(iDeg - 83.0);
          }
      }
       
      int main()
      {
          pc.baud(9600);                  //set baud rate
          pc.format(8, MySerial::Odd, 1);//set bits for a byte, parity bit, stop bit
          //pc.format(8, MySerial::None, 1);//set bits for a byte, parity bit, stop bit
          //pc.set_flow_control(MySerial::RTSCTS,dp26,dp25);
          pc.SetRxWait(0.01, 0.001);       //set wait getting chars after interrupted, each char
       
          wait(0.25);     //startup wait
       
          pc.attach( &atRx, MySerial::RxIrq );    //Set Interrupt by Serial receive
          NVIC_SetPriority(UART_IRQn, 120);
          timer.attach( &atTimer, 0.05 );
          NVIC_SetPriority(TIMER_16_0_IRQn, 10);
       
          myservo.calibrate(/* range */ 0.00099, /* angle +/- */ 90.0);
       
          while(1) {
              wait(0.01);
       
              if(cntRx != cntRx_old)
              {
                  readbuf();
                  cntRx_old = cntRx;
                  NVIC_EnableIRQ(UART_IRQn);
              }
       
              if(timeUp != timeUp_old)
              {
                  if( 10 <= timeUp )
                  {
                      led2 = !led2;
                      timeUp=0;
                  }
                   timeUp_old = timeUp;
                  //NVIC_EnableIRQ(TIMER_16_0_IRQn);
              }
          }
      }

実行結果 anchor.png

シリアルコンソールには、定番のTeraTermではなく、「RS232cテストツール」というフリーソフトを使ってみました。

下図のように、コマンドを送ると帰ってきたアンサーが表示されます。

Comm.jpg

総括 anchor.png

 mbed、おもしろいです。 C/C++の入門にもなるし、ハード回路の勉強にもなります。

 次回は、オフラインでのコンパイルとデバグ環境にチャレンジしたいと思います。

inc​/mbed

続きを読む | 閲覧(27051) 
9月
16 (日)
カテゴリー  ソフトテニス
タグ  XOOPS サイト

「蘇我ミクス(ソフトテニス)クラブ」 ホームページを作成中です。
ドメインを取って、いつものXOOPSで。

PCから
http://www.sogamics.com/
(PCのページにQRコードも表示あります。)
toppage.jpg
私の思い
1、ミクスの戦績などをアーカイブして掲載しておきたい。
  公開ページとしておけば、活動を広く知ってもらえる。
  → (ブログ形式が適当)
2、戦術や練習方法などの話し合いの場も欲しい。
  → (ツリー表示ができる掲示板形式が適当)
3、メンバー限定ページ内で内緒の話もしたい。
  → (掲示板、ぶろぐ、Pukiwikiなどを使って色々できる)
4、携帯からも出来るだけ使いたい
5、けれども、やっぱり気軽で楽しくできるmixiのコミュがメイン。

今回はmixiの外部サイトという位置づけ。 どのような使い方が考えられるのか、楽しみなところです。

目新しいところでは、

  1. WhatsNewモジュール で、新着情報を一括表示
  2. Xmobileモジュール で、モバイル対応可能なモジュールを使った

というところ。
どちらも、「帯に短し」なところがあるのですが、それでも便利なことに変わりありません。 多数のモジュールに対応させ る独自モジュール・・ 調査/設計/コーディング/デバグにどれだけの時間がかかることか・・ これをオープンソースで作られている皆さんに、この場を借 りて感謝の気持ちを。 ありがとうございます。

続きを読む | 閲覧(27105) 
7月
26 (日)

買いました。ハイエンドクラスのD級パワーアンプモジュール、Hypex NCore NC400 x2台とデュアル電源 SMPS1200A400Dual connectionキット。 マレーシア製ですね。

数量品名VATTotal
2NC400 (H01U001376)0%€ 550,00
1SMPS1200A400 (H02U004319)0%€ 180,00
1SMPS1200A400 onto 2x NC400 Connection kit (H08U002750)0%€ 30,00
.
Subtotal excl.€ 760,00
Shipping costs€ 60,35
.
Total excl. VAT€ 820,35

EURO/JPY換算レート:1 JPY=0.00795722 EURO→¥103,095円
送料込みで消費税は¥5,300円、総額¥108,395円でした。

  • NC400到着したので開梱
    t_000e73165636849f3619846bdcf6f742ee.jpg
  • バラックで仮組し、システムに導入
    t_01a34321097d99110de5d2b13a41f8bab3.jpg

 実に細やかな音が出ます。UcD32MPも良かったですが、NCoreに比べると少し甘くゆったり目だったと気づきます。そしてバラックにも関わらず圧倒的なS/N比と空間表現のアップにより、ベールが2枚ほど取り去られた感じで、ソースの音の違いをしっかり鳴らし分けます。余計な色付けは全くありませんので、若干の味気無さも感じたりしますが。
 この音が、スピーカー込みで20万円以内で出ているというのは我ながら超絶なコスパだと思います。
 空気録音は後日トライして公開しますが、録音のS/NやYouTubeによる圧縮でマスクされて違いは出ないかもしれません。
(追記)空気録音してみました:杏里/砂浜[OPUS21](少し再生レベルが高すぎたかも?)
https://www.youtube.com/watch?v=vs92MGHcfA0

 自作のJFETプリアンプは、UcDの時は音楽性のアップにかなり貢献していましたが、今回はそのメリットと空間表現の微妙な低下デメリットがあり悩みどころです。 早くも次のプリアンプ(というよりバッファアンプ)作ろうかと思いましたが、そもそもNC400には元からディスクリートのバッファアンプが内蔵されているようで、DACからXLRケーブルのバランス接続で直接プリアンプ無しで鳴らして音が良かったのにも納得ですね。比較の結果、プリ不使用でDACのES9038Proによる劣化の少ない電子ボリウムで絞って聞いています。

 将来構成として、新日本無線から今年4月に発表された「MUSES72323」電子ボリウムICを使ったプリなど作りたいですね。 どなたか設計・公開してくれないかなあ。。

 でもまずはこのNC400をきちんとアルミケースに収納することからですね。そしてこのレベルになると、RasPiの電源や構成も影響しそうなので、今後の改善のモチベーションになりそうです。
 スピーカーは、次期作はユニット購入も含めなかなか意欲がわきません、アップデートの価値があるのはわかっているのですが。。

続きを読む | 閲覧(27179) 
765件のうち531 - 540件目を表示しています。