{"id":8232,"date":"2023-08-05T21:53:58","date_gmt":"2023-08-05T16:23:58","guid":{"rendered":"https:\/\/nuclearrambo.com\/wordpress\/?p=8232"},"modified":"2024-10-03T15:01:54","modified_gmt":"2024-10-03T09:31:54","slug":"transmit-channel-phase-shifting-on-plutosdr","status":"publish","type":"post","link":"https:\/\/nuclearrambo.com\/wordpress\/transmit-channel-phase-shifting-on-plutosdr\/","title":{"rendered":"Transmit channel phase shifting on PlutoSDR"},"content":{"rendered":"\n<p class=\"has-drop-cap\">The <a href=\"https:\/\/amzn.to\/43W48oK\" target=\"_blank\" rel=\"noreferrer noopener nofollow\">PlutoSDR Rev C<\/a> brings out both the transmit and receive channels. Thus, making it an even more capable device, especially for advanced RF stuff. A phased array is an advanced RF application that immediately comes to mind. Phase shifting on the Tx and Rx channels is an essential operation for the phased array systems. Today, I am not really going to dive into the phased array stuff but rather do a very primitive phase-shifting operation between the two transmit channels of the PlutoSDR. <\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Understanding the transmit chain<\/h2>\n\n\n\n<p>Observe the transmitter chain of the<a href=\"https:\/\/nuclearrambo.com\/wordpress\/receiving-with-2-channels-on-plutosdr\/\"> AD9361 <\/a>shown below. The baseband IQ gets fed into the chip over the CMOS\/LVDS interface over either SDR or DDR interface. This data goes right into the FIFO and fed forward into the rest of the chain. The baseband IQ data passes through the respective digital signal processing blocks consisting of a chain of filters before ending up at the input of DAC. The DAC operating at a higher clock rate produces an analog baseband signal. Further, this signal is filtered by tunable bandwidth filters lined up ahead of the DAC. There are two separate chains for processing I and Q independently. <\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-style-default\"><a href=\"https:\/\/nuclearrambo.com\/wordpress\/wp-content\/uploads\/2023\/07\/block_diagram.jpg\"><img loading=\"lazy\" decoding=\"async\" width=\"1410\" height=\"1017\" src=\"https:\/\/nuclearrambo.com\/wordpress\/wp-content\/uploads\/2023\/07\/block_diagram.jpg\" alt=\"\" class=\"wp-image-8233\" srcset=\"https:\/\/nuclearrambo.com\/wordpress\/wp-content\/uploads\/2023\/07\/block_diagram.jpg 1410w, https:\/\/nuclearrambo.com\/wordpress\/wp-content\/uploads\/2023\/07\/block_diagram-300x216.jpg 300w, https:\/\/nuclearrambo.com\/wordpress\/wp-content\/uploads\/2023\/07\/block_diagram-1024x739.jpg 1024w, https:\/\/nuclearrambo.com\/wordpress\/wp-content\/uploads\/2023\/07\/block_diagram-768x554.jpg 768w\" sizes=\"auto, (max-width: 1410px) 100vw, 1410px\" \/><\/a><\/figure>\n\n\n\n<p>A PLL serves as a local oscillator (LO) for the IQ mixer. The Phase splitter ensures the LO going to each mixer is 90\u00b0 shifted with respect to each other. Further in the chain, a variable attenuator allows output power level control. <\/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<h2 class=\"wp-block-heading\">A little math and a little understanding of mixers&#8230;<\/h2>\n\n\n\n<p>This is an SDR that we are working with and as the name suggests, the software we write can control what goes into the IQ mixer. The output of the IQ mixer depends on two inputs, the LO and the baseband input. Usually, in the case of transmitters, the LO is a higher frequency whereas, the baseband signal has a lower frequency component associated with it. Both are mixed and that results in the baseband signal appearing around the carrier frequency.  The standard mixer equation looks something like this. <\/p>\n\n\n\n\n\n\n\n<p class=\"has-text-align-center\">\\(cos(\\omega_1)cos(\\omega_2) = \\dfrac{cos(\\omega_{1} + \\omega_{2})}{2} + \\dfrac{cos(\\omega_{1} &#8211; \\omega_{2})}{2}\\)<\/p>\n\n\n\n<p>Now, assume the two signals have the same frequency.<\/p>\n\n\n\n<p class=\"has-text-align-center\">\\(cos(\\omega_1)cos(\\omega_1) = \\dfrac{1}{2} \\times (1+cos(2\\omega))\\)<\/p>\n\n\n\n<p>The \\(\\dfrac{1}{2}\\) portion is indicative of a DC shift while the \\(cos(2\\omega)\\) indicates the doubling of output frequency. It&#8217;s this DC shift we are interested in. <\/p>\n\n\n\n<p>If, instead of mixing the LO with a different signal of different frequencies, we mix it with a DC offset. That should result in phase shift at the output of the mixer. <\/p>\n\n\n\n<p>The best example is the BPSK generator circuit which feeds binary symbols (1 or -1) at the baseband input of the mixer. Correspondingly, a carrier signal of certain frequency works as LO input to the mixer.<\/p>\n\n\n\n<p>\\(cos(w_{c}t)\\) the carrier frequency fed to the mixer gets mixed with the baseband binary data which is either +V or -V. <\/p>\n\n\n\n<p>When multiplied with +V (assuming it as logic 1), we get a sinusoidal waveform. On the contrary, when its multiplied with -V (assuming it as logic 0), the result is an inverted sinusoidal waveform. <\/p>\n\n\n<div class=\"wp-block-image is-style-default\">\n<figure class=\"aligncenter size-full is-resized\"><a href=\"https:\/\/nuclearrambo.com\/wordpress\/wp-content\/uploads\/2023\/07\/cosine.png\"><img loading=\"lazy\" decoding=\"async\" width=\"229\" height=\"140\" src=\"https:\/\/nuclearrambo.com\/wordpress\/wp-content\/uploads\/2023\/07\/cosine.png\" alt=\"\" class=\"wp-image-8243\" style=\"width:229px;height:140px\"\/><\/a><figcaption class=\"wp-element-caption\">Sinusoidal wave<\/figcaption><\/figure><\/div>\n\n<div class=\"wp-block-image is-style-default\">\n<figure class=\"aligncenter size-full\"><a href=\"https:\/\/nuclearrambo.com\/wordpress\/wp-content\/uploads\/2023\/07\/inverted_cosine.png\"><img loading=\"lazy\" decoding=\"async\" width=\"234\" height=\"148\" src=\"https:\/\/nuclearrambo.com\/wordpress\/wp-content\/uploads\/2023\/07\/inverted_cosine.png\" alt=\"\" class=\"wp-image-8244\"\/><\/a><figcaption class=\"wp-element-caption\">Inverted Sinusoidal wave<\/figcaption><\/figure><\/div>\n\n\n<p>This operation is known as Binary phase shift keying and it&#8217;s a popular digital modulation form for transmitting digital data. The <a href=\"https:\/\/www.gaussianwaves.com\/2010\/04\/bpsk-modulation-and-demodulation-2\/\" target=\"_blank\" rel=\"noreferrer noopener\">BPSK<\/a>, as we saw, has two phases that represent either logic 1 or logic 0. <\/p>\n\n\n\n<p>If we use another carrier with \\(90^\\circ\\) phase shift and apply BPSK on that. Finally, by adding the first and the second carrier, we obtain what&#8217;s known as Quadrature phase shift keying <a href=\"https:\/\/www.gaussianwaves.com\/2010\/10\/qpsk-modulation-and-demodulation-2\/\" target=\"_blank\" rel=\"noreferrer noopener\">(QPSK)<\/a>.Now, the resultant waveform can comprise 4 phase shifts; \\(45^\\circ ,  90^\\circ, \\ 180^\\circ \\ and \\ 270^\\circ\\)<\/p>\n\n\n\n<p>Similarly, with the quadrature carrier, we should be able to generate any phase angle we desire and not just the four mentioned above.<\/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<h2 class=\"wp-block-heading\">Final math equation&#8230;<\/h2>\n\n\n\n<p>I followed the following equation to generate the base band I (in phase) and Q (quadrature) waveforms. <\/p>\n\n\n\n<p class=\"has-text-align-center\">\\(I_{bb} = \\cos{2\\pi ft + \\theta } \\)<\/p>\n\n\n\n<p class=\"has-text-align-center\">\\(Q_{bb} = \\sin{2\\pi ft + \\theta } \\)<\/p>\n\n\n\n<p>Here,<\/p>\n\n\n\n<p class=\"has-text-align-center\">\\( f = 0 \\ and \\ \\text{theta} = phase \\ in \\ radians\\) <\/p>\n\n\n\n<p>Finally, inside the AD9361, the I and Q baseband mixes with the in-phase and quadrature carriers respectively. <\/p>\n\n\n\n<p class=\"has-text-align-center\">\\(I_{rf} = \\sin{\\omega_{c}t} \\times I_{bb} \\)<\/p>\n\n\n\n<p class=\"has-text-align-center\">\\(Q_{rf} = \\cos{\\omega_{c}t} \\times Q_{bb} \\)<\/p>\n\n\n\n<p>Finally, <\/p>\n\n\n\n<p class=\"has-text-align-center\">\\(OUT_{rf} = I_{rf} + Q_{rf}\\) <\/p>\n\n\n\n<p class=\"has-text-align-left\">produces the final transmit waveform at the output port 1. <\/p>\n\n\n\n<p>I also generated a second waveform at port 0 of the plutoSDR that had \\(\\theta = 0\\). This signal acts as a reference channel.<\/p>\n\n\n\n<p>To conclude, I observed both the signals, reference at port 0 and phase shifted at port 1 on an oscilloscope.<\/p>\n\n\n\n<p> I own the GwInstek GDS-1102B 2 channel 100MHz oscilloscope I purchased several years ago. Therefore, I can only view the waveforms up to 100MHz. Be assured this technique definitely works at higher frequencies. Make sure, the cables you use are equal length since we do not want to add any extra phase shift with unequal cables. Speaking of cables, do check out one of my previous articles on <a href=\"https:\/\/nuclearrambo.com\/wordpress\/cable-impedance-profile-with-nanovna-and-tdr-script\/\" target=\"_blank\" rel=\"noreferrer noopener\">measuring cable lengths with the NanoVNA<\/a>. In another article, I explain the <a href=\"https:\/\/nuclearrambo.com\/wordpress\/make-your-own-phased-matched-cables-with-nanovna\/\" target=\"_blank\" rel=\"noreferrer noopener\">process of making phase-matched cables<\/a> with the same NanoVNA. <\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-style-default\"><a href=\"https:\/\/nuclearrambo.com\/wordpress\/wp-content\/uploads\/2023\/08\/phase-shfit2.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"675\" src=\"https:\/\/nuclearrambo.com\/wordpress\/wp-content\/uploads\/2023\/08\/phase-shfit2-1024x675.png\" alt=\"\" class=\"wp-image-8261\" srcset=\"https:\/\/nuclearrambo.com\/wordpress\/wp-content\/uploads\/2023\/08\/phase-shfit2-1024x675.png 1024w, https:\/\/nuclearrambo.com\/wordpress\/wp-content\/uploads\/2023\/08\/phase-shfit2-300x198.png 300w, https:\/\/nuclearrambo.com\/wordpress\/wp-content\/uploads\/2023\/08\/phase-shfit2-768x506.png 768w, https:\/\/nuclearrambo.com\/wordpress\/wp-content\/uploads\/2023\/08\/phase-shfit2.png 1026w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><figcaption class=\"wp-element-caption\">Phase shifting on two channel PlutoSDR viewed on an oscilloscope<\/figcaption><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full is-style-default\"><a href=\"https:\/\/nuclearrambo.com\/wordpress\/wp-content\/uploads\/2023\/08\/phase-shfit1.png\"><img loading=\"lazy\" decoding=\"async\" width=\"976\" height=\"665\" src=\"https:\/\/nuclearrambo.com\/wordpress\/wp-content\/uploads\/2023\/08\/phase-shfit1.png\" alt=\"\" class=\"wp-image-8260\" srcset=\"https:\/\/nuclearrambo.com\/wordpress\/wp-content\/uploads\/2023\/08\/phase-shfit1.png 976w, https:\/\/nuclearrambo.com\/wordpress\/wp-content\/uploads\/2023\/08\/phase-shfit1-300x204.png 300w, https:\/\/nuclearrambo.com\/wordpress\/wp-content\/uploads\/2023\/08\/phase-shfit1-768x523.png 768w\" sizes=\"auto, (max-width: 976px) 100vw, 976px\" \/><\/a><figcaption class=\"wp-element-caption\">Phase shifting on two channel PlutoSDR viewed on an oscilloscope<\/figcaption><\/figure>\n\n\n\n<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<div class=\"video-container\"><iframe loading=\"lazy\" title=\"PlutoSDR phase shift on TX channels\" width=\"500\" height=\"281\" src=\"https:\/\/www.youtube.com\/embed\/G2xHslU7R2s?feature=oembed&#038;wmode=opaque\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe><\/div>\n<\/div><\/figure>\n\n\n\n<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<div class=\"video-container\"><iframe loading=\"lazy\" title=\"XY Plot while doing phase shift operation on PlutoSDR Tx channels\" width=\"500\" height=\"281\" src=\"https:\/\/www.youtube.com\/embed\/4COLefdKPM8?feature=oembed&#038;wmode=opaque\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe><\/div>\n<\/div><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">The Python script<\/h2>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">import adi\nimport time\nimport matplotlib.pyplot as plt\nimport numpy as np\n\n# Create radio\nsdr = adi.ad9361(uri='ip:192.168.2.1')\nsamp_rate = 30.72e6    # must be &lt;=30.72 MHz if both channels are enabled\nnum_samps = 2**18      # number of samples per buffer.  Can be different for Rx and Tx\nrx_lo = 100e6\nrx_mode = \"slow_attack\"  # can be \"manual\" or \"slow_attack\"\nrx_gain0 = 0\nrx_gain1 = 0\ntx_lo = rx_lo\ntx_gain0 = -10\ntx_gain1 = -11\n\n'''Configure Rx properties'''\nsdr.rx_enabled_channels = [0, 1]\nsdr.sample_rate = int(samp_rate)\nsdr.rx_lo = int(rx_lo)\nsdr.gain_control_mode = rx_mode\nsdr.rx_hardwaregain_chan0 = int(rx_gain0)\nsdr.rx_hardwaregain_chan1 = int(rx_gain1)\nsdr.rx_buffer_size = int(num_samps)\n\n'''Configure Tx properties'''\nsdr.tx_rf_bandwidth = int(samp_rate\/2)\nsdr.tx_lo = int(tx_lo)\nsdr.tx_cyclic_buffer = True\nsdr.tx_hardwaregain_chan0 = int(tx_gain0)\nsdr.tx_hardwaregain_chan1 = int(tx_gain1)\nsdr.tx_buffer_size = int(num_samps)\n\n\n# Example read properties\nprint(\"RX LO %s\" % (sdr.rx_lo))\n\n# Program the Tx with some data\nfs = int(sdr.sample_rate)\nfc0 = int(0)\nfc1 = int(0)\n\nphase = 90\n\nwhile True:\n    for phase in np.linspace(0, 360, 36):\n        N = 2**16\n        ts = 1 \/ float(fs)\n        t = np.arange(0, N * ts, ts)\n        i0 = np.cos(2 * np.pi * t * fc0) * 2 ** 14\n        q0 = np.sin(2 * np.pi * t * fc0) * 2 ** 14\n        i1 = np.cos(2 * np.pi * t * fc1 + phase*(np.pi\/180)) * 2 ** 14\n        q1 = np.sin(2 * np.pi * t * fc1 + phase*(np.pi\/180)) * 2 ** 14\n        iq0 = i0 + 1j * q0\n        iq1 = i1 + 1j * q1\n        sdr.tx_destroy_buffer()\n        sdr.tx([iq0, iq1])   # Send Tx data.\n        print(np.mean(iq1))\n        time.sleep(1)\n\n# Collect data\nfor r in range(20):    # grab several buffers to give the AGC time to react (if AGC is set to \"slow_attack\" instead of \"manual\")\n    data = sdr.rx()\n\nRx_0=data[0]\nRx_1=data[1]\nRx_total = Rx_0 + Rx_1\nNumSamples = len(Rx_total)\nwin = np.hamming(NumSamples)\ny = Rx_total * win\nsp = np.absolute(np.fft.fft(y))\nsp = sp[1:-1]\nsp = np.fft.fftshift(sp)\ns_mag = np.abs(sp) \/ (np.sum(win)\/2)    # Scale FFT by window and \/2 since we are using half the FFT spectrum\ns_dbfs = 20*np.log10(s_mag\/(2**12))     # Pluto is a 12 bit ADC, so use that to convert to dBFS\nxf = np.fft.fftfreq(NumSamples, ts)\nxf = np.fft.fftshift(xf[1:-1])\/1e6\nplt.plot(xf, s_dbfs)\nplt.xlabel(\"frequency [MHz]\")\nplt.ylabel(\"dBfs\")\nplt.draw()\nplt.show()<\/pre>\n\n\n\n<p>Do read my previous article where I explain the <a href=\"https:\/\/nuclearrambo.com\/wordpress\/receiving-with-2-channels-on-plutosdr\/\">basics of using PlutoSDR using Python<\/a>.<\/p>\n\n\n\n<p>Hope you like the content. Don&#8217;t forget to leave a comment because that encourages me to write more frequently. <\/p>\n\n\n\n<h2 class=\"wp-block-heading has-text-align-center\"><a href=\"https:\/\/amzn.to\/43W48oK\" target=\"_blank\" rel=\"noreferrer noopener nofollow\">BUY PLUTOSDR<\/a><\/h2>\n","protected":false},"excerpt":{"rendered":"<p>The PlutoSDR Rev C brings out both the transmit and receive channels. Thus, making it an even more capable device, especially for advanced RF stuff. A phased array is an advanced RF application that&#46;&#46;&#46;<\/p>\n","protected":false},"author":1,"featured_media":8261,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1694,1212],"tags":[1647,170,1645,1696],"class_list":["post-8232","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-amateur-radio","category-electronics-2","tag-dsp","tag-electronics","tag-rf","tag-sdr"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v20.5 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Transmit channel phase shifting on PlutoSDR<\/title>\n<meta name=\"description\" content=\"Today I show a very primitive phase-shifting operation between the two transmit channels of the PlutoSDR.\" \/>\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\/transmit-channel-phase-shifting-on-plutosdr\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Transmit channel phase shifting on PlutoSDR\" \/>\n<meta property=\"og:description\" content=\"Today I show a very primitive phase-shifting operation between the two transmit channels of the PlutoSDR.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/nuclearrambo.com\/wordpress\/transmit-channel-phase-shifting-on-plutosdr\/\" \/>\n<meta property=\"og:site_name\" content=\"Nuclearrambo\" \/>\n<meta property=\"article:published_time\" content=\"2023-08-05T16:23:58+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-10-03T09:31:54+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/nuclearrambo.com\/wordpress\/wp-content\/uploads\/2023\/08\/phase-shfit2.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1026\" \/>\n\t<meta property=\"og:image:height\" content=\"676\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\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\/transmit-channel-phase-shifting-on-plutosdr\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/nuclearrambo.com\/wordpress\/transmit-channel-phase-shifting-on-plutosdr\/\"},\"author\":{\"name\":\"nuclearrambo\",\"@id\":\"https:\/\/nuclearrambo.com\/wordpress\/#\/schema\/person\/6093ae9d048d4789bd3d18c136577a0c\"},\"headline\":\"Transmit channel phase shifting on PlutoSDR\",\"datePublished\":\"2023-08-05T16:23:58+00:00\",\"dateModified\":\"2024-10-03T09:31:54+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/nuclearrambo.com\/wordpress\/transmit-channel-phase-shifting-on-plutosdr\/\"},\"wordCount\":948,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/nuclearrambo.com\/wordpress\/#organization\"},\"keywords\":[\"dsp\",\"electronics\",\"rf\",\"sdr\"],\"articleSection\":[\"Amateur Radio\",\"Electronics\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/nuclearrambo.com\/wordpress\/transmit-channel-phase-shifting-on-plutosdr\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/nuclearrambo.com\/wordpress\/transmit-channel-phase-shifting-on-plutosdr\/\",\"url\":\"https:\/\/nuclearrambo.com\/wordpress\/transmit-channel-phase-shifting-on-plutosdr\/\",\"name\":\"Transmit channel phase shifting on PlutoSDR\",\"isPartOf\":{\"@id\":\"https:\/\/nuclearrambo.com\/wordpress\/#website\"},\"datePublished\":\"2023-08-05T16:23:58+00:00\",\"dateModified\":\"2024-10-03T09:31:54+00:00\",\"description\":\"Today I show a very primitive phase-shifting operation between the two transmit channels of the PlutoSDR.\",\"breadcrumb\":{\"@id\":\"https:\/\/nuclearrambo.com\/wordpress\/transmit-channel-phase-shifting-on-plutosdr\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/nuclearrambo.com\/wordpress\/transmit-channel-phase-shifting-on-plutosdr\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/nuclearrambo.com\/wordpress\/transmit-channel-phase-shifting-on-plutosdr\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/nuclearrambo.com\/wordpress\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Transmit channel phase shifting on PlutoSDR\"}]},{\"@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":"Transmit channel phase shifting on PlutoSDR","description":"Today I show a very primitive phase-shifting operation between the two transmit channels of the PlutoSDR.","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\/transmit-channel-phase-shifting-on-plutosdr\/","og_locale":"en_US","og_type":"article","og_title":"Transmit channel phase shifting on PlutoSDR","og_description":"Today I show a very primitive phase-shifting operation between the two transmit channels of the PlutoSDR.","og_url":"https:\/\/nuclearrambo.com\/wordpress\/transmit-channel-phase-shifting-on-plutosdr\/","og_site_name":"Nuclearrambo","article_published_time":"2023-08-05T16:23:58+00:00","article_modified_time":"2024-10-03T09:31:54+00:00","og_image":[{"width":1026,"height":676,"url":"https:\/\/nuclearrambo.com\/wordpress\/wp-content\/uploads\/2023\/08\/phase-shfit2.png","type":"image\/png"}],"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\/transmit-channel-phase-shifting-on-plutosdr\/#article","isPartOf":{"@id":"https:\/\/nuclearrambo.com\/wordpress\/transmit-channel-phase-shifting-on-plutosdr\/"},"author":{"name":"nuclearrambo","@id":"https:\/\/nuclearrambo.com\/wordpress\/#\/schema\/person\/6093ae9d048d4789bd3d18c136577a0c"},"headline":"Transmit channel phase shifting on PlutoSDR","datePublished":"2023-08-05T16:23:58+00:00","dateModified":"2024-10-03T09:31:54+00:00","mainEntityOfPage":{"@id":"https:\/\/nuclearrambo.com\/wordpress\/transmit-channel-phase-shifting-on-plutosdr\/"},"wordCount":948,"commentCount":0,"publisher":{"@id":"https:\/\/nuclearrambo.com\/wordpress\/#organization"},"keywords":["dsp","electronics","rf","sdr"],"articleSection":["Amateur Radio","Electronics"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/nuclearrambo.com\/wordpress\/transmit-channel-phase-shifting-on-plutosdr\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/nuclearrambo.com\/wordpress\/transmit-channel-phase-shifting-on-plutosdr\/","url":"https:\/\/nuclearrambo.com\/wordpress\/transmit-channel-phase-shifting-on-plutosdr\/","name":"Transmit channel phase shifting on PlutoSDR","isPartOf":{"@id":"https:\/\/nuclearrambo.com\/wordpress\/#website"},"datePublished":"2023-08-05T16:23:58+00:00","dateModified":"2024-10-03T09:31:54+00:00","description":"Today I show a very primitive phase-shifting operation between the two transmit channels of the PlutoSDR.","breadcrumb":{"@id":"https:\/\/nuclearrambo.com\/wordpress\/transmit-channel-phase-shifting-on-plutosdr\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/nuclearrambo.com\/wordpress\/transmit-channel-phase-shifting-on-plutosdr\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/nuclearrambo.com\/wordpress\/transmit-channel-phase-shifting-on-plutosdr\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/nuclearrambo.com\/wordpress\/"},{"@type":"ListItem","position":2,"name":"Transmit channel phase shifting on PlutoSDR"}]},{"@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\/8232","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=8232"}],"version-history":[{"count":31,"href":"https:\/\/nuclearrambo.com\/wordpress\/wp-json\/wp\/v2\/posts\/8232\/revisions"}],"predecessor-version":[{"id":8398,"href":"https:\/\/nuclearrambo.com\/wordpress\/wp-json\/wp\/v2\/posts\/8232\/revisions\/8398"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/nuclearrambo.com\/wordpress\/wp-json\/wp\/v2\/media\/8261"}],"wp:attachment":[{"href":"https:\/\/nuclearrambo.com\/wordpress\/wp-json\/wp\/v2\/media?parent=8232"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/nuclearrambo.com\/wordpress\/wp-json\/wp\/v2\/categories?post=8232"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/nuclearrambo.com\/wordpress\/wp-json\/wp\/v2\/tags?post=8232"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}