搜索
bottom↓
回复: 90

一款成本极低的FOC驱动

  [复制链接]

出615入1076汤圆

发表于 2021-9-7 22:37:44 | 显示全部楼层
本帖最后由 dukelec 于 2021-9-7 23:53 编辑

這個項目,foc 核心部分準確的說不是優化,而是簡化
順便一說,mcu 建議換成 stm32g0

看了下,foc_calculate_dutycycle 函數,算法有問題,你通過 if else 判斷 VecSector 是哪個分區,這個是有問題的(就算能用也不優雅),
通過 inverse park 一步就算出來了,可以參考 Ti 的文檔中的公式,文檔編號:Clarke & Park Transforms - BPRA048

我的 foc 相關代碼,你可以參考一下:
  1.         int16_t out_pwm_u = lroundf(i_alpha);
  2.         int16_t out_pwm_v = lroundf(-i_alpha / 2 + i_beta * 0.866025404f); // (√3÷2)
  3.         int16_t out_pwm_w = -out_pwm_u - out_pwm_v;

  4.         __HAL_TIM_SET_COMPARE(&htim1, TIM_CHANNEL_3, DRV_PWM_HALF - out_pwm_u); // TIM1_CH3: A
  5.         __HAL_TIM_SET_COMPARE(&htim1, TIM_CHANNEL_2, DRV_PWM_HALF - out_pwm_v); // TIM1_CH2: B
  6.         __HAL_TIM_SET_COMPARE(&htim1, TIM_CHANNEL_1, DRV_PWM_HALF - out_pwm_w); // TIM1_CH1: C
复制代码


不行的話,可能是方向有問題,調整一下編碼器方向(數據取反與否)、電機線序,遵守電機正轉方向的行業規範(參考石英鐘錶的微型電機的輸出軸帶動秒針旋轉的方向)
順序都沒問題,還不行的話,就是編碼器 offset 算的不對,用於 calibration 的拖動模式的控制或計算有問題

你的硬件沒有電流檢測,力矩算是開環控制,速度環和位置環目前也還沒加
通訊也幾乎沒加,uart 建議轉成 485 電平

通訊建議兼容這個開源工具,看了你的 CDTP,雖然名子相同了一半,但我還是覺得 CDBUS 更好 ;-)
开源串口图形界面工具 CDBUS GUI 支持读写数据表、串口打印、IAP、波形显示…
https://www.amobbs.com/thread-5746055-1-1.html

整體看起來比較簡潔清爽,還不錯,用 linux 環境開發很贊

出615入1076汤圆

发表于 2021-9-8 17:56:15 | 显示全部楼层
本帖最后由 dukelec 于 2021-9-8 18:30 编辑
天下乌鸦一般黑 发表于 2021-9-8 17:42
够厉害的了。还要追求成本。
我把foc电机驱动搞转了,都没整明白为啥转。。。 ...


是的,樓主高二之前就會玩 stm32(看他 github 高二設計的 stm32 作品,自己畫板,板上有 tf 卡、攝像頭 和 tft lcd 等,搞不好人家小學就玩 51 了),
現在才大三,就有自己的團隊,貌似還開了公司,英文又好,人又靚仔,最重要是基於 linux 環境,已經超過絕大多數老人,我們這些老人應該向樓主學習才對

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出615入1076汤圆

发表于 2021-9-8 18:46:11 | 显示全部楼层
本帖最后由 dukelec 于 2021-9-8 18:50 编辑
洞洞幺 发表于 2021-9-8 18:36
搞得早不代表搞得精通吧?
大学生开公司很常见,但赚大钱的不常见吧?


搞的越早越有優勢,從小玩編程,長大編程會賊溜,見過太多例子了(天賦也是一方面,且小孩子要自己感興趣才行)

類似音樂,小孩子 3 到 9 歲之間可以培養出絕對音感,成年人再怎麼訓練都不行

人家起飛早,不代表 文化、理論 就一定會落後

赚錢更不用我們操心,我賭他很定能賺到大錢,只是時間上早或晚的問題而已

出615入1076汤圆

发表于 2021-9-8 19:01:35 | 显示全部楼层
本帖最后由 dukelec 于 2021-9-8 19:12 编辑
LaoZhu123 发表于 2021-9-8 18:48
多谢大佬推荐!这就去看看这个库怎么用,如果可以的话会移植进项目中来。 ...


先看 cpu 使用情況,不缺的話就不用改,
畢竟改起來麻煩,未來芯片會越來越便宜,以後肯定會有便宜的帶 fpu 的片子可以用

cpu 資源如果不夠,先考慮把你的電流環頻率降低一些,我 foc 用的 stm32g431cbu6,帶 fpu,170 MHz 主頻,電流環也才 170000000 / 4096 / 2 ≈ 20.75 KHz

打個比方,用彙編效率更高,還有人願意把 c 代碼改成 asm 彙編嗎?是否改用定點也是同樣道理(定點庫貌似就是彙編寫的)
實在不夠再考慮定點運算

出615入1076汤圆

发表于 2021-9-8 20:56:08 | 显示全部楼层
本帖最后由 dukelec 于 2021-9-8 21:03 编辑
LaoZhu123 发表于 2021-9-8 20:26
使用Linux环境其实出于很多方面的考虑,当然最大方面的考虑就是开源,所以我全套采用的是linux+gcc+cmake ...


用 linux 做主力系統,日積月累是可以改變思維模式的,增加你解決問題的能力,而且可以順便給你增加豐富的 linux 經驗,會比 windows 經驗更有價值
海外同行們早已選擇 linux 做主力系統,而且這是未來的趨勢,不跟上肯定會落後於人

openocd 我很久很久沒用它了,它貌似沒有維護了
我平時開發 stm32 下載用 st-link v2,可以用第三方開源的燒錄工具,也可以用 st 官方的燒錄工具
調試用串口打印就行,單步調試平時用不到,自從入行 linux 內核開發,就再也沒用過單步調試,可以拋棄掉

很久以前搞 stm32 開發,也是自己寫 makefile,現在直接用 stm32cubemx 生成 makefile 工程,make 一下就行

mcu 的虛擬機仿真,我覺得必要性不大,因爲它的軟件和 mcu 片上外設 以及 外部芯片、硬件、用戶操作 等都有關聯,純軟件模擬不太可能
可以考慮做一個實體測試台,對真實硬件進行自動化燒錄、測試,照樣可以和線上的可持续部署系統做對接
然後這個測試台可以做通用一些,附加可以幫客戶做一些定製服務,也是一個市場,應該會有一些公司需要

順便一提,你畫板用 easyeda 而不是 kicad 有點出我意料
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-6 22:21

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表