اطلاعیه

Collapse
No announcement yet.

مشکل با ADC میکرو stm32f103

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    مشکل با ADC میکرو stm32f103

    سلام
    یه مشکل با ADC پیدا کردم ممنون میشم راهنمایی کنید.
    میخوام دما رو از طریق سنسور دمای lm35 روی السیدی نمایش بدم .(از برد مینی فروشگاه استفاده میکنم)خود سنسور رو با اسکوپ تست کردم تو دمای معمولی 200 میلی ولت نشون میداد و وقتی دستم رو روش میگیرم به 300 میلی ولت میرسه.
    ولی وقتی من برنامه نویسی میکنم که مقدار ولتاژ سنسور توسط ADC با استفاده از فرمول زیر به میلی ولت تبدیل بشه و روی السیدی نمایش داده بشه عدد 2550 به بالا روی السیدی نشون داده میشه و هی تغییر میکنه وقتی هم دستم رو میگیرم روی سنسور تغییرات محسوسی نمیبینم و این یعنی پروژه دماسنجم کار نمیکنه .ایراد کار کجا میتونه باشه؟چطوری برطرفش کنم ؟

    (وقتی پایه ADC رو به گراند وصل میکنم عدد صفر روی السیدی نشون داده میشه و وقتی به تغذیه وصل میکنم 3299)
    کد:
    ;uint32_t T,a
     ;(a = ADC_GetConversionValue(ADC1 
      ;T=(a*3300)/4096
    main برنامه :
    کد:
    #include "stm32f10x.h"
    #include "lcd4bit.h"
    #include "stdio.h"
     
    void Delay(__IO uint32_t num)
    {
    	__IO uint32_t index = 0;
    
    	/* default system clock is 72MHz */
    	for(index = (72000 * num); index != 0; index--)
    	{
    	}
    }
    
    __IO uint32_t ADCConvertedValue;
    
    
    void GPIO_Configuration(void);
    
    //*********************************MAIN************************************//
    
    int main(void)
    {
    
     ADC_InitTypeDef ADC_InitStructure;
    
     char s[16];
     uint32_t T,a;
     
    
     GPIO_Configuration();
     RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1, ENABLE);
     RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
     ADC_InitStructure.ADC_Mode = ADC_Mode_Independent;
     ADC_InitStructure.ADC_ScanConvMode = DISABLE;
     ADC_InitStructure.ADC_ContinuousConvMode = ENABLE;
     ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None;
     ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;
     ADC_InitStructure.ADC_NbrOfChannel = 1;
     ADC_Init(ADC1, &ADC_InitStructure);
    
     ADC_RegularChannelConfig(ADC1, ADC_Channel_1, 1, ADC_SampleTime_13Cycles5);
    
     ADC_Cmd(ADC1, ENABLE);
     ADC_ResetCalibration(ADC1);
     while(ADC_GetResetCalibrationStatus(ADC1));
     ADC_StartCalibration(ADC1);
     while(ADC_GetCalibrationStatus(ADC1));
     ADC_SoftwareStartConvCmd(ADC1, ENABLE);
    
     while (1)
     {
      a = ADCConvertedValue; 		 
      T=(a*3300)/4096;
    
      lcd_init();
     { 								
    	sprintf(s,"input:%d mv",T);
    	set_cursor(1,1);
    	lcd_putsf(s);
      Delay(50);
      }
     }
    }
    
    
    void GPIO_Configuration(void)
    {
    GPIO_InitTypeDef GPIO_InitStructure;
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1;	 // A0->analog input for ADC ch1-->LM35
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;
    GPIO_Init(GPIOA, &GPIO_InitStructure);
    }
    
    //********************************************************************

    #2
    سوال: مشکل با ADC میکرو stm32f103

    سلام دوستان.
    من به تازگی شروع به یادگیری این میکروکردم و برد رو از خود فروشگاه گرفتم.
    بردم Catalyst F100Z هست ولی تا اینجای کار 2 تا مشکل داشتم.
    اولین مشکل اینه که میکرو به صورت jtag شناسایی نمیشه، هم با Jlink, و ulink و stlink تست کردم، نشد که نشد ولی به صورت sw مشکلی نداره.
    مشکل دوم هم که دارم با واحد adc هست.
    که وقتی واحد رو کانفیگ میکنی همینطوری الا بختکی عدد میده بهت همون مشکلی که دوستمونم داشت، یعنی منم اومدم یه سنسور دما وصل کردم دقیقا همین مشکلاتی که دستمون عنوان کرد داشتم منم ولی با پتانسیومتر اوکی بود، ولی بازم مقداری که از پتانسیومتر میخوند هم بالا پایین میشد.
    بعد اومد 16 تا پتانسیومتر وصل کردم بهش از adc1 ,,2 استفاده کردم هرکدم 8تا.
    اینبار عجیب تر شد! مقدار هایی مه بودن درست نبودن مثلا کانال 1و2 باهم بالا پایین میشدن. یا مثلا کانال 0 رو زیاد میکردی میقدار کانال 6 زیاد میشد!
    نمیدونم مشکل از کجاس اما فایل هایی رو آپلود میکنم اگه میشه راهنمایی کنید، ممنونم.
    عکس زیر مربوط به پیکر بندی adc1 در cube هست:


    عکس بعدی برای adc2:


    عکس زیر کد نوشته شده در keil:


    دوتا عکس بعدی هم برای stm studio هست که مقادیر adc رو میبینیم، که این مقدار برای حالتیه که هیچی به پایه ها وصل نیست!

    توی کانال یوتیوب من قراراه طراحی انواع بردهای الکترونیکی مثل بردهای تک لایه، دو لایه یا به طور کلی بردهای چند لایه، بردهای مبتنی بر میکروکنترلر، بردهای صنعتی، بردهای الکترونیک قدرت و بردهای فرکانس بالارو یاد بگیریم.
    همینطور کدنویسی انواع میکروکنترلرهای 8 بینی مثل میکروکنترلرهای خانواده AVR-STM8، میکروکنترلرهای میبتی بر معماری ARM مثل STM32 و پردازنده های مخصوص اینترنت اشیاء مثل ESP32-ESP8266 و DSPها یاد میگیریم.
    https://www.youtube.com/@aKaReZa75​

    دیدگاه


      #3
      پاسخ : مشکل با ADC میکرو stm32f103

      با عرض سلام مجدد.
      دوستان عزیز من کماکان منتظر کمک شما هستم :(
      ممنونتون میشم راهنمایی کنید، متشکرم
      توی کانال یوتیوب من قراراه طراحی انواع بردهای الکترونیکی مثل بردهای تک لایه، دو لایه یا به طور کلی بردهای چند لایه، بردهای مبتنی بر میکروکنترلر، بردهای صنعتی، بردهای الکترونیک قدرت و بردهای فرکانس بالارو یاد بگیریم.
      همینطور کدنویسی انواع میکروکنترلرهای 8 بینی مثل میکروکنترلرهای خانواده AVR-STM8، میکروکنترلرهای میبتی بر معماری ARM مثل STM32 و پردازنده های مخصوص اینترنت اشیاء مثل ESP32-ESP8266 و DSPها یاد میگیریم.
      https://www.youtube.com/@aKaReZa75​

      دیدگاه

      لطفا صبر کنید...
      X