خانه / میکروکنترلرها / میکروکنترلر های ARM / مطالب آموزشی میکروکنترلرهای ARM / آموزش میکروکنترلرهای LPC1768 جلسه هفتم: مبدل دیجیتال به آنالوگ lpc17xx_dac.h

 

آموزش میکروکنترلرهای LPC1768 جلسه هفتم: مبدل دیجیتال به آنالوگ lpc17xx_dac.h

کاربران عزیز وبسایت میکرو دیزاینر الکترونیک اگر جلسه قبلی آموزش میکروکنترلر LPC1768 را خونده باشید میدانید که قسمت مبدل آنالولوگ به دیجیتال یا ADC میکروکنترلر را برسی کردیم و یادگرفتیم که اگر سیگنال آنالوگی بود و خواستیم تبدیل به دیجیتال کنیم باید از ADC استفاده کنیم.ولی اگر سیگنال دیجیتال باشه و بخواهیم آن را تبدیل به آنالوگ کنیم چی؟

برای تبدیل سیگنال دیجیتال به آنالوگ از DAC یا مبدل دیجیتال به آنالوگ استفاده می شود.در میکروکنترلر LPC1768 یک واحد DAC پیش بینی شده است که در در این جلسه یاد راه اندازی اونو یاد میگیریم.

آموزش میکروکنترلرهای LPC1768 جلسه هفتم: مبدل دیجیتال به آنالوگ lpc17xx_dac.h

مشخصات مبدل دیجیتال به آنالوگ میکروکنترلر LPC1768

  •  دارای دقت 10 بیتی
  • دارای حالت کاهش توان
  • DAC از نوع آرایه مقاوتی
  • خروجی بافر شده حداکثر 700 میلی آمپر
  • حداکثر سرعت 1مگاهرتز
  • سرعت قابل تنظیم نسب به توان

راه اندازی مبدل دیجیتال به آنالوگ میکروکنترلر LPC1768

  1. تنظیم کلاک با استفاده از بیت های 22و23 رجیستر PCLKSEL0  یا از Configuration Wizard بصورت دستی.
  2. تنظیم پین AOUT بعنوان خروجی
  3. گذاشتن مقادیر دیجیتال در رجیستر DACR

 

نکته : اطلاعات DAC را با GPDMA مستقیم میتوان روی حافظه نوشت که در مباحث پیشرفته آموزش LPC1768 اینا را برسی میکنیم.

نکته : برای دسترسی به Configuration Wizard روی فایل system_LPC17xx.c که بهمراه فایل های CMSIS روی پروژه اضافه کردین یا بطور خودتار توسط KEIL اضافه شده کلیک کنید تا باز بشه. اگر فایل متنی را آورد در زیر فایل متنی روی نوشته Configuration Wizard کلیک کنید.ایجاد تغییرات هم که خیلی راحته کمی کنجکاوی کنید یاد میگیرید.

حتما در ادامه این مطلب را هم بخوانید:  اتصال STM32 به کامپیوتر با پورت سریال (بخش تکمیلی راه اندازی پروتکل سریال STM32)

 

توابع CMSIS  مبدل دیجیتال به آنالوگ میکروکنترلر LPC1768

تابع DAC_Init

void    DAC_Init(LPC_DAC_TypeDef *DACx);

ورودی تابع باید LPC_DAC باشه.

تابع DAC_SetBias

void    DAC_SetBias (LPC_DAC_TypeDef *DACx,uint32_t bias);

ورودی اول تابع باید LPC_DAC باشه.

ورودی دوم نسبت توان مصرفی با عملکرد DAC تنظیم میکنه.اگر صفر باشه 700uA و اگر یک باشه 350uA البته میتونید بجای صفر و یک بترتیب DAC_MAX_CURRENT_700uA یا DAC_MAX_CURRENT_350uA بنویسید.

نکته : زمان تنظیم شده در فیلد BIAS در صورتی معتبر است که بار خازنی روی پایه AOUT نباید از 100Pf بیشتر نباشه.

تابع  DAC_UpdateValue

void    DAC_UpdateValue (LPC_DAC_TypeDef *DACx, uint32_t dac_value);

ورودی اول تابع باید LPC_DAC باشه.

ورودی دوم مقدار دیجیتال 10 بیتی میباشد که باید به آنالوگ تبدیل بشه.

مثال اول :

 #include "inc/lpc17xx.h"
  #include "inc/lpc17xx_dac.h"
   #include "inc/lpc17xx_pinsel.h"

  int main(void){
/*
	 * Init DAC pin connect
	 * AOUT on P0.26
	 */
	PINSEL_CFG_Type PinCfg;
	PinCfg.Funcnum = 2;
	PinCfg.OpenDrain = 0;
	PinCfg.Pinmode = 0;
	PinCfg.Pinnum = 26;
	PinCfg.Portnum = 0;
	PINSEL_ConfigPin(&PinCfg);
	
    DAC_Init(LPC_DAC);
	DAC_SetBias(LPC_DAC,DAC_MAX_CURRENT_350uA);
	DAC_UpdateValue (LPC_DAC,1000);
   return 1;
  }

خروجی مثال اول ولتاژ ثابت تقریبا 3 ولت است.

 مبدل دیجیتال به آنالوگ lpc17xx_dac.h

مثال دوم :

 #include "inc/lpc17xx.h"
  #include "inc/lpc17xx_dac.h"
   #include "inc/lpc17xx_pinsel.h"
	//cpu clock = 100Mhz 
	 
    void delay(uint32_t j){// j us
       uint32_t i=0;
       for(i=0;i<(100*j);i++);
     }

  int main(void){
	uint16_t i;

/*
	 * Init DAC pin connect
	 * AOUT on P0.26
	 */
	PINSEL_CFG_Type PinCfg;
	PinCfg.Funcnum = 2;
	PinCfg.OpenDrain = 0;
	PinCfg.Pinmode = 0;
	PinCfg.Pinnum = 26;
	PinCfg.Portnum = 0;
	PINSEL_ConfigPin(&PinCfg);
	

    DAC_Init(LPC_DAC);
	DAC_SetBias(LPC_DAC,DAC_MAX_CURRENT_700uA);
	
	  while(1){
     	   for(i=0;i<1023;i++){
		   DAC_UpdateValue (LPC_DAC,i);
		   delay(100);
	       }
	  }
   return 1;
  }

خروجی مثال دوم : یک سیگنال دندانه اره ای است که در شکل زیر میتونید مشاهده کنید.

حتما در ادامه این مطلب را هم بخوانید:  آموزش ARM LPC1768 (قسمت اول)

 مبدل دیجیتال به آنالوگ lpc17xx_dac.h

پایان جلسه هفتم ? دوستان عزیز برای تهیه هر جلسه از این آموزش ها کلی نفر ساعت کار میکنیم با رعایت کپی رایت و معرفی وبسایت ما به دوستانتان با ما در این راه شریک باشید.

جلسات قبلی و ادامه آموزش ها را از ایجا بخوانید.

اگر سوال تخصصی داشتین در اینجا بدون نیاز به ثبت نام , فوری مطرح کنید.

درباره ی جهاندیده

با سلام درود به شما که مطالب سایت خودتان را مطالعه می کنید امیدوارم مطالب سایت برایتان مفید باشد و باعث پیشرفت روز افزون شما شود. دوران راهنمایی در کار منتاژ کیت های الکترونیکی بودم تا رفتم هنرستان ^_^ دو سال هنرستان الکترونیک خیلی چیزها یاد گرفتم ! دو سال کاردانی الکترونیک و کارشناسی ICT گرایش بهره برداری از سیستم های مخابراتی پر از تجربه بود و مدتی است در الکترونیک دنیای مشغولم . الکترونیک – تکنولوژی – ICT ، برنامه نویسی …

یک دیدگاه

  1. اقا دست درد نکنه خدا قوت

پاسخ دهید

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