# 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 檔 ![Screenshot 2024-01-21 at 11.40.02 PM-2](https://hackmd.io/_uploads/SyBrohcYa.png) 點開 .pkg 檔會跳出 installer 就一直按 continue 還有 agree 最後要 install 的時候輸個密碼就裝好了 ![Screenshot 2024-01-21 at 11.46.01 PM](https://hackmd.io/_uploads/Sk6uhh5F6.png =600x) 裝完會自己跳出把 installer 刪掉的指示 按一下直接幫你刪除 就算安裝完成~ ## 檔案 * Documents 裡面會有一個 LTspice 的資料夾 沒有特別指定的話檔案會存在那邊 * 從另外一個資料夾開啟檔案的話 檔案就會改存到那邊 * 要按 cmd + s 才會存檔 不會自動儲存 * 存檔的副檔名是 .asc 點開來就是電路圖的樣子 可以繼續操作 * 執行的時候會跑出幾個檔案(一個 .log,一個 .net,一個 .op.raw,一個 .raw)他們都會在關掉執行畫面後消失 ![Screenshot 2024-01-25 at 12.57.00 AM](https://hackmd.io/_uploads/HJ1ObpCKa.png =400x) ## 介面&工具 剛打開會問你要如何開始 創新檔案就選 "Start a new, blank Schematic" ![Screenshot 2024-01-21 at 11.52.52 PM](https://hackmd.io/_uploads/Syt-Ch5tT.png =500x) 然後就會跳到一個簡潔到像裝了一個半成品的畫面:上面的功能鍵只剩下三個 背景也沒有 Windows 版的圖騰 **不用擔心 等下直接在這個畫面拉出你的電路圖 所有東西都用快捷鍵操作就好了~** ![Screenshot 2024-01-21 at 11.50.02 PM](https://hackmd.io/_uploads/rJXF02qt6.png =500x) ### 設定格點 畫電路的時候比較好對齊:secondary click > View > Grid Dots ![Screenshot 2024-01-21 at 11.57.42 PM](https://hackmd.io/_uploads/HJNcJa9F6.png =00x) ![Screenshot 2024-01-22 at 12.02.43 AM](https://hackmd.io/_uploads/SJSNeT9Ya.png =500x) ### zoom in / zoom out & drag 就是一般 zoom in zoom out 的手勢 游標是箭頭的情況下按著拉動就可以 drag 整個 canva ### wire fn + F3 * 會跑出十字 中心點就是要畫下去的點 * secondary click 可以斷開 形成一個 mesh 也會自動斷開 * ⚠️左邊的交叉相當於 wire 直接跨過去 像右邊那樣有小方塊才代表有形成一個 node * **how:** 在碰到 wire 的時候點一下斷開 再按一次從那邊接著畫 ![Screenshot 2024-01-22 at 12.10.58 AM](https://hackmd.io/_uploads/SJUUMa9Ya.png =500x) ### delete fn + F5 游標變成一個剪刀 可以把碰到的元件或者那段 wire 刪除 ### move fn + F7 游標變成一個手套 按著可以選取要移動的元件 放開後他們會跟著游標移動 移到定點後點一下即可放置 ### undo / redo cmd + Z / cmd + shift + Z ### label net 給那個 node 取名字 1. 游標移到要命名的 node 上 secondary click 一下 然後選 label net ![Screenshot 2024-01-24 at 6.51.41 PM](https://hackmd.io/_uploads/SyLQ0uCFp.png =250x) 2. 輸入那個 node 的名稱 ![Screenshot 2024-01-24 at 6.51.50 PM](https://hackmd.io/_uploads/B1Q9C_Rtp.png =600x) 3. input / output 另有圖示 點一下 port type 旁的選單會看到 ![Screenshot 2024-01-24 at 6.51.54 PM](https://hackmd.io/_uploads/SJGjRd0Fa.png =200x) 4. 完成後長這樣 ![Screenshot 2024-01-24 at 6.52.19 PM](https://hackmd.io/_uploads/Sya0AuAYp.png =600x) ## componenets 按 fn + F2 可叫出元件總覽 ![Screenshot 2024-01-22 at 12.19.51 AM](https://hackmd.io/_uploads/BJwY4pcF6.png =600x) 有些常用的元件有快捷鍵 |C|D|G|L|R|V |---|---|---|---|---|--- |capacitor|diode|ground|inductor|resistor|voltage source 常用但要從總覽點的元件主要就是 BJT 跟 MOSFET 一般 BJT 選 npn ![Screenshot 2024-01-22 at 12.27.12 AM](https://hackmd.io/_uploads/HJWHLT5F6.png =200x) MOSFET 選 nmos4(中間自己幫他接地) ![Screenshot 2024-01-22 at 12.29.16 AM](https://hackmd.io/_uploads/rkdO8T9tp.png =200x) ### rotate & mirror cmd + R / ctrl + R / opt + R 都可 rotate 用 R,mirror(鏡像)用 E ### 設定名稱 1. 游標移到名稱(default: R1, C1...)上方 2. 游標變成輸入模式後 secondary click 3. 跳出以下對話框即可改變名稱 ![Screenshot 2024-01-22 at 12.39.56 AM](https://hackmd.io/_uploads/Bkhlt6qFT.png =600x) ### RLC 參數 有兩種設定方式 #### 第一種 1. 游標移到數值(default: R, L, C)上方 2. 游標變成輸入模式後 secondary click 3. 跳出以下對話框即可設定數值上方 ![Screenshot 2024-01-22 at 12.42.17 AM](https://hackmd.io/_uploads/HkXVoacF6.png =600x) *注意不要和名稱搞混* #### 第二種 1. 游標移到元件上方 2. 游標變成手指後 secondary click 3. 跳出以下對話框可設定進階參數 ![Screenshot 2024-01-22 at 12.42.24 AM](https://hackmd.io/_uploads/ByV5o6qKa.png =600x) #### 數量級 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. 跳出以下對話框設定電壓值 ![Screenshot 2024-01-22 at 3.12.36 PM](https://hackmd.io/_uploads/B1P6H5iF6.png =600x) #### small signal 適用:Vin 只要考慮 small signal 的時候 1. 上一個步驟按一下 advance 2. DC Value 設定 0V 3. 下面 Small Signal Parameters 設定 Amplitude = 1, Phase = 0 ![Screenshot 2024-01-22 at 3.12.45 PM](https://hackmd.io/_uploads/HypLU5oYa.png =600x) #### sinusoidal signal 適用:指定 Vin 是 sin 波的時候 1. 一樣按一下 advance 2. DC value 那個選單打開選 SINE(...) 那個 3. offset 設 0,amplitude 跟 freq 依照題目需求設定 ![Screenshot 2024-01-24 at 9.40.16 PM](https://hackmd.io/_uploads/ByQyE9AFp.png =600x) #### dependent source 跟 independent source 是不同的元件: |type|VCCS|VCVS|CCCS|CCVS |---|---|---|---|--- |代號|G|E|F|H |圖示|![Screenshot 2024-01-24 at 11.09.14 PM](https://hackmd.io/_uploads/HkxK_sRKp.png =150x)|![Screenshot 2024-01-24 at 11.09.19 PM](https://hackmd.io/_uploads/ByLc_iRtp.png =150x)|![Screenshot 2024-01-24 at 11.09.34 PM](https://hackmd.io/_uploads/S1yhdiAYT.png =150x)|![Screenshot 2024-01-24 at 11.09.25 PM](https://hackmd.io/_uploads/HyBTOiRYT.png =150x) 我這學期的作業只有用到 voltage control 的 所以就先只講 voltage control xx source 要怎麼接 基本上就是把 + 和 - 那邊另外接到控制他的 V+ & V- 端 e.g. ![Screenshot 2024-01-24 at 11.17.45 PM](https://hackmd.io/_uploads/HysQ9oAYa.png =250x) secondary click 下方的數值(0.01 那裡,預設為 G 或 E)可以改變 A(倍率)的值 --- 以下幾個參數設定要用到 dot command ".model" 要怎麼生成 dot command 下一個章節有寫 ### diode 參數 #### 語法 .model <diode 型號> D (...) #### 可設定的參數(寫在括號內) |Vfwd |--- |V_D,on e.g. ![Screenshot 2024-01-24 at 9.04.53 PM](https://hackmd.io/_uploads/rJ3-it0Y6.png =600x) D1 是這顆 diode 的名字 Diode 是這顆 diode 的「型號」,一個電路裡面型號是 Diode 的 diodes 會 share 一樣的參數 ### BJT 參數 #### 語法 .model <bjt 型號> npn (...) #### 可設定的參數(寫在括號內) |Bf|Vaf|Is |---|---|--- |β(放大倍率)|Va (Early Voltage)|Is(飽和電流) e.g. ![Screenshot 2024-01-22 at 3.41.59 PM](https://hackmd.io/_uploads/H1LaT9jFT.png =600x) Q1 是這顆 BJT 的名字 NPN 是這顆 BJT 的「型號」,概念同 diode 的型號 ### MOSFET 參數 #### 語法 .model <mosfet 型號> nmos (...) #### 可設定的參數(寫在括號內) |level|kp|vt0|lambda| |---|---|---|--- |不同種類 設為 1 就好了|μnCox|V_TH|λ (1/Va) e.g. ![Screenshot 2024-01-22 at 3.37.24 PM](https://hackmd.io/_uploads/SJhGkjsYT.png =600x) M1 是這顆 MOSFET 的名字 NMOS 是這顆 MOSFET 的「型號」,概念同 diode 的型號 #### 除此之外 W & L 的值也可以設定 1. 游標移到元件上方 2. 游標變成手指後 secondary click 3. 跳出以下對話框,L 設為 1u,W 依給定的值輸入(記得數量級也是 u) ![Screenshot 2024-01-24 at 11.55.11 PM](https://hackmd.io/_uploads/HyCxQ2AFa.png =600x) ## dot commands 給不同的 commands 可以幫你用不同方式模擬電壓、電流等 ### 怎麼打出來 1. 按一下 s 會跳出這個對話框 記得打一個英文句號 "." 再開始打指令 ![Screenshot 2024-01-23 at 9.38.49 AM](https://hackmd.io/_uploads/HkRsY9hK6.png =600x) 2. 按 ok 之後找一個看了舒服的地方把那串 dot command 放在那裡 ![Screenshot 2024-01-23 at 9.39.02 AM](https://hackmd.io/_uploads/SyEat9hKp.png =600x) 3. 要操作的時候按左上在跑的小人 或者 secondary click 也可以找到他 ![Screenshot 2024-01-23 at 9.57.22 AM](https://hackmd.io/_uploads/ryIMpq3Y6.png =200x) ### .model 用法參考上面 diode, BJT & MOSFET 的參數設定 ### .op Operating point analysis 就是模擬每個節點的電壓還有流經元件的電流 #### 語法 一個 .op 就好了 後面不用加參數 #### 讀取結果 一開始會跳出空白的視窗 這時候不用擔心 按看起來像「做圖」的那個 icon ![Screenshot 2024-01-23 at 9.58.50 AM](https://hackmd.io/_uploads/S1N0eW0tp.png =500x) 這時候會跳出很多選項 可以選擇想模擬出的電壓/電流(可以同時選很多項模擬) ![Screenshot 2024-01-24 at 11.19.18 AM](https://hackmd.io/_uploads/ryPbM-0Ka.png =500x) 有時候不知道想模擬的 node 叫什麼名字 可以把游標移到他上面 點一下就可以選取 像是下面的例子 我把游標移到桃紅色 x 上點一下 就相當於選擇觀察 N001 節點的電壓 ![Screenshot 2024-01-24 at 11.27.23 AM](https://hackmd.io/_uploads/SJR-SZCt6.png =500x) 要注意的是游標要變成某些特定造型才可以選取 變成這樣代表有電壓可以模擬 ![Screenshot 2024-01-24 at 11.30.18 AM](https://hackmd.io/_uploads/ryTPSZRtp.png =50x) 變成這樣代表有電流可以模擬 ![Screenshot 2024-01-24 at 11.30.25 AM](https://hackmd.io/_uploads/ryLpSWAtp.png =50x) 選取後會自動幫你畫成圖 要讀取數值的話游標移到上面的名稱點一下 ![Screenshot 2024-01-24 at 11.21.38 AM](https://hackmd.io/_uploads/rJlePG-Rt6.png =500x) 會跳出這個小視窗 讀取圈圈裡面的數值即可 作業 LTspice 實作題我是直接貼上這個視窗的截圖 ![Screenshot 2024-01-24 at 11.22.44 AM](https://hackmd.io/_uploads/S1XiGW0Ya.png =400x) 同時觀察很多項的話 一開始線都是藍色很難分辨哪條線屬於哪個變數 可以將游標移到某一個項目 secondary click 一下 就能改變顏色 ![Screenshot 2024-01-24 at 11.40.01 AM](https://hackmd.io/_uploads/BJwsIbCFa.png =500x) 想模擬出某兩個 node 的電位差也可以直接在選的時候打出來 ![Screenshot 2024-01-24 at 6.47.13 PM](https://hackmd.io/_uploads/SkP1sPRt6.png =500x) ### .dc DC analysis 電壓源供應直流電 給一個供應電壓的 range 模擬各處電壓、電流隨電壓源大小的變化 #### 語法 .dc <電壓源名稱> <最低值> <最高值> <每次跳多少> e.g. .dc V1 -5 5 0.01 V1 電壓源從 -5V 到 5V 每次跳 0.01V #### 讀取結果 跟 .op 一樣 可以選要觀測的項目 ![Screenshot 2024-01-24 at 8.37.14 PM](https://hackmd.io/_uploads/S1NREtRF6.png =500x) x 座標是 voltage source 的值 y 座標是該節點電壓/電流隨 voltage source 而改變的值 ![Screenshot 2024-01-24 at 8.38.53 PM](https://hackmd.io/_uploads/rJrlHYRY6.png =500x) 一樣點一下名稱就可以讀取數值 (這時候 Horz 會有值 對比 .op 時那邊是 -- N/A -- ) ![Screenshot 2024-01-24 at 8.37.50 PM](https://hackmd.io/_uploads/Sys-HKRY6.png =400x) 按一下鍵盤的向右就可以跳 10mV 因為設定「一次跳 0.01V」 (向左就 -10mV) ![Screenshot 2024-01-24 at 8.38.05 PM](https://hackmd.io/_uploads/HJc7BtAYp.png =400x) 有時候因為精確度的關係 LTspice 不會準確地顯示 0 而會顯示一個很小的值 不需要太擔心 ![Screenshot 2024-01-24 at 8.40.13 PM](https://hackmd.io/_uploads/Hy1rHtAF6.png =400x) 要在做圖那邊標上數值的話 在畫面任何地方 secondary click > draw > Cursor Position ![Screenshot 2024-01-24 at 8.47.02 PM](https://hackmd.io/_uploads/rJFUPFRYp.png =400x) 標起來像這樣 ![Screenshot 2024-01-24 at 8.47.10 PM](https://hackmd.io/_uploads/SJVvDYAKT.png =500x) 游標移到數值標示上方 secondary click 一下可以改變他的顯示 (對的 連顯示什麼數值都可以自己設定😀) ![Screenshot 2024-01-24 at 8.47.39 PM](https://hackmd.io/_uploads/HJ0DwKRKp.png =500x) ### .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 一樣 可以選要觀測的項目 ![Screenshot 2024-01-24 at 9.13.39 PM](https://hackmd.io/_uploads/Bki9aFRK6.png =500x) x 座標是 frequency (取過 log magnitude 的) 實線是 magnitude 值看左側的 y 座標(已轉換為 dB) 虛線是 phase 值看右側的 y 座標(deg) ![Screenshot 2024-01-24 at 9.15.42 PM](https://hackmd.io/_uploads/SyhmCt0Y6.png =500x) 一樣點擊名稱可以看到確切數值,magnitude 和 phase 可以同時觀測 在圖上標示數值的話 一次只能標 magnitude 或 phase,取決於右邊藍色點點選到哪個 ![Screenshot 2024-01-24 at 9.14.16 PM](https://hackmd.io/_uploads/rkVMCYAta.png =400x) ### .tran Transient analysis 電壓源輸出隨時間改變的 V(t),模擬各處電壓、電流隨時間的變化 #### 語法 .tran <模擬多長的時間> e.g. .tran 5m 從 0s 觀測到 5ms #### 讀取結果 跟 .op 一樣 可以選要觀測的項目 ![Screenshot 2024-01-24 at 9.45.37 PM](https://hackmd.io/_uploads/S1RlS5AF6.png =500x) x 座標是時間 y 座標是觀測到的數值 ![Screenshot 2024-01-24 at 9.45.43 PM](https://hackmd.io/_uploads/Hy3WrcRK6.png =500x) 一樣點一下可以讀取數值 ![Screenshot 2024-01-24 at 9.46.05 PM](https://hackmd.io/_uploads/HJ8fr5RYp.png =400x) ### .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 ![Screenshot 2024-01-24 at 10.55.58 PM](https://hackmd.io/_uploads/HyfHriRK6.png =500x) 做圖結果跟 .op 一樣 沒有 x 座標 就是一個常數(觀測得到的值) ![Screenshot 2024-01-24 at 10.56.14 PM](https://hackmd.io/_uploads/ByfSHi0Yp.png =500x) ![Screenshot 2024-01-24 at 10.56.16 PM](https://hackmd.io/_uploads/BJmrSsCKp.png =400x) ### .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. ![Screenshot 2024-01-24 at 11.32.28 PM](https://hackmd.io/_uploads/Syp5ajCYa.png =135x) dot command 裡面的 "param" 就在說 <變數名> 是你設的 parameter #### 讀取結果 跟 .op 一樣 可以選要觀測的項目 ![Screenshot 2024-01-24 at 11.40.04 PM](https://hackmd.io/_uploads/SkRv1nRt6.png =500x) 跟 .dc 的概念差不多 只是 x 軸變成你設的變數 ![Screenshot 2024-01-24 at 11.38.26 PM](https://hackmd.io/_uploads/ByCb1n0Yp.png =500x) ![Screenshot 2024-01-24 at 11.38.31 PM](https://hackmd.io/_uploads/B1CZ1hCY6.png =400x) 比較好玩的是 因為要多一個「設變數」的動作 執行之後程式要跑的東西變多 會看到有東西一直在跳 不是因為有東西寫錯請放心 :D