完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
相关推荐
1个回答
|
|
1.前言
1.1.上位机安装 根据github上的readme.md文件安装即可。其实需要做一件事,就是进如下载的文件夹,运行pip install -r "requirements.txt"命令,要安装的文件作者已经全部去写在里面了,一键安装即可。 1.2.注意事项 这个上位机是使用串口实时打印的,并且处于主循环中,其优先级与motor.loopFOC函数相同,所以会很大程度上影响电机的控制,控制应用中一定不能用,调参可以用。 2.SimpleFOC硬件端程序 以位置控制程序为例,程序实例如下: #include // magnetic sensor instance - SPI MagneticSensorSPI sensor = MagneticSensorSPI(AS5147_SPI, 10); //SPI编码器,AS5047,AS5048A是一样的 // BLDC motor & driver instance BLDCMotor motor = BLDCMotor(14); // 电机极对数 BLDCDriver3PWM driver = BLDCDriver3PWM(9, 5, 6, 8); // 电机ABC相PWM引脚,使能引脚 float target_angle = 0; // 初始目标角度为0 Commander command = Commander(Serial); void doTarget(char* cmd) { command.scalar(&target_angle, cmd); } // 串口控制指令:目标值 void onMotor(char* cmd){ command.motor(&motor,cmd); } // 串口控制指令:电机 void setup() { // 编码器设置 sensor.init(); motor.linkSensor(&sensor); // 驱动设置 driver.voltage_power_supply = 12; driver.init(); motor.linkDriver(&driver); // 选择调制方式为SVPWM motor.foc_modulation = FOCModulationType::SpaceVectorPWM; // 控制模式为角度模式 motor.controller = MotionControlType::angle; // PID参数 motor.PID_velocity.P = 0.3; motor.PID_velocity.I = 10; motor.PID_velocity.D = 0; motor.P_angle.P = 0.5; //其他参数 motor.voltage_limit = 6; //最大电压 motor.velocity_limit = 20; //最大速度,rad/s motor.LPF_velocity.Tf = 0.01; //速度的滤波时间常数 // 串口设置 Serial.begin(115200); motor.useMonitoring(Serial); //使用串口监视器 //初始化 motor.init(); motor.initFOC(); // 添加串口命令 command.add('T', doTarget, "target angle"); command.add('M',onMotor,"my motor"); Serial.println(F("Motor ready.")); Serial.println(F("Set the target angle using serial terminal:")); _delay(1000); } void loop() { // main FOC algorithm function // the faster you run this function the better // Arduino UNO loop ~1kHz // Bluepill loop ~10kHz motor.loopFOC(); // Motion control function // velocity, position or voltage (defined in motor.controller) // this function can be run at much lower frequency than loopFOC() function // You can also use motor.move() and set the motor.target in the code motor.move(target_angle); // function intended to be used with serial plotter to monitor motor variables // significantly slowing the execution down!!!! motor.monitor(); //使用simpleFOC Studio上位机设置的时候,这句一定要打开。但是会影响程序执行速度 // user communication command.run(); } 3.软件操作 3.1.打开软件 进入下载的文件夹,运行python simpleFOCStudio.py启动上位机 3.2.添加页面 3.3.连接电机 以tree view页面布局为例: 3.4.功能使用 3.5.参数配置生成代码 基本上就这些功能。最关键的是最开始的连接下位机SimpleFOC的操作,连接上了剩下的就很简单了。 4.中间遇到的问题 一开始能连上,串口数据也有回传,但是发送目标位置指令电机就是没有反应,发热还很大。当时很懵逼,搞了好久也没弄好。 直到我直接使用Arduino IDE的串口,才发现电机PP校准失败了,因为我的电机14极对数,而示例是11极对数,我忘了改。 因此,使用这个上位机连接上SimpleFOC后,一定要检查一下串口回传的初始化信息是否正常! |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1097 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1111 浏览 1 评论
549 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
415 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
996 浏览 2 评论
1594浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
263浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
276浏览 3评论
245浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
238浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-8-16 22:04 , Processed in 1.376757 second(s), Total 76, Slave 60 queries .
Powered by 电子发烧友网
© 2015 www.ws-dc.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号