【花雕学编程】Arduino BLDC 之工业机器人关节伺服控制程序

在这里插入图片描述
Arduino是一个开放源码的电子原型平台,它可以让你用简单的硬件和软件来创建各种互动的项目。Arduino的核心是一个微控制器板,它可以通过一系列的引脚来连接各种传感器、执行器、显示器等外部设备。Arduino的编程是基于C/C++语言的,你可以使用Arduino IDE(集成开发环境)来编写、编译和上传代码到Arduino板上。Arduino还有一个丰富的库和社区,你可以利用它们来扩展Arduino的功能和学习Arduino的知识。

Arduino的特点是:
1、开放源码:Arduino的硬件和软件都是开放源码的,你可以自由地修改、复制和分享它们。
2、易用:Arduino的硬件和软件都是为初学者和非专业人士设计的,你可以轻松地上手和使用它们。
3、便宜:Arduino的硬件和软件都是非常经济的,你可以用很低的成本来实现你的想法。
4、多样:Arduino有多种型号和版本,你可以根据你的需要和喜好来选择合适的Arduino板。
5、创新:Arduino可以让你用电子的方式来表达你的创意和想象,你可以用Arduino来制作各种有趣和有用的项目,如机器人、智能家居、艺术装置等。

本设计Mechaduino是一款经济实惠的开源工业伺服电机,位置,扭矩,速度和自定义模式,且与Arduino的兼容。工程师使用伺服电机来实现机器人,自动化和数控制造等应用所需的精密运动。像RC伺服系统一样,工业伺服系统主动纠正外部干扰。与RC伺服系统不同,工业伺服系统可以提供非常精确的运动,并且通常支持先进的运动控制模式。运动的控制模式工业伺服电机工Mechaduino 0.2实物截图: 工业伺服电机Mechaduino特点: 位置,速度,扭矩环路 步进和方向输入,用于与步进电机/步进棒的插入兼容性 I2C,串行输入 可定制/开源,可访问内部变量 透明和用户可定义的控制算法(商业伺服器通常缺乏这个) Arduino的的的的的兼容易于使用的界面 高分辨率指向(小于0.1度) 低成本(不应该是步步高+步枪成本的巨大飞跃) 用于电机间通讯的串行接口 板载处理器可以独立应用于简单应用 可调整换向轮廓 PID自整定 抗龋齿能力强 Arduino的的的兼容,开源工业伺服电机Mechaduino系统设计框图: 工业伺服电机工工工工由四个主要组成部分: 1)实际电机,通常为无刷直流品种。当您看到工业伺服电机时,成本的一大部分是电机本身。它们通常是定制的,或至少内置数量有限,这意味着$$$。瓦特瓦特,我猜想,生产NEMA 17或NEMA 23步进电机的质量是工业伺服中使用的BDC电机的十分之一和百分之一虽然他们的设计是针对“步进”进行优优的,但步进电机实际上只是50极无刷直流电机。它们可以像更传统的三相BDC电机一样受到控制。这就是计划。这是工作! 2)用于反馈的传感器,通常为编码器。光编码器是非常标准的,但如果您想要高分辨率和/或绝对位置信息,则可以获得相当昂贵的代价。我们对AMS等供应商提供的一些便宜,高分辨率的磁编码器感兴趣。事实证明,尽管他们声称12和14位分辨率(分别为0.09和0.02度),它们但在一定程度上的英文非线性的!然而,我们发现这种非线性是非常可重复的,我们能够开发一种快速,自包含(电机)校准程序,可以将分辨率恢复到0.1度以上(稍后再来)这是一个重要的设计工作,值得自己的构建日志!) 3)驱动电路/电力电子元件激励电机绕组。许多工业伺服系统使用离散ħ桥。每相需要自己的ħ桥(对于两相电动机...三相电动机中的每个半桥),其由至少4个(如果不是8个)(...包括续流二极管)分立开关装置组成。投入门驱动电路,事情开始变得昂贵。我们希望找到一个可以提供电流反馈的单芯片集成解决方案,我们发现在A4954双通道PWM驱动器中。 4)控制电子通常是微控制器或FPGA。在此之前,我们决定使用Arduino兼容性是为了使固件尽可能方便。我们选择使用SAMD21 ARM M0 +(Arduino Zero兼容)处理器来平衡成本和性能。我们的面包板原型系统验证了该处理器能够执行必要的算法....
### 关于在Arduino上使用LVGL库的示例教程 #### 示例代码解析 为了帮助理解如何在Arduino平台上利用LVGL库构建图形用户界面,下面提供了一个简单的`HelloWorld`实例。此例子展示了基本的初始化过程以及创建一个按钮的方法。 ```cpp #include "lvgl/lvgl.h" #include "lv_arduino.h" void setup() { Serial.begin(9600); // 初始化TFT屏幕和触摸屏 tft.init(); ts.begin(); // 初始化LVGL库 lv_init(); lv_disp_drv_t disp_drv; lv_disp_drv_init(&disp_drv); /*Basic display driver initialization*/ disp_drv.flush_cb = my_disp_flush; // 设置刷新回调函数 lv_disp_drv_register(&disp_drv); // 创建一个按钮并设置其属性 lv_obj_t * btn1 = lv_btn_create(lv_scr_act()); lv_obj_set_pos(btn1, 10, 10); /*Set its position*/ lv_obj_set_size(btn1, 120, 50); /*Set its size*/ // 给按钮添加标签 lv_obj_t * label = lv_label_create(btn1); lv_label_set_text(label, "Button"); } void loop() { lv_task_handler(); /*Let the GUI do its work*/ delay(5); /*Sleep a bit not to waste resources*/ } ``` 这段代码首先包含了必要的头文件,并定义了`setup()`函数来完成硬件初始化工作[^2]。接着,在屏幕上创建了一个按钮对象,并通过调用`lv_btn_create()`方法将其放置到当前活动窗口中;之后调整位置大小并通过`lv_label_create()`给该按钮附加文字说明。最后,在主循环里不断更新GUI状态以响应事件处理程序。 #### 主要组件解释 - **lvgl/** 文件夹下存放着核心图形引擎及相关模块; - **examples/** 中有多个子目录分别对应不同类型的案例研究,比如最基础的`HelloWorld`入门级应用; - **libraries/** 收录了第三方依赖项和其他支持包; - **tools/** 提供了一些实用工具,例如图像转换器等辅助开发的小应用程序[^5]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

驴友花雕

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值