# LTspice MacOS Tutorial
LTspice 在 MacOS 上面可以安裝也可以跑 但介面還有某些 dot commadns 跑出來的樣子跟 Windows 版本差很多 所以寫了這個 tutorial 協助使用 MacOS 的同學操作 LTspice
這是一個不太專業的 tutorial 基本上只介紹作業會用到的功能 其他東西沒有研究就先沒 cover 了(而且「作業」只有徐碩鴻教授的電子學 其他班要求的不保證全部 cover🥵)
另外 我的寫法、用詞可能也不太專業🤦🏼♀️ 請大家見諒 如果發現邏輯有 bug 的話歡迎留 comment 跟其他讀者說明~
## 安裝
到[這個網站](https://www.analog.com/en/design-center/design-tools-and-calculators/ltspice-simulator.html)找到 "download for MacOS" 的選項 點一下就會下載一個 .pkg 檔

點開 .pkg 檔會跳出 installer 就一直按 continue 還有 agree
最後要 install 的時候輸個密碼就裝好了

裝完會自己跳出把 installer 刪掉的指示 按一下直接幫你刪除 就算安裝完成~
## 檔案
* Documents 裡面會有一個 LTspice 的資料夾 沒有特別指定的話檔案會存在那邊
* 從另外一個資料夾開啟檔案的話 檔案就會改存到那邊
* 要按 cmd + s 才會存檔 不會自動儲存
* 存檔的副檔名是 .asc 點開來就是電路圖的樣子 可以繼續操作
* 執行的時候會跑出幾個檔案(一個 .log,一個 .net,一個 .op.raw,一個 .raw)他們都會在關掉執行畫面後消失

## 介面&工具
剛打開會問你要如何開始 創新檔案就選 "Start a new, blank Schematic"

然後就會跳到一個簡潔到像裝了一個半成品的畫面:上面的功能鍵只剩下三個 背景也沒有 Windows 版的圖騰
**不用擔心 等下直接在這個畫面拉出你的電路圖 所有東西都用快捷鍵操作就好了~**

### 設定格點
畫電路的時候比較好對齊:secondary click > View > Grid Dots


### zoom in / zoom out & drag
就是一般 zoom in zoom out 的手勢
游標是箭頭的情況下按著拉動就可以 drag 整個 canva
### wire
fn + F3
* 會跑出十字 中心點就是要畫下去的點
* secondary click 可以斷開 形成一個 mesh 也會自動斷開
* ⚠️左邊的交叉相當於 wire 直接跨過去 像右邊那樣有小方塊才代表有形成一個 node
* **how:** 在碰到 wire 的時候點一下斷開 再按一次從那邊接著畫

### delete
fn + F5
游標變成一個剪刀 可以把碰到的元件或者那段 wire 刪除
### move
fn + F7
游標變成一個手套 按著可以選取要移動的元件 放開後他們會跟著游標移動 移到定點後點一下即可放置
### undo / redo
cmd + Z / cmd + shift + Z
### label net
給那個 node 取名字
1. 游標移到要命名的 node 上 secondary click 一下 然後選 label net

2. 輸入那個 node 的名稱

3. input / output 另有圖示 點一下 port type 旁的選單會看到

4. 完成後長這樣

## componenets
按 fn + F2 可叫出元件總覽

有些常用的元件有快捷鍵
|C|D|G|L|R|V
|---|---|---|---|---|---
|capacitor|diode|ground|inductor|resistor|voltage source
常用但要從總覽點的元件主要就是 BJT 跟 MOSFET
一般 BJT 選 npn

MOSFET 選 nmos4(中間自己幫他接地)

### rotate & mirror
cmd + R / ctrl + R / opt + R 都可
rotate 用 R,mirror(鏡像)用 E
### 設定名稱
1. 游標移到名稱(default: R1, C1...)上方
2. 游標變成輸入模式後 secondary click
3. 跳出以下對話框即可改變名稱

### RLC 參數
有兩種設定方式
#### 第一種
1. 游標移到數值(default: R, L, C)上方
2. 游標變成輸入模式後 secondary click
3. 跳出以下對話框即可設定數值上方

*注意不要和名稱搞混*
#### 第二種
1. 游標移到元件上方
2. 游標變成手指後 secondary click
3. 跳出以下對話框可設定進階參數

#### 數量級 prefix
|kilo|mega|giga|terra
|---|---|---|---
|K / k|MEG / meg|G / g|T / t
|10^3|10^6|10^9|10^12
|milli|micro|nano|pico|femto
|---|---|---|---|---
|M / m|U / u|N / n|P / p|F / f
|10^-3|10^-6|10^-9|10^-12|10^-15
### voltage source
#### DC source
適用:VDD, VCC 這些只有直流的電壓源
1. 游標移到元件上方
2. 游標變成手指後 secondary click
3. 跳出以下對話框設定電壓值

#### small signal
適用:Vin 只要考慮 small signal 的時候
1. 上一個步驟按一下 advance
2. DC Value 設定 0V
3. 下面 Small Signal Parameters 設定 Amplitude = 1, Phase = 0

#### sinusoidal signal
適用:指定 Vin 是 sin 波的時候
1. 一樣按一下 advance
2. DC value 那個選單打開選 SINE(...) 那個
3. offset 設 0,amplitude 跟 freq 依照題目需求設定

#### dependent source
跟 independent source 是不同的元件:
|type|VCCS|VCVS|CCCS|CCVS
|---|---|---|---|---
|代號|G|E|F|H
|圖示||||
我這學期的作業只有用到 voltage control 的 所以就先只講 voltage control xx source 要怎麼接
基本上就是把 + 和 - 那邊另外接到控制他的 V+ & V- 端
e.g.

secondary click 下方的數值(0.01 那裡,預設為 G 或 E)可以改變 A(倍率)的值
---
以下幾個參數設定要用到 dot command ".model"
要怎麼生成 dot command 下一個章節有寫
### diode 參數
#### 語法
.model <diode 型號> D (...)
#### 可設定的參數(寫在括號內)
|Vfwd
|---
|V_D,on
e.g.

D1 是這顆 diode 的名字
Diode 是這顆 diode 的「型號」,一個電路裡面型號是 Diode 的 diodes 會 share 一樣的參數
### BJT 參數
#### 語法
.model <bjt 型號> npn (...)
#### 可設定的參數(寫在括號內)
|Bf|Vaf|Is
|---|---|---
|β(放大倍率)|Va (Early Voltage)|Is(飽和電流)
e.g.

Q1 是這顆 BJT 的名字
NPN 是這顆 BJT 的「型號」,概念同 diode 的型號
### MOSFET 參數
#### 語法
.model <mosfet 型號> nmos (...)
#### 可設定的參數(寫在括號內)
|level|kp|vt0|lambda|
|---|---|---|---
|不同種類 設為 1 就好了|μnCox|V_TH|λ (1/Va)
e.g.

M1 是這顆 MOSFET 的名字
NMOS 是這顆 MOSFET 的「型號」,概念同 diode 的型號
#### 除此之外 W & L 的值也可以設定
1. 游標移到元件上方
2. 游標變成手指後 secondary click
3. 跳出以下對話框,L 設為 1u,W 依給定的值輸入(記得數量級也是 u)

## dot commands
給不同的 commands 可以幫你用不同方式模擬電壓、電流等
### 怎麼打出來
1. 按一下 s 會跳出這個對話框 記得打一個英文句號 "." 再開始打指令

2. 按 ok 之後找一個看了舒服的地方把那串 dot command 放在那裡

3. 要操作的時候按左上在跑的小人 或者 secondary click 也可以找到他

### .model
用法參考上面 diode, BJT & MOSFET 的參數設定
### .op
Operating point analysis 就是模擬每個節點的電壓還有流經元件的電流
#### 語法
一個 .op 就好了 後面不用加參數
#### 讀取結果
一開始會跳出空白的視窗 這時候不用擔心 按看起來像「做圖」的那個 icon

這時候會跳出很多選項 可以選擇想模擬出的電壓/電流(可以同時選很多項模擬)

有時候不知道想模擬的 node 叫什麼名字 可以把游標移到他上面 點一下就可以選取
像是下面的例子 我把游標移到桃紅色 x 上點一下 就相當於選擇觀察 N001 節點的電壓

要注意的是游標要變成某些特定造型才可以選取
變成這樣代表有電壓可以模擬

變成這樣代表有電流可以模擬

選取後會自動幫你畫成圖
要讀取數值的話游標移到上面的名稱點一下

會跳出這個小視窗 讀取圈圈裡面的數值即可
作業 LTspice 實作題我是直接貼上這個視窗的截圖

同時觀察很多項的話 一開始線都是藍色很難分辨哪條線屬於哪個變數
可以將游標移到某一個項目 secondary click 一下 就能改變顏色

想模擬出某兩個 node 的電位差也可以直接在選的時候打出來

### .dc
DC analysis 電壓源供應直流電 給一個供應電壓的 range 模擬各處電壓、電流隨電壓源大小的變化
#### 語法
.dc <電壓源名稱> <最低值> <最高值> <每次跳多少>
e.g.
.dc V1 -5 5 0.01
V1 電壓源從 -5V 到 5V 每次跳 0.01V
#### 讀取結果
跟 .op 一樣 可以選要觀測的項目

x 座標是 voltage source 的值
y 座標是該節點電壓/電流隨 voltage source 而改變的值

一樣點一下名稱就可以讀取數值
(這時候 Horz 會有值 對比 .op 時那邊是 -- N/A -- )

按一下鍵盤的向右就可以跳 10mV 因為設定「一次跳 0.01V」
(向左就 -10mV)

有時候因為精確度的關係 LTspice 不會準確地顯示 0 而會顯示一個很小的值 不需要太擔心

要在做圖那邊標上數值的話 在畫面任何地方 secondary click > draw > Cursor Position

標起來像這樣

游標移到數值標示上方 secondary click 一下可以改變他的顯示
(對的 連顯示什麼數值都可以自己設定😀)

### .ac
AC analysis 基本上就是在畫 Bode Plot 會同時畫給你 magnitude 還有 phase
(不知道 Bode Plot 是什麼的話 簡單來說就是 magnitude / phase 與frequency 的關係圖;frequency 會取 log,magnitude 會取 20 * log,單位是 dB)
#### 語法
.ac **dec** <每個 decade 切多細> <開始的 freq> <截止的 freq>
e.g.
.ac dec 1000 1 10T
座標設為 decade 顯示法(i.e. 取 log 值) 每一個 decade 裡面再細切成 1000 份,frequency 從 1 Hz 到 10THz
#### 讀取結果
跟 .op 一樣 可以選要觀測的項目

x 座標是 frequency (取過 log magnitude 的)
實線是 magnitude 值看左側的 y 座標(已轉換為 dB)
虛線是 phase 值看右側的 y 座標(deg)

一樣點擊名稱可以看到確切數值,magnitude 和 phase 可以同時觀測
在圖上標示數值的話 一次只能標 magnitude 或 phase,取決於右邊藍色點點選到哪個

### .tran
Transient analysis 電壓源輸出隨時間改變的 V(t),模擬各處電壓、電流隨時間的變化
#### 語法
.tran <模擬多長的時間>
e.g.
.tran 5m
從 0s 觀測到 5ms
#### 讀取結果
跟 .op 一樣 可以選要觀測的項目

x 座標是時間
y 座標是觀測到的數值

一樣點一下可以讀取數值

### .tf
Transfer Analysis 分析一個 "amplifier" 的 properties 包括 gain, input impedance 還有 output impedance
#### 語法
.tf V(輸出節點) <輸入電壓源>
e.g. tf V(Vout) V1
模擬出輸入為 V1 輸出為 Vout 節點的各項 properties
#### 讀取結果
跟 .op 一樣 可以選要觀測的項目
只是這次可以觀察的不是電壓或電流 而是三個 properties:
gain (transfer function), input impedance, output impedance

做圖結果跟 .op 一樣 沒有 x 座標 就是一個常數(觀測得到的值)


### .step
前面 .dc 的時候設 voltage source 的電壓值為變數,用 .step 我們可以設更多東西為變數,e.g. 電阻值 模擬各個電壓/電流值隨該變數的變化
#### 語法
.step **param** <變數名> <最小值> <最大值> <一次跳多少>
e.g.
.step param Rc 350 400 .01
"Rc" 的數值從 350 到 400,每 0.01 模擬一次
#### 前置作業
i.e. 變數怎麼設
在原本應該輸入數值的地方改成 {x}
x 是任意變數名稱
記得要有大括號
e.g.

dot command 裡面的 "param" 就在說 <變數名> 是你設的 parameter
#### 讀取結果
跟 .op 一樣 可以選要觀測的項目

跟 .dc 的概念差不多 只是 x 軸變成你設的變數


比較好玩的是 因為要多一個「設變數」的動作 執行之後程式要跑的東西變多 會看到有東西一直在跳 不是因為有東西寫錯請放心 :D