製作モジュール一覧

ラベル Analog Discovery 2 の投稿を表示しています。 すべての投稿を表示
ラベル Analog Discovery 2 の投稿を表示しています。 すべての投稿を表示

2021年1月15日金曜日

STM32CubeIDE: SPIをPollingで使う

STM32CubeIDE: Version 1.5.1
Target board: Nucleo-F446RE

MX(Device Configuration Tool)の設定

今回は、Half-Duplex(半二重通信)とします。また、NucleoにはArduino互換のヘッダがあるので、Arduino UNOのSPIと同じ割り当てにしてみます。

MX(Device Configuration Tool)の設定

ピンの割り当て

SPI Pin Function Arduinoピン名
SCK PA5 SPI1_SCK D13
MOSI PA7 SPI1_MOSI D11
CS PB6 GPIO_OUTPUT D10

デフォルトではPB3がSWO(SYS_JTDO_SWO)に割り当てられていてSPI1が使えなくなっています。PB3を「Reset_State」します。

ハードウェア制御のNSS(CS)はうまく動作しないので、GPIOを割り当てソフトウェアで制御することにします。


STM32はピンごとに割り当て可能な機能が決まっていて、STM32CubeIDEのPinout Viewでピンをクリックすると選択可能な一覧が表示されます。

また、MCUのデータシート(例えば「STM32F446 Datesheet」でググると見つかります)の「Pinout and pin description」の「Alternate function」表で割り当て可能な機能が確認できます。

変更するパラメータ



Categories
  System Core
    GPIO
      PB6
        GPIO output level: High
        Maximum output speed: Very High
        User Label: SPI1_CS

SPIのCSはActive Lawなので初期値としてGPIO output levelをHighにします。わかりやすいように、SPI1_CSというUser Labelをつけます。


Categories
  Connectivity
    SPI1
      Mode: Half-Duplex Master
    Parameter Settings
      Clock Prameters
        Prescaler (for Baud Rate): 256

SPIのクロックは低速のほうが動作確認しやすいのでプリスケーラを256に設定します。

main.cにコードを追加

  /* Infinite loop */
  /* USER CODE BEGIN WHILE */
  while (1)
  {
    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
	  uint8_t data[2] = { 0x55, 0xAA };
	  HAL_GPIO_WritePin(SPI1_CS_GPIO_Port, SPI1_CS_Pin, GPIO_PIN_RESET);
	  if (HAL_SPI_Transmit(&hspi1, data, 2, 100) != HAL_OK) {
		  Error_Handler();
	  }
	  HAL_GPIO_WritePin(SPI1_CS_GPIO_Port, SPI1_CS_Pin, GPIO_PIN_SET);
  }
  /* USER CODE END 3 */

出力信号の観測


Analog Discovery 2のLogic機能でSPI信号を観測しました。


 Analog Discovery 2はアナログ入力とデジタル入力が独立しているので、Scope機能とLogic機能を同時に利用することができます。



ウィンドウの上半分が波形をアナログ波形としてみたところ、下半分がデジタル信号として見たところです。

2020年7月12日日曜日

オペアンプ・チェッカーの製作(Analog Discovery 2利用)

回路図

基板図

部品面

ハンダ面

注意点

使った基板は秋月のC基板のサイズですが、秋月のC基板では2列L型ピンソケットをAnalogDiscovery2に挿せるように配置できません。サンハヤトのICB-288Gを使用しました。これは秋月のC基板よりホールが1列多く、基板のフチ近くまでホールが開いています。

AnalogDiscovery2のSupplyの負電源を0V(GND)にすれば、単電源での測定もできると考えていましたが、WaveForms(3.12.2)では負電源は-500mVまでしか設定できませんでした。外部電源を使って、負電源のピンヘッダとGNDピンヘッダをジャンパで短絡すれば単電源での測定もできると思います。


NJM4580の測定


負荷抵抗:RL=2kΩとして測定しました。電源電圧はAD2から±5Vを出力しました。過渡応答は100kHzの矩形波で観測しました。

1倍増幅


反転回路の帰還抵抗
R1=1kΩ
R3=1kΩ

非反転回路の帰還抵抗
R2=オープン
R4=ショート

反転増幅 AC特性

非反転増幅 AC特性

反転増幅 過渡応答

非反転増幅 過渡応答

2倍増幅


シミュレーションでは3倍増幅にしていましたが、手持ちの抵抗で3kΩのものがなかったので2倍増幅にしました。

反転回路の帰還抵抗
R1=1kΩ
R3=2kΩ

非反転回路の帰還抵抗
R2=1kΩ
R4=1kΩ

反転増幅 AC特性

非反転増幅 AC特性

反転増幅 過渡応答

非反転増幅 過渡応答

LTSpiceによるシミュレーション


1倍増幅、2倍増幅についてLTSpiceでシミュレーションしました。

シミュレーション回路図

AC解析

過渡解析

2020年6月21日日曜日

オペアンプ・チェッカーの構想(Analog Discovery 2利用)

AliExpressでTL072とNE5532を購入したのですが、どうやらパチもんのようです。

AnalogDiscovery2と以前製作したオペアンプ・チェッカーを使って周波数特性を測定しました。


TL072CP(正規品)

TL072CP(AliExpressで購入)

NE5532P(正規品)

NE5532P(AliExpressで購入)

帯域が随分異なりますが、OPAMPとして動作しています。それぞれ10個ずつで送料込みで200円程度でした。パチもんだとしても国際郵便で送って採算取れるんでしょうか?なんとも不思議な感じです。

ルーペで見ないとわかりませんが、AliExpressで購入したものは、刻印がレーザーではなく潰れ気味のプリントです。

AnalogDiscovery2を利用すると比較的かんたんにOPAMPの特性が測定できます。それでも電源を用意したり、プローブを接続したり、セットアップにそれなりに手間がかかるので、BNCアダプターやインピーダンスアナライザ基板のように、AD2のソケットに直接接続できる基板を製作しようと思います。

だいたいこんなこんな感じです。


回路図

回路はいたってシンプルで2回路入りのOPAMPの片チャンネルを反転増幅回路、片チャンネルを非反転増幅回路とします。抵抗はピンソケットを使って差し替え可能とします。電源のV-を0Vとすれば単電源での測定もできると思います。

シミュレーションのようす


AC解析

過渡解析

過渡解析(単電源)


メモ:

AnalogDiscovery2の電源は最大±5Vなので、もう少し電源電圧を上げられるように外部電源も使えるようにするかもしれません。

2020年5月21日木曜日

AnalogDiscovery2 インピーダンスアナライザのCompensationとタンタル電解の特性測定

AD2でインピーダンスを測定するときあらかじめ補正しておくと測定精度が向上します。

ツールバーのCompensation(補償)をクリックすると補正できます。


なお、インピーダンスアナライザ・アダプタを使う場合、測定回路(「W1-C1-DUT-C2-R-GND」など)を選ぶプルダウンメニューで「Adapter」を選択しておくとCompensation画面で「do for each register」を選択できるようになり、Open/Closeそれぞれ自動的に抵抗値を設定してまとめて補正できるようになります。


Workspaceを保存するとCompensationのパラメータも保存され、再利用することが出来ます。

4.7uFのタンタル電解、アルミ電解、フィルム、MLCCの特性の比較


あまり使われることはありませんが、タンタル電解コンデンサはアルミ電解と比較してサイズが小さく、高周波での特性が良いと言われています。欠点は破損した場合、ショートしてしまうので周りのデバイスも道連れにしてしまう可能性が高いことです。発火することもあるそうです。

実際どの程度の特性なのか、AD2のImpedance Analyzerで測定しました。


左から

WIMA MKS2 フィルム 4.7uF
NIPPON CHEMI-CON NTD MLCC X7R特性 4.7uF
Tancap タンタル 4.7uF
aitendo タンタル 4.7uF
Panasonic M アルミ 4.7uF
Rubycon PK アルミ 4.7uF
Murata RDE MLCC F特性 0.1uF

です。0.1uFのMLCCはアルミと組み合わせて高周波でのインピーダンスを下げる目的でよく使われるので一緒に比較しました。


WIMA

NTD

Tancap

aitendo

Panasonic

Rubycon

MLCC 0.1uF

リアクタンスを見るとフィルムとMLCCは直線的に右肩下がりですが、アルミとタンタルは若干カーブしています。4.7uFの10kHzでのリアクタンスXc(10kHz)は、
Xc (10kHz)= 1 / (2 * π * f * C) = 1 / (6.28 * 10 * 10^3 * 4.7 * 10^(-6) ≒ 3.34[Ω]
100kHzでのリアクタンスXc(100kHz)は、
Xc(100kHz) ≒ 334[mΩ}
なのでカーブの仕方の目安になると思います。

位相を見ると、フィルム/MLCCとタンタル/アルミでは位相の回り方が異なりますね。前者は遅れ位相と進み位相がスパッと切り替わり、後者はダラダラと変化しています。

印象としてはアルミと比較してもタンタルはいうほど特性いいか?という感じです。どうなんでしょうね。

2020年5月13日水曜日

AnalogDiscovery2でOPAMP比較(FET入力)

FET入力のOPAMPをバイポーラ入力のものと同じようにAnalogDiscovery2で測定しました。



測定開始時の電源電圧: +6.57V / -6.57V
測定終了時の電源電圧: +6.50V / -6.50V

負荷抵抗: 1kΩ

AnalogDiscovery2で100Hz~10MHzのAC特性と500kHzの矩形波を入力した応答を測定しました。

AC特性


TL072CP

NJM072BD

NJM2082DD

OPA2604AP

OPA2134PA

MUSES8920

過渡特性


TL072CP

NJM072BD

NJM2082DD

OPA2604AP

OPA2134PA

MUSES8920

バイポーラ入力のものと比較して、FET入力のものは概ね高速、広帯域ですね。MUSES8920の癖の無さはさすがという感じです。

メモ:


以前自作の測定器でJFET入力のOPAMPの特性を比較しましたが、@2MHzでのAC特性がAD2での測定結果と傾向が異なります。

前回と同じように±5V電源で非反転2倍増幅した場合も測定してみたいと思います。