本書以嵌入式系統(tǒng)為切入點,結合開源電機控制項目ODrive,采用“實踐導向”的學習模式——避開繁雜理論與公式的困擾,由淺入深講解嵌入式電機控制核心知識,幫助讀者逐步構建完整的理論體系。?全書圍繞ODrive項目層層展開:第1章先鋪墊電機基礎知識與磁場定向控制(FOC)原理;第2~3章聚焦實操,指導硬件選購調試與開發(fā)環(huán)境搭建;第4~7章深入技術核心,解析電路模塊、軟件架構、源代碼邏輯及上位機原理;第8章以DIY遙控小車實戰(zhàn)項目收尾,實現(xiàn)知識落地。書中同步提供配套代碼、3D模型及B站視頻教程,助力讀者高效學習。?本書的適用人群廣泛:既適合嵌入式電機控制領域的新人與學生,助力其跨越理論與實踐的鴻溝;也適用于需要提升ODrive應用能力的工程師,深化其對技術的理解;對開源項目、智能硬件DIY感興趣的愛好者,亦可通過本書掌握實用技能,為后續(xù)職業(yè)發(fā)展或自主開發(fā)項目奠定基礎。
張閩,擁有將近20年的嵌入式系統(tǒng)編程經驗,積累了豐富的軟硬件開發(fā)知識和實踐經驗,先后在多個領域的知名公司擔任重要角色。目前,就職于亞馬遜Amazon,繼續(xù)從事嵌入式系統(tǒng)和軟硬件一體化的開發(fā)工作,參與到全球領先的智能設備項目中,利用前沿技術推動嵌入式解決方案的創(chuàng)新。
第1章 探秘電機世界——轉起來 1
1.1 直流電機 1
1.1.1 有刷直流電機 1
1.1.2 無刷直流電機 2
1.2 交流電機 3
1.2.1 異步電機 3
1.2.2 永磁同步電機 4
1.3 其他常用電機 4
1.3.1 步進電機 4
1.3.2 舵機 5
1.4 磁場定向控制 6
1.4.1 第一步:獲取電流與位置 6
1.4.2 第二步:坐標變換 6
1.4.3 第三步:PID運算 7
1.4.4 第四步:Park逆變換 7
1.4.5 第五步:SVPWM/SPWM 7
1.4.6 總結 8
第2章 ODrive實操——黑科技 10
2.1 探秘ODrive項目 10
2.2 選購ODrive硬件 11
2.2.1 電機 11
2.2.2 編碼器 13
2.2.3 剎車電阻 13
2.2.4 電源 13
2.2.5 調試器 14
2.3 實操ODrive電機 15
2.3.1 安裝上位機 15
2.3.2 初始化上位機 16
2.3.3 設置電機 16
2.3.4 設置編碼器 17
2.3.5 設置剎車電阻 18
2.3.6 設置電機控制環(huán)增益參數(shù) 18
2.3.7 啟動電機 19
2.3.8 自動閉環(huán) 19
2.3.9 操作狀態(tài)機 20
2.3.10 切換控制模式 23
2.3.11 設定輸入模式 24
第3章 ODrive開發(fā)環(huán)境——搞起來 26
3.1 Linux環(huán)境折騰指南 26
3.1.1 工具:交叉工具鏈 26
3.1.2 工具:GDB 27
3.1.3 工具:OpenOCD 28
3.1.4 工具:VSCode 28
3.1.5 工具:odrivetool 28
3.1.6 實操:下載代碼 29
3.1.7 實操:編譯 29
3.1.8 實操:刷機 30
3.1.9 實操:調試 31
3.2 Windows環(huán)境折騰指南 31
3.2.1 工具:Python&Pip 31
3.2.2 工具:odrivetool 32
3.2.3 工具:交叉工具鏈 32
3.2.4 工具:GDB 34
3.2.5 工具:OpenOCD 34
3.2.6 工具:VSCode 35
3.2.7 工具:Git 35
3.2.8 實操:下載代碼 35
3.2.9 實操:編譯 35
3.2.10 實操:刷機 37
3.2.11 實操:調試 38
3.2.12 Windows常見問題 38
3.3 ODrive構建系統(tǒng)重構 39
第4章 ODrive電路大揭秘 57
4.1 探秘原理圖 57
4.1.1 第一張原理圖 57
4.1.2 第二張原理圖 59
4.1.3 第三張原理圖 59
4.1.4 第四張原理圖 59
4.2 拆解模塊電路 63
4.2.1 主控芯片 63
4.2.2 調試接口 65
4.2.3 USB通信電路 66
4.2.4 CAN總線 66
4.2.5 CAN終端電阻與啟動模式 67
4.2.6 電源采樣 68
4.2.7 GPIO 69
4.2.8 編碼器 70
4.2.9 電源 71
4.2.10 0號電機驅動模塊 73
4.2.11 1號電機驅動模塊 74
4.2.12 剎車電阻 76
4.3 系統(tǒng)模塊框圖 77
第5章 ODrive軟件——初探宮殿 78
5.1 軟件總體:骨架 78
5.1.1 main函數(shù)主線 79
5.1.2 極簡框圖 80
5.2 文件夾結構:抽絲剝繭 81
5.3 線程:分身術剖析 84
5.3.1 主線程main函數(shù) 84
5.3.2 UART通信線程 85
5.3.3 USB通信線程 86
5.3.4 CAN總線通信線程 86
5.3.5 ADC1采樣線程 87
5.3.6 狀態(tài)機線程 87
5.3.7 定時器8中斷函數(shù)(非線程) 88
5.4 自動生成文件:用代碼寫代碼 89
5.4.1 autogen/version.c 89
5.4.2 autogen/interfaces.hpp 90
5.4.3 autogen/function_stubs.hpp 91
5.4.4 autogen/endpoints.hpp 91
5.4.5 autogen/type_info.hpp 92
5.4.6 自動代碼生成小結 92
5.5 接口文件odrive-interface.yaml:設備對話說明書 94
5.6 RPC模塊 97
5.7 耗時測量模塊 98
5.8 數(shù)據更新模塊 99
5.9 ADC采樣模塊 101
5.10 定時器模塊 103
5.10.1 電機定時器 103
5.10.2 剎車電阻定時器 104
5.10.3 編碼器定時器 105
5.10.4 PWM輸入捕獲定時器 105
5.10.5 任務耗時定時器 106
5.10.6 系統(tǒng)滴答定時器 107
5.11 溫度測量模塊 107
5.11.1 OnboardThermistorCurrentLimiter(板載) 107
5.11.2 OffboardThermistorCurrentLimiter(外接) 108
5.12 編碼器模塊 108
5.13 通信接口模塊 109
5.13.1 USB通信 110
5.13.2 CAN通信 110
5.13.3 UART通信 111
5.14 FOC控制模塊 111
5.14.1 TIM8中斷觸發(fā) 112
5.14.2 相電流采樣 113
5.14.3 MOS管狀態(tài)檢查 114
5.14.4 電流審核 114
5.14.5 電流克拉克變換 115
5.14.6 控制塊更新 116
5.14.7 相電流二次采樣 119
5.14.8 電流矯正 120
5.14.9 FOC算法執(zhí)行 120
5.14.10 時間戳錯誤檢測 121
5.15 三環(huán)控制:穩(wěn)住系統(tǒng)的三重護法 122
5.15.1 位置環(huán) 122
5.15.2 速度環(huán) 123
5.15.3 電流環(huán) 127
5.16 SVPWM模塊 130
第6章 ODrive軟件模塊——拆解宮殿 134
6.1 匯編文件初始化 134
6.2 序列號初始化 139
6.3 系統(tǒng)時鐘初始化 141
6.4 OTP初始化 147
6.5 配置初始化 149
6.5.1 板級參數(shù) 151
6.5.2 CAN參數(shù) 152
6.5.3 編碼器參數(shù) 153
6.5.4 無感參數(shù) 154
6.5.5 控制器參數(shù) 155
6.5.6 軌跡控制參數(shù) 157
6.5.7 限位開關參數(shù) 157
6.5.8 剎車參數(shù) 158
6.5.9 電機參數(shù) 159
6.5.10 板載溫度參數(shù) 161
6.5.11 外接溫度參數(shù) 161
6.5.12 軸參數(shù) 162
6.6 板卡資源初始化 165
6.6.1 GPIO初始化 165
6.6.2 DMA初始化 166
6.6.3 ADC初始化 167
6.6.4 TIMER初始化 167
6.6.5 SPI初始化 168
6.6.6 中斷初始化 168
6.6.7 UART初始化 169
6.6.8 I2C初始化 169
6.7 板載GPIO初始化 170
6.8 USB協(xié)議棧初始化 173
6.9 ADC1二次初始化 173
6.10 UART通信線程啟動 175
6.11 USB通信線程啟動 178
6.12 I2C通信線程啟動 180
6.13 CAN通信線程啟動 181
6.14 PWM捕獲初始化 182
6.15 編碼器初始化 183
6.16 電機初始化 184
6.17 交流估算器初始化 186
6.18 ADC和PWM定時器啟動 186
6.19 ADC1采樣線程啟動 187
6.20 準備進入狀態(tài)機 188
6.21 狀態(tài)機線程啟動 189
6.21.1 開機自動執(zhí)行序列分析 190
6.21.2 完整校準序列分析 206
6.21.3 其他狀態(tài)機分析 206
第7章 ODrive上位機——幕后大BOSS 209
7.1 初識上位機 209
7.2 拆解上位機指揮中心 210
7.2.1 odrivetool程序分析 210
7.2.2 子命令分析 214
第8章 ODrive定制項目——DIY你的轎跑 219
8.1 硬件模塊 219
8.2 小車展示 220
8.3 原理解析 221
8.4 操作步驟 221
8.5 程序添加 221
8.6 實戰(zhàn)驗貨 223
附錄A 224