فهرست مطالب:
تصویری: لمس خازنی با میکروکنترلر PIC16F886: 3 مرحله
2024 نویسنده: John Day | [email protected]. آخرین اصلاح شده: 2024-01-30 08:57
در این آموزش ما نحوه استفاده از میکروکنترلر PIC16F886 برای تشخیص تفاوت در ظرفیت را بررسی می کنیم ، بعداً می توان از آن برای تشخیص فشار دادن صفحه لمسی استفاده کرد. خوب است قبل از ساخت این پروژه با میکروکنترلرهای عکس آشنا شوید.
مرحله 1: مدار خود را سیم کشی کنید
ابتدا ، اجازه دهید با سیم کشی مدار مطابق شماتیک بالا شروع کنیم. برای ساختن صفحه لمسی می توانید فویل آلومینیومی را به شکل مربع تا کرده و روی سیم بچسبانید. می توانید مقادیر مختلفی را برای مقاومت 100k آزمایش کنید ، من دریافتم 100k برای من خوب کار می کند.
پین RC4 برای شروع شارژ/تخلیه ظرفیت مورد اندازه گیری استفاده می شود. C12IN0 به طرف یک مقایسه کننده داخلی و پین C1IN به طرف + همان مقایسه کننده متصل است. هنگامی که ولتاژ C12IN0 به بالای ولتاژ C1IN برسد ، میکروکنترلر خازنی را کاملاً شارژ می بیند. تقسیم کننده ولتاژ مقاومتی اطمینان حاصل می کند که C1IN نزدیک به 5 ولت است.
از آنجا که صفحه لمسی بستگی به وجود خازن قابل توجهی بین شما و زمین مدار دارد ، احتمال کار نکردن باتری وجود دارد.
مرحله 2: فایل سربرگ
با تمام اتصالات تمام شد؟ خوب ، ما با فایل هدر ادامه می دهیم. ما از کامپایلر XC8 استفاده خواهیم کرد و همانطور که از عنوان آن پیداست ، اکنون باید یک پروژه سربرگ جدید در پروژه خود ایجاد کرده و کد زیر را کپی-پیست کنید. به همان خوبی می توانید آن را در بالای کد اصلی خود بدون هیچ عنوان سربرگ کپی و پیست کنید.
#تعریف CALIBRATION_SAMPLE 20 #تعریف TOUCH_SAMPLE 10 #تعریف DISCHARGE_TIME 5
int شمارش ؛
int calibrationValue، maxCalibrationValue، minCalibrationValue؛
int getChargeTime () {
int timerCount = 0؛ int overflowCount = 0؛ // ظرفیت تخلیه برای اندازه گیری RC4 = 0 ؛ _ تاخیر_ثانیه (DISCHARGE_TIME) ؛ // تأخیر کافی برای تخلیه کامل (تقریباً به طور کامل) "خازن" // پاک کردن پرچم سرریز تایمر T0IF = 0 ؛ // منتظر بمانید تا زمان سنج سرریز شود ، شمارش را از 0 شروع کنید ((T0IF) ؛ T0IF = 0 ؛ // شروع ظرفیت خازنی برای اندازه گیری RC4 = 1 ؛ // منتظر بمانید تا ظرفیت خازنی تا ولتاژ مرجع شارژ شود (C1OUT) {timerCount = TMR0؛ if (T0IF) {overflowCount ++؛ T0IF = 0 ؛ }} count = (256 * overflowCount) + timerCount؛ // تنظیم مجدد timerCount timerCount = 0؛ overflowCount = 0؛ تعداد بازگشت ؛ }
int isTouching (int tolerance) {
// میانگین چند نمونه متوسط دو برابر = 0؛ برای (int i = 0 ؛ i calibrationValue+tolerance) میانگین ++ ؛ } میانگین /= TOUCH_SAMPLE؛ // اگر یک عدد (میانگین> 0.2) 1 باشد ، عددی بین 0 تا 1 خواهد بود. بازگشت 0 ؛ }
void calibrate () {
int متوسط = 0؛ نمونه های int [CALIBRATION_SAMPLE] ؛ // مقدار متوسط برای (int i = 0 ؛ i <CALIBRATION_SAMPLE ؛ i ++) {نمونه = getChargeTime () ؛ میانگین += نمونه ؛ } میانگین /= CALIBRATION_SAMPLE ؛ calibrationValue = میانگین ؛ // دریافت مقادیر max/min maxCalibrationValue = نمونه [0] ؛ minCalibrationValue = نمونه [0] ؛ برای (int i = 0 ؛ i maxCalibrationValue) maxCalibrationValue = نمونه ؛ if (نمونه <minCalibrationValue) minCalibrationValue = نمونه ؛ }}
void setupCapacitiveTouch () {
// تنظیم پین شارژ/تخلیه به عنوان خروجی ، در این حالت RC4 TRISCbits. TRISC4 = 0 است؛ // تنظیم timer0 T0CS = 0؛ PSA = 1 ؛ // راه اندازی مقایسه C1CH0 = 0؛ C1CH1 = 0 ؛ C1R = 0 ؛ C1ON = 1 ؛ C1POL = 0 ؛ // پاکسازی مقادیر شمارش تعداد = 0؛ // پاکسازی مقادیر کالیبراسیون calibrationValue = 0؛ maxCalibrationValue = 0؛ minCalibrationValue = 0؛ // اجرای کالیبراسیون در شروع کالیبراسیون ()؛ }
مرحله 3: نوشتن کد اصلی
با شروع کد اصلی ، باید فایل هدر ایجاد شده در مرحله قبل را وارد کنید. کد زیر نمونه ای از نحوه استفاده از تابع isTouching به عنوان سوئیچ است. در مورد من ، هدر را با نام capacitiveTouch.h گذاشتم.
#عبارتند از
#شامل "capacitiveTouch.h"
// این متغیر نشان می دهد که آیا دکمه فشار داده شده است یا قبلاً فشار داده نشده است
int lastState = 0؛
void main () {
// تنظیم RC5 به عنوان خروجی TRISCbits. TRISC5 = 0؛ // شما باید این تابع را در شروع برنامه setupCapacitiveTouch () فراخوانی کنید. _ تأخیر_ms (1000) ؛ // بعد از راه اندازی دقیق خود کالیبره کنید ()؛ در حالی که (1) {// بررسی می شود که آیا دکمه در حال فشردن (isTouching (15) && lastState == 0) {if (RC5) RC5 = 0 است ؛ else RC5 = 1؛ lastState = 1؛ } // بررسی اینکه آیا دکمه در حال آزاد شدن است اگر (lastState == 1 &&! isTouching (15)) lastState = 0؛ _ تأخیر_ms (20) ؛ }}
کالیبره کردن:
وقتی این تابع متغیرهای calibrationValue نامیده می شود ، maxCalibrationValue و minCalibrationValue به روز می شوند. calibrationValue توسط تابع isTouching استفاده می شود. به خاطر داشته باشید که صفحه لمسی هنگام کالیبراسیون باید تنها گذاشته شود.
setupCapacitiveTouch:
در ابتدای برنامه باید تماس بگیرید. این بیت های لازم را که توسط سایر توابع استفاده می شود تنظیم می کند. همچنین خطاطی را اجرا می کند. با این حال من با منتظر ماندن یک ثانیه نتایج بهتری گرفتم و دوباره کالیبراسیون را جداگانه اجرا کردم.
isTouching:
این تابع در صورت تشخیص افزایش ظرفیت در C12IN0 ، 1 را باز می گرداند و اگر خازنی نزدیک به ظرفیتی باشد که در زمان کالیبراسیون وجود داشت ، 0 را برمی گرداند. به بیان ساده ، اگر کسی پد را لمس کند ، تابع isTouching 1 برمی گردد. این تابع همچنین یک پارامتر را به عنوان ورودی می خواهد ، این تحمل برای تحریک آن است. هرچه مقدار تحمل بیشتر باشد حساسیت آن کمتر می شود. در تنظیماتم متوجه شدم 15 عدد خوب کار می کند ، اما چون این بستگی به فرکانس مدار و میزان خازنی دارد که وقتی آن را فشار می دهید ، باید با این مقدار آزمایش کنید تا چیزی را پیدا کنید که برای شما مناسب باشد.
getChargeTime:
وقتی می خواهید بدانید چقدر طول می کشد تا ظرفیت خازنی به ولتاژ CVREF شارژ شود ، این تابع آن را آزمایش کرده و یک عدد صحیح را برمی گرداند. برای بدست آوردن زمان در ثانیه از این فرمول استفاده می کنید: (4 * getChargeTime) / oscillatorFrequency = chargeTimeInSeconds این فرمول همچنین می تواند برای دریافت ورودی تحمل از تابع isTouching به ثانیه استفاده شود.
توصیه شده:
رابط سنسور اثر انگشت خازنی با Arduino UNO: 7 مرحله
رابط سنسور اثر انگشت خازنی با Arduino UNO: سلام ، بچه ها چه خبر! Akarsh در اینجا از CETech. امروز ما قصد داریم یک لایه محافظ به پروژه های خود اضافه کنیم. نگران نباشید ما هیچ محافظی برای این کار تعیین نمی کنیم. این یک حسگر اثر انگشت زیبا و زیبا از DFRobot خواهد بود. بنابراین
قلم خازنی برای قلم یکبار مصرف: 6 مرحله (همراه با تصاویر)
قلم خازنی برای قلم یکبار مصرف: من ده عدد قلم توپ میکرو رولر Uni-ball دارم. من می خواهم یک قلم خازنی به درپوش یکی از آنها اضافه کنم. سپس درپوش و قلم را می توان از قلم به قلم دیگر به قلم دیگر منتقل کرد زیرا جوهر هر کدام تمام می شود. من از جیسون پول اسمیت بخاطر کارهایش سپاسگزارم
افزودن لمس خازنی به پروژه های خود: 7 مرحله
اضافه کردن کلید لمسی خازنی به پروژه های خود: چگونه می توان سوئیچ لمسی خازنی را به پروژه های خود در خانه اضافه کرد سلام دوستان دیجی الکترونیکی در این آموزش به شما نشان خواهم داد که چگونه می توانید یک سوئیچ لمسی خازنی را به پروژه های الکترونیکی خود به صورت ارزان اضافه کنید و پروژه خود را ارائه دهید نگاه حرفه ای
پیکربندی بیت های فیوز میکروکنترلر AVR. ایجاد و بارگذاری در فلش مموری میکروکنترلر برنامه چشمک زن LED: 5 مرحله
پیکربندی بیت های فیوز میکروکنترلر AVR. ایجاد و بارگذاری در فلش مموری میکروکنترلر برنامه چشمک زن LED: در این حالت ما یک برنامه ساده در کد C ایجاد کرده و آن را در حافظه میکروکنترلر می سوزانیم. ما برنامه خود را می نویسیم و فایل hex را با استفاده از Atmel Studio به عنوان پلت فرم توسعه یکپارچه کامپایل می کنیم. ما fuse bi را پیکربندی می کنیم
لمس خازنی با Evive (کنترلر مبتنی بر آردوینو): 6 مرحله (همراه با تصاویر)
Touch Capacitive With Evive (کنترلر مبتنی بر آردوینو): آیا می دانید صفحه لمسی گوشی هوشمند شما چگونه کار می کند؟ تلفن هوشمند دارای مجموعه ای از حسگرهای لمسی در زیر صفحه شیشه ای است. امروزه ، بر اساس فناوری تشخیص لمس خازنی و حتی یک لمس ملایم به راحتی قابل تشخیص است. لمس خازنی حس می شود