IR temp sensor

Dependencies:   mbed

Committer:
DheerajEtta
Date:
Thu Aug 06 20:32:47 2020 +0000
Revision:
1:c5f7996b1035
Parent:
0:f84245f91a5a
IR temperature sensor

Who changed what in which revision?

UserRevisionLine numberNew contents of line
DheerajEtta 1:c5f7996b1035 1 #include "mbed.h"
DheerajEtta 1:c5f7996b1035 2 #include "SPI.h"
DheerajEtta 1:c5f7996b1035 3 Serial pc (USBTX, USBRX);
DheerajEtta 1:c5f7996b1035 4 SPI spi_temp(PB_15, PB_14, PB_13); // mosi, miso, sclk
DheerajEtta 1:c5f7996b1035 5 DigitalOut spi_cs(PB_12); // chip select
ym1784 0:f84245f91a5a 6
DheerajEtta 1:c5f7996b1035 7 void temp_read ()
DheerajEtta 1:c5f7996b1035 8 {
DheerajEtta 1:c5f7996b1035 9 spi_cs=0;
DheerajEtta 1:c5f7996b1035 10 wait(1);
DheerajEtta 1:c5f7996b1035 11 float data0[9], data1[9];
DheerajEtta 1:c5f7996b1035 12 float temp[9];
DheerajEtta 1:c5f7996b1035 13 spi_temp.write(0xA0); // Sensor Temperature
DheerajEtta 1:c5f7996b1035 14 wait_us(200);
DheerajEtta 1:c5f7996b1035 15 data0[0] = spi_temp.write(0xFF); // Higher Byte
DheerajEtta 1:c5f7996b1035 16 // if (data0[0] < 128) // Inside temp range
DheerajEtta 1:c5f7996b1035 17 wait_us(200);
DheerajEtta 1:c5f7996b1035 18 data1[0] = spi_temp.write(0xFF); // Lower Byte
DheerajEtta 1:c5f7996b1035 19 temp[0] = (256*data0[0] + data1[0]) / 10;
DheerajEtta 1:c5f7996b1035 20
DheerajEtta 1:c5f7996b1035 21 // else // Overshooting temp range
DheerajEtta 1:c5f7996b1035 22 // data1[0] = 0;
DheerajEtta 1:c5f7996b1035 23 // temp[0] = 85.0; }
DheerajEtta 1:c5f7996b1035 24 printf("Sensor %0.2f\n",temp[0]); // Maximum Limit reached
DheerajEtta 1:c5f7996b1035 25 wait_us(200);
DheerajEtta 1:c5f7996b1035 26 for (int i = 1; i<=8; i++) // For rest 8-pixels
DheerajEtta 1:c5f7996b1035 27 {
DheerajEtta 1:c5f7996b1035 28 uint8_t p = 0xA0 + i ;
ym1784 0:f84245f91a5a 29
DheerajEtta 1:c5f7996b1035 30 spi_temp.write(p); // Deciding from 1st - 8th pixel
DheerajEtta 1:c5f7996b1035 31 wait_us(200);
DheerajEtta 1:c5f7996b1035 32 data0[i] = spi_temp.write(0xFF); // Higher Byte
DheerajEtta 1:c5f7996b1035 33
DheerajEtta 1:c5f7996b1035 34 // if (data0[i] < 128) // Inside temp range
DheerajEtta 1:c5f7996b1035 35 // {
DheerajEtta 1:c5f7996b1035 36 wait_us(200);
DheerajEtta 1:c5f7996b1035 37 data1[i] = spi_temp.write(0xFF); // Lower Byte
DheerajEtta 1:c5f7996b1035 38 temp[i] = (256*data0[i] + data1[i]) / 10;
DheerajEtta 1:c5f7996b1035 39 // }
DheerajEtta 1:c5f7996b1035 40 // else // Overshooting temp. range
DheerajEtta 1:c5f7996b1035 41 // { data1[i] = 0;
DheerajEtta 1:c5f7996b1035 42 // temp[i] = 120.0; }
DheerajEtta 1:c5f7996b1035 43 printf("Pixel %d %0.2f\n",i,temp[i]); // Maximum limit reached
DheerajEtta 1:c5f7996b1035 44 }
DheerajEtta 1:c5f7996b1035 45 spi_cs=1;
DheerajEtta 1:c5f7996b1035 46 }
ym1784 0:f84245f91a5a 47
DheerajEtta 1:c5f7996b1035 48 void spi_initialise()
DheerajEtta 1:c5f7996b1035 49 { spi_temp.format(8, 1); //8-bits, Mode 1
DheerajEtta 1:c5f7996b1035 50 spi_temp.frequency(100000); // 100 KHz frequency of SCLK
DheerajEtta 1:c5f7996b1035 51 spi_cs=1;
DheerajEtta 1:c5f7996b1035 52 }
ym1784 0:f84245f91a5a 53
DheerajEtta 1:c5f7996b1035 54 int main()
DheerajEtta 1:c5f7996b1035 55 {
DheerajEtta 1:c5f7996b1035 56 printf("Temp Check\n");
DheerajEtta 1:c5f7996b1035 57 spi_initialise();
DheerajEtta 1:c5f7996b1035 58 temp_read();
DheerajEtta 1:c5f7996b1035 59 }