پروژه راه اندازی ماژول 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” می‌باشد).

max6675

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

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

پروژه جدید در CODE VISION

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

تعیین ورودی و خروجی LCD و CHIP در CODE VIsion .

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

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

[cpp] #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]; [/cpp]

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

[cpp] 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(); [/cpp]

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

[cpp] 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); } [/cpp]

نتیجه:

تشخیص-قطعی-ترموکوبل

نمایش-دمای-محیط

 

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

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

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

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

redronic.com