文章目录
本文给出电机的基本公式,并根据基本公式说明电机的特性,方便再移动底盘设计中对电机的选型有所指导。
本文仅讨论直流电机。
直流电机的等效电路如下图所示。

其中:
一个常识是电机的转速越高,其产生的反向电动势就越大。这一点可以从如下推导得到。
U
m
=
B
L
v
=
B
L
R
ω
=
B
L
R
2
π
60
n
U_m = BLv=BL R \omega = BL R \frac{2\pi}{60} n
Um=BLv=BLRω=BLR602πn
其中:
令
K
e
=
B
L
R
2
π
60
K_e = BL R \frac{2\pi}{60}
Ke=BLR602π,对于一个已经设计好的电机,其值为常数,定义为反电动势常数,即反电动势和电机转速之间成线性关系的比值,所以有:
U
m
=
K
e
×
n
U_m = K_e \times n
Um=Ke×n
电机扭矩的公式为:
T
=
R
F
=
R
B
L
Ⅰ
m
T =RF = RBLⅠ_m
T=RF=RBLⅠm
其中:
令
K
T
=
R
B
L
K_T = RBL
KT=RBL,对于一个已经设计好的电机,其值为常数,定义为扭矩常数,即扭矩和电机电流之间成线性关系的比值,所以有:
T
=
K
T
×
I
m
T = K_T \times I_m
T=KT×Im
由上面推导可知,直流电机中,在采用标准单位时, K T K_T KT和 K e K_e Ke相同,这也符合电机的能量转换特性。所谓电机,是指电气-机械之间的双向能量转换器:
因此, K T K_T KT和 K e K_e Ke是同一系数。
电机扭矩和转速的乘积等于电机的做功,也就是电机的输出功率,即电机的反电动势和电流的乘积:
T
×
n
=
K
T
I
m
U
m
K
e
=
9554
P
m
T \times n = K_T I_m \frac{U_m}{K_e} = 9554 P_m
T×n=KTImKeUm=9554Pm
其中:
在电机处于某一稳定匀速运行状态(扭矩和阻力矩相等)下,如果给电机增加电压,则会经历如下过程达到平衡:
从上述过程可知,当环境确定的情况下(即阻力矩确定),给定一个电压,电机可达到一个确定的工作点。
电机选型时,需要给定工作点,尽量让工作点靠近电机特性曲线的最大效率点处。下图为一个典型的电机特性曲线图。

由特性曲线图可知:
根据电机的电路模型,只要给定电机的如下几个参数,即可以画出电机的理论特性曲线,而电机的实际特性曲线则需要通过真实实验数据的测试获得。
使用matlab绘制该曲线的代码如下:
% Set the constants of the motor
Kt = 8;
Ke = 8 * 2 * pi / 60;
R = 2; % equivalent resistance
Tf = 2; % no load torque
Udrop = 0.2; % drop voltage of the brash
% Set the supply voltage
U = 24;
Tload = 0:0.1:100000;
I = (Tload+Tf)/Kt;
n = (U-R*I-Udrop)/Ke;
N = length(n(n>=0)); % only the points with rotation speed larger than 0 is valid
P = U * I(1:N)/1000;
Pm = (Tload(1:N)) .* n(1:N) /9554;
eff = Pm ./ P;
plot(Tload(1:N), I(1:N)/max(I(1:N)));
hold on;
plot(Tload(1:N), n(1:N)/max(n(1:N)));
plot(Tload(1:N), Pm/max(Pm));
plot(Tload(1:N), eff/max(eff));
legend('电流', '转速', '功率', '效率');
xlabel('转矩');
title('电机特性曲线');
我在从html页面生成PDF时遇到问题。我正在使用PDFkit。在安装它的过程中,我注意到我需要wkhtmltopdf。所以我也安装了它。我做了PDFkit的文档所说的一切......现在我在尝试加载PDF时遇到了这个错误。这里是错误:commandfailed:"/usr/local/bin/wkhtmltopdf""--margin-right""0.75in""--page-size""Letter""--margin-top""0.75in""--margin-bottom""0.75in""--encoding""UTF-8""--margin-left""0.75in""-
我在我的项目目录中完成了compasscreate.和compassinitrails。几个问题:我已将我的.sass文件放在public/stylesheets中。这是放置它们的正确位置吗?当我运行compasswatch时,它不会自动编译这些.sass文件。我必须手动指定文件:compasswatchpublic/stylesheets/myfile.sass等。如何让它自动运行?文件ie.css、print.css和screen.css已放在stylesheets/compiled。如何在编译后不让它们重新出现的情况下删除它们?我自己编译的.sass文件编译成compiled/t
exe应该在我打开页面时运行。异步进程需要运行。有什么方法可以在ruby中使用两个参数异步运行exe吗?我已经尝试过ruby命令-system()、exec()但它正在等待过程完成。我需要用参数启动exe,无需等待进程完成是否有任何rubygems会支持我的问题? 最佳答案 您可以使用Process.spawn和Process.wait2:pid=Process.spawn'your.exe','--option'#Later...pid,status=Process.wait2pid您的程序将作为解释器的子进程执行。除
我有一些Ruby代码,如下所示:Something.createdo|x|x.foo=barend我想编写一个测试,它使用double代替block参数x,这样我就可以调用:x_double.should_receive(:foo).with("whatever").这可能吗? 最佳答案 specify'something'dox=doublex.should_receive(:foo=).with("whatever")Something.should_receive(:create).and_yield(x)#callthere
我花了三天的时间用头撞墙,试图弄清楚为什么简单的“rake”不能通过我的规范文件。如果您遇到这种情况:任何文件夹路径中都不要有空格!。严重地。事实上,从现在开始,您命名的任何内容都没有空格。这是我的控制台输出:(在/Users/*****/Desktop/LearningRuby/learn_ruby)$rake/Users/*******/Desktop/LearningRuby/learn_ruby/00_hello/hello_spec.rb:116:in`require':cannotloadsuchfile--hello(LoadError) 最佳
我正在为一个项目制作一个简单的shell,我希望像在Bash中一样解析参数字符串。foobar"helloworld"fooz应该变成:["foo","bar","helloworld","fooz"]等等。到目前为止,我一直在使用CSV::parse_line,将列分隔符设置为""和.compact输出。问题是我现在必须选择是要支持单引号还是双引号。CSV不支持超过一个分隔符。Python有一个名为shlex的模块:>>>shlex.split("Test'helloworld'foo")['Test','helloworld','foo']>>>shlex.split('Test"
我不确定传递给方法的对象的类型是否正确。我可能会将一个字符串传递给一个只能处理整数的函数。某种运行时保证怎么样?我看不到比以下更好的选择:defsomeFixNumMangler(input)raise"wrongtype:integerrequired"unlessinput.class==FixNumother_stuffend有更好的选择吗? 最佳答案 使用Kernel#Integer在使用之前转换输入的方法。当无法以任何合理的方式将输入转换为整数时,它将引发ArgumentError。defmy_method(number)
关闭。这个问题需要detailsorclarity.它目前不接受答案。想改进这个问题吗?通过editingthispost添加细节并澄清问题.关闭8年前。Improvethisquestion在首页我有:汽车:VolvoSaabMercedesAudistatic_pages_spec.rb中的测试代码:it"shouldhavetherightselect"dovisithome_pathit{shouldhave_select('cars',:options=>['volvo','saab','mercedes','audi'])}end响应是rspec./spec/request
在Rails4.0.2中,我使用s3_direct_upload和aws-sdkgems直接为s3存储桶上传文件。在开发环境中它工作正常,但在生产环境中它会抛出如下错误,ActionView::Template::Error(noimplicitconversionofnilintoString)在View中,create_cv_url,:id=>"s3_uploader",:key=>"cv_uploads/{unique_id}/${filename}",:key_starts_with=>"cv_uploads/",:callback_param=>"cv[direct_uplo
两者都可以defsetup(options={})options.reverse_merge:size=>25,:velocity=>10end和defsetup(options={}){:size=>25,:velocity=>10}.merge(options)end在方法的参数中分配默认值。问题是:哪个更好?您更愿意使用哪一个?在性能、代码可读性或其他方面有什么不同吗?编辑:我无意中添加了bang(!)...并不是要询问nobang方法与bang方法之间的区别 最佳答案 我倾向于使用reverse_merge方法:option