macsbug

Archive for the ‘Knowledge’ Category

Analog Discovery 購入

leave a comment »

Analog Discovery を購入。                      2015.10.03


電子回路の動作を確認する為には、信号を測定する装置が必要です。
オシロスコープを検討する中で、DIGILENTの Analog Discovery を選択しました。
Agilentの200MHz DIjital OscilloScope を使用した経験から、見劣りするかなとの危惧がありました。
アナログでの周波数帯域は、5MHzしかありませんが、通常の電子工作では使える範囲です。
価格は高いですが、多彩な機能があり、オシロを購入するより満足する場面が多々あります。


オシロスコープではできない優れた機能:
1. 直流電圧測定のオフセットを大きく取れる。例:直流の細かな変動を測定できる。
2. 表示サイズを大きくできる。例:27インチの画面表示。
3. 画面の保存が容易:例:スクリーンショットで即時及び自在に撮れる。
4. 拡大表示がが容易:例:縦、横及び全体の大きさを自由に選択できる。
5. 測定とパソコンの機能が同時に使用できる。例:メモ帳等で文書の作成。
6. パソコン画面に多くの波形表示が出来る:例:測定済みの波形と比較できる。


購入先:秋葉原、秋月電子通商。
価格:総計 46,989円。
Analog Discovery = 36,000円。(左上)
Discovery BNC Connector = 2,140円。(左下)
Analog Parts Kit = 6,980円。(右下)
Connector , BNC Cable 等 = 1869円。(右上)*
*コネクターやケーブルは、末広町近くの
コンピューエースが安い。
BNC-SMAコネクター = 124円。
SMAケーブル 0.5m = 288円。
Analog Discoverydigilent.waveformsの画面。
.
使用条件:iMac+ VM Ware + Windows XP +
digilent.waveforms_v2.7.5 。
.
測定は2CH、信号発生器は2CH。
オシロスコープには無い多彩な機能がある。

Analog Discovery で ESP8266 の電源を測定する。これにより、ESPの電源問題が明らかになる。


ESP12W Arduino UNO + ESP12 Sheeld
.
ESP12の電源3.3Vを測定。
.
ESPの3.3V電源端子直下(左上)と
GND端子直下(左下) を測る事。(重要)
.
5VからAS1117L33 LDR(中央のIC)
(3.3V 800mA)で3.3Vを作っている。
ESPの電源電圧を測定し分析 動作しない原因は、電源容量の不足である
Arduinoの電源は、マックに接続した
USB HUB(電源付き)  に接続。
.
Hi = 3.27V
Lo = 2.74V
.
Lo は、3.0V (ESP最低動作電圧)より低い。
送信時に2.74Vまで落ちている事が解る。
.
3端子の出力にCapacitorを追加しても変化なし
ESP12 3.3vの電源は、USB -> Arduio(5V) ->
AS1117L 33(3.3V 800mA)3端子の容量は充分。
.
USB電源をエネループに変更し電流容量を増す。
.
Hi = 3.29V
Lo = 3.02V
3.0Vギリギリだが、電圧は確保できている。
ArduinoのAC Adapterは、9V〜12V DCの仕様。
.
AC Adapter 6V 2.0A は、電力不足でダメ。
.
AC Adapter 12V 2.5A は正常。(左画像)
Hi = Lo = 3.25V
電圧(縦)を、10mV レンジに拡大した波形。
.
電圧低下は、10mV
.
スパイクは、100mV
.
AC Adapter 9V 2.0A も同様の波形。
不具合事例:ESP-WROOM 02単体での実験。
ブレットボードで、3端子LDO出力から
ESP電源端子までの配線が6cmの場合。
配線の抵抗(0.32Ω)により、ESP電源端子は
3.25Vから3.09Vに低下(0.16V)。
さらに送信時の電圧は、2.3V となり、
ESPは、ハングアップ状態となった。
波形の分析から解る事。
.
ESPは送信時の消費電流が大きい為に、
配線や内部抵抗による影響が大きい。
.
ESPの動作を安定化させる対策と方法。
1. USB電源は、容量の多い物を使う。
2. AC アダプターは、容量の多い物を使う。
3. 3端子Regulatorは、容量の多い物を使う。
4. 3端子Regulatorの配置は、
_ ESP電源端子の直下に接続する事。
5. 平滑キャパシターの配置は、
_ ESP電源端子の直下に接続する事

参孝:
アナログ回路のおもちゃ箱:Analog Discovery
あるエンジニアの回想録:Analog Discovery で遊んでみた
CQ出版社:レギュレータの動作安定性を 実測して検証する
CQ出版社:腕上げまくり!オールマイティ・ アナライザ Analog Discovery
マイナビニュース:これからはじめる人のためのMATLAB活用術
趣味のオーディオ製作:Analog Discovery試用記
フルバランス アンプ:Analog Discoveryで自動測定
他の製品:redpitaya の方が良さそうでもある。
_ Analog Discavaryと同様なKickstarter発のredpitayaは、Ethenet接続。
_ これは、どのPCでも波形を見る事ができます。つまり、iPadでも見れる。
_ つまり、Analog Discavaryのような、Windowsやアプリを使う必要がない。
_ 価格が高い事は高いですが、円高の影響が大きい Analog Discavary と、さほど変わらず。
_ 今回は、実際に確認していない為、購入は見送りました。


 

Written by macsbug

10月 3, 2015 at 1:26 pm

カテゴリー: Arduino, ESP8266, Knowledge

TI SensorTag と iPhone、iPad

leave a comment »

2年程前に購入した、手のひらに入る TI SensorTag を iPad で動かしてみた。 2015.09.11

温度、湿度、圧力、加速度、ジャイロ、磁力、スイッチ をセンスしBLEで通信します。

アプリは新しくなり、TI SensorTag という名前で無料。
iPhone,iPad,Nexus,Xperiaにも使え、ボタン電池(CR2032)は、結構長持ちします。
新しいセンサー:IoT made easy もある。


TI Sensor Tag

TE Sensor Tag


開発環境:
techBasic というMaciPhone/iPad用の開発言語がある。
Mac:techBASIC App Builder

サンプルが沢山あり、カット & ペースト・レベルでアプリを作る事が可能。
無料版の techSampler でも動きます。


参考:
iTunes Preview:旧版 SensorTag
iTunes Preview:TI SensorTag ver 4.2
iTunes Preview:TE Sensor Tag
iTunes Preview:Texas Instruments:他に沢山のアプリがでている。
Texas Instruments:SensorTag User Guide
Texas Instruments:Texas Instruments CC2541 SensorTag Development Kit
Texas Instruments: CC2541 SensorTag
Texas Instruments:IoT made easy
Texas Instruments: SensorTag2015:新しいセンサーが充実しています。
Controlling the TI SensorTag with techBASIC:センサー及びBLEプログラムの基礎と詳細
techBasic
techBAsic Documentation
_ techBASIC Reference Manual、Quick Start Guide for iPad、Quick Start Guide for iPhone


購入方法: DigiKey(3427円), Amzon.com, Texas Instruments, mouser で販売しています。


感想:
_ Hard:ハードの製作が必要ないのは楽です。部品や配線が細かく改造がしにくい。
_ 電源:ボタン電池(CR2032)は、結構長持ちし、電子工作にある電池の問題は楽になります。
_ 速度:BLEの速度は遅いですが、温度程度なら充分かと思われます。
_ BLE:サンプルにはBLE通信の極意がありブルーツース制御の参考になります。
_ teckBasic:グラフ標示は遅いが、BASICレベルで iPad のアプリを製作できるメリットは大きい。
_  Basicと言っても、Xcodeのような長ったらしい名前が多い。


 

Written by macsbug

9月 11, 2015 at 3:21 am

カテゴリー: Apple, Knowledge

Nextion TFT HMI 到着レポート

with one comment

_INDIGOGOでの Nextion: a cost-effective high-performance TFT HMI が中国から届く。2015.7.11

名称:NX4827T043_011R。規格:4.3int(480*272,65536 Color, With Touch panel)。価格:$30。

見栄えは良いが、Arduino IDEではどうやって開発するの? 、、、が、実は出来ないのである。



デモ画面:
電源を入れてデモ画面を見る(反射するので斜め撮り)。
明るさも解像度も充分良い。大きさは、4.3インチ( 480 * 272 ) で見易い。
入力にタッチセンスが使えて操作が便利な事と入力に関するハードも不要になる。
そして配線がシリアル2本で済む所が最大の利点、他のポートが多数使用できる事になる。
使いこなせば、5int(800*480)タイプもあるので期待ができる。

Nextion HMI Solution
特徴は通信に1つのシリアルポートだけで済み、配線の労力を減らしインターファイスを豊かにする。
編集は、インターフェース設計を豊かにするために、ボタン、テキスト、プログレス・バー、スライダー、計器板その他のような大量の構成要素を持っている。そして、タッチパネルのドラッグ&ドロップ機能により開発作業負担を減らす。 と記載され、ソフト作成時に期待ができる環境だ。

開発環境:
Nextion Editor で、Windows用のみである。ただし、CNXSOFTでは、2015後半?にLinuxおよびMac OSのバージョンとも記載されている。

販売:
現在(2015.07.11)、Nextion NX2432T043 4.3インチは、$44.90で販売している。

過去:
aitendoのディスプレーはひどかったね。良い点は安くてピン数が少ない事だがタッチセンスの配線がSD CARDのラインとショートとか端子の間隔が設計ミスでも堂々と販売している。これはもとの中国の販売店も同じものを売っていた。多数購入したが、結果、手間や費用がかなりかかった。
きちんと動作する違うタイプのDisplayを海外から購入したが、配線を変換する基盤が1枚必要でかさばる始末。なんとも、簡単にできるArduinoらしくない、理想的でない状態。

応用例:
Nextionは、理想的な規格と出来上がり。値段は少々しますが、きちんと動く方が大切。
応用例に、Wboard Pro(Arduino MEGA+ESP8266)を使用した
Weather Station: Use Nextion 4.3″ with Wboard があり、ESP8266でインターネット接続ができる。

問題点
INDIGOGOでの説明が初心者にとっては非常に不十分である。
開発環境がどうなっているのか具体的でなく、直ぐ出来ない状況にある。
ネットでは、早々に、How about making the Nextion IDE open source ? の質問がある。
Nextion Editor なるものがあるが、Windows 用であり、マックでは出来ないのである。
GUIを駆使した装置は見栄えは良いが、開発環境やレベルが高いと素人には無理で使えない事になる。

以下のサンプルは、Arduinoのシリアル出力からシリアルデーターを送るだけであり、Nextion上で動いているソフトの中のprogress Barに表示するだけのものである。これでは、使えない。
Product Preview: Nextion in an Arduino Project (2)

Arduino IDE では、開発できない:
GUIや入出力のプログラム作成は、Nextion Editor で行い、この Display に、インストールする。
センサーとの信号のやり取りは、Arduinoでプログラムする。信号は、Serial通信で行う。
これには、Nextion Editor や新しいコマンドの習熟が必要で、直ぐには使えない。
Arduino IDEでは、全ては出来ない。
よって、現在の知り得る情報では、このディスプレーは使えない事になる。

参考:
1. tronixstuf:Review – Nextion TFT Human Machine Interface
_ ハードウェア:
_ Nextionが表示され、タッチスクリーンと、4.3″(480×272)と2.4″(320×240)表示サイズがある。
_ ソフトウェア:
_ ディスプレイインターフェイスは、Windows用のIDE(統合開発環境)を使用して作成される。

2. CNXSOFT:Nextion 2.4″ and 4.3″ UART TFT Displays Come with a Drag and Drop UI Editor
_ インターフェースとの接続を簡素化し、開発者がコーディングすることなく、ユーザー·
_ インターフェースを作成することができ、それらのNextionエディタで簡単にUIデザイン
_ を作ることを目指しています。
_ Nextionエディタは、WYSIWYGユーザーインターフェイスエディタでは、独自のイメージ/
_ アイコンをドラッグ&ドロップ_ ができ、テキスト、ボタン、プログレスバー、メニュー、
_ ゲージ、などの定義されたコンポーネントが付属しています。
_ Nextionエディタは、Windowsでのみ使用可能ですが、LinuxおよびMac OSのバージョンは、
_ 2015年の後に出てくることがあり、、目標です。

以上、到着のレポートでした。

Written by macsbug

7月 11, 2015 at 9:02 am

カテゴリー: Knowledge

DYNAMIC RANGE Mesurement of HTBasic

leave a comment »

HTBasicでスピーカーのダイナミックレンジ測定アプリを作る。              2015.07.11

計測器は、Audio Analyzer,DVM,Sound Level Meter。画像はシュミレーション画像。

! RE-STORE "DYNAMIC RANGE ANALYZER"
! ***********************************************************************
! BPLUS                             ! ORG 2008.06.27    macsbug
! HANDSET DYNAMIC RANGE ANALYZER    ! REV 2015.07.11    macsbug
! ***********************************************************************
! Black=0,White=1,Red=2,Yellow=3,Green=4,Cyan=5,Blue=6,Magenta=7
     LOAD BIN "BPLUS"         ! PLUS MODULE LOADING
      COM @C                  ! SUB VALUE SET
      COM M$(0:3)[20],T$[80]  ! Menu,TEXT
    M$(0)="Loop Test=OFF"     ! SYSTEM MENU = Loop Test  ON/OFF
    M$(1)="Printer=ON "       ! SYSTEM MENU = Printer    ON/OFF
    M$(2)="Print"             ! SYSTEM MENU = Printout
    M$(3)="Quit"              ! SYSTEM MENU = Quit
 Io_initialize:!--------------!-----------------------------------------
  CONTROL 10,102;1            ! PRINTER SELECT   = LAN PRINTER
    CLEAR SCREEN              ! SCREEN           = CLEAR
      KEY LABELS OFF          ! MENU KEY DISPLAY = OFF
    REMOTE 7                  ! HPIB SETUP:SYSTEM SELECT=7
      Aan=708                 ! 08:AUDIO ANALYZER : 8903B
      Dvm=722                 ! 22:DIGITAL VOLT METER : HP34401A
    OUTPUT Aan;"AUFR1000HZ"   ! AAN:FREQUENCY
    OUTPUT Aan;"AP4000MV"     ! AAN:0.4 VOLT AC OUTPUT
    OUTPUT Aan;"M1"           ! AAN:AC VOLT
    OUTPUT Dvm;"F2"           ! AC
     WAIT 3                   !
 Agc_chart:!------------------------------------------------!-----------
   ASSIGN @C TO WIDGET "STRIPCHART"                         ! MODULE
  CONTROL @C;SET ("SYSTEM MENU":M$(*))                      ! MENU
  CONTROL @C;SET ("TITLE":" DYNAMIC RANGE ANALYZER")        ! TITLE
  CONTROL @C;SET ("SHOW GRID":1,"TRACE BACKGROUND":1)       ! 1=White
  CONTROL @C;SET ("X":10,"Y":5,"WIDTH":760,"HEIGHT":270*2)  ! X,Y,W,H
  CONTROL @C;SET ("CURRENT AXIS":"X","ORIGIN":100,"RANGE":1720)! HORIZON
  CONTROL @C;SET ("CURRENT AXIS":"X","AXIS LABEL":"FREQ(Hz)")! X LABEL
  CONTROL @C;SET ("CURRENT AXIS":"Y","ORIGIN":60,"RANGE":60)! VERTICAL
  CONTROL @C;SET ("CURRENT AXIS":"Y","AXIS LABEL":"DB")     ! Y LABEL
  CONTROL @C;SET ("TRACE PEN":2,"VISIBLE":1)                ! 2=Red
  CONTROL @C;SET ("TRACE COUNT":20,"CURRENT TRACE":0)       !
  CONTROL @C;SET ("POINT CAPACITY":100000)                  !
       ON EVENT @C,"SYSTEM MENU" GOSUB Sysmenu              ! MENU EVEN
!-----------------------------------------------------------!-----------
 Memo_chart:!                                               !
   ASSIGN @M TO WIDGET "PRINTER";SET ("BACKGROUND":1)       !
  CONTROL @M;SET ("X":775,"Y":5,"WIDTH":220,"HEIGHT":210)   !
  CONTROL @M;SET ("TITLE":" LRU MEMO")                      !
  CONTROL @M;SET ("APPEND TEXT":"HANDEST DYNAMIC RANGE")    !
     CALL Date(D$)                                          ! DATE READ
  CONTROL @M;SET ("APPEND TEXT":"DATE : "&D$)               ! DATE PRT
  CONTROL @M;SET ("APPEND TEXT":"TIME : "&TIME$(TIMEDATE))  ! TIME PRT
  CONTROL @M;SET ("APPEND TEXT":"")                         ! SPACE
     BEEP                                                   !
       L$="P/N"                                             !
    GOSUB Lru_memo                                          ! P/N
       L$="S/N"                                             !
    GOSUB Lru_memo                                          ! S/N
 Info_chart:!-----------------------------------------------!-----------
   ASSIGN @P TO WIDGET "PRINTER";SET ("BACKGROUND":1)       !
  CONTROL @P;SET ("X":775,"Y":220,"WIDTH":220,"HEIGHT":100) !
  CONTROL @P;SET ("TITLE":" MEMU INFO")                     !
  CONTROL @P;SET ("APPEND TEXT":M$(0))                      !
  CONTROL @P;SET ("APPEND TEXT":M$(1))                      !
 Data_chart:!-----------------------------------------------!-----------
   ASSIGN @D TO WIDGET "PRINTER";SET ("BACKGROUND":1)       !
  CONTROL @D;SET ("X":775,"Y":325,"WIDTH":220,"HEIGHT":190) !
  CONTROL @D;SET ("TITLE":"DATA")                           !
!-----------------------------------------------------------!-----------
 Mesure_setup:!                                             !
       Vr=4000                                              ! START VOL
 L1: WAIT .2                                                !
   OUTPUT Aan;"AP"&VAL$(Vr)&"MV"                            ! VOLT ADJ
   OUTPUT T$ USING "12A,4D,5A";"SG OUTPUT = ";Vr;" mVAC"    ! SG OUT
  CONTROL @D;SET ("APPEND TEXT":T$)                         ! SG OUT
     WAIT .5                                                !
    ENTER Dvm;V                                             ! READ INPUT
   OUTPUT T$ USING "12A,4D,5A";"INPUT VOL = ";V*1000;" mVAC"! INPUT VOL
  CONTROL @D;SET ("APPEND TEXT":T$)                         ! INPUT VOL
       IF ((V>.98) AND (V<1.02)) THEN GOTO Measure          ! SETUP END
       IF (V<1) THEN D=INT(100*(1/V))                       ! 4V 0.8 +125
       IF (V>1) THEN D=-1*INT(100*(V/1))                    ! 4V 1.2 -120
       Vr=Vr+D                                              !
     GOTO L1                                                ! new setup
!-----------------------------------------------------------!-----------
 Measure:    !                                              ! x axis
  CONTROL @M;SET ("APPEND TEXT":"")                         ! SPACE
  CONTROL @M;SET ("APPEND TEXT":"SG OUT: "&VAL$(Vr)&"mVAC") ! SG OUT
       Va=INT(V*1000)                                       !
  CONTROL @M;SET ("APPEND TEXT":"INPUT : "&VAL$(Va)&"mVAC") ! INPUT VOL
   OUTPUT Aan;"LG"                                          ! DB
   FOR Freq=100 TO 1800 STEP 20                             ! FREQ LOOP
       OUTPUT Aan;"FR"&VAL$(Freq)&"HZ"                      ! AAN FREQ
         WAIT .5                                            !
        ENTER Aan;V                                         ! y axis
            V=-1*(V-80)                                     !
       OUTPUT T$ USING "9A,DDD.D,3A";"OUTPUT = ";V;" DB"    !
      CONTROL @D;SET ("APPEND TEXT":T$)                     !
      CONTROL @C;SET ("CURRENT TRACE":1,"TRACE PEN":2)      ! DRAW SET
      CONTROL @C;SET ("POINT LOCATION":Freq,"VALUE":V)      ! DRAW SP
   NEXT Freq                                                ! +Freq
!-----------------------------------------------------------!-----------
       IF M$(1)="Printer=ON " THEN CALL Print_out           ! PRINT OUT
       IF M$(0)="Loop Test=ON " THEN                        !
  CONTROL @C;SET ("CURRENT TRACE":0,"VALID POINTS":0)       ! DRAW CLR
     GOTO Measure                                           ! LOOP
      END IF                                                !
     GOTO Finish                                            !
!===========================================================!===========
! SYSTEM MENU EVENT ROUTINE                                 !
 Sysmenu:!--------------------------------------------------!
   STATUS @C;RETURN ("SYSTEM MENU EVENT":N)                 !
       IF N=2 THEN CALL Print_out                           ! Print
       IF N=3 THEN GOTO Finish                              ! Quit
       IF M$(N)="Loop Test=ON " THEN T$="Loop Test=OFF"     ! N=0
       IF M$(N)="Loop Test=OFF" THEN T$="Loop Test=ON "     ! Loop Test
       IF M$(N)="Printer=ON " THEN T$="Printer=OFF"         ! N=1
       IF M$(N)="Printer=OFF" THEN T$="Printer=ON "         ! Printer
       IF N=0 OR N=1 THEN                                   !
          M$(N)=T$                                          ! MENU CG
          CONTROL @C;SET ("SYSTEM MENU":M$(*))              ! MENU SET
          END IF                                            !
  CONTROL @P;SET ("APPEND TEXT":M$(0))                      !
  CONTROL @P;SET ("APPEND TEXT":M$(1))                      !
 RETURN                                                     !
!===========================================================!==========
 Lru_memo:!-------------------------------------------------!
       B$=" LRU MEMO"                                       !
       T$="Please enter LRU "&L$                            !
   DIALOG "STRING",T$;SET ("TITLE":B$),RETURN ("VALUE":U$)  !
  CONTROL @M;SET ("APPEND TEXT":L$&" "&U$)                  !
 RETURN                                                     !
!===========================================================!==========
 Finish:!---------------------------------------------------!
    WAIT 2                                                  !
  DIALOG "QUESTION","Finish",Btn;SET ("TITLE":"Finish")     !             
  ASSIGN @C TO *                                            !
  ASSIGN @D TO *                                            !
  ASSIGN @M TO *                                            !
  ASSIGN @P TO *                                            !
 END                                                        !
!===========================================================!==========
! CALL SUB ROUTINE                                          !
!===========================================================!==========
 SUB Print_out                                              !
     GINIT                                                  !
     GCLEAR                                                 !
     AREA PEN 1                                             ! White
     RECTANGLE 1024,768,FILL,EDGE                           ! FILL
     RECTANGLE 10,10,FILL,EDGE                              ! BG=White
     CONFIGURE SYSTEM ("DUMP;PLUS")                         ! MODULEs
     CONFIGURE DUMP TO "WIN-DUMP;INVERT"                    ! INVERT
          DUMP GRAPHICS #10                                 ! PRINT OUT
         CLEAR SCREEN                                       !
 SUBEND                                                     !
!===========================================================!==========
 SUB Date(Ymd$)                                             ! CALCURATE
!-----------------------------------------------------------!----------
      DIM Y$(12)[3],X$(12)[3]                               ! DATE
     DATA Jan,01,Feb,02,Mar,03,Apr,04,May,05,Jun,06         ! 1 TO  6
     DATA Jul,07,Aug,08,Sep,09,Oct,10,Nov,11,Dec,12         ! 7 TO 12
      FOR I=1 TO 12                                         ! 1 TO 12
          READ Y$(I),X$(I)                                  ! DATA READ
     NEXT I                                                 !
       D$=DATE$(TIMEDATE)                                   ! TODAY
     Mon$=D$[4,6]                                           ! MONTH
      FOR I=1 TO 12                                         ! 1 TO 12
          SELECT Mon$                                       ! SEL MANTH
            CASE Y$(I)                                      ! SEL YEAR
                 Mon$=X$(I)                                 ! SET MANTH
                 Day$=D$[1,2]                               ! SET DAY
                  IF Day$[1,1]=" " THEN Day$="0"&Day$[2,2]  ! " " = 0
                 Year$=D$[8,11]                             ! SET YEAR
                 Ymd$=Year$&"."&Mon$&"."&Day$               ! YYYY.
          END SELECT                                        ! MM.DD
     NEXT I                                                 !
   SUBEND                                                   !
!===========================================================!==========

Written by macsbug

7月 11, 2015 at 6:46 am

カテゴリー: Knowledge

Resistance Logger for HTBasic

leave a comment »

HTBasic で、レジスタンス・ロガーを作成。                  2015.06.07


デジタルマルチメーターのオームレンジで抵抗値を測定しグラフで表示する。
軸:縦は抵抗値、横は時間(分)で抵抗値の変化をグラフ化する。
スライドバー:左は縦軸の変更、右は時間軸の変更(測定中に変更可)。
警告音:リミット値を超えるとスピーカーから音が出る。



HTBasic は、Rocky Mountain BASIC (RMB) 言語のためのBASICインタープリタです。
GPIBインターフェースを通じ計測器(GPIB付)をコントロールしデーターを取得します。
OS環境:Windows。
使用計測器:Agirent 3458A 叉は、Agirent 34401A
汎用性:縦軸の抵抗値をDC電圧に変更すると、DC LOGGERになります。
時間間隔:約0.5秒で低速です。
未装備:オートレンジは組み込んでいませんが、追加は簡単です。


メモ:
今時、HTBasicの話は極めて少ないと思いますが、PLUS MODULE が素晴らしく、備忘録としました。
高性能で高価な計測器を自在に扱えると便利ですし、仮想の計測装置が作れます。
参考:HP-BASIC入門。 HTBasic Tip


プログラムを以下に示します。


1000 ! RE-STORE "RESISTANCE_LOGGER"
1010 !***********************************************************************
1020 ! RESISTANCE LOGGER PROGRAM  !
1030 !-----------------------------------------------------------------------
1040 !     COPYRIGHT              ! ORG               : BY macsbug
1050 !     ORG 2008.07.--         ! BPLUS DESIGN      : BY macsbug
1060 !     REV 2015.05.--         ! Resistance Logger : BY macsbug
1070 ! **********************************************************************
1080 ! Black=0,White=1,Red=2,Yellow=3,Green=4,Cyan=5,Blue=6,Magenta=7
1090 LOAD BIN "BPLUS"             ! PLUS MODULE LOADING
1100 DIM M$(0:4)[20],T$[80]       ! Menu,TITLE
1110     ! I/O -------------------!
1120 Hpib=8                       ! HPIB SYSTEM No.
1130 Dvm=803                      ! DVM HPIB ADDRESS. HP3478A(Agilent 34401A)
1140     ! Variable --------------!
1150 M$(0)="Loop Test=OFF"        ! SYSTEM MENU = Loop Test     ON/OFF
1160 M$(1)="Printer=OFF"          ! SYSTEM MENU = Printer       ON/OFF
1170 M$(2)="Sound=ON "            ! SYSTEM MENU = Sound Monitor ON/OFF
1180 M$(3)="Print"                ! SYSTEM MENU = Printout
1190 M$(4)="Quit"                 ! SYSTEM MENU = Quit
1200 T$=" RESISTANCE LOGGER"      ! TITLE
1210 R_limit=10                   ! RESISTOR LIMIT
1220 CLEAR SCREEN                                                  !
1230 CALL Date(D$)                                                 ! DATE
1240 KEY LABELS OFF                                                !
1250 !------------------------------------------------------------------------
1260 ! DATE                                                        !
1270 !------------------------------------------------------------------------
1280  ASSIGN @Dt TO WIDGET "PRINTER";SET ("BACKGROUND":1)          !
1290 CONTROL @Dt;SET ("X":815,"Y":10,"HEIGHT":70,"WIDTH":200)      !
1300 CONTROL @Dt;SET ("TITLE":"DATE")                              !
1310 CONTROL @Dt;SET ("FONT":"20 BY 20,BOLD")                      ! FONT SIZE
1320 CONTROL @Dt;SET ("APPEND TEXT":"   "&D$)                      !
1330 !------------------------------------------------------------------------
1340 ! CLOCK                                                       !
1350 !------------------------------------------------------------------------
1360  ASSIGN @Clock TO WIDGET "CLOCK"                              !
1370 CONTROL @Clock;SET ("TITLE":" TIME","BACKGROUND":37)          !
1380 CONTROL @Clock;SET ("X":815,"Y":85,"HEIGHT":200,"WIDTH":200)  !
1390 !------------------------------------------------------------------------
1400  Io_set_up:!--------------------------------------------------!---------
1410 CONTROL 10,102;1             ! PRINTER SELECT     = LAN PRINTER
1420 CLEAR SCREEN                 ! SCREEN             = CLEAR
1430 KEY LABELS OFF               ! MENU KEY DISPLAY   = OFF
1440 REMOTE Hpib                  ! HPIB SETUP
1450 CLEAR Dvm                    ! DIGITAL VOLT METER HP3458A = CLEAR
1460 WAIT 1                       !
1470 OUTPUT Dvm;"PRESET"          ! DVM Agirent 3458A = RESISTOR MODE
1480 WAIT 1                       ! DVM Agirent 3458A
1490 OUTPUT Dvm;"NORM"            ! DVM Agirent 3458A
1500 WAIT 1                       ! DVM Agirent 3458A
1510 OUTPUT Dvm;"OHM"             ! DVM Agirent 3458A
1530 !OUTPUT Dvm;"F3R2N3T1Z1"     ! DVM 34401A:R1=30,R2=300ohm,RA=AUTO RANGE
1540 WAIT 1                       !
1550 !------------------------------------------------------------------------
1560 ! VERTICAL SIZE SLIDER
1570 !------------------------------------------------------------------------
1580 Yh=300                                                        ! VERTICAL
1590  ASSIGN @S1 TO WIDGET "SLIDER"                                ! SLIDER
1600 CONTROL @S1;SET ("TITLE":"Y")                                 !
1610 CONTROL @S1;SET ("X":815,"Y":290,"WIDTH":80,"HEIGHT":253)     ! POSITION
1620 CONTROL @S1;SET ("MINIMUM":1,"MAXIMUM":20000)                 ! OHM 1-20000
1630      ON EVENT @S1,"DONE" GOSUB Cg1                            !
1640 !------------------------------------------------------------------------
1650 ! HORIZONTAL SIZE SLIDER SET UP                               !
1660 !------------------------------------------------------------------------
1670 Xh=30                                                         ! HORIZONTAL
1680  ASSIGN @T1 TO WIDGET "SLIDER"                                ! SLIDER
1690 CONTROL @T1;SET ("TITLE":"X")                                 !
1700 CONTROL @T1;SET ("X":900,"Y":290,"WIDTH":80,"HEIGHT":253)     ! POSITION
1710 CONTROL @T1;SET ("MINIMUM":30,"MAXIMUM":180)                  ! TIME min
1720      ON EVENT @T1,"DONE" GOSUB Cg2                            ! -> Cg2
1730 !------------------------------------------------------------------------
1740 !Resistance_chart_set_up:!------------------------------------!----------
1750 ASSIGN @P TO WIDGET "STRIPCHART"                              ! MODULE
1760 CONTROL @P;SET ("SYSTEM MENU":M$(*))                          ! MENU
1770 CONTROL @P;SET ("TITLE":T$)                                   ! TITLE
1780 CONTROL @P;SET ("SHOW GRID":1,"TRACE BACKGROUND":1)           ! 1=White
1790 CONTROL @P;SET ("X":10,"Y":5,"WIDTH":800,"HEIGHT":270*2)      ! X,Y,W,H
1800 CONTROL @P;SET ("CURRENT AXIS":"X","ORIGIN":0,"RANGE":30)     ! 30min
1810 CONTROL @P;SET ("CURRENT AXIS":"X","AXIS LABEL":"minutes")    ! X LABEL
1820 CONTROL @P;SET ("CURRENT AXIS":"Y","ORIGIN":0.,"RANGE":Yh)    ! VERTICAL
1830 CONTROL @P;SET ("CURRENT AXIS":"Y","AXIS LABEL":"ohm")        ! Y LABEL
1840 CONTROL @P;SET ("TRACE PEN":2,"VISIBLE":1)                    ! 2=Red
1850 CONTROL @P;SET ("TRACE COUNT":10,"CURRENT TRACE":0)           !
1860 CONTROL @P;SET ("POINT CAPACITY":216000)                      ! 3600*60*3
1870 ON EVENT @P,"SYSTEM MENU" GOSUB Sysmenu                       ! MENU EVEN
1880 !Main Routine ------------------------------------------------!----------
1890  Measure: S=TIMEDATE                                          ! START T
1900  Loop:! RESISTOR ---------------------------------------------!----------
1910 WAIT .5                                                       ! SICL time
1920 ENTER Dvm;D                                                   ! RESISTOR
1930 IF M$(2)="Sound=ON " AND D>R_limit THEN BEEP                  ! LIMIT OUT
1940 CONTROL @P;SET ("CURRENT TRACE":1,"TRACE PEN":2)              ! DRAW SET
1950 CONTROL @P;SET ("POINT LOCATION":(TIMEDATE-S)/60,"VALUE":D)   ! DRAW
1960 DISP "TIME = "&VAL$(INT(TIMEDATE-S))&" sec",                  ! DISP TIME
1970 DISP "RESISTOR = "&VAL$(D)&" ohm",                            ! DISP DATA
1980 DISP M$(0),M$(2),M$(1)                                        ! DISP MENU
1990 !-------------------------------------------------------------!----------
2000 IF (TIMEDATE-S)<(Xh*60-10) THEN GOTO Loop                     ! LOOP
2010        !------------------------------------------------------!
2020 IF M$(1)="Printer=ON " THEN CALL Print_out                    ! PRINT OUT
2030 IF M$(0)="Loop Test=ON " THEN                                 !
2040 CONTROL @P;SET ("CURRENT TRACE":0,"VALID POINTS":0)           ! RESET
2050 GOTO Measure                                                  ! RE-START
2060 END IF                                                        !
2070 GOTO Finish                                                   ! END
2080 !=============================================================!==========
2090 ! SYSTEM MENU EVENT ROUTINE                                   !
2100  Sysmenu: !---------------------------------------------------!
2110 STATUS @P;RETURN ("SYSTEM MENU EVENT":N)                      !
2120 IF N=3 THEN CALL Print_out                                    ! Print
2130 IF N=4 THEN GOTO Finish                                       ! Quit
2140 IF M$(N)="Loop Test=ON " THEN T$="Loop Test=OFF"              ! N=0
2150 IF M$(N)="Loop Test=OFF" THEN T$="Loop Test=ON "              ! Loop Test
2160 IF M$(N)="Printer=ON " THEN T$="Printer=OFF"                  ! N=1
2170 IF M$(N)="Printer=OFF" THEN T$="Printer=ON "                  ! Printer
2180 IF M$(N)="Sound=ON " THEN T$="Sound=OFF"                      ! N=2
2190 IF M$(N)="Sound=OFF" THEN T$="Sound=ON "                      ! Sound
2200 IF N=0 OR N=1 OR N=2 THEN                                     !
2210 M$(N)=T$                                                      ! MENU CG
2220 CONTROL @P;SET ("SYSTEM MENU":M$(*))                          ! MENU SET
2230 END IF                                                        !
2240 RETURN                                                        !
2250 !-------------------------------------------------------------!
2260 ! REGISTOR SLIDER SELECT                                      !
2270 !-------------------------------------------------------------!
2280  Cg1:!                                                        !
2290    STATUS @S1;RETURN ("VALUE":Yh)                             ! SLIDER
2300    CONTROL @P;SET ("CURRENT AXIS":"Y","ORIGIN":0.,"RANGE":Yh) ! VERTICAL
2310    RETURN                                                     !
2320 !-------------------------------------------------------------!
2330 ! HORIZONTAL SLIDER SELECT                                    !
2340 !-------------------------------------------------------------!
2350  Cg2:!                                                        !
2360    STATUS @T1;RETURN ("VALUE":Xh)                             ! SLIDER
2370    CONTROL @P;SET ("CURRENT AXIS":"X","ORIGIN":0,"RANGE":Xh)  ! min
2380    RETURN                                                     !
2390 !=============================================================!==========
2400  Finish: !----------------------------------------------------! END
2410 INPUT "MONITOR END ? (ENTER)",A$                              !
2420 ASSIGN @P TO *                                                !
2430 ASSIGN @S1 TO *                                               !
2440 END                                                           !
2450 !========================================================================
2460 ! CALL SUBROUTINE                                             !
2470 !========================================================================
2480 SUB Print_out                                                 !
2490 GINIT                                                         !
2500 GCLEAR                                                        !
2510 AREA PEN 1                                                    ! White
2520 RECTANGLE 1024,768,FILL,EDGE                                  ! FILL
2530 RECTANGLE 10,10,FILL,EDGE                                     ! BG=White
2540 CONFIGURE SYSTEM ("DUMP;PLUS")                                ! MODULE
2550 CONFIGURE DUMP TO "WIN-DUMP;INVERT"                           ! INVERT
2560 DUMP GRAPHICS #10                                             ! PRINT OUT
2570 CLEAR SCREEN                                                  !
2580 SUBEND                                                        !
2590 !-------------------------------------------------------------!----------
2600  SUB Date(Ymd$)                                               ! CALCURATE
2610 !-------------------------------------------------------------!----------
2620 DIM Y$(12)[3],X$(12)[3]                                       ! DATE
2630 DATA Jan,01,Feb,02,Mar,03,Apr,04,May,05,Jun,06                ! 1 TO  6
2640 DATA Jul,07,Aug,08,Sep,09,Oct,10,Nov,11,Dec,12                ! 7 TO 12
2650   FOR I=1 TO 12                                               ! 1 TO 12
2660       READ Y$(I),X$(I)                                        ! DATA READ
2670   NEXT I                                                      !
2680   D$=DATE$(TIMEDATE)                                          ! TODAY
2690   Mon$=D$[4,6]                                                ! MONTH
2700   FOR I=1 TO 12                                               ! 1 TO 12
2710       SELECT Mon$                                             ! SEL MANTH
2720       CASE Y$(I)                                              ! SEL YEAR
2730       Mon$=X$(I)                                              ! SET MANTH
2740       Day$=D$[1,2]                                            ! SET DAY
2750       IF Day$[1,1]=" " THEN Day$="0"&Day$[2,2]                ! " " = 0
2760          Year$=D$[8,11]                                       ! SET YEAR
2770          Ymd$=Year$&"."&Mon$&"."&Day$                         ! YYYY.
2780       END SELECT                                              ! MM.DD
2790   NEXT I                                                      !
2800 SUBEND                                                        !
2810 !=============================================================!==========


Written by macsbug

6月 7, 2015 at 7:39 am

カテゴリー: Knowledge

匿名検索する方法

leave a comment »

匿名検索をするには、https://search.disconnect.me/ を使用する。                                     2015.05.17

検索能力は、Googleが一番大きい。

 

「音」で検索すると、URLの中に、「音」が入る。これにより、検索文字が漏れる。

 

匿名検索できるURL:https://search.disconnect.me/ で検索。

 

「音」で検索し、Google で行う。

検索文字が暗号化されている。

 

結果:匿名検索経由、Googleで検索できる。

 

Written by macsbug

5月 17, 2015 at 7:22 am

カテゴリー: Knowledge

地図

leave a comment »

リアルタイム地図 及び 分布地図を、まとめてみました。

国際宇宙ステーション国際宇宙ステーションの現在地(柏井勇魚氏製作)

はやぶさ2はやぶさ2の現在地(柏井勇魚氏製作)

国際宇宙ステーション:国際宇宙ステーションの現在地(ライブ中継あり)

地球全体の気流・気温・海面水温:左下「earth」で日本語とか設定ができる。

世界の雨分布速報:GSMAP(衛生全球降水マップ)

Tokyo Wind Map:東京都の風速

meteoritessize | CartoDB:地球上にこれまで落ちた隕石の場所

地球の重力場:GGMplus 200メートル分解能マップ

Yearly Cycle of Earth’s Biosphere:地球も呼吸している

人工衛星観測:頭上を通過する人工衛星の軌道マップ

stuffin.space:地球を回り続けている物体の軌道を全てリアルタイムで3D表示

The Planet Is Losing Groundwater at an Alarming Rate:地球の地下水:gizmodo(日本文)

How many trees are there in the world?‬:地球上には今、木がどのくらいあって、どのように減っているのか

Digital Universe Atlas(三次元宇宙地図):カーター・エマート  [Youtube]

興味深い世界地図を まとめた地図帳:海外生活、環境・自然、原発、感染症、社会

サイバー攻撃を可視化するWebサービス

_ Norse – IPViking Live:Norse社(セキュリティー企業)

_ Cyberthreat Real-Time Map:2D表示や3Dで地球が回る。カスペルスキー社

_ FireEye Cyber Threat MapFireEye

_ NICTER WEB:情報通信研究機構

_ Virusmap:F-Secure Globe  F-Secure Globe:F-Secure Globe

_ Cyberfeed:Live Global Botnet Visualizer

_ Übersicht über die aktuellen Cyberangriffe

_ McAfee IPViking Live:   HP IPViking Live

Flightradar24:航空機の現在地。 リアルタイム航空便追跡:航空機の現在地

Flight Stream:飛行機の路線とフライト

東京メトロ:地下鉄の運行状況

ライブ船舶マップ:船舶の現在地

Mapping the internet海底ケーブルの分布を表した図

全国放射線量測定マップ:放射線量。 全国放射線:放射線の状況

2011年の日本の地震 分布図:2011年に発生した日本付近の地震を可視化した動画

星空:星空の地図

太陽系の惑星のスケール:if the Monn Were Only 1 Pixel

いまどこ新幹線マップ:新幹線の現在地

全国地価マップ宅地の価格

FabMap:ファブラボと各種ものづくりスペースの日本地図

J-SHIS 地震ハザードステーション全国を概観した地震動予測地図

ハンガーマップ(世界の飢餓状況):飢餓状況

ARCHITECTURAL MAP(建築マップ ):建築地図

都内公園:都内の公園地図

マック特集:The Insanely Great History of Apple 3.0Appleのソフトやハードの歴史

歴代マックの起動音。 歴代マックのスペック。 apple CM歴代ソング一覧。 歴代Macのアイコン

安全飛行フライトマップ:ドローンやラジコン機等の無人航空機の飛行ルール

Written by macsbug

12月 8, 2014 at 12:36 am

カテゴリー: Knowledge