شاید تا حالا نیاز داشتید که از یک LoadCell در کارتون استفاده کنید
منم چند مدت پیش در پروژهآای نیاز به استفادش داشتم
اول میخواستم سیگنال لودسل رو تقویت کنم و بدم به ADC میکروکنترلر
ولی متاسفانه ADC میکروکنترلرم فقط ۱۰ بیت دقت داشت و تازه پایداری جالبی هم نداشت (یا من نتونستم زیاد پایدارش کنم)
بطور خیلی اتفاقی یکی از دوستان چیپی رو بهم معرفی کرد که مخصوص راه اندازی پل مقاومتی بود و خوراکش استفاده از اون برای راه اندازی لودسل بود
خود این چیپ تقویت میکنه ، فیلتر میکنه ، با دقت خیلی خوب و بصورت سریال هم خروجی میده بیرون
و اون چیزی نبود جز AD7730
دیدم از این بهتر دیگه نمیشه و شروع کردم به خوندن منوالش و ور رفتن باهاش
منتها ، همونطور که میدونید ، یه ADC خوب ، ADC مرده هست
اوه ، ببخشید ، منظورم اینه که یه ADC خوب ADC ای هست که ولتاژ رفرنس خوبی هم داشته باشه :biggrin:
من برای تولید یه ولتاژ ثابت و دقیق از چیپ AD584 استفاده کردم.
این چیپ سه تا ولتاژ رفرنس میده که من از پنج ولتش استفاده کردم.
بالاخره بعد از چند روز تونستم جواب بسیار مطلوبی از کارم بگیرم
کتابخونه ای رو که برای AD7730 نوشتم ، اینجا میزارم تا بقیه دوستانم هم ازش استفاده کنن و گسترشش بدن (اگه حوصلشو دارن)
من برای تست این چیپ اونو روی بردبرد تست میکردم ، ولی روی برد برد حداکثر فقط تونستم ۱۲ بیت پایدار از ۱۶ بیت دقت داشته باشم
که این اصلا برای کارم کافی نبود.
ولی در کمال تعجب روی PCB ، دقت ۱۵ بیت از ۱۶ بیت رو داشتم، یعنی فقط یک بیت نوسان ! (اون یه بیت هم بخاطر جابجایی هوا در کنار لودسل بود!

لودسلی که من استفاده کردم :
مدار ساخته شده :
دستگاه در حالت کار (لودسل یه مقدار تار افتاده)
واین هم یک عکس هنری :biggrin:
اینجا من مدارچاپی نمونهآای رو هم قرار میدم ، تا ازش استفاده کنید
اتصالات سخت افزاری :
در فایل هیدر شما میتونید اتصالات میکروکنترلر به چیپ رو تعیین کنید ،ولی پایه MCLK IN همیشه باید به پایه OC0 میکروکنترلر وصل بشه.
چون برای AD7730 فرکانس رو با تایمر ساختم.
یا شما میتونید برای AD7730 یک کریستال بزارید که در اینصورت نیازی به استفاده از پایه OC0 میکروکنترلر نیست
( من خودم چون با کریستال برای AD7730 جواب خوبی نگرفتم ، از میکروکنترلر برای تولید فرکانس برای AD7730 استفاده کردم )
یک نمونه سیم کشی (در PCB ارایه شده به همین شکل است )

کانفیگ متناسب با سیم کشی بالا (در فایل هیدر) :
کد PHP:
#define AD_SCLK_BIT 0
#define AD_RESET_BIT 1
#define AD_DOUT_BIT 2
#define AD_MCLK_BIT 3
#define AD_DIN_BIT 4
#define AD_PORT PORTB
#define AD_PIN PINB
#define AD_DDR DDRB
مدار چاپی نمونه :

توابع:
تابعی برای راه اندازی اولیه کنترلر برای ارتباط برقرار کردن با AD7730
کد PHP:
void AD_InitHW(void);
توابع خواندن از چیپ ---------------------------------------------------
خواندن رجیسترهای ۱۶ بیتی و یا کمتر :
کد PHP:
unsigned int AD_readReg(char regAddr, char bitNum);
خواندن از رجیسترهای ۲۴ بیتی :
کد PHP:
void AD_readReg24(char regAddr, unsigned int *high, unsigned int *low);
رجیسترهایی که میتوان آنها را خواند:
کد PHP:
// Reister's Addresses for Single Read
#define AD_REG_R_STATUS 0x10
#define AD_REG_R_DATA 0x11
#define AD_REG_R_MODE 0x12
#define AD_REG_R_FILTER 0x13
#define AD_REG_R_DAC 0x14
#define AD_REG_R_OFFSET 0x15
#define AD_REG_R_GAIN 0x16
#define AD_REG_R_TEST 0x17
توابع نوشتن در چیپ ---------------------------------------------------
نوشتن در رجیسترهای ۱۶ بیتی یا کمتر:
کد PHP:
void AD_writeReg(char regAddr, unsigned int data, char bitNum);
نوشتن در رجیسترهای ۲۴ بیتی :
کد PHP:
void AD_writeReg24(char regAddr, unsigned int high, unsigned int low);
رجیسترهایی که میتوان در آنها نوشت :
کد PHP:
// Reister's Addresses for Single Write
#define AD_REG_w_STATUS 0x0
#define AD_REG_w_MODE 0x2
#define AD_REG_w_FILTER 0x03
#define AD_REG_w_DAC 0x4
#define AD_REG_w_OFFSET 0x5
#define AD_REG_w_GAIN 0x6
#define AD_REG_w_STOP 0x30
تابع خواندن مقدار ADC در حالت ادامه دار ---------------------------------------------------
کد PHP:
unsigned int AD_readCont16(void);
تابع جهت متوقف کردن خواندنآآ:
کد PHP:
void AD_stopReadCont(void);
لایسنس

سورس کد تحت پروانهآی جامع همگانی گنو منتشر شده که میتوانید در اینجا آنرا بیابید.
ترجمه فارسی این پروانه
دانلود
سورس کتابخانه
مثالی برای شروع
یک مدار چاپی برای استفاده راحتتر از این چیپ :
بصورت فایل PDF
برای نرمآافزار PCB
امیدوارم که بدرد دوستان بخوره :smile:
دانلود فایل های سورس، مثال و PCB به صورت یکجا از سرور ECA:
http://eca.ir/sharing/uploads/13621172771.zip
دیدگاه