{"id":21953,"date":"2025-01-04T00:25:28","date_gmt":"2025-01-04T00:25:28","guid":{"rendered":"https:\/\/liquidinstruments.com\/?p=21953"},"modified":"2025-08-29T04:41:00","modified_gmt":"2025-08-29T04:41:00","slug":"constructing-feedback-control-loops","status":"publish","type":"post","link":"https:\/\/liquidinstruments.com\/application-notes\/constructing-feedback-control-loops\/","title":{"rendered":"Feedback control: constructing feedback control loops","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<div class=\"wpb-content-wrapper\"><p>[vc_row][vc_column]\n    <div data-component='call_to_action' class='vc_row-fluid cta w-full mx-auto cta-outline'>\n      <div class='flex w-full gap-4 flex-col items-center'>\n      \n        <div class='max-w-prose wpb_column vc_column_container vc_col-sm-12'>\n          <div class='vc_column-inner'>\n            \n            <p>In this series, we provide a practical reference for designing and debugging loops by presenting a short introduction to feedback control as encountered in the frequency domain.<\/p>\n\n          <\/div>\n        <\/div>\n        <div class=' flex flex-row gap-4 xs:flex-col'>\n          <a class=\"button relative gap-2 items-center blue filled medium  \" href=\"https:\/\/cta-service-cms2.hubspot.com\/web-interactives\/public\/v1\/track\/click?encryptedPayload=AVxigLL53H1g5u5G%2BWdrdEyA8UnIGHoMphgPd6RS891o0xbtMcFdDmpN7gOBMFuO4jn7aQi0hH1H0jODE36DYY5czQIRK90a5RwmQwJHMZz%2B1cp8fBK62k5NWMzaLXj43OjxToPNJGSX7sMb1l9Bww51ahIlOA%2F%2Fj5pHGosXb1MmBcZOOkljIYVsNLprUntC1boukdjGDrNfYSyzVRLmLSu0DaI7FWlg0Kvp%2Fgso142%2BQ8BTRlzPoFEuWF7oRjJOpkk%3D&#038;portalId=3954510\" title=\"Get the frequency control guide\" target=\"\"><span class=\"flex-1\">Get the frequency control guide<\/span><\/a>\n  <a class=\"button relative gap-2 items-center blue filled medium  \" href=\"https:\/\/cta-service-cms2.hubspot.com\/web-interactives\/public\/v1\/track\/click?encryptedPayload=AVxigLJkWgTRNoIXu%2BUpVr%2F3gV1SakKkDtzdPLFT3D6%2B9zOHpAqrEbsY4tuSIV8t4J2KKSZwbV9gB0N0NsbopmrpB3sR%2FEqdBZvZ3ruerNTXPltixWtl8cAyI1Q7XRKFk7hAAWpdl1WvuQln6quCTJpQMjJwU9I4LSjXAIi6ky3n%2B9qZGb5Myi4JtcyceXURphMi9BOgcycD0vux3Xjo&#038;portalId=3954510\" title=\"Control systems solutions\" target=\"\"><span class=\"flex-1\">Control systems solutions<\/span><\/a>\n  \n  \n        <\/div>\n      <\/div>\n    <\/div>[vc_column_text css=&#8221;&#8221;]<\/p>\n<h2><b>2.1<\/b> <b>Introduction<\/b><\/h2>\n<p>Part 2 of <a href=\"https:\/\/liquidinstruments.com\/frequency-domain-control-the-ultimate-guide-to-control-loops\/\">our series<\/a> on frequency-domain control demonstrates how one can construct feedback control loops using the block-diagram approach discussed previously. Please see <a href=\"https:\/\/liquidinstruments.com\/application-notes\/defining-a-transfer-function\/\">Part 1<\/a> for an introduction to the mathematical representation of our control loops. We will analyze these loops and discover how they can track a changing set point or mitigate disturbances. As an example, we will look at disturbances arising from the loop sensor itself.<\/p>\n<p class=\"p1\">Part 1 establishes the definition of a transfer function and provides the components from which one can construct control loop block diagrams to model elaborate systems. In Part 2 we demonstrate how feedback control systems can be used to suppress disturbances or track a process set point. The complications associated with noisy sensors are also discussed. Unlike open-loop systems, devices under feedback control have the potential to become unstable and there is tension between performance and robustness. Ultimately, delays in signal propagation can impose the most stringent limit. These issues are treated in <a href=\"https:\/\/liquidinstruments.com\/application-notes\/assessing-stability-in-feedback-control-loops\/\">Part 3<\/a>. In the frequency domain, most parameters of a feedback system can be linked to its open-loop transfer function. In <a href=\"https:\/\/liquidinstruments.com\/application-notes\/loop-shaping-frequency-domain-tuning\/\">Part 4<\/a> we explain how to measure this important quantity and provide a list of functions often used in shaping it. <a href=\"https:\/\/liquidinstruments.com\/application-notes\/understanding-actuator-saturation-in-control-systems\/\">Part 5<\/a> describes one method of avoiding actuator saturation and, in doing so, introduces ideas useful to the treatment of multiple actuators. Our series concludes in <a href=\"https:\/\/liquidinstruments.com\/application-notes\/digital-pid-controller-analysis\/\">Part 6<\/a> with the study of the <a href=\"https:\/\/liquidinstruments.com\/products\/integrated-instruments\/pid-controller\/\">PID controller<\/a>. This common control architecture is generally considered from a time-domain point-of-view; we illustrate the complementary frequency-domain representation.<\/p>\n<h2>2.2 Open loop<\/h2>\n<p>Let us begin our foray into the world of <a href=\"https:\/\/liquidinstruments.com\/solutions\/control-systems\/\">control systems<\/a> by considering the frequency control system of Figure 2.1. Such a diagram could represent the tuning input of a voltage-controlled oscillator (VCO), laser, or motor (in which case we\u2019d think of frequency as rotation rate or speed). The system to be controlled is often called the plant.<\/p>\n<p><img decoding=\"async\" width=\"636\" height=\"101\" class=\"aligncenter size-full wp-image-21954\" src=\"https:\/\/liquidinstruments.com\/wp-content\/uploads\/2025\/01\/Screenshot-2025-01-02-at-12.09.30\u202fPM.png\" alt=\"Open loop transfer function\" srcset=\"https:\/\/liquidinstruments.com\/wp-content\/uploads\/2025\/01\/Screenshot-2025-01-02-at-12.09.30\u202fPM.png 636w, https:\/\/liquidinstruments.com\/wp-content\/uploads\/2025\/01\/Screenshot-2025-01-02-at-12.09.30\u202fPM-300x48.png 300w, https:\/\/liquidinstruments.com\/wp-content\/uploads\/2025\/01\/Screenshot-2025-01-02-at-12.09.30\u202fPM-600x95.png 600w\" sizes=\"(max-width: 636px) 100vw, 636px\" \/><\/p>\n<p style=\"text-align: center;\"><span style=\"font-weight: 400;\">Figure 2.1: An open-loop frequency control system. <em>H(s)<\/em>, with dimensions of Hz\/V, describes the transfer function of the system\u2019s tuning input. In response to a <em>set-point<\/em> input of X<sub>sp<\/sub>, the output frequency is \\(X_{freq}\\), i.e. \\(X_{freq}(s)=H(s)X_{sp}(s)\\).<\/span><\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"font-weight: 400;\">Ideally, one could simply fix the input voltage based on the desired output frequency, varying it as necessary. Unfortunately, real-world <\/span><i><span style=\"font-weight: 400;\">disturbances <\/span><\/i><span style=\"font-weight: 400;\">render this approach unfeasible. We divide disturbances into <\/span><i><span style=\"font-weight: 400;\">input <\/span><\/i><span style=\"font-weight: 400;\">and <\/span><i><span style=\"font-weight: 400;\">output <\/span><\/i><span style=\"font-weight: 400;\">categories as shown in (see Figure <\/span><span style=\"font-weight: 400;\">2.2<\/span><span style=\"font-weight: 400;\">).<\/span><\/p>\n<p><img decoding=\"async\" class=\"aligncenter wp-image-21955 size-full\" src=\"https:\/\/liquidinstruments.com\/wp-content\/uploads\/2025\/01\/Screenshot-2025-01-02-at-12.12.05\u202fPM.png\" alt=\"Input and output disturbances, di and do respectively\" width=\"623\" height=\"200\" srcset=\"https:\/\/liquidinstruments.com\/wp-content\/uploads\/2025\/01\/Screenshot-2025-01-02-at-12.12.05\u202fPM.png 623w, https:\/\/liquidinstruments.com\/wp-content\/uploads\/2025\/01\/Screenshot-2025-01-02-at-12.12.05\u202fPM-300x96.png 300w, https:\/\/liquidinstruments.com\/wp-content\/uploads\/2025\/01\/Screenshot-2025-01-02-at-12.12.05\u202fPM-600x193.png 600w\" sizes=\"(max-width: 623px) 100vw, 623px\" \/><\/p>\n<p style=\"text-align: center;\">Figure 2.2: Input and output disturbances, di and do respectively, perturb the system. This necessitates action on our part to maintain the desired output. Note that in the interest of brevity and readability, we henceforth omit dimensions and independent variables.<\/p>\n<p>Under closed-loop control, the effect of input and output disturbances can be quite different and the distinction between them relatively subtle. Considering the dimensions of the disturbance and whether it should be filtered by the transfer function in question usually removes any uncertainty.<\/p>\n<h2><b>2.3<\/b> <b>Feedforward<\/b><\/h2>\n<p>A simple approach to combatting a disturbance would be to:<\/p>\n<ul>\n<li>Characterize the effect disturbances of this type have on the system<\/li>\n<li>Accurately measure the disturbance<\/li>\n<li>Adjust the set point to cancel the effect of the disturbance<\/li>\n<\/ul>\n<p>Suppose that the system of Figure 2.1 is perturbed by an output disturbance, e.g. temperature (Figure 2.3, top). Said disturbance modifies the output frequency via the system\u2019s response to temperature R [Hz\/K]. The resulting output is \\(X_{freq}=HX_{sp}+Rd_o\\)<\/p>\n<p>In hopes of mitigating the perturbation, we measure the ambient temperature using a sensor with transfer function S [V\/K] and implement a model of our system M [V\/V] (Figure 2.3, bottom). Subtracting the output of the model from the system input we find that<\/p>\n<p style=\"text-align: center;\">\\(X_{freq} = H X_{sp}+Rd_o-SMHd_o\\)<\/p>\n<p style=\"text-align: center;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0\\(=HX_{sp}+(R-SMH)d_o\\)<\/p>\n<p>Thus, if <em>M = R\/SH<\/em>, we can theoretically rid our system of the influence of temperature. This is the essence of <em>feedforward<\/em> control.<\/p>\n<p style=\"text-align: center;\"><img decoding=\"async\" class=\"aligncenter wp-image-21956 size-full\" src=\"https:\/\/liquidinstruments.com\/wp-content\/uploads\/2025\/01\/Screenshot-2025-01-02-at-12.14.44\u202fPM.png\" alt=\"feedforward control diagram\" width=\"487\" height=\"471\" srcset=\"https:\/\/liquidinstruments.com\/wp-content\/uploads\/2025\/01\/Screenshot-2025-01-02-at-12.14.44\u202fPM.png 487w, https:\/\/liquidinstruments.com\/wp-content\/uploads\/2025\/01\/Screenshot-2025-01-02-at-12.14.44\u202fPM-300x290.png 300w\" sizes=\"(max-width: 487px) 100vw, 487px\" \/><br \/>\nFigure 2.3: Feedforward is an open-loop technique which relies on canceling the effects of a disturbance (temperature, for example) by measuring it and having prior knowledge of how it impacts the system.<br \/>\nFeedforward is a powerful, generally stable, open-loop technique which allows disturbances to be corrected before they are able to influence system output. However, feedforward demands precise knowledge of one\u2019s system, in terms of both the plant and the disturbance. Any unmodeled disturbances or temporal variability in the system results in markedly reduced performance. Hence, the technique is often confined to well-characterized, predominantly industrial, processes where the disturbances are predictable factors such as changes in set point or the opening of valves rather than quasi-random environmental influences. Operation in tandem with feedback can circumvent some of these drawbacks, but that is outside the scope of this work.<\/p>\n<h2><b style=\"font-size: var(--font-size-3xl); letter-spacing: var(--letter-spacing);\">2.4 Feedback<\/b><\/h2>\n<p>An alternative approach to the treatment of disturbances is to<\/p>\n<ul>\n<li>Measure system output<\/li>\n<li>Compare the output to the desired value<\/li>\n<li>Adjust the set point until the desired output is achieved<\/li>\n<\/ul>\n<p style=\"text-align: center;\"><img decoding=\"async\" width=\"492\" height=\"394\" class=\"aligncenter size-full wp-image-21957\" src=\"https:\/\/liquidinstruments.com\/wp-content\/uploads\/2025\/01\/Screenshot-2025-01-02-at-12.15.44\u202fPM.png\" alt=\"Disturbance and feedback\" srcset=\"https:\/\/liquidinstruments.com\/wp-content\/uploads\/2025\/01\/Screenshot-2025-01-02-at-12.15.44\u202fPM.png 492w, https:\/\/liquidinstruments.com\/wp-content\/uploads\/2025\/01\/Screenshot-2025-01-02-at-12.15.44\u202fPM-300x240.png 300w\" sizes=\"(max-width: 492px) 100vw, 492px\" \/><br \/>\nFigure 2.4: Combating an output disturbance with feedback.<\/p>\n<p>Such an approach is depicted in the upper diagram of Figure 2.4. Moving clockwise from the output, X<sub>freq<\/sub>, the output is measured by a sensor with transfer function S, the difference between the sensor output and the requested set point is then computed at the summing node. We call this difference the error signal, \u03b5. The error signal is then taken as the input to the system. If the output matches the set point, the error signal will be zero and the output of the system will not be modified. If the output is larger than the desired set point the error signal will be negative and act to reduce the output. Similarly, if the output is too small the control loop acts to increase the output.<\/p>\n<p>This negative feedback loop is not, in general, stable (see \u00a73.2). To ensure stability and to enable modification of frequency-dependent closed-loop gain, we introduce a <em>controller<\/em>, with transfer function C (Figure 2.4, bottom). The output of the controller, c, is known as the control signal and it is this quantity which acts on our system. The steady-state output is given by<\/p>\n<p style=\"text-align: center;\">\\(X_{freq} = d_o+CHvarepsilon\\ =d_o+CH(X_{sp}-SX_{freq}).\\)<\/p>\n<p style=\"text-align: center;\">\\(X_{freq} = frac{1}{1+CHS}d_o+frac{CH}{1+CHS}X_{sp}\\) (2.1)<\/p>\n<p>Rearranging terms, we find (2.1) where we have introduced the open-loop transfer function, or OLTF, G, obtained by breaking the loop at any point and taking the product of all transfer functions met on moving around the (now open) loop. In this instance G = CHS.<br \/>\nNote that the numerator of the transfer functions encompasses the blocks encountered on moving from the input to the output and the denominator is 1+G. This realization provides a means of constructing transfer functions by inspection.<br \/>\nStudy of (2.1) reveals the two key features of feedback control loops.<\/p>\n<p>&nbsp;<\/p>\n<p><b>Reference tracking: <\/b><span style=\"font-weight: 400;\">The transfer function between the set point and the sensor output is<\/span><\/p>\n<p style=\"text-align: center;\">\\(frac{S X_{freq}}{X_{sp}}=frac{G}{1+G} sim 1\\) for large G.<\/p>\n<p><span style=\"font-weight: 400;\">so that the measured system output tracks the desired output (set point) where <\/span><i><span style=\"font-weight: 400;\">G <\/span><\/i><span style=\"font-weight: 400;\">is \u201clarge\u201d. We define the concept of <\/span><i><span style=\"font-weight: 400;\">unity gain frequency<\/span><\/i><span style=\"font-weight: 400;\">, or <\/span><i><span style=\"font-weight: 400;\">\u03c9<\/span><\/i><span style=\"font-weight: 400;\">UGF<\/span><span style=\"font-weight: 400;\">, to be the frequency at which |<\/span><i><span style=\"font-weight: 400;\">G<\/span><\/i><span style=\"font-weight: 400;\">| = 1. Roughly speaking, in practice, tracking is good for <\/span><i><span style=\"font-weight: 400;\">\u03c9 &lt; \u03c9<\/span><\/i><span style=\"font-weight: 400;\">UGF<\/span><span style=\"font-weight: 400;\">.<\/span><\/p>\n<p><b>Disturbance rejection: <\/b><span style=\"font-weight: 400;\">The transfer function from disturbance to output is<\/span><\/p>\n<p style=\"text-align: center;\">\\(frac{X_{freq}}{d_o}=frac{1}{1+G} sim frac{1}{G}\\) for large G<i>.<\/i><\/p>\n<p><span style=\"font-weight: 400;\">Thus disturbances are suppressed by a factor of approximately 1<\/span><i><span style=\"font-weight: 400;\">\/G<\/span><\/i><span style=\"font-weight: 400;\">.<\/span><\/p>\n<p><img decoding=\"async\" width=\"492\" height=\"394\" class=\"aligncenter size-full wp-image-21959\" src=\"https:\/\/liquidinstruments.com\/wp-content\/uploads\/2025\/01\/Screenshot-2025-01-02-at-12.15.44\u202fPM-1.png\" alt=\"\" srcset=\"https:\/\/liquidinstruments.com\/wp-content\/uploads\/2025\/01\/Screenshot-2025-01-02-at-12.15.44\u202fPM-1.png 492w, https:\/\/liquidinstruments.com\/wp-content\/uploads\/2025\/01\/Screenshot-2025-01-02-at-12.15.44\u202fPM-1-300x240.png 300w\" sizes=\"(max-width: 492px) 100vw, 492px\" \/> <img decoding=\"async\" class=\"aligncenter wp-image-21960 size-full\" src=\"https:\/\/liquidinstruments.com\/wp-content\/uploads\/2025\/01\/Screenshot-2025-01-02-at-1.50.47\u202fPM.png\" alt=\"\" width=\"618\" height=\"304\" srcset=\"https:\/\/liquidinstruments.com\/wp-content\/uploads\/2025\/01\/Screenshot-2025-01-02-at-1.50.47\u202fPM.png 618w, https:\/\/liquidinstruments.com\/wp-content\/uploads\/2025\/01\/Screenshot-2025-01-02-at-1.50.47\u202fPM-300x148.png 300w, https:\/\/liquidinstruments.com\/wp-content\/uploads\/2025\/01\/Screenshot-2025-01-02-at-1.50.47\u202fPM-600x295.png 600w\" sizes=\"(max-width: 618px) 100vw, 618px\" \/><\/p>\n<p style=\"text-align: center;\"><span style=\"font-weight: 400;\">Figure 2.5: Input, n<sub>i<\/sub>, and output, n<sub>o<\/sub>, sensor noise directly limits loop performance.<\/span><\/p>\n<h2><b>2.5<\/b> <b>Sensor noise<\/b><\/h2>\n<p>We can repeat the above procedure to compute the effect of disturbances introduced at any point in the loop. One type of disturbance, however, merits special mention \u2013 sensor noise.<\/p>\n<p>We can consider two types of sensor noise, as seen in Figure 2.5. The first is input noise, n<sub>i<\/sub>, which experiences the transfer function of the sensor, such as cavity length noise in a laser frequency stabilization setup. The second is output noise, n<sub>o<\/sub>, which does not (e.g. most electronics noise).<\/p>\n<p>It stands to reason that if our ideal picture of a system is corrupted due to a noisy sensor, our ability to achieve our control objectives will be compromised. This supposition is borne out by the following transfer functions relating sensor noise to system output,<\/p>\n<div>\n<p style=\"text-align: center;\">\\(X_{freq}=-frac{CH}{1+G}n_o-frac{G}{1+G}n_i\\) (2.2)<\/p>\n<\/div>\n<p><span style=\"font-weight: 400;\">We see that there is a clear path from sensor noise to system output. For input sensor noise in particular, the coupling is 1:1 where open-loop gain is high. To cement this idea, consider the example of a temperature sensor that reads consistently high by one degree. With our set point at 21 degrees, the loop will act to make the sensor output 21 degrees. However, due to the sensor error, the room will actually be at a temperature of only 20 degrees. The one-degree sensor error has been transmitted directly to our controlled variable.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">The best we can hope for using a feedback control loop is to suppress disturbances down to the sensor noise. It may seem obvious, but is worth explicitly stating, that open-loop systems do not suffer from sensor noise.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">A second issue with sensor noise comes when attempting to evaluate performance. Since the loop does not distinguish between sensor noise and true sensed output, the loop imprints sensor noise on the system output to reduce the \u2018as-measured\u2019 fluctuations. For example, if our sensor suffers from a 10 Hz noise oscillation, the loop will cause the system output to oscillate at 10 Hz in such a way that the sensor output is flat. In effect, the loop suppresses the sensor noise in the sensor output. If we then use the in-loop sensor to evaluate performance, we will see that it is flat and assume the output is stable, whereas in reality it is not. For this reason, an independent <\/span><i><span style=\"font-weight: 400;\">out-of-loop <\/span><\/i><span style=\"font-weight: 400;\">sensor is often employed, which can detect these types of issues.<\/span><\/p>\n<h2><b>2.6<\/b> <b>Summary<\/b><\/h2>\n<p><span style=\"font-weight: 400;\">Above we have introduced some of the fundamental features of feedback control loops. In contrast to <a href=\"https:\/\/www.sciencedirect.com\/science\/article\/abs\/pii\/S0022283605004298\" target=\"_blank\" rel=\"noopener\">feedforward<\/a> loops, feed<\/span><i><span style=\"font-weight: 400;\">back <\/span><\/i><span style=\"font-weight: 400;\">loops are robust to parameter variations and do not require knowledge of the origins and coupling of each disturbance. Moreover, we also do not need an ideal model of our plant to achieve good performance. Stability, however, is not guaranteed and this topic will be the subject of our next installment &#8211; please see <a href=\"https:\/\/liquidinstruments.com\/application-notes\/assessing-stability-in-feedback-control-loops\/\">Part 3<\/a>.<\/span>[\/vc_column_text][\/vc_column][\/vc_row][vc_row][vc_column][\/vc_column][\/vc_row]<\/p>\n<\/div>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>[vc_row][vc_column][vc_column_text css=&#8221;&#8221;] 2.1 Introduction Part 2 of our series on frequency-domain control demonstrates how one can construct feedback control loops using the block-diagram approach discussed previously. Please see Part 1 for an introduction to the mathematical representation of our control loops. We will analyze these loops and discover how they can track a changing set [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":40,"featured_media":21991,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"content-type":"","footnotes":""},"categories":[5],"tags":[],"class_list":["post-21953","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-application-notes","site-category-pid-controller"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.0 (Yoast SEO v27.0) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>How to Make a Feedback Control Loop<\/title>\n<meta name=\"description\" content=\"Understand stability and delays in frequency domain analysis by understanding how to construct a feedback control loop.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/liquidinstruments.com\/application-notes\/constructing-feedback-control-loops\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Feedback control: constructing feedback control loops\" \/>\n<meta property=\"og:description\" content=\"Understand stability and delays in frequency domain analysis by understanding how to construct a feedback control loop.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/liquidinstruments.com\/application-notes\/constructing-feedback-control-loops\/\" \/>\n<meta property=\"og:site_name\" content=\"Liquid Instruments\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/LiquidInstruments\/\" \/>\n<meta property=\"article:published_time\" content=\"2025-01-04T00:25:28+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-08-29T04:41:00+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/liquidinstruments.com\/wp-content\/uploads\/2025\/01\/Screenshot-2025-01-03-at-4.23.54\u202fPM.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1395\" \/>\n\t<meta property=\"og:image:height\" content=\"828\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"jpatterson\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@liquidinstrmnts\" \/>\n<meta name=\"twitter:site\" content=\"@liquidinstrmnts\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"jpatterson\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"10 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/liquidinstruments.com\/application-notes\/constructing-feedback-control-loops\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/liquidinstruments.com\/application-notes\/constructing-feedback-control-loops\/\"},\"author\":{\"name\":\"jpatterson\",\"@id\":\"https:\/\/liquidinstruments.com\/#\/schema\/person\/a90cfa3df7e1cd3895cac4a51dff60b5\"},\"headline\":\"Feedback control: constructing feedback control loops\",\"datePublished\":\"2025-01-04T00:25:28+00:00\",\"dateModified\":\"2025-08-29T04:41:00+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/liquidinstruments.com\/application-notes\/constructing-feedback-control-loops\/\"},\"wordCount\":1901,\"publisher\":{\"@id\":\"https:\/\/liquidinstruments.com\/#organization\"},\"image\":{\"@id\":\"https:\/\/liquidinstruments.com\/application-notes\/constructing-feedback-control-loops\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/liquidinstruments.com\/wp-content\/uploads\/2025\/01\/Screenshot-2025-01-03-at-4.23.54\u202fPM.png\",\"articleSection\":[\"Application notes\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/liquidinstruments.com\/application-notes\/constructing-feedback-control-loops\/\",\"url\":\"https:\/\/liquidinstruments.com\/application-notes\/constructing-feedback-control-loops\/\",\"name\":\"How to Make a Feedback Control Loop\",\"isPartOf\":{\"@id\":\"https:\/\/liquidinstruments.com\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/liquidinstruments.com\/application-notes\/constructing-feedback-control-loops\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/liquidinstruments.com\/application-notes\/constructing-feedback-control-loops\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/liquidinstruments.com\/wp-content\/uploads\/2025\/01\/Screenshot-2025-01-03-at-4.23.54\u202fPM.png\",\"datePublished\":\"2025-01-04T00:25:28+00:00\",\"dateModified\":\"2025-08-29T04:41:00+00:00\",\"description\":\"Understand stability and delays in frequency domain analysis by understanding how to construct a feedback control loop.\",\"breadcrumb\":{\"@id\":\"https:\/\/liquidinstruments.com\/application-notes\/constructing-feedback-control-loops\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/liquidinstruments.com\/application-notes\/constructing-feedback-control-loops\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/liquidinstruments.com\/application-notes\/constructing-feedback-control-loops\/#primaryimage\",\"url\":\"https:\/\/liquidinstruments.com\/wp-content\/uploads\/2025\/01\/Screenshot-2025-01-03-at-4.23.54\u202fPM.png\",\"contentUrl\":\"https:\/\/liquidinstruments.com\/wp-content\/uploads\/2025\/01\/Screenshot-2025-01-03-at-4.23.54\u202fPM.png\",\"width\":1395,\"height\":828,\"caption\":\"PID Control bode plot\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/liquidinstruments.com\/application-notes\/constructing-feedback-control-loops\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/liquidinstruments.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Feedback control: constructing feedback control loops\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/liquidinstruments.com\/#website\",\"url\":\"https:\/\/liquidinstruments.com\/\",\"name\":\"Liquid Instruments\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\/\/liquidinstruments.com\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/liquidinstruments.com\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/liquidinstruments.com\/#organization\",\"name\":\"Liquid Instruments\",\"url\":\"https:\/\/liquidinstruments.com\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/liquidinstruments.com\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/i0.wp.com\/liquidinstruments.com\/wp-content\/uploads\/2020\/10\/BrandMark-Preferred-RGB-Color.png?fit=1000%2C924&ssl=1\",\"contentUrl\":\"https:\/\/i0.wp.com\/liquidinstruments.com\/wp-content\/uploads\/2020\/10\/BrandMark-Preferred-RGB-Color.png?fit=1000%2C924&ssl=1\",\"width\":1000,\"height\":924,\"caption\":\"Liquid Instruments\"},\"image\":{\"@id\":\"https:\/\/liquidinstruments.com\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/LiquidInstruments\/\",\"https:\/\/x.com\/liquidinstrmnts\",\"https:\/\/www.instagram.com\/liquidinstruments\/\",\"https:\/\/www.linkedin.com\/company\/liquidinstruments\/\",\"https:\/\/www.youtube.com\/c\/LiquidInstruments\",\"https:\/\/vimeo.com\/liquidinstruments\"],\"hasMerchantReturnPolicy\":{\"@type\":\"MerchantReturnPolicy\",\"merchantReturnLink\":\"https:\/\/liquidinstruments.com\/support\/warranty-repairs-and-service\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/liquidinstruments.com\/#\/schema\/person\/a90cfa3df7e1cd3895cac4a51dff60b5\",\"name\":\"jpatterson\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/liquidinstruments.com\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/3f4addf937f4e6300e74bf8a6d4d655c30b9302eec44ad3c439471b26ee5139b?s=96&d=wavatar&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/3f4addf937f4e6300e74bf8a6d4d655c30b9302eec44ad3c439471b26ee5139b?s=96&d=wavatar&r=g\",\"caption\":\"jpatterson\"}}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"How to Make a Feedback Control Loop","description":"Understand stability and delays in frequency domain analysis by understanding how to construct a feedback control loop.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/liquidinstruments.com\/application-notes\/constructing-feedback-control-loops\/","og_locale":"en_US","og_type":"article","og_title":"Feedback control: constructing feedback control loops","og_description":"Understand stability and delays in frequency domain analysis by understanding how to construct a feedback control loop.","og_url":"https:\/\/liquidinstruments.com\/application-notes\/constructing-feedback-control-loops\/","og_site_name":"Liquid Instruments","article_publisher":"https:\/\/www.facebook.com\/LiquidInstruments\/","article_published_time":"2025-01-04T00:25:28+00:00","article_modified_time":"2025-08-29T04:41:00+00:00","og_image":[{"width":1395,"height":828,"url":"https:\/\/liquidinstruments.com\/wp-content\/uploads\/2025\/01\/Screenshot-2025-01-03-at-4.23.54\u202fPM.png","type":"image\/png"}],"author":"jpatterson","twitter_card":"summary_large_image","twitter_creator":"@liquidinstrmnts","twitter_site":"@liquidinstrmnts","twitter_misc":{"Written by":"jpatterson","Est. reading time":"10 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/liquidinstruments.com\/application-notes\/constructing-feedback-control-loops\/#article","isPartOf":{"@id":"https:\/\/liquidinstruments.com\/application-notes\/constructing-feedback-control-loops\/"},"author":{"name":"jpatterson","@id":"https:\/\/liquidinstruments.com\/#\/schema\/person\/a90cfa3df7e1cd3895cac4a51dff60b5"},"headline":"Feedback control: constructing feedback control loops","datePublished":"2025-01-04T00:25:28+00:00","dateModified":"2025-08-29T04:41:00+00:00","mainEntityOfPage":{"@id":"https:\/\/liquidinstruments.com\/application-notes\/constructing-feedback-control-loops\/"},"wordCount":1901,"publisher":{"@id":"https:\/\/liquidinstruments.com\/#organization"},"image":{"@id":"https:\/\/liquidinstruments.com\/application-notes\/constructing-feedback-control-loops\/#primaryimage"},"thumbnailUrl":"https:\/\/liquidinstruments.com\/wp-content\/uploads\/2025\/01\/Screenshot-2025-01-03-at-4.23.54\u202fPM.png","articleSection":["Application notes"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/liquidinstruments.com\/application-notes\/constructing-feedback-control-loops\/","url":"https:\/\/liquidinstruments.com\/application-notes\/constructing-feedback-control-loops\/","name":"How to Make a Feedback Control Loop","isPartOf":{"@id":"https:\/\/liquidinstruments.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/liquidinstruments.com\/application-notes\/constructing-feedback-control-loops\/#primaryimage"},"image":{"@id":"https:\/\/liquidinstruments.com\/application-notes\/constructing-feedback-control-loops\/#primaryimage"},"thumbnailUrl":"https:\/\/liquidinstruments.com\/wp-content\/uploads\/2025\/01\/Screenshot-2025-01-03-at-4.23.54\u202fPM.png","datePublished":"2025-01-04T00:25:28+00:00","dateModified":"2025-08-29T04:41:00+00:00","description":"Understand stability and delays in frequency domain analysis by understanding how to construct a feedback control loop.","breadcrumb":{"@id":"https:\/\/liquidinstruments.com\/application-notes\/constructing-feedback-control-loops\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/liquidinstruments.com\/application-notes\/constructing-feedback-control-loops\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/liquidinstruments.com\/application-notes\/constructing-feedback-control-loops\/#primaryimage","url":"https:\/\/liquidinstruments.com\/wp-content\/uploads\/2025\/01\/Screenshot-2025-01-03-at-4.23.54\u202fPM.png","contentUrl":"https:\/\/liquidinstruments.com\/wp-content\/uploads\/2025\/01\/Screenshot-2025-01-03-at-4.23.54\u202fPM.png","width":1395,"height":828,"caption":"PID Control bode plot"},{"@type":"BreadcrumbList","@id":"https:\/\/liquidinstruments.com\/application-notes\/constructing-feedback-control-loops\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/liquidinstruments.com\/"},{"@type":"ListItem","position":2,"name":"Feedback control: constructing feedback control loops"}]},{"@type":"WebSite","@id":"https:\/\/liquidinstruments.com\/#website","url":"https:\/\/liquidinstruments.com\/","name":"Liquid Instruments","description":"","publisher":{"@id":"https:\/\/liquidinstruments.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/liquidinstruments.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/liquidinstruments.com\/#organization","name":"Liquid Instruments","url":"https:\/\/liquidinstruments.com\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/liquidinstruments.com\/#\/schema\/logo\/image\/","url":"https:\/\/i0.wp.com\/liquidinstruments.com\/wp-content\/uploads\/2020\/10\/BrandMark-Preferred-RGB-Color.png?fit=1000%2C924&ssl=1","contentUrl":"https:\/\/i0.wp.com\/liquidinstruments.com\/wp-content\/uploads\/2020\/10\/BrandMark-Preferred-RGB-Color.png?fit=1000%2C924&ssl=1","width":1000,"height":924,"caption":"Liquid Instruments"},"image":{"@id":"https:\/\/liquidinstruments.com\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/LiquidInstruments\/","https:\/\/x.com\/liquidinstrmnts","https:\/\/www.instagram.com\/liquidinstruments\/","https:\/\/www.linkedin.com\/company\/liquidinstruments\/","https:\/\/www.youtube.com\/c\/LiquidInstruments","https:\/\/vimeo.com\/liquidinstruments"],"hasMerchantReturnPolicy":{"@type":"MerchantReturnPolicy","merchantReturnLink":"https:\/\/liquidinstruments.com\/support\/warranty-repairs-and-service\/"}},{"@type":"Person","@id":"https:\/\/liquidinstruments.com\/#\/schema\/person\/a90cfa3df7e1cd3895cac4a51dff60b5","name":"jpatterson","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/liquidinstruments.com\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/3f4addf937f4e6300e74bf8a6d4d655c30b9302eec44ad3c439471b26ee5139b?s=96&d=wavatar&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/3f4addf937f4e6300e74bf8a6d4d655c30b9302eec44ad3c439471b26ee5139b?s=96&d=wavatar&r=g","caption":"jpatterson"}}]}},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/liquidinstruments.com\/wp-json\/wp\/v2\/posts\/21953","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/liquidinstruments.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/liquidinstruments.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/liquidinstruments.com\/wp-json\/wp\/v2\/users\/40"}],"replies":[{"embeddable":true,"href":"https:\/\/liquidinstruments.com\/wp-json\/wp\/v2\/comments?post=21953"}],"version-history":[{"count":37,"href":"https:\/\/liquidinstruments.com\/wp-json\/wp\/v2\/posts\/21953\/revisions"}],"predecessor-version":[{"id":25576,"href":"https:\/\/liquidinstruments.com\/wp-json\/wp\/v2\/posts\/21953\/revisions\/25576"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/liquidinstruments.com\/wp-json\/wp\/v2\/media\/21991"}],"wp:attachment":[{"href":"https:\/\/liquidinstruments.com\/wp-json\/wp\/v2\/media?parent=21953"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/liquidinstruments.com\/wp-json\/wp\/v2\/categories?post=21953"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/liquidinstruments.com\/wp-json\/wp\/v2\/tags?post=21953"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}