NOTICE توجه: این یک موضوع قدیمی است که آخرین پست ارسالی آن مربوط به 3328 روز قبل است . لطفا فقط پاسخ ها ، سوالات و درخواست های 100 درصد مرتبط را به آن ارسال کنید و برای درخواست ها و سوالات جدید موضوع جدیدی را ایجاد کنید
نمایش نتایج: از 1 به 16 از 16

موضوع: راه اندازی تاچ کنترلر ads7843 با میکرو stm32

  1. #1
    Banned
    تاریخ عضویت
    Apr 2011
    نام
    مهدی رحیمی
    نوشته ها
    727
    تشکر
    1,015
    تشکر شده 1,448 بار در 579 پست

    پیش فرض راه اندازی تاچ کنترلر ads7843 با میکرو stm32

    سلام به همه دوستان این تاپیکو زدم تا همه دوستانی از جمله خودم که در این مورد مشکل دارن مطرح کنن
    من با راه اندازی این تاچ کنترلر مشکلی نداشتم راه افتاد ولی مشکل اساسیم کالیبره کردن این کنترلره من هرجایی رو که لمس میکنم در 50% موارد یه عدد خیلی بزرگ رو برمیگردونه که اصلا ربتی به عدد برگشتی از تاچ کنترلر رو نداره
    من این دوتا هدر رو میزارم تا همه دوستان در موردش نظر بدن
    اولین موردی که میخوام بگم اینکه این تاچ کنترلر یه عدد 12 بیتی از لحظه تماس از مختصات x و y برمیگردونه با توجه به دیتاشیت تاچ روی ال سی دی 4.3 اینچ مقاومت ایجاد شده از لمس کردن تاچ از 100 اهم تا 900 اهم تغییر میکنه حالا بیایم با هم چنتا محاسبه کنیم ببینید من درست میگم ما اول تابع زیر رو فراخونی میکنیم
    void TP_GetAdXY(int *x,int *y)
    این تابع مختصات نقطه لمس شده رو با یه عدد 12 بیتی نمایش میده پس داریم :
    [PHP]
    // miyangine moghavemete tach panel az : 100 ohm .........900 ohm
    // 100 ohm : yani makane sefr va 900 ohm yani akharin makane ghable lams tavasot angosht
    // adade bargashti tavasote tach controller az 0 ta 4096 mibashad
    // 4096/900 = 4.55 .......>>>> 100*4.55 = 455 = adad bargashti az makane sefr
    // 900*4.55 = 4096= adad bargashti az akharin makane ghable lams tavasot angosht
    // telorance ebtada va entehaye tach = 4096 - 455 = 3641
    // jaygahe noghte pixel x = 3641 / tedade pixelhaye mehvar x = 3641 / 480 = 7.585
    // jaygahe noghte pixel y = 3641 / tedade pixelhaye mehvar y = 3641 / 272 = 13.386
    // adade bargashti az tabe X_Position_func va Y_Position_func = touch
    // mokhtasate x = (touch - 455) / 7.585
    // mokhtasate Y = (touch - 455) / 13.386
    [/PHP]حالا با توجه به این نکات چرا عدد برگشتی درست نیست البته این توابع رو بیشتر از اون مثالی که تو فروم میکرو های lpc هستش دراوردم اگه کسی میدونه راهنمایی کنه ممنون میشم
    فايل هاي پيوست شده فايل هاي پيوست شده

  2. کاربران : 3 تشکر کرده اند از شما kamikazi برای ارسال این پست سودمند:


  3. # ADS
    Circuit advertisement
    تاریخ عضویت
    Always
    نام
    Advertising world
    نوشته ها
    Many
     

  4. #2
    مدیرکل سایت kavir آواتار ها
    تاریخ عضویت
    Jun 2007
    نام
    زارعی
    نوشته ها
    3,547
    تشکر
    1,218
    تشکر شده 5,684 بار در 1,801 پست

    پیش فرض

    سلام
    فعلا وقت چک ندارم ولی این مثال stm32f103vet6 هست خودتون مقایسه کنید
    فايل هاي پيوست شده فايل هاي پيوست شده
    کویر ویدئو راه اندازی شد

    اگر چه دیر ولی برگشتم به جمع دوستان قدیمی....

  5. کاربران : 5 تشکر کرده اند از شما kavir برای ارسال این پست سودمند:


  6. #3
    کاربر علاقه مند saeyd آواتار ها
    تاریخ عضویت
    Nov 2010
    نوشته ها
    22
    تشکر
    27
    تشکر شده 20 بار در 10 پست

    پیش فرض

    با سلام.
    من هم این را راه انداختم ولی دلچسب نیست
    سورس و عکس رامیزام مشاهده کنید چهار نقطه را دقیقا در لبه فشار دادم ولی کجا خورده و خود نوشته هم دارای نویز است .
    تصاوير کوچک فايل پيوست تصاوير کوچک فايل پيوست برای دیدن سایز بزرگ روی عکس کلیک کنید

نام: DSC00173.jpg
مشاهده: 85
حجم: 142.2 کیلو بایت  
    فايل هاي پيوست شده فايل هاي پيوست شده
    • نوع فایل: rar Source.rar (1.2 کیلو بایت, 149 نمايش)

  7. تشکرها از این نوشته :


  8. #4
    کاربر علاقه مند saeyd آواتار ها
    تاریخ عضویت
    Nov 2010
    نوشته ها
    22
    تشکر
    27
    تشکر شده 20 بار در 10 پست

    پیش فرض

    با سلام
    دوستان مختصات خوانده شده تاچ من
    [150 , 1970] [150 , 230]
    [1925, 1970] [1925 , 80]

    به زبون ساده یعنی مربع ال سی دی را ذوذنقه میخونه ؟
    مال شما هم همینوره ؟

  9. تشکرها از این نوشته :


  10. #5
    کاربر فعال
    تاریخ عضویت
    Nov 2009
    نوشته ها
    115
    تشکر
    77
    تشکر شده 83 بار در 35 پست

    پیش فرض

    سلام
    من راه انداختمش
    دقتش جتي به پيكسل رسيده
    تقريبا هر 1.5 پيكسل رو تشخيص ميده
    دو مسئله مهم وجود داره
    يك كاليبره كردن
    دو خواندن 10 بار مقدار نقطه مورد نظر و گرفتن ميانگين
    البته من با اتمل راه اندازي كردم كه نبايد تفاوتي داشته باشه چون كاليبرش كه يكيه ميمونه خود اي سي كه راش انداختيد
    اينا رو گفتم كه بدونيد دقت اي سي قابله قبوله
    نا گفته نماند هدر كاليبره كرده تاچ مقدار وروديش حتما بايد 10 بيتي باشهتا نتايج درستي نشون بده يعني بايد اطلاعات دريافتي از آي سي adc7843 رو دوبيت به راست شيفت بديد
    فايل هاي پيوست شده فايل هاي پيوست شده

  11. کاربران : 3 تشکر کرده اند از شما m_online3710 برای ارسال این پست سودمند:


  12. #6
    کاربر علاقه مند saeyd آواتار ها
    تاریخ عضویت
    Nov 2010
    نوشته ها
    22
    تشکر
    27
    تشکر شده 20 بار در 10 پست

    پیش فرض

    مهندس مقادیر خوانده شده شما مستطیل کامل تشکیل میده ؟
    مال من اولش نزدیک به 150 پیکسل اختلاف داره

  13. تشکرها از این نوشته :


  14. #7
    کاربر فعال
    تاریخ عضویت
    Nov 2009
    نوشته ها
    115
    تشکر
    77
    تشکر شده 83 بار در 35 پست

    پیش فرض

    كاملا مستطيله
    من باهاش كيبورد تاچ درست كردم
    كه خيلي عالي هم جواب ميده و تقريبا خطاش خيلي پايينه
    تازه من يادمه يه بار بدون كاليبره هم استفاده كردم خيلي خوب جواب ميداد اون موقع فقط براي اينكه اعداد خونده شده از تاچ با ال سي دي هماهنگ بشه اونا رو تقسيم به يه عددي نزديك 1.5 ميكردم كه با كاليبره كردن اونم نميخواد
    من يه ال سي دي ديگه دارم كه اصلا اي سي تاچ نداره اونو با adc مي خونم و كاليبرش ميكنم ببينم اگه جواب بده معلومه مشكل از برنامه ADS7843 شما هست
    اين ال سي دي كه ميگم مشكلي شبيه مشكل شما رو داره
    يك محور رو دقيقا درست ميداد اما محور ديگش معلوم نبود بر چه اساسي كار ميكنه
    چند روز وقت بديد تست ميكنم و جواب ميدم

    البته نزديك لبه ها دقت برنامه من به 6 و 7 پيكسل ميرسه
    اما حتما كاليبره كنيد
    اصلا تا حالا كاليبره كرديد؟(اينو در رابطه با پست يك گفتم چون با كاليبره كردن ديگه نيازي به محاسبات نداره. خودش محاسبات لازم رو انجام ميده)
    ویرایش توسط m_online3710 : 05-11-2012 در ساعت 17:10

  15. کاربران : 2 تشکر کرده اند از شما m_online3710 برای ارسال این پست سودمند:


  16. #8
    Banned
    تاریخ عضویت
    Apr 2011
    نام
    مهدی رحیمی
    نوشته ها
    727
    تشکر
    1,015
    تشکر شده 1,448 بار در 579 پست

    پیش فرض

    مهندس فرایند کالیبره کردن برای چیه در واقع یعنی ما باید 3 نقطه رو لمس کنیم که میکرو ما بر اساس این 3 نقطه تصمیم بگیره و به قول معروف کالیبره بشه
    در ضمن مهندس من قسمت دریافت اطلاعات رو از ای سی تاچ متوجه نمیشم ما دوبار میایم ادرس 0X00 از تاچ میخونیم بعدش میریز تو یه متغیر و اون رو شیفت میدیم وبرای بایت بعدی هم همینطور اصول این شیفت دادنا چیه یعنی اولین 8 بیتی که میگیریم MSB یا LSB میشه توضیح بدین این تابع من برای خوندن از مختصات X هستش نمیدونم درسه یا نه و تقریبا تو هر 5 بار فقط یه بار مختصات رو تقریبا درست نشون میده
    [PHP]
    unsigned int X_Position_func(void)
    {
    u16 temp = 0;
    unsigned int x_pos_tmp;

    // CS ra low mikonim,
    ADS7843_CS_Enable;

    // ersale farmane 0xD0 ya Byte-control jahate daryafte etelaate marbot be mokhtasate X
    SPI2_WriteReceive_BYTE(0xD0);

    // daryafte dade az porte miso va zakhire an dar motaghayer "x_pos"
    temp= SPI2_WriteReceive_BYTE(0x00);
    x_pos_tmp =temp<<8;
    temp= SPI2_WriteReceive_BYTE(0x00);
    x_pos_tmp |=temp;
    x_pos_tmp >>=3;
    x_pos_tmp &=0XFFF;

    // CS ra gheire faal mikonim,
    ADS7843_CS_Disable;

    return x_pos_tmp;
    }

    [/PHP]

    اگه کسی از دوستان میتونه کمک کنه ممنون میشم راهنمایی کنه که واقعا از عملکرد توابعی که بکار میبریم اگاه باشیم

  17. تشکرها از این نوشته :


  18. #9
    کاربر فعال
    تاریخ عضویت
    Nov 2009
    نوشته ها
    115
    تشکر
    77
    تشکر شده 83 بار در 35 پست

    پیش فرض

    ببين فرايند كاليبره بخاطر اينه كه محورهاي تاچ همون محورهاي مورد نظر ما در رياضيات نيستند
    عموما با يه زاويه اي اختلاف دارند
    فكر كنم تو مجله 9 يا 10 از همين مجلات pmm توضيح داده شده بود
    راجب توابع من از هدر آماده استفاده كردم و اطلاع كاملي ندارم
    دوستان خردمند بايد بيان وسط

  19. تشکرها از این نوشته :


  20. #10
    مدیر بخش STM32 sigma-mx آواتار ها
    تاریخ عضویت
    Nov 2009
    نام
    سعید شریفیان
    نوشته ها
    1,421
    تشکر
    804
    تشکر شده 2,520 بار در 978 پست

    پیش فرض

    مهندس در اینجا تابع SPI2_WriteReceive_BYTE یک تابع استاندارد cmsis نیست و این تابع بصورت 8 بیتی اطلاعات رو جابجا میکنه. اول با دستور خوندن موقعیت X رو میفرسته ، بعد 8 کلاک برای خوندن 8 بیت بالایی میفرسته ( با ارسال 0x00 ) و سپس این بایت خونده شده رو تو یه متغیر 16 بیتی ذخیره میکنه و 8 تا بسمت چپ شیفتش میده تا درواقع بره رو 8 بیت بالایی متغیر 16 بیتی . بعد دوباره با ارسال 0x00 ، بایت پایینی رو میخونه و اینبار فقط کافیه که این 8 بیت روی 8 بیت پایین متغیر OR بشه ( نیاز به شیفت نداره ) . حالا ما 16 بیت رو در دو نوبت خوندیم . ( چون مقدار مورد نظر 12 بیتی هست مجبوریم تو متغیر 16 بیتی ذخیره کنیم ).
    حالا چون مقدار معتبر ما باید 12 بیت باشه و رزولوشن آیسی هم همین قدره پس برای اطمینان باید عدد 16 بیتی رو با 12 تا 1 یا 0xFFF هگز AND کنیم تا مطمئن بشیم که عدد از این مقدار بالاتر نمیره . بعد برای همون مساله ای که دوستان گفتن ( کاهش حساسیت ADC ) باید به مقدار لازم رقم از سمت راست عدد حذف کرد که این کار معادل شیفت براست هست . ( با هر شیفت براست یک رقم باینری از سمت راست حذف میشه ) در واقع با هر بار شیفت براست عدد تقسیم بر 2 میشه . معمولا 2 بار شیفت میدن که مبدل رو از 12 بیت تبدیل به 10 بیت میکنه ( این روش نرم افزاری کاهش حساسیت هست ) . البته باید تو این مساله به ابعاد تصویر هم دقت بشه . اگه ابعاد تصویر خیلی بزرگ باشه ممکنه به دقت بیشتر نیاز باشه ولی اگر اندازه کم باشه برای ثبات تاچ میشه حتی تا 8 بیت هم رسوندش ....



    در ضمن کالیبره کردن هم با این خاطره که در واقع مبدل ما عدد 0 تا 1023 رو مثلا متناظر با پیکسل 0 تا 1023 نشون نمیده ! اگه شما تاچ کالیبره نشده رو تست کنید میبینید که مثلا پیکسل اول از 147 شروع شده تا پیکسل آخر مثلا 708 !
    هم برای محور X و هم برای Y . خب پس میگم براحتی میشه با یه آفست دادن یا تقریق بصورت دستی کالیبره کرد ولی بازم به این سادگی نیست !! گاهی مشکل بزرگتره و اون هم اینه که علاوه بر تنظیم نبودن مختصات در مقیاس خطی ، ما مشکل scale هم داریم !! یعنی مثلا باید مقادیر 1.4 برابر بشن تا رو هم بیفتن !
    به همین خاطر - تنظیم scale و آفست - میان و از ماتریس استفاده میکنند . که مثلا با 3 نقطه تبدیلات مقیاس انجام بشه و از این به بعد اینها تو مقادیر خونده شده لحاظ بشه .

    امیدوارم تونسته باشم منظورم رو برسونم ...
    یا حق
    ویرایش توسط sigma-mx : 06-11-2012 در ساعت 23:30

  21. کاربران : 5 تشکر کرده اند از شما sigma-mx برای ارسال این پست سودمند:


  22. #11
    Banned
    تاریخ عضویت
    Apr 2011
    نام
    مهدی رحیمی
    نوشته ها
    727
    تشکر
    1,015
    تشکر شده 1,448 بار در 579 پست

    پیش فرض

    با سلام به همه دوستان راه اندازی تاچ کنترلر هم انجام شد این پروژه رو میزارم تا همه دوستان ازش استفاده کنن کاملترین پروژه در عین سادگی هستش که بک لایتم با pwm راه اندازی کرده که در عین خودش بی نظیره من اصلا ندیدم راجبه pwm تو این فروم ها صحبت بشه انشاالله که مارو هم تو این شبا دعا کنید
    پرشین گیگ - دانلود - touch&fat_sdio.rar
    ویرایش توسط kamikazi : 26-11-2012 در ساعت 16:07

  23. کاربران : 7 تشکر کرده اند از شما kamikazi برای ارسال این پست سودمند:


  24. #12
    کاربر فعال jonbakhsh آواتار ها
    تاریخ عضویت
    Apr 2008
    نام
    H.J
    نوشته ها
    371
    تشکر
    192
    تشکر شده 225 بار در 101 پست

    پیش فرض

    آقا من یک برد 7 اینچ سایت خریدم lcd به راحتی درایو کردم ولی چند وقته این تاچه پوستمو کنده . به روش مقاومتی درایو کردم ولی با این 7843 ads مشکل دارم . شاید هم مال برد باشه آخه 2 تا پین هدر 2*17 داره که پایه TE اون قطع بود و به پین هدی دیگه وصل نبود خودم وصلش کردم
    کسی هست با این توابه کار کرده باشه بگه هر کدوم چیکار میکنه شاید یه ریزه کاری داره که من بلد نیستم

    void Touch_Init(void);
    void Pen_Int_Set(u8 en);
    void Touch_Configuration(void);
    void ADS_Write_Byte(u8 num);
    u16 ADS_Read_AD(u8 CMD);
    u16 ADS_Read_XY(u8 xy);
    u8 Read_TP_Once(void);
    u8 Read_ADS2(u16 *x,u16 *y);
    u8 Read_ADS(u16 *x,u16 *y);
    void Drow_Touch_Point(u16 x,u16 y);
    u8 Get_Adjdata(void);
    //void Refreshes_Screen(void);
    void Convert_Pos(void);
    void Draw_Big_Point(u16 x,u16 y);
    void Touch_Adjust(void);

  25. #13
    مدیر انجمن mzarkoob آواتار ها
    تاریخ عضویت
    Jun 2011
    نام
    مهدی زرکوب
    نوشته ها
    2,902
    تشکر
    1,202
    تشکر شده 2,317 بار در 1,273 پست

    پیش فرض

    سلام
    من از این توابع 7 اینچ استفاده کردم موردی نداشت . البته با یه ال سی دی دیگه که 7 اینچ بود. برای فروشگاه را تست نکردم
    اول میاد 4 تا نقطه گوشه را میگیره بعد با یه تابع دیگه هر نقطه ای بزنی بهت مختصاتشو میده و می تونی از اون استفاده کنی

  26. #14
    کاربر فعال jonbakhsh آواتار ها
    تاریخ عضویت
    Apr 2008
    نام
    H.J
    نوشته ها
    371
    تشکر
    192
    تشکر شده 225 بار در 101 پست

    پیش فرض

    یعنی حتما باید از
    Touch_Configuration استفاده کنی ؟؟؟
    امکانش هست نمونه برنامتونو برام بفرستید . من به برد ads7843 شک کردم
    یا اگه امکانش هست توابع درایو تاچ برام بفرستید چون cd که برام فرستاده شده ظاهرا بد رایت شده شانس منم
    پوشه sampel نه کپی میشه و نه باز میشه
    ویرایش توسط jonbakhsh : 18-03-2014 در ساعت 20:08

  27. #15
    عضو جدید
    تاریخ عضویت
    Aug 2012
    نوشته ها
    5
    تشکر
    0
    تشکر شده 1 بار در 1 پست

    پیش فرض آیا شده؟؟؟

    سلام به دوستان عزیزم. آیا کسی تا به حال با این مشکل برخورد کرده که مقدار y خونده شده از تاچ توسط آیسی xpt2046 چه به سمت راست و چه به سمت پایین حرکت میکنیم تغییر میکنه (افزایش داره) . در ضمن به دلیل سهل انگاری پایه های تاچ و پایه های آیسی جابحا هستند. (xp و xn باید جابجا شوند و yp وyn هم با هم باید جابجا شوند.) .آیا این جابجایی میتونه خوندن رو دچار اشکال کنه؟؟؟

  28. #16
    عضو جدید
    تاریخ عضویت
    Aug 2012
    نوشته ها
    5
    تشکر
    0
    تشکر شده 1 بار در 1 پست

    پیش فرض ایا شده؟>>

    با سلام. با بررسی دقیق تر متوجه شدم که جابجایی هیچ تاثیری نداره و فقط تغییرات جابجا میشه دلیلش هم خیلی واضحه چون عملا ولتاژ بین دو پایه ای که در یک صفحه هستن و مثل یک خازن عمل میکنند رو میخونیم.
    خب در صفحه y تغییرات در هردوسمت وجود داره و به نظر میرسه تاچ در این صفحه مشکل داره علی رغم اینکه در صفحه x کاملا درسته؟؟؟
    به نظرتون باید بیخیال این تاچ بشم. تاچ 5 اینچی که تازه از کویرالکترونیک خریدم و خراب هستش. البته همراه با ال سی دی هستش. بدون اینکه استفاده کنم (واقعا زور داره)
    به نظرتون چیکار باید کرد؟؟؟

موضوعات مشابه

  1. کتابخانه درایو ADS7843 برای stm
    توسط jonbakhsh در انجمن stm32
    پاسخ: 0
    آخرين نوشته: 13-03-2014, 19:04
  2. پاسخ: 0
    آخرين نوشته: 29-12-2013, 14:55
  3. راه اندازی و کار با keypad در stm32
    توسط spring110.sh در انجمن stm32
    پاسخ: 2
    آخرين نوشته: 21-09-2013, 10:05
  4. Ads7843
    توسط jik در انجمن LPC series (NXP)
    پاسخ: 1
    آخرين نوشته: 29-04-2013, 22:16
  5. راه اندازی ای سی ads7843 کنترلر تاچ
    توسط Aghaeifar در انجمن LPC series (NXP)
    پاسخ: 3
    آخرين نوشته: 03-08-2010, 21:14

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •