{"id":6377,"date":"2019-10-14T13:38:06","date_gmt":"2019-10-14T08:08:06","guid":{"rendered":"https:\/\/nuclearrambo.com\/wordpress\/?p=6377"},"modified":"2024-10-03T15:29:32","modified_gmt":"2024-10-03T09:59:32","slug":"agc-building-an-automatic-gain-control-amplifier","status":"publish","type":"post","link":"https:\/\/nuclearrambo.com\/wordpress\/agc-building-an-automatic-gain-control-amplifier\/","title":{"rendered":"Building an automatic gain control (AGC) circuit"},"content":{"rendered":"\n<p>Most amplifiers we use have a fixed gain. In case of excess input power, the amplifier saturates. As a result, the blocks down the receive chain also get affected by this. To avoid this, the preferred technique is to reduce the gain of the amplifier or even attenuate the input. Now, the gain of this amplifier block can be controlled in several ways. One method is to detect the RF power and have the analogue control signal to manipulate the amplifier gain. In another approach, the detected RF, which is a DC signal, is fed back to the analogue attenuator, which could be a PIN diode. While in some cases, we use a digital attenuator instead of an analogue one. Now that you have understood the purpose of automatic gain control (AGC) let us proceed further.<\/p>\n\n\n\n\n\n\n<h2 class=\"wp-block-heading\">AGC System overview<\/h2>\n\n\n\n<p>In this short article, we will be looking at a very crude <a href=\"https:\/\/www.qsl.net\/va3iul\/Files\/Automatic_Gain_Control.pdf\">automatic gain controlled<\/a> (AGC) amplifier built using a digitally controlled attenuator. Have a look at the following block diagram depicting the system.<\/p>\n\n\n\n<figure class=\"wp-block-image alignnone\"><a href=\"https:\/\/nuclearrambo.com\/wordpress\/agc-building-an-automatic-gain-control-amplifier\/block-diagram\/\" rel=\"attachment wp-att-6378\"><img loading=\"lazy\" decoding=\"async\" width=\"512\" height=\"260\" src=\"https:\/\/nuclearrambo.com\/wordpress\/wp-content\/uploads\/2019\/10\/block-diagram.png\" alt=\"\" class=\"wp-image-6378\"\/><\/a><figcaption class=\"wp-element-caption\">Automatic gain control with HMC624 and PSA4-5043+<\/figcaption><\/figure>\n\n\n\n<p>Our system consists of two<a href=\"https:\/\/www.analog.com\/media\/en\/technical-documentation\/data-sheets\/hmc624a.pdf\" rel=\"nofollow\"> HMC624<\/a> digitally controlled attenuators, two <a href=\"https:\/\/www.analog.com\/media\/en\/technical-documentation\/data-sheets\/AD8310.pdf\">PSA4-5043+<\/a> gain blocks, one <a href=\"https:\/\/www.win-source.net\/linear-amplifiers-special-purpose-ad8310armz-reel7.html\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">AD8310<\/a> log detector and one <a href=\"https:\/\/www.win-source.net\/search?q=STM32F103\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">STM32F103<\/a> microcontroller. The HMC624 digital step attenuators have both parallel and Serial programming interfaces setting the attenuation value. To reduce the number of lines, I have used the <a href=\"https:\/\/www.corelis.com\/education\/tutorials\/spi-tutorial\/\">SPI interface<\/a>. On the other hand, the AD8310 log amplifier is fed with IF (intermediate frequency) signal and it outputs a proportional DC level. Further, the ADC of the microcontroller reads the DC signal coming from the log-detector.<\/p>\n\n\n\n<center><p><script type=\"text\/javascript\">\n\tatOptions = {\n\t\t'key' : 'a488f095e80c8a74746e5fdca977eaea',\n\t\t'format' : 'iframe',\n\t\t'height' : 90,\n\t\t'width' : 728,\n\t\t'params' : {}\n\t};\n\tdocument.write('<scr' + 'ipt type=\"text\/javascript\" src=\"http' + (location.protocol === 'https:' ? 's' : '') + ':\/\/www.profitabledisplaynetwork.com\/a488f095e80c8a74746e5fdca977eaea\/invoke.js\"><\/scr' + 'ipt>');\n<\/script><\/p><\/center>\n\n\n\n<h3 class=\"wp-block-heading\">Some more component details<\/h3>\n\n\n\n<p>To elaborate a little more on the circuit blocks, the PSA4-5043+ gives a gain of 21dB at 400MHz. Two of them in series results in a total achievable gain of 42dB. The HMC624 digital step attenuators offer a maximum attenuation of 31.5dB in steps of 0.5dB. In other terms, it offers a 6-bit resolution. Two of them in the signal path can give us a maximum attenuation of 63dB.<\/p>\n\n\n\n<p>My aim here was to maintain the output signal level at -10dBm. After looking at the log amplifier characteristics, -10dBm power results in a DC voltage of approximately 2.0V.<\/p>\n\n\n\n<figure class=\"wp-block-image alignnone\"><a href=\"https:\/\/nuclearrambo.com\/wordpress\/agc-building-an-automatic-gain-control-amplifier\/log-amp-characteristics\/\" rel=\"attachment wp-att-6379\"><img loading=\"lazy\" decoding=\"async\" width=\"560\" height=\"420\" src=\"https:\/\/nuclearrambo.com\/wordpress\/wp-content\/uploads\/2019\/10\/Log-amp-characteristics.png\" alt=\"\" class=\"wp-image-6379\"\/><\/a><figcaption class=\"wp-element-caption\">AD8310 Log amplifier characteristics<\/figcaption><\/figure>\n\n\n\n<p>We are running an elementary algorithm on the microcontroller. Check out the following algorithm.<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Initially set 0dB attenuation.<\/li>\n\n\n\n<li>Measure the log amplifier output using microcontroller&#8217;s in-built ADC.<\/li>\n\n\n\n<li>If the measured DC value is greater than 2.0V, increase the attenuation by 1dB.<\/li>\n\n\n\n<li>Else, if the measured DC value is less than 1.95V, decrease the attenuation by 1dB.<\/li>\n\n\n\n<li>Return to step 3.<\/li>\n<\/ol>\n\n\n\n<p>While reducing the attenuation, I have set the DC value 0.5V lower. Doing this gives us an effect of hysteresis. Not having hysteresis will result in fluctuating attenuation. As a result, the output will also switch in the range of \\(\\pm 1dB\\).<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">The code<\/h2>\n\n\n\n<p>Before writing the code, I configured the STM32F103 microcontroller in CubeMX tool by defining the pins connected to SPI, ADC and so on. I generated the underlying code with CubeMX and took that as a starting point. The next thing on the list are the two HMC624 digital step attenuators. I needed to know whether they were behaving as expected. I started to write a C function to compute the attenuation register value as defined in the datasheet.<\/p>\n\n\n\n<figure class=\"wp-block-image alignnone\"><a href=\"https:\/\/nuclearrambo.com\/wordpress\/agc-building-an-automatic-gain-control-amplifier\/hmc624-table\/\" rel=\"attachment wp-att-6380\"><img loading=\"lazy\" decoding=\"async\" width=\"626\" height=\"395\" src=\"https:\/\/nuclearrambo.com\/wordpress\/wp-content\/uploads\/2019\/10\/hmc624-table.png\" alt=\"\" class=\"wp-image-6380\"\/><\/a><figcaption class=\"wp-element-caption\">HMC624 register setting<\/figcaption><\/figure>\n\n\n\n<p>The register setting is quite simple. It is a 6-bit inverted value. Read below to see how I wrote it in C.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">uint8_t calculate_attenuation_register(ATTN_REG reg, float attenuation){\n\tuint8_t att;\n\tif(attenuation &lt;= 31.5){\t\n\t\tattenuation = ceil(2.0 * attenuation);\n\t\tatt = (uint8_t)(attenuation);\n\t\treg.w = ~(att);\n\t}\n\treturn reg.w;\n}<\/pre>\n\n\n\n<p>In order to test the attenuators, I incremented the attenuation value in steps of 0.5dB while giving a constant input signal. I observed a stepped ramp being generated as a result of linearly varying attenuation. Apparently, the HMC624 were working the way they should.<\/p>\n\n\n\n<p>Coming back to the function, I pass an attenuation value in float format and check whether the value is in the expected attenuation range of 31.5. I multiply it by two and obtain the nearest integer. The attenuator can be configured in steps of 0.5dB and that&#8217;s the reason we multiply it by two so that we can get the full 6-bit range. Finally, we invert the value before returning it to the calling function.<\/p>\n\n\n\n<p>According to the datasheet, the HMC624 expects the data to be 6-bit in size. Anything more gets pushed out from the MISO pin. For example, we are pushing 8 bits instead of 6 results in 2 extra bits being flushed out from the serial out pin. There&#8217;s simply no need to manipulate the bits. Simply write the eight whole bits and transfer over SPI. Since we are doing an MSB-first transaction, the excess 2 bits would won&#8217;t matter.<\/p>\n\n\n\n<p>The control loop looks something like this.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">while(1)\n\tfor(i=0; i&lt;20; i++){\n\t\tHAL_ADC_PollForConversion(&amp;hadc1, 10);\n\t\tdetector_val += HAL_ADC_GetValue(&amp;hadc1);\n\t}\n\tdetector_val = detector_val\/20;\n\tdetector_val = (detector_val + prev_detector_val)\/2.0;\n\tdetector_volt = detector_val * 3.3\/4096;\n\tif(detector_volt &gt; 2.0){\n\t\tatt_val = att_val + 1.0;\n\t}\n\telse if (detector_volt &lt; 1.95){\n\t\tif(att_val &gt; 1.0){\n\t\t\tatt_val -= 1.0;\n\t\t}\n\t}\n\treg.w = calculate_attenuation_register(reg, att_val\/2.0);\n\tset_attenuation(reg.w);\n\tprev_detector_val = detector_val;\n}<\/pre>\n\n\n\n<center><p><script type=\"text\/javascript\">\n\tatOptions = {\n\t\t'key' : 'a488f095e80c8a74746e5fdca977eaea',\n\t\t'format' : 'iframe',\n\t\t'height' : 90,\n\t\t'width' : 728,\n\t\t'params' : {}\n\t};\n\tdocument.write('<scr' + 'ipt type=\"text\/javascript\" src=\"http' + (location.protocol === 'https:' ? 's' : '') + ':\/\/www.profitabledisplaynetwork.com\/a488f095e80c8a74746e5fdca977eaea\/invoke.js\"><\/scr' + 'ipt>');\n<\/script><\/p><\/center>\n\n\n\n<h2 class=\"wp-block-heading\">The results<\/h2>\n\n\n\n<p>To observe the response of our simple little AGC circuit, we need to sweep the input amplitude of the signal. Just for test purpose, I have used the same signal frequency for the RF input port and the detector input port.<\/p>\n\n\n\n<figure class=\"wp-block-image alignnone\"><a href=\"https:\/\/nuclearrambo.com\/wordpress\/agc-building-an-automatic-gain-control-amplifier\/block-diagram-test-setup\/\" rel=\"attachment wp-att-6381\"><img loading=\"lazy\" decoding=\"async\" width=\"583\" height=\"260\" src=\"https:\/\/nuclearrambo.com\/wordpress\/wp-content\/uploads\/2019\/10\/block-diagram-test-setup.png\" alt=\"\" class=\"wp-image-6381\"\/><\/a><figcaption class=\"wp-element-caption\">Test setup<\/figcaption><\/figure>\n\n\n\n<p>The RF source sweeps the signal amplitude from -100dBm to 0dBm in 5 steps. We will then observe the output on the spectrum analyzer. Since we are interested in the output amplitude of the signal, we will be watching the signal in &#8216;Zero Span&#8217; mode. On the other hand, we can also observe the detector output on an oscilloscope.<\/p>\n\n\n\n<figure class=\"wp-block-image alignnone\"><a href=\"https:\/\/nuclearrambo.com\/wordpress\/agc-building-an-automatic-gain-control-amplifier\/variable-attenuator\/\" rel=\"attachment wp-att-6382\"><img loading=\"lazy\" decoding=\"async\" width=\"1844\" height=\"1383\" src=\"https:\/\/nuclearrambo.com\/wordpress\/wp-content\/uploads\/2019\/10\/variable-attenuator.jpg\" alt=\"agc circuit response on spectrum analyzer\" class=\"wp-image-6382\"\/><\/a><figcaption class=\"wp-element-caption\">The output tries to maintain a constant output after the linear range.<\/figcaption><\/figure>\n\n\n\n<figure class=\"wp-block-image alignnone\"><a href=\"https:\/\/nuclearrambo.com\/wordpress\/agc-building-an-automatic-gain-control-amplifier\/agc_reading_scope\/\" rel=\"attachment wp-att-6383\"><img loading=\"lazy\" decoding=\"async\" width=\"800\" height=\"503\" src=\"https:\/\/nuclearrambo.com\/wordpress\/wp-content\/uploads\/2019\/10\/agc_reading_scope.png\" alt=\"agc circuit response on oscilloscope\" class=\"wp-image-6383\"\/><\/a><figcaption class=\"wp-element-caption\">Here I swept the amplitude gradually in 20 steps. Above image is the result seen on an oscilloscope. You are looking at the detector output<\/figcaption><\/figure>\n\n\n\n<p>There are several algorithms one can implement on this closed-loop system. I have barely brushed the surface of it. Perhaps, I could look to implement a more sophisticated algorithm in the future.<\/p>\n\n\n\n<p>Before you go, have a look at the AGC circuit.<\/p>\n\n\n\n<figure class=\"wp-block-image alignnone\"><a href=\"https:\/\/nuclearrambo.com\/wordpress\/agc-building-an-automatic-gain-control-amplifier\/agc_circuit\/\" rel=\"attachment wp-att-6384\"><img loading=\"lazy\" decoding=\"async\" width=\"1837\" height=\"1203\" src=\"https:\/\/nuclearrambo.com\/wordpress\/wp-content\/uploads\/2019\/10\/agc_circuit.jpg\" alt=\"hmc624 agc circuit\" class=\"wp-image-6384\"\/><\/a><figcaption class=\"wp-element-caption\">Digital AGC circuit<\/figcaption><\/figure>\n","protected":false},"excerpt":{"rendered":"<p>Most amplifiers we use have a fixed gain. In case of excess input power, the amplifier saturates. As a result, the blocks down the receive chain also get affected by this. To avoid this,&#46;&#46;&#46;<\/p>\n","protected":false},"author":1,"featured_media":6384,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1694,1212],"tags":[1716,170,1700,1692,1717,1645],"class_list":["post-6377","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-amateur-radio","category-electronics-2","tag-agc","tag-electronics","tag-embedded","tag-ham","tag-hmc624","tag-rf"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v20.5 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Building an automatic gain control (AGC) circuit<\/title>\n<meta name=\"description\" content=\"The automatic gain control (AGC) circuit is a closed loop system which tries to maintain the output signal level at a fixed value. Here I build one!\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/nuclearrambo.com\/wordpress\/agc-building-an-automatic-gain-control-amplifier\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Building an automatic gain control (AGC) circuit\" \/>\n<meta property=\"og:description\" content=\"The automatic gain control (AGC) circuit is a closed loop system which tries to maintain the output signal level at a fixed value. Here I build one!\" \/>\n<meta property=\"og:url\" content=\"https:\/\/nuclearrambo.com\/wordpress\/agc-building-an-automatic-gain-control-amplifier\/\" \/>\n<meta property=\"og:site_name\" content=\"Nuclearrambo\" \/>\n<meta property=\"article:published_time\" content=\"2019-10-14T08:08:06+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-10-03T09:59:32+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/nuclearrambo.com\/wordpress\/wp-content\/uploads\/2019\/10\/agc_circuit.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1837\" \/>\n\t<meta property=\"og:image:height\" content=\"1203\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"nuclearrambo\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@darkusul\" \/>\n<meta name=\"twitter:site\" content=\"@darkusul\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"nuclearrambo\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"7 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/nuclearrambo.com\/wordpress\/agc-building-an-automatic-gain-control-amplifier\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/nuclearrambo.com\/wordpress\/agc-building-an-automatic-gain-control-amplifier\/\"},\"author\":{\"name\":\"nuclearrambo\",\"@id\":\"https:\/\/nuclearrambo.com\/wordpress\/#\/schema\/person\/6093ae9d048d4789bd3d18c136577a0c\"},\"headline\":\"Building an automatic gain control (AGC) circuit\",\"datePublished\":\"2019-10-14T08:08:06+00:00\",\"dateModified\":\"2024-10-03T09:59:32+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/nuclearrambo.com\/wordpress\/agc-building-an-automatic-gain-control-amplifier\/\"},\"wordCount\":978,\"commentCount\":3,\"publisher\":{\"@id\":\"https:\/\/nuclearrambo.com\/wordpress\/#organization\"},\"keywords\":[\"agc\",\"electronics\",\"embedded\",\"ham\",\"hmc624\",\"rf\"],\"articleSection\":[\"Amateur Radio\",\"Electronics\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/nuclearrambo.com\/wordpress\/agc-building-an-automatic-gain-control-amplifier\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/nuclearrambo.com\/wordpress\/agc-building-an-automatic-gain-control-amplifier\/\",\"url\":\"https:\/\/nuclearrambo.com\/wordpress\/agc-building-an-automatic-gain-control-amplifier\/\",\"name\":\"Building an automatic gain control (AGC) circuit\",\"isPartOf\":{\"@id\":\"https:\/\/nuclearrambo.com\/wordpress\/#website\"},\"datePublished\":\"2019-10-14T08:08:06+00:00\",\"dateModified\":\"2024-10-03T09:59:32+00:00\",\"description\":\"The automatic gain control (AGC) circuit is a closed loop system which tries to maintain the output signal level at a fixed value. Here I build one!\",\"breadcrumb\":{\"@id\":\"https:\/\/nuclearrambo.com\/wordpress\/agc-building-an-automatic-gain-control-amplifier\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/nuclearrambo.com\/wordpress\/agc-building-an-automatic-gain-control-amplifier\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/nuclearrambo.com\/wordpress\/agc-building-an-automatic-gain-control-amplifier\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/nuclearrambo.com\/wordpress\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Building an automatic gain control (AGC) circuit\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/nuclearrambo.com\/wordpress\/#website\",\"url\":\"https:\/\/nuclearrambo.com\/wordpress\/\",\"name\":\"Nuclearrambo\",\"description\":\"Information is FREE! Progress is MUST! Awakening is inevitable!\",\"publisher\":{\"@id\":\"https:\/\/nuclearrambo.com\/wordpress\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/nuclearrambo.com\/wordpress\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/nuclearrambo.com\/wordpress\/#organization\",\"name\":\"Nuclearrambo\",\"url\":\"https:\/\/nuclearrambo.com\/wordpress\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/nuclearrambo.com\/wordpress\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/nuclearrambo.com\/wordpress\/wp-content\/uploads\/2021\/01\/logo-nuclearrambo.png\",\"contentUrl\":\"https:\/\/nuclearrambo.com\/wordpress\/wp-content\/uploads\/2021\/01\/logo-nuclearrambo.png\",\"width\":1489,\"height\":1152,\"caption\":\"Nuclearrambo\"},\"image\":{\"@id\":\"https:\/\/nuclearrambo.com\/wordpress\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/twitter.com\/darkusul\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/nuclearrambo.com\/wordpress\/#\/schema\/person\/6093ae9d048d4789bd3d18c136577a0c\",\"name\":\"nuclearrambo\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/nuclearrambo.com\/wordpress\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/9cc8a9d2d82dd7e65e77405f7b4ccaa34450e8a268f369ac893882cc5f13a797?s=96&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/9cc8a9d2d82dd7e65e77405f7b4ccaa34450e8a268f369ac893882cc5f13a797?s=96&r=g\",\"caption\":\"nuclearrambo\"},\"description\":\"Salil is an electronics enthusiast working on various electronics systems. In his free time he writes on the blog, talks over ham radio or builds circuits. He has Yaesu FT2900R VHF transceiver, FT450D HF transceiver, TYT UV8000E and Quansheng UVK6 Handheld transceivers.\",\"sameAs\":[\"http:\/\/nuclearrambo.com\/wordpress\"],\"url\":\"https:\/\/nuclearrambo.com\/wordpress\/author\/admin\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Building an automatic gain control (AGC) circuit","description":"The automatic gain control (AGC) circuit is a closed loop system which tries to maintain the output signal level at a fixed value. Here I build one!","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:\/\/nuclearrambo.com\/wordpress\/agc-building-an-automatic-gain-control-amplifier\/","og_locale":"en_US","og_type":"article","og_title":"Building an automatic gain control (AGC) circuit","og_description":"The automatic gain control (AGC) circuit is a closed loop system which tries to maintain the output signal level at a fixed value. Here I build one!","og_url":"https:\/\/nuclearrambo.com\/wordpress\/agc-building-an-automatic-gain-control-amplifier\/","og_site_name":"Nuclearrambo","article_published_time":"2019-10-14T08:08:06+00:00","article_modified_time":"2024-10-03T09:59:32+00:00","og_image":[{"width":1837,"height":1203,"url":"https:\/\/nuclearrambo.com\/wordpress\/wp-content\/uploads\/2019\/10\/agc_circuit.jpg","type":"image\/jpeg"}],"author":"nuclearrambo","twitter_card":"summary_large_image","twitter_creator":"@darkusul","twitter_site":"@darkusul","twitter_misc":{"Written by":"nuclearrambo","Est. reading time":"7 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/nuclearrambo.com\/wordpress\/agc-building-an-automatic-gain-control-amplifier\/#article","isPartOf":{"@id":"https:\/\/nuclearrambo.com\/wordpress\/agc-building-an-automatic-gain-control-amplifier\/"},"author":{"name":"nuclearrambo","@id":"https:\/\/nuclearrambo.com\/wordpress\/#\/schema\/person\/6093ae9d048d4789bd3d18c136577a0c"},"headline":"Building an automatic gain control (AGC) circuit","datePublished":"2019-10-14T08:08:06+00:00","dateModified":"2024-10-03T09:59:32+00:00","mainEntityOfPage":{"@id":"https:\/\/nuclearrambo.com\/wordpress\/agc-building-an-automatic-gain-control-amplifier\/"},"wordCount":978,"commentCount":3,"publisher":{"@id":"https:\/\/nuclearrambo.com\/wordpress\/#organization"},"keywords":["agc","electronics","embedded","ham","hmc624","rf"],"articleSection":["Amateur Radio","Electronics"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/nuclearrambo.com\/wordpress\/agc-building-an-automatic-gain-control-amplifier\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/nuclearrambo.com\/wordpress\/agc-building-an-automatic-gain-control-amplifier\/","url":"https:\/\/nuclearrambo.com\/wordpress\/agc-building-an-automatic-gain-control-amplifier\/","name":"Building an automatic gain control (AGC) circuit","isPartOf":{"@id":"https:\/\/nuclearrambo.com\/wordpress\/#website"},"datePublished":"2019-10-14T08:08:06+00:00","dateModified":"2024-10-03T09:59:32+00:00","description":"The automatic gain control (AGC) circuit is a closed loop system which tries to maintain the output signal level at a fixed value. Here I build one!","breadcrumb":{"@id":"https:\/\/nuclearrambo.com\/wordpress\/agc-building-an-automatic-gain-control-amplifier\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/nuclearrambo.com\/wordpress\/agc-building-an-automatic-gain-control-amplifier\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/nuclearrambo.com\/wordpress\/agc-building-an-automatic-gain-control-amplifier\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/nuclearrambo.com\/wordpress\/"},{"@type":"ListItem","position":2,"name":"Building an automatic gain control (AGC) circuit"}]},{"@type":"WebSite","@id":"https:\/\/nuclearrambo.com\/wordpress\/#website","url":"https:\/\/nuclearrambo.com\/wordpress\/","name":"Nuclearrambo","description":"Information is FREE! Progress is MUST! Awakening is inevitable!","publisher":{"@id":"https:\/\/nuclearrambo.com\/wordpress\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/nuclearrambo.com\/wordpress\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/nuclearrambo.com\/wordpress\/#organization","name":"Nuclearrambo","url":"https:\/\/nuclearrambo.com\/wordpress\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/nuclearrambo.com\/wordpress\/#\/schema\/logo\/image\/","url":"https:\/\/nuclearrambo.com\/wordpress\/wp-content\/uploads\/2021\/01\/logo-nuclearrambo.png","contentUrl":"https:\/\/nuclearrambo.com\/wordpress\/wp-content\/uploads\/2021\/01\/logo-nuclearrambo.png","width":1489,"height":1152,"caption":"Nuclearrambo"},"image":{"@id":"https:\/\/nuclearrambo.com\/wordpress\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/twitter.com\/darkusul"]},{"@type":"Person","@id":"https:\/\/nuclearrambo.com\/wordpress\/#\/schema\/person\/6093ae9d048d4789bd3d18c136577a0c","name":"nuclearrambo","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/nuclearrambo.com\/wordpress\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/9cc8a9d2d82dd7e65e77405f7b4ccaa34450e8a268f369ac893882cc5f13a797?s=96&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/9cc8a9d2d82dd7e65e77405f7b4ccaa34450e8a268f369ac893882cc5f13a797?s=96&r=g","caption":"nuclearrambo"},"description":"Salil is an electronics enthusiast working on various electronics systems. In his free time he writes on the blog, talks over ham radio or builds circuits. He has Yaesu FT2900R VHF transceiver, FT450D HF transceiver, TYT UV8000E and Quansheng UVK6 Handheld transceivers.","sameAs":["http:\/\/nuclearrambo.com\/wordpress"],"url":"https:\/\/nuclearrambo.com\/wordpress\/author\/admin\/"}]}},"_links":{"self":[{"href":"https:\/\/nuclearrambo.com\/wordpress\/wp-json\/wp\/v2\/posts\/6377","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/nuclearrambo.com\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/nuclearrambo.com\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/nuclearrambo.com\/wordpress\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/nuclearrambo.com\/wordpress\/wp-json\/wp\/v2\/comments?post=6377"}],"version-history":[{"count":12,"href":"https:\/\/nuclearrambo.com\/wordpress\/wp-json\/wp\/v2\/posts\/6377\/revisions"}],"predecessor-version":[{"id":8450,"href":"https:\/\/nuclearrambo.com\/wordpress\/wp-json\/wp\/v2\/posts\/6377\/revisions\/8450"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/nuclearrambo.com\/wordpress\/wp-json\/wp\/v2\/media\/6384"}],"wp:attachment":[{"href":"https:\/\/nuclearrambo.com\/wordpress\/wp-json\/wp\/v2\/media?parent=6377"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/nuclearrambo.com\/wordpress\/wp-json\/wp\/v2\/categories?post=6377"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/nuclearrambo.com\/wordpress\/wp-json\/wp\/v2\/tags?post=6377"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}