オペアンプで増幅回路を作った記録

#初めに
オペアンプに関する記事は星の数ほどあり，まったくこの記事も優秀なそれらの記事と比べたら，無意味でしょう．しかし，自分自身の作業・疑問の記録として残します．

#目標
センサー出力が$2.2±0.01V$で出力されるので．
$2.2V$中心で，$10$倍に増幅し$2.2±0.1V$になるように増幅回路を作ることです．

```math
2.2±0.01V -> 2.2±0.1V
```

#GNDについて
オペアンプにはGNDが存在しません．なぜなら，必要がないからです．オペアンプにとって基準電圧は必要なく，$Vout$は「$V+$,$V-$にとっての基準電圧(GND)」を基準電圧(GND)として出力します．なぜ，接続されていない「$V+$,$V-$にとっての基準電圧(GND)」を「$Vout$の基準電圧」とできるかは，わかりません．おそらく，GNDは電圧測定者が任意に指定できるということだと予想します．実際，Voutを計測するときと，V+,V-を計測するときの基準電圧GNDは同じところにする必要があります．

#負電源について
オペアンプには，GNDの代わりと言っていいのかわかりませんが，負電源$VSS$があります．
![opamp.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/405484/e23f297d-cb3a-0fd9-4829-ceff2621da45.png)

$Vout$が負の電圧を取るとき，負電源が存在していないと正の方向に飽和します（後述の実験で検証）．

というわけで，$Vout$が負の電圧を取るときに，正しい出力を得るには，電源が次のように二つ必要になります．
![opamp2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/405484/fc9ef863-2fd1-8ed5-897b-b2288d4c8f37.png)

図のGNDは$V+,V-,Vout$の基準電圧です．
注意
![opamp3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/405484/1d798808-7614-11eb-b365-3ea7f5c77e9d.png)
このように基準電圧を取ってしまうと，負電源としての役割はなくなってしまいます．
GNDはオペアンプには接続されませんが，$V+,V-,Vout$にとっての基準となるので，意識したほうがよいでしょう．

#非反転増幅回路
LM358Nを使用します．
![opamp4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/405484/2552e202-29cf-b3fb-6f3b-c0607689d45d.png)

```math
VDD =4.6V\\
VSS =-2.47V\\
R1 = 1kΩ\\
R2 = 1kΩ\\
```

```math
Vout=\frac{R1+R2}{R1}Vin \\
=2Vin
```

という非反転増幅回路です．

###実験結果

![test1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/405484/c7045ecf-8d6f-5374-0ba2-ba5ed4c7e0c9.png)

* 出力は3.0V付近で飽和（VDD=4.6V）
* 負側も-1.8V付近で飽和(VSS=-2.7V)
* Vin=-3.5Vではなぜか，3.0Vで飽和
* 増幅率は2倍になっている

###VSS = 0Vで実験
![test2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/405484/15d7ff53-ac77-c11c-bcec-9057932348e0.png)

先ほどと比較し

* 正側はほぼ同じ
* 負側は正の方向に飽和

###結論

* 増幅率は理論通り，2倍
* $Vout$が負の電圧を取るとき，負電源が存在していないと正の方向に飽和
* 供給電圧の-0.5~-1.5Vで飽和

#作動増幅回路
非反転増幅回路では，2倍にすることはできますが，2.2±0.01V -> 2.2±0.1Vのように，基準点に対して，増幅することはできません．
そこで，次の作動増幅回路を利用します．
![opamp5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/405484/187dcf74-1c6d-ef0f-fec9-a29f3ce0b570.png)


```math
Vout = \frac{R1+R2}{R3+R4} \frac{R4}{R1}V_{in+} -\frac{R2}{R1}V_{in-}
```
に従います．V+をR3,R4で指定し，増幅の基準を指定する場合，

```math
\frac{R1+R2}{R3+R4} \frac{R4}{R1}
```
を調整することになります．$V_{in-}$が入力電圧です．

###実験
増幅率10倍より次のように設定した．

```math
VDD = 4.58V\\
VSS = 0V\\
R1 = 1kΩ\\
R2 = 10kΩ\\
```
基準電圧を1.5Vにするには，$V_{in+} = VDD = 4.58$とすると

```math
\frac{11}{R3+R4} \frac{R4}{1} = 1.5/4.58\\
\therefore 11*4.58*R4 = 1.5*(R3+R4)\\
\therefore 32.6*R4 = R3
```
よって，

```math
R3 = 32kΩ\\
R4 = 1kΩ\\
```
とした．

以上の設定より

```math
Vout = 1.5-10V_{in-}
```
になるはずである．

###実験結果
![test3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/405484/ca53c0e2-7f83-c5ca-b463-0b9b465c3cd0.png)
おかしい，1.5V中心で10倍に増幅されない・・・と思ったら，設定した式が間違っている

```math
1.5±0.01V -> 1.5±0.1V
```
にするには，

```math
Vout = -10(V_{in-}-1.5) + 1.5\\
\therefore Vout = (1.5*10+1.5)-10V_{in-}\\
=16.5-10V_{in-}\\
```
として設計する必要があるのだ．

ちなみに，実験結果としては，

```math
Vout = 1.5-10V_{in-}
```
では，$V_{in-}>=0.15V$で負側にいってしまうため，何とも言えない．あまりよくわからない結果である．

###再度設計
とりあえず，すべて1kΩで

```math
VDD = 4.58V\\
VSS = 0V\\
R1 = 1kΩ\\
R2 = 10kΩ\\
R3 = 1kΩ\\
R4 = 1kΩ\\

```
とした．

```math
Vout = 25.19-10V_{in-}\\
=-10(V_{in-}-2.519)\\
```
となり，2.519V基準で増幅することになる．

![test4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/405484/432b9299-c8c2-f8f0-d114-6254465e0636.png)
Vinが2.1V±0.1Vで，Voutが1.7V±1.3ぐらいなので，10倍に増幅できている．

理論値との比較をすると
![riron.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/405484/77640b5b-e833-89e5-8025-5f3f9290f40d.png)
曲線の傾きは同じだが，切片は違うという結果になっている．テスター・抵抗等の誤差がまぁまぁ乗ったのかなと予想する．また，横軸は0.1V単位で，敏感なので多少ずれるのは仕方ない気がする．

とにかく，目標の2.2V基準に近い，2.519V基準にできた．

###設計法まとめ
テキトウに設定してなんとなくうまくいったが，計算するならば，

```math
Vin = a \pm b\\
Vout = c \pm \alpha b\\
Vin+ = VDD
```
とするならば($\alpha$は増幅率)，$R2 = \alpha R1$がまず定まる．

つぎに，

```math
Vout = \frac{1+\alpha}{R3+R4} R4*VDD -\alpha V_{in-}
```
となるので，

```math
c = \frac{1+\alpha}{R3+R4} R4*VDD -\alpha a
```
を解いて，R3,R4を指定すればよいということになる．ある程度調整ができるように，半固定抵抗をR3,R4の間に挟むというのもありである．

#ボルテージフォロワ
![opamp6.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/405484/7af2d19c-b22e-f0b7-f498-551ab74633a8.png)

```math
VDD = 4.6V\\
VSS = 0V\\
```
とした．

###実験結果
![test5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/405484/d1685b3b-6eff-061e-7e0e-2732c63f40a1.png)

* 2.5V付近で飽和
* 0.5V付近で飽和

0~0.5V付近は正しく出力されないことを注意する必要がありそうです．

#作動増幅回路＋半固定抵抗器
半固定抵抗器を次の回路のように挟み，実装後調整可能にしました．半固定回路の図がeagleで見つからず，汚くなりました（笑）
![opamp7.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/405484/9f2a86fa-df01-0c82-edda-0ffc0d2f77cb.png)
設計順序は

1. 増幅率R2/R1の指定
2. 手持ちの半固定抵抗器を探す（R5の決定）
3. 動作点(Vin,Vout)の指定により，R3/R4の決定
4. R5の大きさに合わせて，変動域が十分入るよう，あまりに大きすぎないようR3またはR4の調整

という手順になります．
動作点を(Vin=a,Vout=b)とすると

```math
\frac{R4+R5/2}{R3+R4+R5} = \frac{b+\alpha*a}{(1+\alpha)*Vdd}\\
```
という関係があるので，R3を任意に指定するとR4が決定します．
この時，半固定抵抗器R5を調整した場合の変動の仕方は次のようになります．
![設計数値２.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/405484/68cd558a-85dd-ff97-8a1a-3780cfdcb946.png)

図の1,2,3,4の電圧を求めると次のようになります．

```math
V_1 = \{ \frac{1+\alpha}{1+(R3+R5)/R4} Vdd-Vout_{max} \} / \alpha \\
V_2 = \{ \frac{1+\alpha}{1+R3/(R4+R5)} Vdd-Vout_{min} \} / \alpha\\

V_3 =  \{ \frac{1+\alpha}{1+(R3+R5)/R4} Vdd-b \} / \alpha \\
V_4 =   \{ \frac{1+\alpha}{1+R3/(R4+R5)} Vdd-b \} / \alpha\\
```
$Vout_{max}$,$Vout_{min}$は出力の飽和電圧です．
半固定抵抗器による実質的な調整範囲は1~2
変動中心の調整範囲は3~4です．
設計時には，この変動域が目標に十分入るよう，同時に変動域があまりに大きすぎないよう（大きすぎると半固定抵抗器で微調整が必要になってしまう），R3の調整を行うことになります．

###実験

```math
VDD = 4.6V\\
VSS = 0V\\
R1=1k\\
R2 =10k\\
a=2\\
b=1.8\\
R5=10\\
```
として，前述の設計を行った．

```math
R4=10k\\
R3=15.7k\\
```
とすることで

```math
V1=1.15\\
V2=2.86\\
V3=1.27\\
V4=2.73\\
```
とできた．
実験を行うと，
![Result.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/405484/3c443607-675d-abf9-34f3-bcbc27f29204.png)

1.2V~2.5Vぐらいで調整が可能になっている．増幅率も10倍はある．

これで，いつでも増幅器の設計ができそうだ．
ちなみに，作動増幅回路は，ハイインピーダンス状態にはならないのでセンサー出力直接ではなく，ヴォルテージフォロワを前段につけた方がいい気がする．