您现在的位置是:主页 > 电机 > 正文

如何学习嵌入式电机控制?

电机 2025-01-18 14:29

一、如何学习嵌入式电机控制?

/***************************2021/4/23更新*****************************************/

已经工作快两年了,应该会是最后一次更新这个回答。

在这将近两年的时间里,将一个旧版原始伺服软件逐渐修改更新到稳定的最新量产软件,其中比较多的时间被业务和通用模块开发占用,只有一点的空余时间用在仿真和性能上的摸索上。外出求职的时候凭这段通用伺服软件开发经历可以轻松拿到国内叫的出名字的相关行业公司的功能软件开发岗位(就个人感觉上而言,这种岗位其实就是翻版的PLC电气工程师),至于性能软件岗位,在跟这些公司聊的时候,传统的工控大公司表示通用伺服的电控算法目前已经很成熟了(其实就是投入产出比不高,并且坑位基本被占光),他们提供的算法岗位也是针对特定的优化需求(其实就是要求应聘者有特定场景算法应用经验或者一定程度的相关联算法理论实力+基本伺服经验),那么我的这段经历对这种岗位来说基本上是毫无帮助的,能达到这种要求的你大概率就是开局大厂算法起步的跳槽选手了,如果你开局是大厂功能软件,那也基本凉的差不多了。

MagicQi:电机控制打工仔两年工作经验分享

/***************************2020/7/11更新*****************************************/

已经工作一年了,在基于旧版本伺服的基础上,完成了通讯伺服的开发,并在三环参数上做了一些调整改善了一些问题。以我目前浅薄的工作经验来看,中小型伺服公司的驱动核心应该还是以PID+三环+FOC为主,当当只谈软件的情况下,PID的调参好坏(例如:增加一个PID系数参考表或者能够根据负载,速度之类的动态更改PID系数)还是能够有效增加性能的,其他相对比较影响性能的部分则是参数的采样和处理,比较关键的参数就是电流(当前电流),电压(当前电压),编码器读数(当前速度和当前位置)和脉冲计数(目标速度和目标位置),这些参数一般要经过自己构造的一些滤波器处理后再输出,或者说建立一个好用的观测器,至于使用什么样的滤波器和观测器就见仁见智了,毕竟大头还是在于硬件的精度和性能上(处理器的速度,采样精度与频率,编码器精度,器件开关频率等)。

硬件的选择上,目前拆解看到控制板都是以STM32 F7与F4+FPGA+17位绝对式编码器为主了,DSP的C2000基本消失(太贵了= =),另外那个格外便宜STM32 H750VBT6不知道有没有用过的大佬可以分享下经验,晶体管目前看到的一般都是IGBT(便宜),所以目前的三环处理频率受限于IGBT开关频率,一般在16KHz左右,芯片性能足够的话,可以将PWM配置成一个PWM脉冲中断两次,将三环频率翻倍到32KHz,来达到硬件不变三环响应翻倍的效果。

就工业界来看的话,FPGA可以当做一个必选技能来点亮了,点亮之后再满足stm32+dsp业务熟练的情况下,会有一个相当不错的薪资。至于电机算法的相关岗位,提供这样岗位的电机私企估摸着产值一年起码也得上大几亿了,而且岗位应该是一个萝卜一个坑,还是有相当的竞争难度。

PS:若有不对的地方,请大佬们多多指点。

/***************************2019/9/24更新*****************************************/

差不多上了三个月的班,行业是工控伺服方向,勉强学了点stm32相关,从gpio到pwm到脉冲信号分频到电机三轴插补再到modbus通信都做了一遍,顺便做了几个多轴同步和插补的小项目,但只涉及到应用层面,目前还没能参与伺服驱动器的代码编写,对stm32入门感兴趣的朋友,可以看下我写的stm32入门的回答。

stm32难吗,从何入门请大神指点?

另外,这三个月的感受就是,工业伺服行业确实很成熟,目前一般厂家的伺服驱动器标配就是位置控制,速度控制,和力矩控制,然后就是modbus485和232通讯,因为计算量的缘故,用的都是DSP芯片居多,然后最近EtherCAT非常火,但目前这个东西更多的是属于PLC电气工程师的任务,我没怎么参与。

再然后就是,前几天上海不是有工博会么,去溜了几个展馆,看了下,总结下

1.四轴的雕刻机(即XYZ加个旋转轴)

2.机器手抓取分拣系统(轨迹控制+图像识别)

3.工业机械手臂

4.机器手(图像识别+人手控制)

5.agv仓储小车与分拣机械手

6.振动抑制(滤波器+相关硬件)

7.EtherCAT做的各种应用设备

就整个看展体验来看,那几家知名大公司明显超出其它公司一到两筹,所以想做算法的同学要一定尽量往那几家公司靠,然后就是没看到PID自整定的产品,听国内的厂家说目前就那一两家知名的做的还可以,国内的可以说是没有,但我感觉细分到某一个应用方向的自整定应该是可行性挺大的。然后是轨迹控制,或者说是运动控制之类的,我感觉是可以多分一两份精力在这一方向上,毕竟目前的电机本体的控制算法在工业界的大多数应用方向上已经算是够用了,就单以求职的角度考虑的话,轨迹控制和振动抑制都算是一个相对较好的学习方向。

/*************************************************************************************/

19年应届菜鸟电气硕毕业,交流下我毕业至目前为止的电机控制方向的进展,希望有大佬们能分享下工业界的经验。

18年8月,收到邮件说有没有人要参加今年的ifec,闲的无聊,就去滑了下水,正好今年的主题是电机驱动,由此入坑。(成功止步初赛,菜的扣脚)

开局的话,PSIM和PLEC仿真软件起步,完成基本BLDC的速度,位置控制仿真后,上matlab然后完成FOC的simulink仿真。硬件测试的话用的Ti c2000平台,看了两本dsp相关图书,《手把手教你学DSP基于MS320F28335》,《电动机的DSP控制——TI公司DSP应用(第二版)_王晓明》,相关电机书目的话是《永磁同步电动机直接转矩控制系统_胡育文》。

开始上手的话,是买的淘宝的板子和配套电驱版,从头到尾走一遍FOC和无感FOC的软件流程,顺便熟悉下DSP上提供的通信协议。

控制算法的话,知网的高引用来一套,了解一波电机控制的大概状况,确定下自己感兴趣的研究方向,然后再看一波热点和前研。

工业界的话,就以我目前少量的接触经验来看的话,十分注重实际电机开发经验,即参与过一个电驱的整体开发流程,如果量产了的话那就更好了。然后一般使用的是stm32+fpga+dsp(相对不多)+rs485通信。至于用到的优化算法的话,基本上都是弱磁,PID参数,观测器,卡尔曼,锁相环,不同的公司倾向的方向不一样,具体可以自己上求职网站上看。

就以我目前的求职经历来看,真的是很吃实际的开发经验,如果硕士期间能走一套完整的工业流程下来的话,可以直接干活的话,求职还是很有优势的,因为招聘要求都是1~3年经验,薪资也会有很大的提升。

至于学习方向的话,单以我找工作时的感觉来看,电机控制加机器人运动控制还可以;电机控制的话大概分为电动车(汽车,摩托车,电瓶车),伺服驱动器,变频器;心一横转纯嵌入式的话岗位会相对多一点。

反正求职导向的话,最重要的还是实习加实际项目。

最后,再次希望有大佬能在这个话题下分享波经验,电机控制单人刷野还是有点难受。

二、电机驱动程序怎么写?

电机驱动程序需要结合具体的电机类型和控制器,根据实际需求编写控制逻辑,调整参数,实现对电机的精确控制。常见的电机控制方式包括PWM、PID控制等,需要根据具体情况选择适合的控制方法。

在编写程序过程中,需要考虑各种异常情况的处理和安全性,保证程序的稳定性和可靠性。同时,需要合理利用硬件资源,以实现高效的电机驱动控制。

三、伺服电机的驱动程序怎么写?

关于这个问题,编写伺服电机控制程序需要遵循以下步骤:

1. 确定控制系统的要求,包括速度、位置、加速度等参数。

2. 选择合适的控制器和伺服驱动器,根据设备的电气参数和控制系统的要求进行匹配。

3. 编写硬件设置程序,包括配置控制器和驱动器的参数、选择控制模式、设定控制器输入输出端口等。

4. 编写伺服电机控制程序,根据设备的控制要求,选择合适的控制算法,如位置控制、速度控制、加速度控制等。

5. 编写监控程序,对伺服电机的运行状态进行实时监测,确保控制系统的稳定性和可靠性。

6. 进行调试和测试,对控制程序进行优化和调整,使其满足设备的控制要求。

7. 最后进行系统集成和维护,保证伺服电机控制系统的正常运行和可靠性。

四、怎么用C语言写嵌入式系统的驱动程序?

目前所有嵌入式系统,包括ecos,ucos,以及linux系列等,均是由C语言配合少量汇编语言书写的。所以从编程语言角度来说,只会C语言就足够了。

由于C语言可以直接操作硬件的特性,被大量使用于操作系统,驱动及其它硬件相关代码的编写。嵌入式系统或编程的学习,最基础的就是C语言了。

不过要学好嵌入式,除了C语言,还需要一定的硬件知识及操作系统相关的理论知识,如进程调度,内存池等。这些可以在学习嵌入式系统的过程中逐步学习,并非前提。

五、电脑如何安装驱动程序?

下个360,里面有个驱动大师,或者下一个驱动人生也可以

联想电脑的话,我记得官网有一个专门为联想准备的驱动安装软件,如果你的电脑是联想的话可以去官网看看

六、嵌入式怎样控制直流电机正反转?

如何实现电机的正转调速

要实现电机的正转只需要做如下设置即可:

A控制端:高电平,控制三极管Q4导通;

B控制端:高电平,控制三极管Q3截止;

C控制端:低电平,控制三极管Q1导通;

D控制端:低电平,控制三极管Q2截止;

通过以上操作,即实现三极管Q2和Q3截止,三极管Q1和Q4导通,电流的流向如下:

VCC→Q1→电机→Q4→GND,实现了电机的正转。

在这种情况下要实现电机转速的调节,只需要给Q4的基极加载PWM信号即可。

4 PWM如何实现电机的反转调速

要实现电机的反转只需要做如下设置即可:

A控制端:低电平,控制三极管Q4截止;

B控制端:低电平,控制三极管Q3导通;

C控制端:高电平,控制三极管Q1截止;

D控制端:高电平,控制三极管Q2导通;

通过以上操作,即实现三极管Q1和Q4截止,三极管Q2和Q3导通,电流的流向如下:

VCC→Q3→电机→Q2→GND,实现了电机的反转。

在这种情况下要实现电机转速的调节,只需要给Q2的基极加载PWM信号即可。

七、c51控制直流电机的驱动程序?

名称:直流电机调速

内容:1、学习目的:利用定时器产生PWM,了解原理和使用方法

2、硬件要求:直流电机 定时器

3、试验现象:按键调速,PWM部分显示速度档位,电机根据档位调节速度 这个需要把电机驱动输入端和PWM端连接起来

------------------------------------------------*/

#include<reg52.h> //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义

sbit KEY1 = P3^1; //定义调速按键

sbit PWM = P1^5; //定义调速端口

unsigned char CYCLE; //定义周期 该数字X基准定时时间 如果是10 则周期是10 x 0.1ms

unsigned char PWM_ON ;//定义高电平时间

/******************************************************************/

/* 延时函数 */

/******************************************************************/

void delay(unsigned int cnt)

{

while(--cnt);

}

/******************************************************************/

/* 主函数 */

/******************************************************************/

main()

{

unsigned char PWM_Num;//定义档位

TMOD |=0x01;//定时器设置 1ms in 12M crystal

TH0=(65536-1000)/256;

TL0=(65536-1000)%256;//定时1mS

IE= 0x82; //打开中断

TR0=1;

CYCLE = 10;// 时间可以调整 这个是10步调整 周期10ms 8位PWM就是256步

while(1)

{

if(!KEY1)

{

delay(10000);

if(!KEY1)

{

PWM_Num++;

if(PWM_Num==4)PWM_Num=0;

switch(PWM_Num){

case 0:P0=0x06;PWM_ON=0;break;//高电平时长

case 1:P0=0x5B;PWM_ON=4;break;

case 2:P0=0x4F;PWM_ON=6;break;

case 3:P0=0x66;PWM_ON=8;break;

default:break;

}

}

}

}

}

/******************************************************************/

/* 定时器中断函数 */

/******************************************************************/

void tim(void) interrupt 1 using 1

{

static unsigned char count; //

TH0=(65536-1000)/256;

TL0=(65536-1000)%256;//定时1mS

if (count==PWM_ON)

{

PWM = 1; //灯灭

}

count++;

if(count == CYCLE)

{

count=0;

if(PWM_ON!=0) //如果左右时间是0 保持原来状态

PWM = 0; //灯亮

}

}

八、GPU驱动程序

GPU驱动程序的重要性及其安装过程

随着科技的不断发展,GPU在计算机领域的应用越来越广泛。而驱动程序作为计算机系统的重要组成部分,对于GPU的使用效果起着至关重要的作用。今天,我们将探讨GPU驱动程序的重要性及其安装过程。

首先,GPU驱动程序是计算机与GPU之间的桥梁,它使得计算机能够充分利用GPU的性能。通过驱动程序,计算机可以与GPU进行通信,从而实现对图形、视频和游戏等多媒体数据的处理。此外,驱动程序还可以提供对GPU的调试、维护和升级功能,使得用户可以更好地管理和使用自己的GPU。

在安装GPU驱动程序时,用户需要先确认自己的操作系统和显卡型号。然后,从显卡制造商的官方网站下载相应的驱动程序。在安装过程中,用户需要按照提示进行操作,通常包括安装前的确认、安装程序的解压和安装。在安装完成后,用户需要重新启动计算机,以确保驱动程序能够正常工作。

然而,值得注意的是,安装错误的驱动程序或者使用过时的驱动程序可能会导致计算机性能下降、出现异常甚至损坏硬件。因此,用户在安装驱动程序时需要谨慎选择,最好从官方渠道下载并按照提示操作。同时,显卡制造商通常会提供驱动程序的更新功能,用户需要及时更新驱动程序以获取更好的性能和稳定性。

总的来说,GPU驱动程序是计算机系统不可或缺的一部分,它对于充分发挥GPU的性能和稳定性至关重要。通过正确的安装过程和使用合适的驱动程序,用户可以更好地享受多媒体应用带来的乐趣。

如何避免常见的GPU驱动程序安装问题

在安装GPU驱动程序时,可能会遇到一些常见的问题,如安装失败、与操作系统不兼容等。为了避免这些问题,用户可以采取以下措施:

  • 确保显卡与操作系统的兼容性:在安装驱动程序之前,仔细阅读显卡制造商的官方文档,以确保所选的显卡与自己的操作系统版本兼容。
  • 从官方渠道下载驱动程序:从显卡制造商的官方网站下载驱动程序,避免从非官方来源下载未知的驱动程序。
  • 按照提示进行安装:在安装过程中,仔细阅读屏幕上的提示并按照步骤操作,避免跳过任何必要的步骤。
  • 定期更新驱动程序:显卡制造商通常会定期发布驱动程序的更新版本,用户需要及时更新以获取更好的性能和稳定性。
以上就是关于GPU驱动程序的一些基本知识和安装技巧。通过正确的安装过程和使用合适的驱动程序,用户可以更好地享受多媒体应用带来的乐趣,并获得更出色的计算机性能。如有任何疑问,请咨询相关专业人士或显卡制造商。

九、usb的驱动程序属于什么驱动程序?

电脑中usb的是不需要安装驱动的,使用系统自带的驱动就可以了,你可以修复一下系统来解决问题。USB不被电脑识别,如果是系统或系统自带的驱动的原因,可以按下面方法修复一下。1、开机按F8进入安全模式后在退出,选重启或关机在开机,就可以进入正常模式(修复注册表)。 2、如果故障依旧,请你用系统自带的系统还原,还原到你没有出现这次故障的时候修复(如果正常模式恢复失败,请开机按F8进入到安全模式中使用系统还原)。 3、如果故障依旧,使用系统盘修复,打开命令提示符输入SFC /SCANNOW 回车(SFC和/之间有一个空格),插入原装系统盘修复系统,系统会自动对比修复的。 4、如果故障依旧,在BIOS中设置光驱为第一启动设备插入系统安装盘按R键选择“修复安装”即可。5、如果故障依旧,建议重装操作系统。另外还有一种原因,就是USB接口供电不足,可能是USB接口连接的外设太多造成供电不足。建议使用带电的USBHUB或者使用USB转PS/2的转接头。还有可能WindowsXP默认开启了节电模式,致使USB接口供电不足,使USB接口间歇性失灵。

十、图形驱动程序,什么是图形驱动程序?

意思是用来驱动显卡的程序,图形驱动程序是用来驱动显卡的程序,是硬件所对应的软件, 用于提升操作系统对其芯片组的兼容性。