{"id":916,"date":"2010-11-12T16:06:26","date_gmt":"2010-11-12T21:06:26","guid":{"rendered":"http:\/\/embedded-lab.com\/blog\/?p=916"},"modified":"2020-11-24T22:49:55","modified_gmt":"2020-11-25T03:49:55","slug":"digital-temperature-meter-using-an-lm35-temperature-sensor","status":"publish","type":"post","link":"https:\/\/embedded-lab.com\/blog\/digital-temperature-meter-using-an-lm35-temperature-sensor\/","title":{"rendered":"A Digital temperature meter using an LM35 temperature sensor"},"content":{"rendered":"<p><strong>Introduction<\/strong><\/p>\n<p>A digital thermometer is a good choice of project for beginners who just stepped in to the world of microcontrollers because it provides an opportunity to learn using sensors to measure the real world signals that are analog in nature. This article describes a similar project based on a PIC16F688 microcontroller and an LM35 temperature sensor. LM35 is an analog sensor that converts the surrounding temperature to a proportional analog voltage. The output from the sensor is connected to one of the ADC channel inputs of the PIC16F688 microcontroller to derive the equivalent temperature value in digital format. The computed temperature is displayed in a 16&#215;2 character LCD, in both \u00b0C and \u00b0F scales.<\/p>\n<p><strong>Theory<\/strong><\/p>\n<p>The LM35 series of temperature sensors are produced by National Semiconductor Corporation and are rated to operate over a -55\u00a0\u00b0C to 150\u00b0C temperature range. These sensors do not require any external calibration and the\u00a0 output voltage is proportional to the temperature. The scale factor for temperature to voltage conversion is 10 mV per\u00a0\u00b0C. The LM35 series sensors come in different packages. The one I used is in a hermatic TO-46 transistor package where the metal case is connected to the negative pin (Gnd).<\/p>\n<p style=\"text-align: center;\"><a href=\"http:\/\/embedded-lab.com\/blog\/digital-temperature-meter-using-an-lm35-temperature-sensor\/lm35\/\" rel=\"attachment wp-att-932\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-932 aligncenter\" title=\"LM35\" src=\"http:\/\/embedded-lab.com\/blog\/wp-content\/uploads\/2010\/11\/LM35.jpg\" alt=\"\" width=\"462\" height=\"250\" \/><\/a><\/p>\n<p><!--more--><br \/>\nThe measurement of negative temperatures (below 0\u00b0C) requires a negative voltage source. However, this project does not use any negative voltage source, and therefore will demonstrate the use of sensor for measuring temperatures above 0\u00b0C (up to 100\u00b0C).<\/p>\n<p>The output voltage from the sensor is converted to a 10-bit digital number using the internal ADC of the PIC16F688. Since the voltage to be measured by the ADC ranges from 0 to 1.0V (that corresponds to maximum temperature range, 100 \u00b0C), the ADC requires a lower reference voltage (instead of the supply voltage Vdd = 5V) for A\/D conversion in order to get better accuracy. The lower reference voltage can be provided using a Zener diode,\u00a0 a resistor network, or sometime just simple diodes. You can derive an approximate 1.2V reference voltage by connecting two diodes and a resistor in series across the supply voltage, as shown below. As a demonstration, I am going to use this circuit in this project. I measured the output voltage across the two diodes as 1.196 V. The resistor R I used is of 3.6K, but you can use 1K too. The important thing is to measure the voltage across the two diodes as accurate as possible.<\/p>\n<p style=\"text-align: center;\"><a href=\"http:\/\/embedded-lab.com\/blog\/digital-temperature-meter-using-an-lm35-temperature-sensor\/vrefdiode\/\" rel=\"attachment wp-att-937\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-937 aligncenter\" title=\"VrefDiode\" src=\"http:\/\/embedded-lab.com\/blog\/wp-content\/uploads\/2010\/11\/VrefDiode.png\" alt=\"\" width=\"478\" height=\"239\" \/><\/a><\/p>\n<p>We need do some math for A\/D conversion. Our Vref is 1.196 V, and the ADC is 10-bit. So, any input voltage from 0-1.196 will be mapped to a digital number between 0-1023. The resolution of ADC is 1.196\/1024 = 0.001168 V\/Count. Therefore, the digital output corresponding to any input voltage Vin = Vin\/0.001168. Now, lets see how to get the temperature back from this whole process of converting sensor&#8217;s output to 10-bit digital number.<\/p>\n<p>Assume, the surrounding temperature is 26.4 \u00b0C. The sensor output will be 264 mV (0.264 V). The output of ADC will be 0.264\/0.001168 = 226. If we reverse this process, we have 226 from ADC and we can go back and find the temperature by using the sensor scale factor (10 mV\/\u00b0C),<\/p>\n<p style=\"text-align: center;\"><em>temperature = 226 * 0.001168 (V\/Count) \/ 0.01 (V\/\u00b0C) = 26.4 \u00b0C<\/em><\/p>\n<p>If you want to avoid floating point math in your program, just use,<\/p>\n<p style=\"text-align: center;\"><em>temperature = 226 * 1168\u00a0 = 263968<\/em><\/p>\n<p>While displaying this, you need to put a decimal at the fourth place from the left. So the calculated temperature is 26.3968\u00b0C, which is pretty close to the actual one. The difference is caused by quantization and rounding errors. In this project, we will display temperature accurate to one decimal place, i.e., we will divide the above number by 1000 to get 263. So the temperature will be displayed as 26.3 \u00b0C.<\/p>\n<p>Once you have derived the temperature back in \u00b0C, you can convert it to \u00b0F using a simple equation,<\/p>\n<p style=\"text-align: center;\"><em>temperature in \u00b0F = 9 x temperature in \u00b0C \/5 + 32<\/em><\/p>\n<p>In this case, the number you got for \u00b0C is scaled by 10 (263 for 26.3), you should use<\/p>\n<p style=\"text-align: center;\"><em>temperature in \u00b0F = 9 x temperature in \u00b0C \/5 + 320<\/em><\/p>\n<p>Since, the number for \u00b0C may not be exactly divisible by 5 (such as 263 is not), you can further eliminate the floating point by scaling it one more time by 10. So the new equation will be,<\/p>\n<p style=\"text-align: center;\"><em>temperature in \u00b0F = 9 x temperature in \u00b0C x 10 \/5 + 3200<\/em><\/p>\n<p style=\"text-align: center;\">or<em>, temperature in \u00b0F = 18 x temperature in \u00b0C\u00a0 + 3200 = 18 x 263+3200 = 7934<\/em><\/p>\n<p>79.34 \u00b0F is equivalent to 26.3 \u00b0C. In this project, it will be displayed as 79.3 \u00b0F.<\/p>\n<p><strong>Circuit Diagram<\/strong><\/p>\n<p>An external reference voltage to the internal ADC of PIC16F688 can be provided through RA1 I\/O pin. The output from the LM35 sensor is read through RA2\/AN2 ADC channel. The temperature is displayed on a 16&#215;2 character LCD that is operating in the 4-bit mode. A 5K potentiometer is used to adjust the contrast level on the display. The detail circuit diagram is given below. Note that the PIC16F688 uses its internal clock at 4.0 MHz.<\/p>\n<p style=\"text-align: center;\"><a href=\"http:\/\/embedded-lab.com\/blog\/digital-temperature-meter-using-an-lm35-temperature-sensor\/circuit_lm35tempmeter\/\" rel=\"attachment wp-att-938\"><img loading=\"lazy\" decoding=\"async\" class=\"size-medium wp-image-938 aligncenter\" title=\"Circuit_LM35TempMeter\" src=\"http:\/\/embedded-lab.com\/blog\/wp-content\/uploads\/2010\/11\/Circuit_LM35TempMeter-550x422.jpg\" alt=\"\" width=\"550\" height=\"422\" srcset=\"https:\/\/embedded-lab.com\/blog\/wp-content\/uploads\/2010\/11\/Circuit_LM35TempMeter-550x422.jpg 550w, https:\/\/embedded-lab.com\/blog\/wp-content\/uploads\/2010\/11\/Circuit_LM35TempMeter.jpg 931w\" sizes=\"auto, (max-width: 550px) 100vw, 550px\" \/><\/a><\/p>\n<p style=\"text-align: center;\"><a href=\"http:\/\/embedded-lab.com\/blog\/digital-temperature-meter-using-an-lm35-temperature-sensor\/img_pic16f688_lm35tempsetup\/\" rel=\"attachment wp-att-920\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-920 aligncenter\" title=\"Img_PIC16F688_LM35TempSetup\" src=\"http:\/\/embedded-lab.com\/blog\/wp-content\/uploads\/2010\/11\/Img_PIC16F688_LM35TempSetup.jpg\" alt=\"\" width=\"560\" height=\"402\" srcset=\"https:\/\/embedded-lab.com\/blog\/wp-content\/uploads\/2010\/11\/Img_PIC16F688_LM35TempSetup.jpg 560w, https:\/\/embedded-lab.com\/blog\/wp-content\/uploads\/2010\/11\/Img_PIC16F688_LM35TempSetup-550x394.jpg 550w\" sizes=\"auto, (max-width: 560px) 100vw, 560px\" \/><\/a><\/p>\n<p style=\"text-align: center;\">Circuit setup on the breadboard<\/p>\n<p style=\"text-align: center;\"><a href=\"http:\/\/embedded-lab.com\/blog\/digital-temperature-meter-using-an-lm35-temperature-sensor\/lm35setup\/\" rel=\"attachment wp-att-921\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-921 aligncenter\" title=\"LM35SetUp\" src=\"http:\/\/embedded-lab.com\/blog\/wp-content\/uploads\/2010\/11\/LM35SetUp.jpg\" alt=\"\" width=\"560\" height=\"374\" srcset=\"https:\/\/embedded-lab.com\/blog\/wp-content\/uploads\/2010\/11\/LM35SetUp.jpg 560w, https:\/\/embedded-lab.com\/blog\/wp-content\/uploads\/2010\/11\/LM35SetUp-550x367.jpg 550w\" sizes=\"auto, (max-width: 560px) 100vw, 560px\" \/><\/a><\/p>\n<p style=\"text-align: center;\">A closer look at the LM35DH sensor and the reference voltage circuit.<\/p>\n<p><strong>Software<\/strong><\/p>\n<div id=\"_mcePaste\">The firmware for this project is developed with MikroC Pro for PIC compiler. The link to download the compiled HEX code is provided at the bottom of this section. The configuration bits for PIC16F688 are<\/div>\n<p><em>Oscillator -&gt; Internal RC No Clock<br \/>\nWatchdog Timer -&gt; Off<br \/>\nPower Up Timer -&gt; On<br \/>\nMaster Clear Enable -&gt; Enabled<br \/>\nCode Protect -&gt; Off<br \/>\nData EE Read Protect -&gt; Off<br \/>\nBrown Out Detect -&gt; BOD Enabled, SBOREN Disabled<br \/>\nInternal External Switch Over Mode -&gt; Enabled<br \/>\nMonitor Clock Fail-Safe -&gt; Enabled<\/em><\/p>\n<p>You can set these fuses in the Edit Project window (Project-&gt; Edit Project)<\/p>\n<pre><span style=\"color: #003366;\">\/* Digital Thermometer using PIC16F688 and LM35\u00a0<\/span><\/pre>\n<pre><span style=\"color: #003366;\">Internal Oscillator @ 4MHz, MCLR Enabled, PWRT Enabled, WDT OFF Copyright @ Rajendra Bhatt November 8, 2010 *\/<\/span>\n\n<span style=\"color: #003366;\">\/\/ LCD module connections<\/span>\n<span style=\"color: #003366;\">sbit LCD_RS at RC4_bit;<\/span>\n<span style=\"color: #003366;\">sbit LCD_EN at RC5_bit;<\/span>\n<span style=\"color: #003366;\">sbit LCD_D4 at RC0_bit;<\/span>\n<span style=\"color: #003366;\">sbit LCD_D5 at RC1_bit;<\/span>\n<span style=\"color: #003366;\">sbit LCD_D6 at RC2_bit;<\/span>\n<span style=\"color: #003366;\">sbit LCD_D7 at RC3_bit;<\/span>\n<span style=\"color: #003366;\">sbit LCD_RS_Direction at TRISC4_bit;<\/span>\n<span style=\"color: #003366;\">sbit LCD_EN_Direction at TRISC5_bit;<\/span>\n<span style=\"color: #003366;\">sbit LCD_D4_Direction at TRISC0_bit;<\/span>\n<span style=\"color: #003366;\">sbit LCD_D5_Direction at TRISC1_bit;<\/span>\n<span style=\"color: #003366;\">sbit LCD_D6_Direction at TRISC2_bit;<\/span>\n<span style=\"color: #003366;\">sbit LCD_D7_Direction at TRISC3_bit;<\/span>\n<span style=\"color: #003366;\">\/\/ End LCD module connections<\/span>\n<span style=\"color: #003366;\">\/\/ Define Messages<\/span>\n<span style=\"color: #003366;\">char message0[] = \"LCD Initialized\";<\/span>\n<span style=\"color: #003366;\">char message1[] = \"Room Temperature\";<\/span>\n<span style=\"color: #003366;\">\/\/ String array to store temperature value to display<\/span>\n<span style=\"color: #003366;\">char *tempC = \"000.0\";<\/span>\n<span style=\"color: #003366;\">char *tempF = \"000.0\";<\/span>\n<span style=\"color: #003366;\">\/\/ Variables to store temperature values<\/span>\n<span style=\"color: #003366;\">unsigned int tempinF, tempinC;<\/span>\n<span style=\"color: #003366;\">unsigned long temp_value;<\/span>\n<span style=\"color: #003366;\">void Display_Temperature() {<\/span>\n<span style=\"color: #003366;\"> \/\/ convert Temp to characters<\/span>\n<span style=\"color: #003366;\"> if (tempinC\/10000)<\/span>\n<span style=\"color: #003366;\"> \/\/ 48 is the decimal character code value for displaying 0 on LCD<\/span>\n<span style=\"color: #003366;\"> tempC[0] = tempinC\/10000 + 48;<\/span>\n<span style=\"color: #003366;\"> else tempC[0] = ' ';<\/span>\n<span style=\"color: #003366;\"> tempC[1] = (tempinC\/1000)%10 + 48; \/\/ Extract tens digit<\/span>\n<span style=\"color: #003366;\"> tempC[2] = (tempinC\/100)%10 + 48; \/\/ Extract ones digit<\/span>\n<span style=\"color: #003366;\"> \/\/ convert temp_fraction to characters<\/span>\n<span style=\"color: #003366;\"> tempC[4] = (tempinC\/10)%10 + 48; \/\/ Extract tens digit<\/span>\n<span style=\"color: #003366;\"> \/\/ print temperature on LCD<\/span>\n<span style=\"color: #003366;\"> Lcd_Out(2, 1, tempC);<\/span>\n<span style=\"color: #003366;\"> if (tempinF\/10000)<\/span>\n<span style=\"color: #003366;\"> tempF[0] = tempinF\/10000 + 48;<\/span>\n<span style=\"color: #003366;\"> else tempF[0] = ' ';<\/span>\n<span style=\"color: #003366;\"> tempF[1] = (tempinF\/1000)%10 + 48; \/\/ Extract tens digit<\/span>\n<span style=\"color: #003366;\"> tempF[2] = (tempinF\/100)%10 + 48;<\/span>\n<span style=\"color: #003366;\"> tempF[4] = (tempinF\/10)%10 + 48;<\/span>\n<span style=\"color: #003366;\"> \/\/ print temperature on LCD<\/span>\n<span style=\"color: #003366;\"> Lcd_Out(2, 10, tempF);<\/span>\n<span style=\"color: #003366;\">}<\/span>\n<span style=\"color: #003366;\">void main() {<\/span>\n<span style=\"color: #003366;\"> ANSEL = 0b00000100; \/\/ RA2\/AN2 is analog input<\/span>\n<span style=\"color: #003366;\"> ADCON0 = 0b01001000; \/\/ Connect AN2 to S\/H, select Vref=1.19V<\/span>\n<span style=\"color: #003366;\"> CMCON0 = 0x07 ; \/\/ Disbale comparators<\/span>\n<span style=\"color: #003366;\"> TRISC = 0b00000000; \/\/ PORTC All Outputs<\/span>\n<span style=\"color: #003366;\"> TRISA = 0b00001110; \/\/ PORTA All Outputs, Except RA3 and RA2<\/span>\n<span style=\"color: #003366;\"> Lcd_Init(); \/\/ Initialize LCD<\/span>\n<span style=\"color: #003366;\"> Lcd_Cmd(_LCD_CLEAR); \/\/ CLEAR display<\/span>\n<span style=\"color: #003366;\"> Lcd_Cmd(_LCD_CURSOR_OFF); \/\/ Cursor off<\/span>\n<span style=\"color: #003366;\"> Lcd_Out(1,1,message0);<\/span>\n<span style=\"color: #003366;\"> Delay_ms(1000);<\/span>\n<span style=\"color: #003366;\"> Lcd_Out(1,1,message1); \/\/ Write message1 in 1st row<\/span>\n<span style=\"color: #003366;\"> \/\/ Print degree character<\/span>\n<span style=\"color: #003366;\"> Lcd_Chr(2,6,223);<\/span>\n<span style=\"color: #003366;\"> Lcd_Chr(2,15,223);<\/span>\n<span style=\"color: #003366;\"> \/\/ Different LCD displays have different char code for degree symbol<\/span>\n<span style=\"color: #003366;\"> \/\/ if you see greek alpha letter try typing 178 instead of 223<\/span>\n<span style=\"color: #003366;\"> Lcd_Chr(2,7,'C');<\/span>\n<span style=\"color: #003366;\"> Lcd_Chr(2,16,'F');<\/span>\n<span style=\"color: #003366;\"> do {<\/span>\n<span style=\"color: #003366;\"> temp_value = ADC_Read(2);<\/span>\n<span style=\"color: #003366;\"> temp_value = temp_value*1168;<\/span>\n<span style=\"color: #003366;\"> tempinC = temp_value\/1000;<\/span>\n<span style=\"color: #003366;\"> tempinC = tempinC*10;<\/span>\n<span style=\"color: #003366;\"> tempinF = 9*tempinC\/5 + 3200;<\/span>\n<span style=\"color: #003366;\"> Display_Temperature();<\/span>\n<span style=\"color: #003366;\"> Delay_ms(1000); \/\/ Temperature sampling at 1 sec interval<\/span>\n<span style=\"color: #003366;\"> } while(1);<\/span>\n<span style=\"color: #003366;\">}<\/span><\/pre>\n<p style=\"text-align: right;\"><a href=\"http:\/\/embedded-lab.com\/uploads\/HexFiles\/PIC16F688\/LM35_TempMeter.zip\" target=\"_blank\" rel=\"noopener noreferrer\">Download HEX file<\/a><\/p>\n<p style=\"text-align: left;\"><strong>Output<\/strong><\/p>\n<p style=\"text-align: left;\">I took some pictures of the completed project displaying temperatures in both the scales.<\/p>\n<p style=\"text-align: center;\"><a href=\"http:\/\/embedded-lab.com\/blog\/digital-temperature-meter-using-an-lm35-temperature-sensor\/img_pic16f688_lm35tempoutput1\/\" rel=\"attachment wp-att-918\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-918 aligncenter\" title=\"Img_PIC16F688_LM35TempOutput1\" src=\"http:\/\/embedded-lab.com\/blog\/wp-content\/uploads\/2010\/11\/Img_PIC16F688_LM35TempOutput1.jpg\" alt=\"\" width=\"560\" height=\"419\" srcset=\"https:\/\/embedded-lab.com\/blog\/wp-content\/uploads\/2010\/11\/Img_PIC16F688_LM35TempOutput1.jpg 560w, https:\/\/embedded-lab.com\/blog\/wp-content\/uploads\/2010\/11\/Img_PIC16F688_LM35TempOutput1-550x411.jpg 550w\" sizes=\"auto, (max-width: 560px) 100vw, 560px\" \/><\/a><\/p>\n<p style=\"text-align: center;\"><a href=\"http:\/\/embedded-lab.com\/blog\/digital-temperature-meter-using-an-lm35-temperature-sensor\/img_pic16f688_lm35tempoutput2\/\" rel=\"attachment wp-att-919\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-919 aligncenter\" title=\"Img_PIC16F688_LM35TempOutput2\" src=\"http:\/\/embedded-lab.com\/blog\/wp-content\/uploads\/2010\/11\/Img_PIC16F688_LM35TempOutput2.jpg\" alt=\"\" width=\"560\" height=\"411\" srcset=\"https:\/\/embedded-lab.com\/blog\/wp-content\/uploads\/2010\/11\/Img_PIC16F688_LM35TempOutput2.jpg 560w, https:\/\/embedded-lab.com\/blog\/wp-content\/uploads\/2010\/11\/Img_PIC16F688_LM35TempOutput2-550x403.jpg 550w\" sizes=\"auto, (max-width: 560px) 100vw, 560px\" \/><\/a><\/p>\n<p style=\"text-align: center;\">Temperature goes up if you touch the sensor with your fingers<\/p>\n<p style=\"text-align: left;\"><em><strong>Accuracy of the measurement<\/strong><\/em><\/p>\n<p style=\"text-align: left;\">The accuracy of the temperature measurement highly depends upon the stability of the reference voltage. If the reference voltage drifts from the value that we considered in our calculation, the measured temperature value could be significantly off from the actual value. Using a simple diode-resistor network for deriving a reference voltage may not be a very good idea, but the purpose of this project was to demonstrate the technique, not to come up with a commercial digital thermometer product. You can also try a Zener diode or a potentiometer to derive the reference voltage. Besides, the quantization error introduced by the 10-bit ADC, rounding numbers while doing the math, and the accuracy of the sensor itself within the desired range of temperature also affect the measurement output. Read the <a href=\"https:\/\/www.ti.com\/lit\/ds\/symlink\/lm35.pdf\" target=\"_blank\" rel=\"noopener noreferrer\">manufacturer&#8217;s datasheet<\/a> for more details on the performance of the LM35 series sensor.<\/p>\n<p style=\"text-align: left;\"><strong><span style=\"color: #ff0000;\">Update<\/span><\/strong><\/p>\n<p style=\"text-align: left;\"><span style=\"color: #000080;\">This design has a little flaw. It uses a voltage drop across two diodes (? 1.2 V) as a reference voltage (Vref) for A\/D conversion. However, the datasheet of PIC16F688 suggests to use Vref greater than 2.2 V to ensure 1-LSB accuracy in the A\/D conversion. Therefore, I have re-written this project but this time using a MCP1525 device for creating a precise 2.5 V reference voltage. The new design is more precise and accurate in taking temperature measurements. Read &#8220;<strong><span style=\"color: #0841f6;\"><a href=\"http:\/\/embedded-lab.com\/blog\/?p=4001\"><span style=\"color: #0841f6;\">Revised version of LM35 based digital thermometer<\/span><\/a><\/span>&#8220;<\/strong>.<\/span><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Introduction A digital thermometer is a good choice of project for beginners who just stepped in to the world of microcontrollers because it provides an opportunity to learn using sensors to measure the real world signals that are analog in nature. This article describes a similar project based on a PIC16F688 microcontroller and an LM35 temperature sensor. LM35 is an analog sensor that converts the surrounding temperature to a proportional analog voltage. The output from the sensor is connected to one of the ADC channel inputs of the PIC16F688 microcontroller to derive the equivalent temperature value in digital format. The<\/p>\n","protected":false},"author":2,"featured_media":918,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[245,4,38],"tags":[44,5,92,91,46],"class_list":["post-916","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-embedded-lab-projects","category-pic-projects","category-pic-tutorials","tag-adc","tag-digital-temperature-meter","tag-lm35","tag-temperature-meter","tag-thermometer"],"_links":{"self":[{"href":"https:\/\/embedded-lab.com\/blog\/wp-json\/wp\/v2\/posts\/916","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/embedded-lab.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/embedded-lab.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/embedded-lab.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/embedded-lab.com\/blog\/wp-json\/wp\/v2\/comments?post=916"}],"version-history":[{"count":48,"href":"https:\/\/embedded-lab.com\/blog\/wp-json\/wp\/v2\/posts\/916\/revisions"}],"predecessor-version":[{"id":14750,"href":"https:\/\/embedded-lab.com\/blog\/wp-json\/wp\/v2\/posts\/916\/revisions\/14750"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/embedded-lab.com\/blog\/wp-json\/wp\/v2\/media\/918"}],"wp:attachment":[{"href":"https:\/\/embedded-lab.com\/blog\/wp-json\/wp\/v2\/media?parent=916"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/embedded-lab.com\/blog\/wp-json\/wp\/v2\/categories?post=916"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/embedded-lab.com\/blog\/wp-json\/wp\/v2\/tags?post=916"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}