无刷电机推力架


dooooit_4000007
转载
发布时间: 2025-08-27 14:48:26 | 阅读数 0收藏数 0评论数 0
封面
在我基于 Arduino 开发 Ludwik 无人机的时候,我遇到了选择合适的电机和螺旋桨的问题。当时我对无人机一无所知,所以我只能相信电机制造商和电机的数据表,这些数据很可能是很好的信息来源,但如果你想将不同的电机和螺旋桨组合在一起怎么办?你仍然需要知道电机和螺旋桨的推力,无人机的黄金法则是推力至少是无人机重量的 2 倍(这取决于你想制造什么类型的无人机,这条规则不适用于竞速/特技无人机和其他一些无人机)。我想一定有测量电机推力的设备,我在网上找到了一些,但那些设备真的很贵,所以我显然决定自己设计一个!我在 CIT 实习期间(我在这里从事垂直起降无人机的翼型设计和测试,这非常酷!)

准备工作:

材料:

我们需要下面列出的组件,请在原理图上检查它们的值:

  1. 张力梁(也称为称重传感器或应变计)
  2. 16x2液晶显示器
  3. 电机+电调+螺旋桨
  4. 电流传感器
  5. 蜂鸣器
  6. 2 针螺丝端子
  7. 3 针螺丝端子
  8. 电位器
  9. 转变
  10. 分离式接头
  11. 电位器
  12. 神田插座
  13. 一些SMD电阻器
  14. Atmega328 SMD
  15. 一些陶瓷电容器
  16. p c b


1

PCB

我花了很多时间在 PCB 的设计上,我想让它尽可能完美,结果相当不错!至少它看起来比我的其他 PCB 更专业 :D 在上面你可以找到制作你自己的 PCB 的文件。如果你想在面包板或原型板上构建它,也有原理图(你可以毫无问题地做到这一点)。我在 PCB 上添加了很多东西,因为在分析之后,我认为它会更容易使用。例如,我添加了螺丝端子来连接电机和 ESC,所以如果你想测试另一个电机,你不必拆焊它。还有比我实际使用的更多的组件(我不使用电压调节器,因为我使用内置于电子速度控制器(ESC)的电池消除电路(BEC)。还有一个我没有使用的开关和按钮,但也许你想更改代码或添加一些功能。



PRO
FO3CCC3JPINX5WQ.pro
1.41KB
SCH
FIKA6NDJPINX5ZL.sch
27.87KB
GBR
F4A8WE7JPINX6NZ.gbr
4.16KB
NET
FMV8L4IJPINX6VI.net
22.15KB
GBR
FYIF8P1JPINX6AW.gbr
1.13KB
GBR
FNI1L71JPINX63D.gbr
3.04KB
GBR
FKC1MB6JPINX61H.gbr
123.58KB
GBR
FB2ZLMRJPINX675.gbr
167.64KB
GBR
FFVL8HDJPINX6ID.gbr
133.23KB
GBR
FAD8Z5VJPINX6TL.gbr
27.82KB
KI...
FSC8FY4JPINX6TM.kicad_pcb
331.26KB
2

焊接

如果您在面包板上搭建,可以跳过此步骤,但对于 PCB 来说,这步至关重要 :) 焊接时,请一如既往地从最小的 SMD 元件开始。Atmega328 SMD 元件不易焊接,如果您没有经验,可以寻求帮助。Atmega 隐藏在 LCD 显示屏下方。张力梁模块也应焊接到 PCB 上,如上图所示。电流传感器应焊接在 PCB 底部(我知道这不是最好的解决方案,但对我来说效果还不错)。



3

基础

我们还需要搭建一个底座,并用 3D 打印一些组件。我用 8 毫米厚的胶合板作为底座,然后用黑色 PLA 打印出 STL 文件。最后我用螺丝把所有部件固定好。


STL
FUXI3JNJPINX77O.stl
457.31KB
STL
FW9FKEFJPINX7F8.stl
1.25MB
STL
FTELIUNJPN3N3HO.stl
129.38KB
4

代码

这是你需要上传到Arduino的代码,它非常简单简短,它所做的就是从传感器读取数据并将其显示在LCD屏幕上,没有复杂的数学运算或任何花哨的编程。我不喜欢代码中的注释,所以如果你有任何问题,尽管问我 :)

#include "HX711.h"
#include

#include
LiquidCrystal lcd(4, 3, 5, 6, 7, 8);
#define calibration_factor -400000.0
#define ESC_PIN 9
#define POT_PIN A0
#define BUZZER 2
#define CURRENT_SENSOR A2
#define VOLTAGE_PIN A1

HX711 scale(A4, A5);
Servo esc;
void setup() {
pinMode(BUZZER, OUTPUT);
lcd.begin(16, 2);
lcd.print("Thrust Stand 1");
delay(1000);
scale.set_scale(calibration_factor);
scale.tare();
esc.attach(ESC_PIN);
while(analogRead(POT_PIN) > 20){
lcd.print("TO START SET");
lcd.setCursor(0,1);
lcd.print("THROTTLE TO 0");
delay(200);
lcd.clear();
}
}

void loop() {

float current=0.0;
long int sum_of_reads = 0;

for (int x = 0; x < 100; x++){
sum_of_reads += analogRead(CURRENT_SENSOR);
delay(2);
}
delay(50);
lcd.clear();
current = sum_of_reads/100;
current = (2.5 - (current * (5.0 / 1024.0)) )/0.066;
current = abs(current);
current -= 0.07;
current = abs(current);

int escValue = map(analogRead(POT_PIN), 0, 1023, 900, 2000);
esc.write(escValue);
lcd.print("T:");
lcd.print(abs(scale.get_units()));
lcd.print("kg ");
lcd.print("C:");
lcd.print(current);
lcd.print("A");
lcd.setCursor(0,1);
lcd.print("E:");
lcd.print(escValue);
lcd.print(" P:");
lcd.print((((analogRead(VOLTAGE_PIN)*5.0)/1024.0)*3.5)*current);
lcd.print("W");

if(escValue > 1500){
if(digitalRead(BUZZER) == HIGH){
digitalWrite(BUZZER, LOW);
}else{
digitalWrite(BUZZER, HIGH);
}
}else{
digitalWrite(BUZZER, LOW);
}

}


INO
FGH8PMWJPINXEVB.ino
1.50KB
5

测试

一切准备就绪后,我们就可以测试了!小心,无刷电机动力强劲,加上大螺旋桨,非常危险。您可以使用任何与您的电机和电调兼容的电源(如果您使用BEC电源)为其供电。我使用的是实验室的电源,有时功率不足以支持这款电机。在液晶显示屏上,您可以看到电机的推力、电流、油门值和功耗。这些数据对于设计一款优秀的四轴飞行器以及为电机选择合适的螺旋桨至关重要。

6

结论

希望你喜欢这篇教程!如果你有任何问题或想法,请在评论区告诉我!



阅读记录0
点赞0
收藏0
禁止 本文未经作者允许授权,禁止转载
猜你喜欢
评论/提问(已发布 0 条)
评论 评论
收藏 收藏
分享 分享
pdf下载 下载
pdf下载 举报