電子發(fā)燒友App

硬聲App

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示
創(chuàng)作
電子發(fā)燒友網(wǎng)>電子資料下載>電子資料>通過USB使用ESC和FPGA控制BLDC電機(jī)的速度

通過USB使用ESC和FPGA控制BLDC電機(jī)的速度

2023-06-19 | zip | 0.00 MB | 次下載 | 免費

資料介紹

描述

DShot 協(xié)議

在 DShot 之前,飛控更新速度比標(biāo)準(zhǔn) PWM 速率更快,這會導(dǎo)致性能和調(diào)整問題。開發(fā)了更快的模擬 PWM,即 OneShot125 和其他幾個。對于基于 PWM 的協(xié)議,接收器必須測量脈沖以確定速度,很少有發(fā)射器和接收器具有相似的時鐘精度,因此可能存在一些差異,因此飛行控制器軟件包括一個校準(zhǔn)步驟來找到最大值和最小值。

DShot 是數(shù)字的,速度與遙測請求和校驗和一起被編碼為“數(shù)據(jù)包”,因此無需校準(zhǔn)。DSHOT 支持多種速度 150、130、600 和 12000。因此,數(shù)字越大,數(shù)據(jù)包比特率越快,因此數(shù)據(jù)包發(fā)送到 ESC(電子速度控制器)的速度越快

這是一個基本的 DSHOT 數(shù)據(jù)包:

poYBAGOYi8CAQg0XAAAzE6EUWhc416.png
?

數(shù)據(jù)包流從左到右發(fā)送,因此首先發(fā)送速度位 10,然后發(fā)送速度位 9,依此類推。那么,邏輯 1 和邏輯 0 是如何編碼的?寬度決定值是 1 還是 0,寬度越長,值為 1。對于 DSHOT150,下表是:

DSHOT 150 單個比特周期:6.67us 高電平時間(1):5.000us 高電平時間(0):2.500us

DSHOT 300 單個比特周期:3.33us 高電平時間(1):2.500us 高電平時間(0):1.250us

DSHOT 600 單個比特周期:1.67us 高電平時間(1):1.250us 高電平時間(0):0.620us

DSHOT1200 單個比特周期:0.83us 高電平時間(1):0.025us 高電平時間(0):0.313us

PC 應(yīng)用程序?qū)⒏袷交?16 位,代碼位于 HTML nwjs 應(yīng)用程序中。

使用 FPGA 的 DSHOT 150

對于本項目,不支持接收遙測信息,僅以 150 速率傳輸 DSHOT 16 位值。FPGA 的職責(zé)是以編程的時鐘速率將 16 位值發(fā)送到 ESC,該值將由 PC 軟件編碼,這簡化了 FPGA 邏輯。

該項目利用了使用 FPGA 項目解碼 PWM。

DSHOT150 在 ip/DSHOT/dshot_out.v 中實現(xiàn):

`default_nettype none
`timescale 1 ns / 1 ns

module dhot_output #(
		parameter update_guardtime = 1000000, //1 second 
		parameter clockFrequency = 50000000
	) (
		input  wire        i_clk,          //       clock.clk
		input  wire        i_reset,        //       reset.reset
		input  wire [15:0] i_dshot_value,
		input  wire        i_write,       //            .write
		output wire	       o_pwm
	);
	


/* state machine state of single bit */
localparam [3:0] INIT_TIME  = 4'h0,
 		HIGH_TIME   = 4'h1,
     	 	LOW_TIME    = 4'h2,
                IDLE_	    = 4'h3;
		
/* DSHOT Bit time:              (1 - TH1)   (0-T0H)
DSHOT 150 Bit time is 6.67us    5.00us      2.50us
DSHOT 300 Bit time is 3.33us    2.50us      1.25us
DSHOT 600 Bit time is 1.67us    1.25us      0.625us
DSHOT1200 Bit time is 0.83us    0.025       0.313us
*/

/* For DSHOT150 clk is 50Mhz so 0-T0H is  2.50 * 50 = 125
                                0-Off is (6.67 - 2.50us) * 50 = 208.9
*/                                
                                
localparam [15:0] LOW_HIGH_TIME = 125;
localparam [15:0] LOW_LOW_TIME = 209;

/* For DSHOT150 clk is 50Mhz so 0-T1H is  5.00 * 50 = 250
                                0-Off is (6.67 - 5.00us) * 50 = 83.5
*/

localparam [15:0] HIGH_HIGH_TIME = 250;
localparam [15:0] HIGH_LOW_TIME = 84;

Avalon 從接口

要訪問 DSHOT 150,需要創(chuàng)建 Avalon 從站,就像之前創(chuàng)建從站內(nèi)存映射接口一樣,然后拖放到系統(tǒng)內(nèi)容并重新映射內(nèi)存地址。我已經(jīng)包括了一個額外的 ESC 電機(jī)控制器 PWM。兩者如下圖所示:

pYYBAGOYi9CAasClAAOZimuOsW4595.png
阿瓦隆巴士
?

這是新的內(nèi)存映射:

pYYBAGOYi9aAGwoQAAHrNPdCW4s303.png
?

頂層

更新了 fast_serial.v 以將電機(jī)的輸出映射到 FPGA 的引腳 D2、D3、D4 和 D5。目前,Avalon 總線不支持將輸出重新映射為 PWM 或 DSHOT。以下代碼經(jīng)過多路復(fù)用器硬編碼,可根據(jù)本地參數(shù) MOTOR_CONTROL 將 DSHOT 或 PWM 映射為輸出。

assign D5 = (MOTOR_CONTROL)?dshot_out_1:pwm_out_1;
assign D4 = (MOTOR_CONTROL)?dshot_out_2:pwm_out_2;
assign D3 = (MOTOR_CONTROL)?dshot_out_3:pwm_out_3;
assign D2 = (MOTOR_CONTROL)?dshot_out_4:pwm_out_4;

要啟用 DSHOT150 或 OnseShot 125,需要創(chuàng)建一個 Avalon 內(nèi)存映射地址來選擇 ether DSHOT 或 PWM,然后驅(qū)動多路復(fù)用器。也可以使用相同的方法支持串行和遙測,但使用 inout。

這是新的 nwjs 應(yīng)用程序的屏幕截圖,電機(jī)可以由通道 0 驅(qū)動,也可以通過電機(jī)滑塊驅(qū)動。建議拆下螺旋槳,將電機(jī)牢固地用螺栓固定在厚板上。

poYBAGOYi9yALZV8AABmg8hiQjU602.png
?

Enable Motor 按鈕打開 DSHOT 生成,因此,ESC 會發(fā)出幾聲嗶嗶聲,通知用戶電機(jī)已“武裝”。增加滑塊將增加速度。此外,LED 滑塊還允許更新 LED。打開發(fā)射器,所有控件都處于活動狀態(tài)。

串行端口接口從 FTDI 芯片接收數(shù)據(jù)很慢,因為驅(qū)動程序在傳輸時有緩沖,在 Linux 上降低它:

setserial /dev/ low_latency

另一種方法是libftdi,有一個API來設(shè)置latency_timer,ftdi_set_latency_timer,我做了一個簡單的修改,允許值為0。由于從FPGA到FTDI的傳輸數(shù)據(jù)是25Mhz,所以Avalon數(shù)據(jù)包作為一個USB到達(dá)數(shù)據(jù)包,但以微幀速率。


下載該資料的人也在下載 下載該資料的人還在閱讀
更多 >

評論

查看更多

下載排行

本周

  1. 1山景DSP芯片AP8248A2數(shù)據(jù)手冊
  2. 1.06 MB  |  532次下載  |  免費
  3. 2RK3399完整板原理圖(支持平板,盒子VR)
  4. 3.28 MB  |  339次下載  |  免費
  5. 3TC358743XBG評估板參考手冊
  6. 1.36 MB  |  330次下載  |  免費
  7. 4DFM軟件使用教程
  8. 0.84 MB  |  295次下載  |  免費
  9. 5元宇宙深度解析—未來的未來-風(fēng)口還是泡沫
  10. 6.40 MB  |  227次下載  |  免費
  11. 6迪文DGUS開發(fā)指南
  12. 31.67 MB  |  194次下載  |  免費
  13. 7元宇宙底層硬件系列報告
  14. 13.42 MB  |  182次下載  |  免費
  15. 8FP5207XR-G1中文應(yīng)用手冊
  16. 1.09 MB  |  178次下載  |  免費

本月

  1. 1OrCAD10.5下載OrCAD10.5中文版軟件
  2. 0.00 MB  |  234315次下載  |  免費
  3. 2555集成電路應(yīng)用800例(新編版)
  4. 0.00 MB  |  33566次下載  |  免費
  5. 3接口電路圖大全
  6. 未知  |  30323次下載  |  免費
  7. 4開關(guān)電源設(shè)計實例指南
  8. 未知  |  21549次下載  |  免費
  9. 5電氣工程師手冊免費下載(新編第二版pdf電子書)
  10. 0.00 MB  |  15349次下載  |  免費
  11. 6數(shù)字電路基礎(chǔ)pdf(下載)
  12. 未知  |  13750次下載  |  免費
  13. 7電子制作實例集錦 下載
  14. 未知  |  8113次下載  |  免費
  15. 8《LED驅(qū)動電路設(shè)計》 溫德爾著
  16. 0.00 MB  |  6656次下載  |  免費

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935054次下載  |  免費
  3. 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
  4. 78.1 MB  |  537798次下載  |  免費
  5. 3MATLAB 7.1 下載 (含軟件介紹)
  6. 未知  |  420027次下載  |  免費
  7. 4OrCAD10.5下載OrCAD10.5中文版軟件
  8. 0.00 MB  |  234315次下載  |  免費
  9. 5Altium DXP2002下載入口
  10. 未知  |  233046次下載  |  免費
  11. 6電路仿真軟件multisim 10.0免費下載
  12. 340992  |  191187次下載  |  免費
  13. 7十天學(xué)會AVR單片機(jī)與C語言視頻教程 下載
  14. 158M  |  183279次下載  |  免費
  15. 8proe5.0野火版下載(中文版免費下載)
  16. 未知  |  138040次下載  |  免費