دانشنامه ردرونیک
خانه
مرجع اسناد فنی
فروشگاه ردرونیک
فرصت‌های شغلی
  • مفاهیم پایه الکترونیک
  • دانشنامه قطعات
  • دانشنامه سنسور
  • دانشنامه رباتیک
  • آردوینو
  • مهندسی پزشکی
  • پروتکل‌های ارتباطی
  • اینترنت اشیاء
  • پروژه‌ها
  • سایر
منو
دانشنامه ردرونیک
خانه » پروژه‌ها » پروژه راه اندازی سنسور پزشکی دما MLX90614 با استفاده از مجموعه آموزشی AVR WIZARD به زبان C
پروژه های AVR, پروژه‌ها

پروژه راه اندازی سنسور پزشکی دما MLX90614 با استفاده از مجموعه آموزشی AVR WIZARD به زبان C

  • 26 مهر 1400
  • ارسال توسط author-avatar زهرا احمدی
12 فروردین

 

میدان دید سنسور MLX90614

میدان دید دماسنج IR یک ویژگی مهم از سنسور بوده که آگاهی از آن بسیار مهم است که در واقع رابطه بین فاصله از یک شی و مساحت فضایی که مشاهده می‌شود ان را تعیین می‌کند. میدان دید MLX90614 به شکل مخروط است که اگر در منطقه نزدیکی جسم باشد ، میدان دید آن بسیار کم است ، که با دورتر شدن از ان افزایش پیدا می‌کند.

خروجی سنسور MLX90614

سنسور MLX90614 از دو رابط پشتیبانی می‌کند – اگرچه برای دسترسی به به یکی از آنها نیاز دارید. رابط SMBus دو سیمه پروتکل اصلی برای برقراری ارتباط با سنسور IR است. هنگامی که رابط SMBus را تنظیم کردید ، می‌توانید بعداً MLX90614 را تنظیم کنید تا یک سیگنال مدوله شده با عرض پالس متناسب با دما (های) اندازه‌گیری شده تولید کند PWM .

این سنسور از طریق رابط 2 سیم SMBus پیکر‌بندی شده و خوانده می‌شود. – بسیار مشابه و تقریباً برابر با I2C  دو سیگنال – SDA و SCL به ترتیب داده ها و سیگنال های کلاک را در اختیار دارند. یک دستگاه اصلی کلاک را کنترل می‌کند  در حالی که سیگنال داده به صورت دو جهته کنترل می‌شود.

پروتکل ارتباطی I2C در سنسور MLX90614

هر MLX90614 دارای یک آدرس I2C پیش فرض 0x5A است ، اما می‌توان آن آدرس را دوباره نوشت که یکی از مهمترین ویژگی‌های پشتیبانی شده توسط دستگاه است. با پیکربندی مجدد آدرس یک MLX90614 ، می توانید چندین دستگاه (حداکثر تا 127!) را به همان باس اضافه کنید تا یک طیف دما‌ی بزرگتر دریافت کنید.

 

نکته آخر در مورد رابط SMBus : هر انتقال خواندن یا نوشتن باید با یک بررسی 8 بیتی CRC-8-CCITT با استفاده از چند جمله ای x8 + x2 + x1 + x1 – مفید باشد.

اطلاعات MLX90614 را می‌توان از طریق رابط PWM نیز بخوانید. در این مورد استفاده فقط یک سیم برای خواندن از سنسور لازم است. برای استفاده از رابط PWM ، باید MLX90614 برای تولید آن از طریق SMBus تنظیم شود.

 

خروجی PWM با استفاده از میکروکنترلر می‌تواند دشوار باشد ، اما اگر می‌خواهید از MLX90614 برای کنترل مستقیم یک رله یا سایر دستگاه‌های خارجی استفاده کنید ، بسیار کارامد است.

 
خروجی PWM سنسور MLX90614

برنامه نویسی

هدر فایل MLX90614

				
					
#ifndef MLX90614_h
#define MLX90614_h
#include "Twi.h"
//#define MLX90614_I2CADDR 0x5A
#define MLX90614_ADDRESS     0x5A
#define MLX90614_ADDRESS_WRITE    0|(MLX90614_ADDRESS<< 1)
#define MLX90614_ADDRESS_READ     1|(MLX90614_ADDRESS<< 1)  
// RAM
#define MLX90614_RAWIR1 0x04
#define MLX90614_RAWIR2 0x05
#define MLX90614_TA 0x06
#define MLX90614_TOBJ1 0x07
#define MLX90614_TOBJ2 0x08
// EEPROM
#define MLX90614_TOMAX 0x20
#define MLX90614_TOMIN 0x21
#define MLX90614_PWMCTRL 0x22
#define MLX90614_TARANGE 0x23
#define MLX90614_EMISS 0x24
#define MLX90614_CONFIG 0x25
#define MLX90614_ADDR 0x0E
#define MLX90614_ID1 0x3C
#define MLX90614_ID2 0x3D
#define MLX90614_ID3 0x3E
#define MLX90614_ID4 0x3F


long int readObjectTempC(void);
//long int readAmbientTempC(void);
double readObjectTempF(void);
double readAmbientTempF(void);
float readTemp(uint8_t reg);
//uint16_t read16(uint8_t addr);


uint16_t MLX90614_ReadRam(uint8_t RegisterName)
{   
  uint16_t data; 
  char pec;
  Twi_Start();   
  Twi_Send(MLX90614_ADDRESS_WRITE);   
//  Twi_Send(RegisterName|TCS34725_COMMAND_BIT);    
  Twi_Send(RegisterName);    
  Twi_Start();
  Twi_Send(MLX90614_ADDRESS_READ);  
  data=Twi_Read(ACK);     
  data |= Twi_Read(ACK) << 8; 
  pec = Twi_Read(NACK); 
  return data; 
}

long int readObjectTempC(void)
{
  long int temp;
  temp = MLX90614_ReadRam(MLX90614_TA);
  temp *= .02;
  temp  -= 273.15;
  return temp;
}



#endif

				
			

هدر فایل TWI

				
					#ifndef TwoWire_h
#define TwoWire_h
#include <mega16a.h>
#define uint8_t     unsigned char
#define ACK     0
#define NACK     1
void Twi_Start(void);
void Twi_Send(uint8_t data)  ;
uint8_t Twi_ReadStatus(void)   ;
void Twi_Stop()  ;
void Twi_Init(void)  ;
uint8_t Twi_Read(uint8_t ack_n)  ;
void Twi_AsSlave(uint8_t slave_a)    ;
void Twi_listen(void)  ;

 void Twi_Start(void)
{
    TWCR=(1<<TWINT)|(1<<TWSTA)|(1<<TWEN);
    while ((TWCR & (1<<TWINT))==0);    
    
}

void Twi_Send(uint8_t data)
{
    TWDR=data;
    TWCR=(1<<TWINT)|(1<<TWEN)|(1<<TWEA);
    while ((TWCR & (1<<TWINT))==0); 
}

uint8_t Twi_ReadStatus(void)
{
    uint8_t i=0;
    i=TWSR & 0XF8;
    return i;
}

void Twi_Stop()
{
    TWCR=(1<<TWINT)|(1<<TWEN)|(1<<TWSTO);
}

void Twi_Init(void)
{
    TWSR=0;
    TWBR=0x48;
    TWCR=0x44;
}
uint8_t Twi_Read(uint8_t ack_n)
{
    if(ack_n==0)
    TWCR=(1<<TWINT)|(1<<TWEN)|(1<<TWEA);
    else
    TWCR=(1<<TWINT)|(1<<TWEN);
    while ((TWCR & (1<<TWINT))==0);
    return TWDR;
}

void Twi_AsSlave(uint8_t slave_a)
{
    TWAR=slave_a;
    TWCR=(1<<TWINT)|(1<<TWEN)|(1<<TWEA);
}

void Twi_listen(void)
{
  while ((TWCR & (1<<TWINT))==0);
}  

#endif

				
			

در ادامه برنامه به زبان C در تابع MAIN را مشاهده می کنید:

				
					
#include <mega16a.h>
#include <alcd.h>
#include <delay.h>
#include <stdlib.h>
#include "MLX90614.h"
#include "Twi.h"

void main(void)
{
 char databuffer[10];  
 //double data;
long int data;
//double data  = 0.0;
//char str[20];
// Declare your local variables here

// Input/Output Ports initialization
// Port A initialization
// Function: Bit7=In Bit6=In Bit5=In Bit4=In Bit3=In Bit2=In Bit1=In Bit0=In 
DDRA=(0<<DDA7) | (0<<DDA6) | (0<<DDA5) | (0<<DDA4) | (0<<DDA3) | (0<<DDA2) | (0<<DDA1) | (0<<DDA0);
// State: Bit7=T Bit6=T Bit5=T Bit4=T Bit3=T Bit2=T Bit1=T Bit0=T 
PORTA=(0<<PORTA7) | (0<<PORTA6) | (0<<PORTA5) | (0<<PORTA4) | (0<<PORTA3) | (0<<PORTA2) | (0<<PORTA1) | (0<<PORTA0);

// Port B initialization
// Function: Bit7=In Bit6=In Bit5=In Bit4=In Bit3=In Bit2=In Bit1=In Bit0=In 
DDRB=(0<<DDB7) | (0<<DDB6) | (0<<DDB5) | (0<<DDB4) | (0<<DDB3) | (0<<DDB2) | (0<<DDB1) | (0<<DDB0);
// State: Bit7=T Bit6=T Bit5=T Bit4=T Bit3=T Bit2=T Bit1=T Bit0=T 
PORTB=(0<<PORTB7) | (0<<PORTB6) | (0<<PORTB5) | (0<<PORTB4) | (0<<PORTB3) | (0<<PORTB2) | (0<<PORTB1) | (0<<PORTB0);

// Port C initialization
// Function: Bit7=In Bit6=In Bit5=In Bit4=In Bit3=In Bit2=In Bit1=In Bit0=In 
DDRC=(0<<DDC7) | (0<<DDC6) | (0<<DDC5) | (0<<DDC4) | (0<<DDC3) | (0<<DDC2) | (0<<DDC1) | (0<<DDC0);
// State: Bit7=T Bit6=T Bit5=T Bit4=T Bit3=T Bit2=T Bit1=T Bit0=T 
PORTC=(0<<PORTC7) | (0<<PORTC6) | (0<<PORTC5) | (0<<PORTC4) | (0<<PORTC3) | (0<<PORTC2) | (0<<PORTC1) | (0<<PORTC0);

// Port D initialization
// Function: Bit7=In Bit6=In Bit5=In Bit4=In Bit3=In Bit2=In Bit1=In Bit0=In 
DDRD=(0<<DDD7) | (0<<DDD6) | (0<<DDD5) | (0<<DDD4) | (0<<DDD3) | (0<<DDD2) | (0<<DDD1) | (0<<DDD0);
// State: Bit7=T Bit6=T Bit5=T Bit4=T Bit3=T Bit2=T Bit1=T Bit0=T 
PORTD=(0<<PORTD7) | (0<<PORTD6) | (0<<PORTD5) | (0<<PORTD4) | (0<<PORTD3) | (0<<PORTD2) | (0<<PORTD1) | (0<<PORTD0);

// USART initialization
// Communication Parameters: 8 Data, 1 Stop, No Parity
// USART Receiver: Off
// USART Transmitter: On
// USART Mode: Asynchronous
// USART Baud Rate: 9600
UCSRA=(0<<RXC) | (0<<TXC) | (0<<UDRE) | (0<<FE) | (0<<DOR) | (0<<UPE) | (0<<U2X) | (0<<MPCM);
UCSRB=(0<<RXCIE) | (0<<TXCIE) | (0<<UDRIE) | (0<<RXEN) | (1<<TXEN) | (0<<UCSZ2) | (0<<RXB8) | (0<<TXB8);
UCSRC=(1<<URSEL) | (0<<UMSEL) | (0<<UPM1) | (0<<UPM0) | (0<<USBS) | (1<<UCSZ1) | (1<<UCSZ0) | (0<<UCPOL);
UBRRH=0x00;
UBRRL=0x67;

lcd_init(16);
lcd_putsf( "   HI Wellcom   " ) ;
lcd_gotoxy( 0 , 1 );
lcd_putsf( "TO REDRONIC.COM" ) ;
delay_ms(2000);
lcd_clear();
Twi_Init() ;
// Global enable interrupts
#asm("sei")

while (1)
      {                                  
        lcd_clear();
        data = readObjectTempC();           
        itoa (data,databuffer);  
        lcd_gotoxy(0,0);
        lcd_putsf("Temp:");
        lcd_gotoxy(7,0); 
        lcd_puts(databuffer); 
        delay_ms(2000);        
      }
      
}

				
			

خروجی برنامه

هدف از این آموزش راه‌اندازی واحد I2C با سنسور پزشکی دما MLX90614 ، به زبان برنامه نویسی C  توسط مجموعه آموزشی AVR WIZARD می‌باشد .

قطعات مورد نیاز:

  • برد اصلی AVR WIZZARD
  • 2X16 LCD  
  • ماژول سنسور پزشکی دما MLX90614
  • تغذیه 9 ولت
  • سنسور MLX90614

 

در داخل MLX90614 دو قسمت وجود دارد: یک سنسور حرارتی مادون قرمز و یک پردازنده پردازش سیگنال.طبق قانون استفان-بولتزمن ، هر ماده‌ای که زیر صفر مطلق نباشد (0 درجه سانتیگراد) باشد ، نور را در طیف مادون قرمز (مستقیماً با دما قابل مشاهده نیست) ساطع می‌کند.

ترموپیل مادون قرمز ویژه در داخل MLX90614 مقدار انرژی مادون قرمز از مواد اطراف که منتشر می‌شود را حس کرده و یک سیگنال الکتریکی متناسب با آن تولید می کند . این سیگنال الکتریکی تولید شده توسط ترموپیل توسط 17ADC‌بیتی پردازنده نمونه برداری و پردازش شده ، به میکروکنترلر منتقل می‌شود.

بلوک داخلی سنسور MLX90614

بلوک داخلی سنسور MLX90614

پین‌های خروجی سنسور MLX90614

سنسور MLX90614 در یک پکیج TO-39 با چهار پین قرار دارد: دو پین برای پاور و تغذیه ، و دو پین نیز برای رابط SMBus. “” . شکاف روی بدنه نشان می‌دهد که کدام پین زمین است.

پین های خروجی سنسور MLX90614

قابلیت‌های سنسور MLX90614

سنسور  MLX90614 دو نوع دما را اندازه گیری می‌کند: یک دمای اجسام و دیگر دمای محیط. اندازه‌گیری  دمای جسم غیر‌تماسی است ، در حالی که حرارت محیط در سنسور اندازه‌گیری می‌شود. حرارت محیط در کالیبراسیون داده‌ها می‌تواند مفید باشد .

اندازه‌گیری دمای جسم می‌تواند از 70- تا 382.2 درجه سانتی‌گراد (94- تا 719.96 درجه فارنهایت) باشد ، در حالی که خواندن دمای محیط از 40- تا 125 درجه سانتی‌گراد است.هم اندازه‌گیری دمای محیط و هم  اندازه‌گیری دمای اجسام دارای وضوح  0.02 درجه سانتی‌گراد است.

 

میدان دید سنسور MLX90614

میدان دید دماسنج IR یک ویژگی مهم از سنسور بوده که آگاهی از آن بسیار مهم است که در واقع رابطه بین فاصله از یک شی و مساحت فضایی که مشاهده می‌شود ان را تعیین می‌کند. میدان دید MLX90614 به شکل مخروط است که اگر در منطقه نزدیکی جسم باشد ، میدان دید آن بسیار کم است ، که با دورتر شدن از ان افزایش پیدا می‌کند.

خروجی سنسور MLX90614

سنسور MLX90614 از دو رابط پشتیبانی می‌کند – اگرچه برای دسترسی به به یکی از آنها نیاز دارید. رابط SMBus دو سیمه پروتکل اصلی برای برقراری ارتباط با سنسور IR است. هنگامی که رابط SMBus را تنظیم کردید ، می‌توانید بعداً MLX90614 را تنظیم کنید تا یک سیگنال مدوله شده با عرض پالس متناسب با دما (های) اندازه‌گیری شده تولید کند PWM .

این سنسور از طریق رابط 2 سیم SMBus پیکر‌بندی شده و خوانده می‌شود. – بسیار مشابه و تقریباً برابر با I2C  دو سیگنال – SDA و SCL به ترتیب داده ها و سیگنال های کلاک را در اختیار دارند. یک دستگاه اصلی کلاک را کنترل می‌کند  در حالی که سیگنال داده به صورت دو جهته کنترل می‌شود.

پروتکل ارتباطی I2C در سنسور MLX90614

هر MLX90614 دارای یک آدرس I2C پیش فرض 0x5A است ، اما می‌توان آن آدرس را دوباره نوشت که یکی از مهمترین ویژگی‌های پشتیبانی شده توسط دستگاه است. با پیکربندی مجدد آدرس یک MLX90614 ، می توانید چندین دستگاه (حداکثر تا 127!) را به همان باس اضافه کنید تا یک طیف دما‌ی بزرگتر دریافت کنید.

 

نکته آخر در مورد رابط SMBus : هر انتقال خواندن یا نوشتن باید با یک بررسی 8 بیتی CRC-8-CCITT با استفاده از چند جمله ای x8 + x2 + x1 + x1 – مفید باشد.

اطلاعات MLX90614 را می‌توان از طریق رابط PWM نیز بخوانید. در این مورد استفاده فقط یک سیم برای خواندن از سنسور لازم است. برای استفاده از رابط PWM ، باید MLX90614 برای تولید آن از طریق SMBus تنظیم شود.

 

خروجی PWM با استفاده از میکروکنترلر می‌تواند دشوار باشد ، اما اگر می‌خواهید از MLX90614 برای کنترل مستقیم یک رله یا سایر دستگاه‌های خارجی استفاده کنید ، بسیار کارامد است.

 
خروجی PWM سنسور MLX90614

برنامه نویسی

هدر فایل MLX90614

				
					
#ifndef MLX90614_h
#define MLX90614_h
#include "Twi.h"
//#define MLX90614_I2CADDR 0x5A
#define MLX90614_ADDRESS     0x5A
#define MLX90614_ADDRESS_WRITE    0|(MLX90614_ADDRESS<< 1)
#define MLX90614_ADDRESS_READ     1|(MLX90614_ADDRESS<< 1)  
// RAM
#define MLX90614_RAWIR1 0x04
#define MLX90614_RAWIR2 0x05
#define MLX90614_TA 0x06
#define MLX90614_TOBJ1 0x07
#define MLX90614_TOBJ2 0x08
// EEPROM
#define MLX90614_TOMAX 0x20
#define MLX90614_TOMIN 0x21
#define MLX90614_PWMCTRL 0x22
#define MLX90614_TARANGE 0x23
#define MLX90614_EMISS 0x24
#define MLX90614_CONFIG 0x25
#define MLX90614_ADDR 0x0E
#define MLX90614_ID1 0x3C
#define MLX90614_ID2 0x3D
#define MLX90614_ID3 0x3E
#define MLX90614_ID4 0x3F


long int readObjectTempC(void);
//long int readAmbientTempC(void);
double readObjectTempF(void);
double readAmbientTempF(void);
float readTemp(uint8_t reg);
//uint16_t read16(uint8_t addr);


uint16_t MLX90614_ReadRam(uint8_t RegisterName)
{   
  uint16_t data; 
  char pec;
  Twi_Start();   
  Twi_Send(MLX90614_ADDRESS_WRITE);   
//  Twi_Send(RegisterName|TCS34725_COMMAND_BIT);    
  Twi_Send(RegisterName);    
  Twi_Start();
  Twi_Send(MLX90614_ADDRESS_READ);  
  data=Twi_Read(ACK);     
  data |= Twi_Read(ACK) << 8; 
  pec = Twi_Read(NACK); 
  return data; 
}

long int readObjectTempC(void)
{
  long int temp;
  temp = MLX90614_ReadRam(MLX90614_TA);
  temp *= .02;
  temp  -= 273.15;
  return temp;
}



#endif

				
			

هدر فایل TWI

				
					#ifndef TwoWire_h
#define TwoWire_h
#include <mega16a.h>
#define uint8_t     unsigned char
#define ACK     0
#define NACK     1
void Twi_Start(void);
void Twi_Send(uint8_t data)  ;
uint8_t Twi_ReadStatus(void)   ;
void Twi_Stop()  ;
void Twi_Init(void)  ;
uint8_t Twi_Read(uint8_t ack_n)  ;
void Twi_AsSlave(uint8_t slave_a)    ;
void Twi_listen(void)  ;

 void Twi_Start(void)
{
    TWCR=(1<<TWINT)|(1<<TWSTA)|(1<<TWEN);
    while ((TWCR & (1<<TWINT))==0);    
    
}

void Twi_Send(uint8_t data)
{
    TWDR=data;
    TWCR=(1<<TWINT)|(1<<TWEN)|(1<<TWEA);
    while ((TWCR & (1<<TWINT))==0); 
}

uint8_t Twi_ReadStatus(void)
{
    uint8_t i=0;
    i=TWSR & 0XF8;
    return i;
}

void Twi_Stop()
{
    TWCR=(1<<TWINT)|(1<<TWEN)|(1<<TWSTO);
}

void Twi_Init(void)
{
    TWSR=0;
    TWBR=0x48;
    TWCR=0x44;
}
uint8_t Twi_Read(uint8_t ack_n)
{
    if(ack_n==0)
    TWCR=(1<<TWINT)|(1<<TWEN)|(1<<TWEA);
    else
    TWCR=(1<<TWINT)|(1<<TWEN);
    while ((TWCR & (1<<TWINT))==0);
    return TWDR;
}

void Twi_AsSlave(uint8_t slave_a)
{
    TWAR=slave_a;
    TWCR=(1<<TWINT)|(1<<TWEN)|(1<<TWEA);
}

void Twi_listen(void)
{
  while ((TWCR & (1<<TWINT))==0);
}  

#endif

				
			

در ادامه برنامه به زبان C در تابع MAIN را مشاهده می کنید:

				
					
#include <mega16a.h>
#include <alcd.h>
#include <delay.h>
#include <stdlib.h>
#include "MLX90614.h"
#include "Twi.h"

void main(void)
{
 char databuffer[10];  
 //double data;
long int data;
//double data  = 0.0;
//char str[20];
// Declare your local variables here

// Input/Output Ports initialization
// Port A initialization
// Function: Bit7=In Bit6=In Bit5=In Bit4=In Bit3=In Bit2=In Bit1=In Bit0=In 
DDRA=(0<<DDA7) | (0<<DDA6) | (0<<DDA5) | (0<<DDA4) | (0<<DDA3) | (0<<DDA2) | (0<<DDA1) | (0<<DDA0);
// State: Bit7=T Bit6=T Bit5=T Bit4=T Bit3=T Bit2=T Bit1=T Bit0=T 
PORTA=(0<<PORTA7) | (0<<PORTA6) | (0<<PORTA5) | (0<<PORTA4) | (0<<PORTA3) | (0<<PORTA2) | (0<<PORTA1) | (0<<PORTA0);

// Port B initialization
// Function: Bit7=In Bit6=In Bit5=In Bit4=In Bit3=In Bit2=In Bit1=In Bit0=In 
DDRB=(0<<DDB7) | (0<<DDB6) | (0<<DDB5) | (0<<DDB4) | (0<<DDB3) | (0<<DDB2) | (0<<DDB1) | (0<<DDB0);
// State: Bit7=T Bit6=T Bit5=T Bit4=T Bit3=T Bit2=T Bit1=T Bit0=T 
PORTB=(0<<PORTB7) | (0<<PORTB6) | (0<<PORTB5) | (0<<PORTB4) | (0<<PORTB3) | (0<<PORTB2) | (0<<PORTB1) | (0<<PORTB0);

// Port C initialization
// Function: Bit7=In Bit6=In Bit5=In Bit4=In Bit3=In Bit2=In Bit1=In Bit0=In 
DDRC=(0<<DDC7) | (0<<DDC6) | (0<<DDC5) | (0<<DDC4) | (0<<DDC3) | (0<<DDC2) | (0<<DDC1) | (0<<DDC0);
// State: Bit7=T Bit6=T Bit5=T Bit4=T Bit3=T Bit2=T Bit1=T Bit0=T 
PORTC=(0<<PORTC7) | (0<<PORTC6) | (0<<PORTC5) | (0<<PORTC4) | (0<<PORTC3) | (0<<PORTC2) | (0<<PORTC1) | (0<<PORTC0);

// Port D initialization
// Function: Bit7=In Bit6=In Bit5=In Bit4=In Bit3=In Bit2=In Bit1=In Bit0=In 
DDRD=(0<<DDD7) | (0<<DDD6) | (0<<DDD5) | (0<<DDD4) | (0<<DDD3) | (0<<DDD2) | (0<<DDD1) | (0<<DDD0);
// State: Bit7=T Bit6=T Bit5=T Bit4=T Bit3=T Bit2=T Bit1=T Bit0=T 
PORTD=(0<<PORTD7) | (0<<PORTD6) | (0<<PORTD5) | (0<<PORTD4) | (0<<PORTD3) | (0<<PORTD2) | (0<<PORTD1) | (0<<PORTD0);

// USART initialization
// Communication Parameters: 8 Data, 1 Stop, No Parity
// USART Receiver: Off
// USART Transmitter: On
// USART Mode: Asynchronous
// USART Baud Rate: 9600
UCSRA=(0<<RXC) | (0<<TXC) | (0<<UDRE) | (0<<FE) | (0<<DOR) | (0<<UPE) | (0<<U2X) | (0<<MPCM);
UCSRB=(0<<RXCIE) | (0<<TXCIE) | (0<<UDRIE) | (0<<RXEN) | (1<<TXEN) | (0<<UCSZ2) | (0<<RXB8) | (0<<TXB8);
UCSRC=(1<<URSEL) | (0<<UMSEL) | (0<<UPM1) | (0<<UPM0) | (0<<USBS) | (1<<UCSZ1) | (1<<UCSZ0) | (0<<UCPOL);
UBRRH=0x00;
UBRRL=0x67;

lcd_init(16);
lcd_putsf( "   HI Wellcom   " ) ;
lcd_gotoxy( 0 , 1 );
lcd_putsf( "TO REDRONIC.COM" ) ;
delay_ms(2000);
lcd_clear();
Twi_Init() ;
// Global enable interrupts
#asm("sei")

while (1)
      {                                  
        lcd_clear();
        data = readObjectTempC();           
        itoa (data,databuffer);  
        lcd_gotoxy(0,0);
        lcd_putsf("Temp:");
        lcd_gotoxy(7,0); 
        lcd_puts(databuffer); 
        delay_ms(2000);        
      }
      
}

				
			

خروجی برنامه

نظرتان را درباره این مقاله بگویید 4 نظر

2
عالی
2
خوب
0
باحال
0
ضعیف
0
خیلی بد
پروژه راه اندازی سنسور پزشکی دما MLX90614 با استفاده از مجموعه آموزشی AVR WIZARD به زبان C
برچسب ها:
mlx90614, پروژه AVR, تب سنج با avr, تب سنج با اردوینو, سنسور دما با avr, سنسور دما با ای وی ار
جدیدتر سنسورهای دما دیجیتال شرکت Texas Instruments
بازگشت به لیست
قدیمی تر یون ساز منفی

نوشته های مشابه

14 تیر
پروژه های AVR, پروژه‌ها

پروژه های AVR سری میکروکنترلر ATMEGA

  • 28 بهمن 1400
  • ارسال توسط author-avatar حسین توانگر
  • 0 دیدگاه
در این نوشته به معرفی برخی از پروژه‌های عملی و کاربردی میکروکنترلر ATMEGA...

ادامه مطلب

ITG3200 project with avr wizzard
27 بهمن
پروژه های AVR, پروژه‌ها

پروژه راه اندازی ماژول ITG3200 توسط برد AVR Wizard

  • 29 بهمن 1400
  • ارسال توسط author-avatar
  • 0 دیدگاه
فهرست مطالب هدف از این آموزش چگونگی برقراری ارتباط با یک سنسور‌ دیجیتال و راه‌اندازی یک LCD می‌باشد.در نهایت شما قادر خواهید ...

ادامه مطلب

راه-اندازی-ژایروسکوپ-CRM200-توسط-برد-آموزشی-پلاریس-Polaris
13 آذر
پروژه های AVR, پروژه‌ها

پروژه راه اندازی سنسور ژیروسکوپ CRM200 با استفاده از میکروکنترلر ATMEGA

  • 29 بهمن 1400
  • ارسال توسط author-avatar
  • 0 دیدگاه
فهرست مطالب راهنمای راه اندازی ژایروسکوپ ( سنسور سرعت زاویه ای ) CRM200 با استفاده از برد آموزشی پلاریس Polarisهدف از انجام ا...

ادامه مطلب

2 دیدگاه در “پروژه راه اندازی سنسور پزشکی دما MLX90614 با استفاده از مجموعه آموزشی AVR WIZARD به زبان C”

  1. سعید گفت:
    2 بهمن 1401 در 18:44

    با سلام و خسته نباشید …
    پیشنهاد میشود پروژه های ارائه شده در سایت به صورت کیت در فروشگاه عرضه گردد

  2. erfan گفت:
    8 اردیبهشت 1403 در 15:51

    MLX90614.h(36), #included from: HI.c: ‘(‘ expected
    سلام خسته نباشید
    این ارور روتوی خط پایین دریافت میکنم! نمیدونم چرا!
    uint16_t MLX90614_ReadRam(uint8_t RegisterName)

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

4 × 2 =

بستن (Esc)
بروزترین مقالات
  • دیمر چیست؟ 1 اردیبهشت 1403
  • هیت‌سینک چیست؟ 1 اردیبهشت 1403
  • بافر چیست؟ 1 اردیبهشت 1403
  • فریت‌بید چیست؟ 1 اردیبهشت 1403
  • اپتوکوپلر چیست؟ 29 فروردین 1403
  • الکترومگنت چیست؟ 28 فروردین 1403
  • رکتیفایر چیست؟ 28 فروردین 1403
  • اینورتر و کانورتر چیست؟ 27 فروردین 1403
مقالات مرتبط
قبلی : پروژه های AVR سری میکروکنترلر ATMEGA بعدی : پروژه راه اندازی ماژول MAX6675 توسط برد AVR Wizard
  1. پروژه های AVR سری میکروکنترلر ATMEGA

  2. پروژه راه اندازی سنسور پزشکی دما MLX90614 با استفاده از مجموعه آموزشی AVR WIZARD به زبان C

  3. پروژه راه اندازی ماژول MAX6675 توسط برد AVR Wizard

  4. پروژه ی راه اندازی ماژول MPU6050 توسط برد AVR Wizard

  5. پروژه ی راه اندازی ماژول MPU9250 توسط برد AVR Wizard

  6. پروژه راه اندازی ماژول MAG3110 توسط برد AVR Wizard

  7. پروژه راه اندازی ماژول ITG3200 توسط برد AVR Wizard

  8. پروژه راه اندازی سنسور تشخیص رنگ TCS34725 با استفاده از مجموعه آموزشی AVR WIZARD به زبان C

  9. پروژه راه اندازی سنسور ژیروسکوپ و شتاب سنج ICM20689 با استفاده از مجموعه آموزشی AVR WIZARD به زبان C

  10. پروژه راه اندازی سنسور دما LM35 با استفاده از مجموعه آموزشی AVR WIZARD به زبان C

  11. پروژه راه اندازی سنسور دما SMT172 با استفاده از مجموعه آموزشی AVR WIZARD توسط برد پلاریس به زبان C

  12. پروژه راه اندازی سنسور دیجیتال رطوبت HS1101 با استفاده از مجموعه آموزشی AVR WIZARD توسط برد پلاریس به زبان C

  13. پروژه راه اندازی سنسور دما و رطوبت DHT22 با استفاده از مجموعه آموزشی AVR WIZARD توسط برد پلاریس به زبان C

  14. پروژه راه اندازی سنسور های سری MQ با استفاده از مجموعه آموزشی AVR WIZARD توسط برد پلاریس به زبان C

محصولات مرتبط

ردرونیک

تهران، خ جمهوری، تقاطع سی تیر، ساختمان فرقانی، طبقه همکف، پلاک 21

شماره تماس: 62892 - 021

ایمیل: info@redronic.com

                   

بروزترین مقالات
  • دیمر چیست؟
  • هیت‌سینک چیست؟
  • بافر چیست؟
  • فریت‌بید چیست؟
  • اپتوکوپلر چیست؟
فروشگاه ردرونیک
  • انواع سنسورها
  • سنسورهای پزشکی
  • رباتیک
  • اینترنت اشیاء
  • میکروکنترلر و بردهای توسعه
  • آردوینو و مینی کامپیوترها
دانشنامه
  • دانشنامه سنسور
  • دانشنامه رباتیک
  • دانشنامه قطعه‌شناسی
  • دانشنامه مهندسی پزشکی
  • دانشنامه اینترنت اشیاء
  • مفاهیم پایه الکترونیک
ردرونیک
  • ردرونیک
  • فروشگاه ردرونیک
  • مرجع اسناد فنی
  • خرید رایگان
  • درباره ما
  • تماس با ما
1400© کلیه حقوق مادی و معنوی برای وب سایت ردرونیک محفوظ است و هر گونه کپی برداری پیگرد قانونی دارد.
بستن
  • مفاهیم پایه الکترونیک
  • دانشنامه قطعات
  • دانشنامه سنسور
  • دانشنامه رباتیک
  • آردوینو
  • مهندسی پزشکی
  • پروتکل‌های ارتباطی
  • اینترنت اشیاء
  • پروژه‌ها
  • سایر
فروشگاه
سایدبار