電子發(fā)燒友App

硬聲App

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

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(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 | 次下載 | 免費(fèi)

資料介紹

描述

DShot 協(xié)議

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

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

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

poYBAGOYi8CAQg0XAAAzE6EUWhc416.png
?

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

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

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

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

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

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

使用 FPGA 的 DSHOT 150

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

該項(xiàng)目利用了使用 FPGA 項(xiàng)目解碼 PWM。

DSHOT150 在 ip/DSHOT/dshot_out.v 中實(shí)現(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,需要?jiǎng)?chuàng)建 Avalon 從站,就像之前創(chuàng)建從站內(nèi)存映射接口一樣,然后拖放到系統(tǒng)內(nèi)容并重新映射內(nèi)存地址。我已經(jīng)包括了一個(gè)額外的 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,需要?jiǎng)?chuàng)建一個(gè) Avalon 內(nèi)存映射地址來選擇 ether DSHOT 或 PWM,然后驅(qū)動(dòng)多路復(fù)用器。也可以使用相同的方法支持串行和遙測,但使用 inout。

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

poYBAGOYi9yALZV8AABmg8hiQjU602.png
?

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

串行端口接口從 FTDI 芯片接收數(shù)據(jù)很慢,因?yàn)轵?qū)動(dòng)程序在傳輸時(shí)有緩沖,在 Linux 上降低它:

setserial /dev/ low_latency

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


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

評(píng)論

查看更多

下載排行

本周

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

本月

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

總榜

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