开环系统

开环系统是一种简单的控制系统,它的输出完全取决于输入。在开环系统中,没有反馈机制来告知系统当前的输出状态,因此系统无法根据输出自动调整其行为。这意味着,开环系统的性能完全依赖于初始条件和设定的控制参数。
开环系统的优点是结构简单、易于理解和实现。然而,由于没有反馈机制,开环系统在面对外部干扰或系统参数变化时,可能无法提供稳定和准确的控制。

想象一下,我们在家里烧水,使用的是一个普通的水壶。当我们开始烧水时,我们把水倒进水壶,然后把水壶放在炉子上,调节火力。这个过程就是一个开环系统。
在这个系统中,我们设定了初始条件,即水的量、水壶的位置和火力大小。然后,我们等待水烧开。在这个过程中,我们不能根据水的温度来调整火力,因为没有反馈机制告诉我们水的实时温度。如果火力太小,烧水的时间会很长;如果火力太大,水会很快烧开,但可能浪费燃气。这就是一个典型的开环系统,因为它的输出(水的温度)只受初始条件的影响,没有其他调整手段。 05-开环系统与闭环系统 - 图1 我们可以看到,如果没有时刻去观察水开状况,即使壶底烧穿也炉子也不会停下来,闭环控制系统就应运而生了。

闭环系统:

闭环系统,也称为反馈控制系统,具有一个反馈环路。在这种系统中,输出的某些信息会被反馈到输入端,用于调整系统的行为。这使得闭环系统能够自动地根据实时的输出状态进行调整,以实现更好的性能。
相比开环系统,闭环系统通常能提供更稳定、准确和可靠的控制。然而,闭环系统的设计和实现通常比开环系统复杂,需要更精细的调整和优化。

现在想象另一种情况,我们使用的是一个具有温度传感器和自动调节火力功能的电热水壶。当我们开始烧水时,我们仍然需要设定初始条件,即水的量和水壶的位置。然后,你设定目标温度,例如100摄氏度。
在这个系统中,温度传感器会实时监测水的温度,并将这个信息发送给水壶的控制器。控制器根据当前水的温度与目标温度之间的差异来调整加热元件的功率。这就形成了一个反馈环,使得系统可以自动调节加热功率,以便在最短时间内将水烧至目标温度。
这个具有反馈机制的烧水过程是一个典型的闭环系统。与开环系统相比,闭环系统更加智能和高效,因为它可以根据实时数据自动调整输出,以实现更好的性能。
通过烧开水的例子,我们可以清楚地看到开环系统和闭环系统的区别,以及它们各自的优缺点。

image.png

总结一下,开环系统和闭环系统是两种不同类型的控制系统,它们的主要区别在于是否存在反馈机制。开环系统简单但可能不够稳定和准确;闭环系统具有更好的性能,但设计和实现相对复杂。根据具体应用场景和需求,研究者和工程师会选择适合的系统类型来实现控制目标。

有闭环控制算法的电烙铁268块钱, 没有闭环控制的电烙铁5块钱
image.pngimage.png

开环控制电机转90°

在讲完前面的例子之后,我们动手来实现一个开环控制电机的案例.
假设我们想控制电机转动90°, 我们对电机开环控制. 那么我们可能会走如下步骤:

  1. 给电机设定一个转速
  2. 经过一段时间之后, 人为的查看是否达到预期的90°
  3. 若达到了,则立即关闭电机

按照这样的想法, 我们可以得到如下代码:

  1. void common_control_1(){
  2. //目标: 让舵机转90度 2496/4 = 624
  3. while(1){
  4. motor_set_pwm(1000);
  5. // 获取编码器读数
  6. short enc = encoder_get();
  7. if(enc >= 624){
  8. motor_set_pwm(0);
  9. delay_1ms(100);
  10. enc = encoder_get();
  11. printf("last enc:%d\r\n",enc);
  12. break;
  13. }
  14. }
  15. }