پروژه راه اندازی max6675-avr wizard

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

2

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

هدف از این آموزش چگونگی برقراری ارتباط با یک سنسور دیجیتال و راه اندازی یک LCD می باشد.

در نهایت شما قادر خواهید بود ماژول Max6675 را راه اندازی کرده و دمای اندازه‌گیری شده را بر روی LCD نمایش دهید.

لوازم مورد نیاز :

  1. برد AVR Wizard
  2. ماژول Max6675
  3. پروگرامر MKII
  4. مبع تغذیه 6-12 ولتی

 

مقدمه:

ترموکوپل (Thermocouple) یک سنسور تشخیص دمای ترمو-الکتریکی مدار-بسته شامل دو سیم غیر هم جنس است، که در یک انتها به هم متصل شده‌اند. زمانیکه دما در یک سمت با دما در سمت دیگر تفاوت داشته باشد یک جریان الکتریکی در مسیر برقرار می‌شود. به این پدیده اثر سیبک گفته می‌شود که اساس کار ترموکوپل‌ها می‌باشد.

ترموکوپل‌ها دارای انواع مختلفی (تیپ‌ها) برای اندازه‌گیری دما هستند. به‌طور مثال انواع R – S – B با قابلیت اندازه‌گیری دما در محدوه ۲۰۰- الی ۱۸۰۰ و انواع L – K- J با قابلیت اندازه‌گیری دما در محدوده ۱۸۰- الی ۱۰۰۰ درجه سلسیوس بکار می‌روند.

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

ماژول Max6675 یک مبدل آنالوگ به دیجیتال 12 بیتی برای ترموکوپل‌های سری K می‌باشد. این ماژول دارای تقویت کننده داخلی است و قادر است دمای “0” تا “1023.75” درجه سانتی‌گراد را با رزولوشن 0.25 درجه سانتی‌گراد انداز‌ه‌گیری نماید.

این ماژول به صورت سریال داده را منتقل می‌کند؛ به این صورت که با صفر کردن پایه CS، تبدیل داده توسط ADC متوقف شده و با اعمال پالس-ساعت به پایه SCK، داده آماده شده روی خط SDO منتقل می‌شود. دیتای خروجی 16 بیت است که بیت‌های 3 تا 14، دیتای مربوط به دمای ترموکوپل را در بر می‌گیرند. همچنین بیت 2 نشان دهنده قطع یا وصل بودن ترموکوبل می‌باشد (در صورت قطع بودن ترموکوپل، “1” می‌باشد).

توضیحات برنامه:

ابتدا در CodeVision یک پروژه جدید ایجاد کنید.

سپس ورودی و خروجی‌ها، LCD و Chip مربوطه را تعیین کنید.

پس از ذخیره و تولید فایل‌ها، وارد محیط برنامه نویسی می‌شویم.

متغیرها و توابع مورد نیاز را در ابتدای برنامه تعریف می‌کنیم:

 #include <stdlib.h>
 #include <delay.h> 
 #include <stdint.h> // Declare your global variables here float 
 temp_c,temp_f;
 uint16_t temp; 
 int8_t i; 
 char lcd_data[15];
  

قبل از ورود به حلقه اصلی برنامه، می‌توانید نوشته دلخواهتان را بر روی LCD به نمایش درآورید.

 lcd_clear();
 lcd_gotoxy(6,0); //line 1, char 6 
 lcd_printf("KEI"); 
 lcd_gotoxy(6,1); //line 2, char 6
 lcd_printf("CAN"); 
 delay_ms(3000); 
 lcd_clear(); 
  

سپس وارد حلقه اصلی برنامه شده و طبق الگوی ذکر شده در دیتاشیت ماژول Max6675، دیتا را دریافت می‌کنیم و به دو مقدار درجه سانتی‌گراد و درجه فارنهایت تبدیل می‌کنیم. در نهایت این دو مقدار را بر روی LCD نشان می‌دهیم:

 PORTB.4=0; //cs pin go to low 
 delay_ms(10); 
 temp=0; 
 for (i=15; i>=0; --i) 
 { 
 PORTB.7=1; 
    if (PINB.6==1)
    { //set the bit to 0 no matter what temp 
    |= (1 << i); 
        
   } 
   delay_ms(1);
   PORTB.7=0; 
   delay_ms(1);
   } 
   PORTB.4=1; //cs pin go to high 
    if((temp & 0x04)) 
    { 
    lcd_clear(); 
    lcd_gotoxy(0,0); 
    lcd_printf(" Input Error! ");
    }
    else{ 
    temp=temp/8; // >>3 
    temp_c=(float)(temp)*.25;
    temp_f=temp_c*(9/5)+32; 
    lcd_clear(); 
    lcd_gotoxy(0,0); 
    lcd_printf("T= "); 
    ftoa(temp_c,2,lcd_data);// Convert integer to string 
    lcd_puts(lcd_data); //display temperature value in °C 
    lcd_printf(" 'C "); 
    lcd_gotoxy(0,1); 
    lcd_printf("T= ");
    ftoa(temp_f,2,lcd_data); // Convert integer to string 
    lcd_puts(lcd_data); //display temperature value in °F 
    lcd_printf(" 'F "); 
        
    }
    delay_ms(1000);
    } 

نتیجه:

Choose your Reaction!
  • سلام. متاسفانه نحوه تنظیم واحد spi در برنامه فوق مشخص نیست و کد ناقص هست.اگر امکان اش هست تنظیمات واحد spi را هم اضافه بفرمایید. با تشکر

    Reply
    • سلام. عملکرد SPI در کد شبیه سازی شده است و به طور مستقیم از پورت SPI استفاده نشده است.

      Reply
دیدگاه خود را بنویسید

آدرس ایمیل شما منتشر نخواهد شد.

DelfinSync

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

آخرین پست ها

redronic.com