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

راه اندازی دماسنج PT100 با ماژول MAX31865

فهرست مطالب

ماژول MAX31865 یک ماژول راه‌انداز برای سنسورهای دمایی سری PT100-PT1000 می‌باشد. این ماژول با اندازه‌گیری مقدار مقاومت سنسور، دما را اندازه گرفته و پس از تبدیل آن به مقادیر دیجیتال، تحت پروتکل SPI در اختیار کاربر قرار می‌دهد. ماژول MAX31865 از سنسورهای دو تا چهار سیمه پشتیبانی می‌کند.

در این پروژه، یک سنسور PT100 دو سیمه توسط برد آموزشی AVR WIZARD راه‌اندازی خواهد شد.

اتصالات سخت افزاری

1. ماژول MAX31865

قبل از اتصال ماژول به AVR WIZARD، پدهای جامپر 1 و جامپر 2 را به یکدیگر متصل کنید. همچنین جامپر 3 را توسط یک مقاومت صفر اهم در حالت 24 قرار دهید. مقاومت 4 مقاومت مرجع است که ADC از آن به عنوان مرجع در محاسبات استفاده می‌کند. علت تفاوت مقادیر مربوط به ADC  با مقادیر موجود در دیتاشیت این است که از مقاومت 430 اهمی به عنوان مرجع استفاده شده است ( مقادیر دیتاشیت بر حسب مقاومت 400 اهمی می‌باشد).

2. : اتصالات مربوط به ماژول MAX3186

در شکل زیر نحوه اتصال ماژول به برد AVR WIZARD نشان داده شده‌است. سنسور PT100 باید به کانکتورهای مشخص شده در کادر زرد رنگ متصل شوند ( پایه 2 و 3 ).

2. اتصال ماژول MAX31865 به برد AVR WIZARD

کدنویسی

ایجاد پروژه در CodeVision

برای ایجاد پروژه جدید، از شاخه File، گزینه New و سپس Project را انتخاب کنید.

سپس پیغام مربوط به code wizard را مشاهده خواهید کرد؛ دکمه Yes را بزنید.

سپس پنجره دیگری نشان داده خواهد شد؛ گزینه اول را انتخاب کرده و Ok را بزنید.

پس از تایید این گزینه، وارد صفحه جدیدی خواهید شد. در این صفحه تنظیمات مربوط به پورت‌های ورودی و خروجی، LCD و SPI را انجام خواهیم داد. میکرو کنترلر استفاده شده ATMEGA32A می‌باشد.

پایه CS ماژول به PORTB.4 متصل است. در قسمت PORT، این پورت را به عنوان خروجی تعریف می کنیم.

سپس تنظیمات مربوط به LCD را انجام می‌دهیم.

همانطور که روی برد مشخص شده است، خطوط داده LCD به PORTA و خطوط فرمان به PORTB متصل هستند.

در ادامه SPI را فعال سازی می‌کنیم.

در پایان تنظیمات را ذخیره کرده و گزینه تولید فایل‌ها را می‌زنیم.

پس از ذخیره سازی، وارد پنجره کدنویسی خواهیم شد. در این پنجره قسمت‌های مشخص شده اند که کاربر کد خود را در آن جا وارد کند.

در ابتدا کتابخانه‌های مورد نیاز را اضافه می کنیم.

				
					#include <mega32a.h>
#include <delay.h>
// Alphanumeric LCD functions
#include <alcd.h>
#include <stdlib.h>
				
			

سپس متغیرهای مورد نیاز را تعریف می کنیم.

				
					int value,status_val;
char temp[15],status[15] ,data_buff;
				
			

قبل از ورود به حلقه اصلی برنامه، پیغامی را بر روی LCD به نمایش می‌گذاریم.

				
					icd_init (16);
lcd_clear();
lcd_gotoxy (6,0);
lcd_print£ ("KEI");
lcd_gotoxy (6,1);
lcd_print£ ("CAN") ;
delay_ms (3000);
lcd_clear();

				
			

همچنین تنظیمات پیکره‌بندی ماژول را انجام داده و سپس وارد حلقه اصلی می‌شویم.

سپس وارد حلقه اصلی شده و کدهای لازم را پیاده سازی می‌کنیم.

				
					PORTB.4=0; //cs pin go to low
SPDR=0x01; // RTD MSBs address

while(!(SPSR & (1<<SPIF)));;

SPDR=0x00; //send any data to receive sensor data
while(!(SPSR & (i<<SPIF)));

msb=SPDR; // received data

PORTB.4=1; //cs pin go to high

 if(value<0) //when short circuite occured at sensor input connector
aL

PORTB.4=0; //cs pin go to low

SPDR=0x80; //send config register address to spi buffer
while(!(SPSR & (1<<SPIF))); //Wait for transmission complete
SPDR=0xC3; //config data: D7=1,D6=1,D5=0,D4=0,D3=0,D2=0,D1=1, D0=1
while(!(SPSR & (1<<SPIF)));//Wait for transmission complete

PORTB. 7//cs pin go to high

PORTC. 6=0;

delay_ms (200);
while (-)
{

// Place your code here

 

lcd_clear();

 

PORTB. ; //cs pin go to low

SPDR=0x02; // RTD LSBs address

while(!(SPSR & (1<<SPIF))); //Wait for transmission complete
SPDR=0x00; //send any data to receive sensor data
while(!(SPSR & (1<<SPIF))); //Wait for transmission complete
lsb=SPDR; // received data

PORTB.4=1; //cs pin go to high

 

delay _ms (10);
value=(msb*25c+lsb/2); //adc 15 bit data
lcd_gotoxy (0,0);

lcd_print£ ("ADC = ");

itoa(value,temp); // Convert integer to string
licd_puts(temp); //display adc value

delay_ms (10);

value=value/32 -233; // adc value to Celsius
itoa(value,temp); // Convert integer to string
itoa(status_val,status); // Convert integer to string
lcd_gotoxy (0,1);

lcd_print£("T = ");

lcd_puts(temp); //display temprature

lcd_print£(" 0c");

delay_ms (300) ;

 




				
			

چون مقاومت مرجع 30 اهم با مقادیر دیتاشیت اختلاف دارد، در هنگام تبدیل مقادیر ADC به درجه سانتی گراد، به جای عدد 256، 233 را در معادله وارد می کنیم.

در پایان بر روی گزینه Chip programmer  کلیک می‌نماییم.

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

راه اندازی دماسنج PT100 با ماژول MAX31865

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

3 دیدگاه در “راه اندازی دماسنج PT100 با ماژول MAX31865

  1. محمد گفت:

    خیلی ممنون از لطف شما بابت آموزش کامل
    موفق باشید

  2. admin_redronic گفت:

    با سلام
    قطعا نظرات و راهنمایی های شما عزیزان دانش پژوه باعث بهبود کیفیت آموزش خواهد .

    سالم و تندرست باشید

  3. علی تابع بردبار گفت:

    سلام
    برنامه max31865 با بیسیک را می خواستم.

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

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

پنج − 4 =