ዝርዝር ሁኔታ:
ቪዲዮ: አቅም በ PIC16F886 ማይክሮ መቆጣጠሪያ: 3 ደረጃዎች
2024 ደራሲ ደራሲ: John Day | [email protected]. ለመጨረሻ ጊዜ የተሻሻለው: 2024-01-30 07:33
በዚህ መማሪያ ውስጥ በአቅም አቅም ውስጥ ልዩነቶችን ለመለየት PIC16F886 ማይክሮ መቆጣጠሪያን እንዴት እንደሚጠቀሙ እናልፋለን ፣ ይህ በኋላ የንክኪ ፓድ እየተጫነ መሆኑን ለመናገር ሊያገለግል ይችላል። ይህንን ፕሮጀክት ከማድረግዎ በፊት ከፒክ ማይክሮ መቆጣጠሪያዎች ጋር መተዋወቅ ጥሩ ነው።
ደረጃ 1 - ወረዳዎን ያገናኙ
በመጀመሪያ ፣ ከላይ ባለው መርሃግብር መሠረት ወረዳውን በማገናኘት እንጀምር። የመዳሰሻ ሰሌዳውን ለመሥራት የአሉሚኒየም ፊውልን ወደ ካሬ ማጠፍ እና በሽቦ ላይ መለጠፍ ይችላሉ። ለ 100 ኪ resistor በተለያዩ እሴቶች ዙሪያ ሙከራ ማድረግ ይችላሉ ፣ 100 ኪ ለእኔ በደንብ እንደሰራ አገኘሁ።
የ RC4 ፒን የሚለካውን አቅም መሙላት/ማስወጣት ለመጀመር ያገለግላል። C12IN0 ከ ጋር ተገናኝቷል - ከውስጣዊ ማነፃፀሪያ ጎን እና የ C1IN ፒን ከተመሳሳይ ተነፃፃሪ + ጎን ጋር ተገናኝቷል። ማይክሮ መቆጣጠሪያው የ C12IN0 ቮልቴጁ ከ C1IN ቮልቴጅ በላይ ሲደርስ አቅሙ ሙሉ በሙሉ እንደተሞላ ያያል። ተከላካይ የቮልቴጅ መከፋፈያው C1IN ወደ 5 ቮልት ቅርብ መሆኑን ያረጋግጣል።
የመዳሰሻ ሰሌዳው በእርስዎ እና በወረዳ መሬቱ መካከል ጉልህ አቅም በመኖሩ ላይ የተመሠረተ ስለሆነ ባትሪ ላይሰራ ይችላል።
ደረጃ 2 - የራስጌ ፋይል
በሁሉም ግንኙነቶች ተጠናቅቋል? ደህና ፣ ወደ ራስጌ ፋይል እንቀጥላለን። እኛ XC8 አጠናቃሪውን እንጠቀማለን እና ርዕሱ እንደሚጠቁመው አሁን በፕሮጀክትዎ ውስጥ አዲስ የራስጌ ፋይል ይፍጠሩ እና የሚከተለውን ኮድ ይቅዱ። እንዲሁም ያለ ምንም የራስጌ ፋይል ከዋናው ኮድዎ በላይ መገልበጥ ይችላሉ።
#CALIBRATION_SAMPLE 20 #TOUCH_SAMPLE 10 ን ይግለጹ 10 #DISCHARGE_TIME 5 ን ይግለጹ
int ቆጠራ;
int calibrationValue ፣ maxCalibrationValue ፣ minCalibrationValue;
int getChargeTime () {
int timerCount = 0; int overflowCount = 0; // የሚለቀቅ አቅም (RC) = 4; _ መዘግየት_ኤምኤስ (DISCHARGE_TIME); // ሙሉ በሙሉ (ከሞላ ጎደል በእውነቱ) “capacitor” ን ለመልቀቅ በቂ መዘግየት ይስጡ/የጊዜ ቆጣሪውን የትርፍ ባንዲራ T0IF = 0 ያፅዱ። // ሰዓት ቆጣሪው እስኪፈስ ድረስ ይጠብቁ ፣ ከ (0 T0IF) ጀምሮ ከ 0 መቁጠር ይጀምሩ። T0IF = 0; // RC4 = 1 ለመለካት አቅም መሙላት ይጀምሩ። // አቅም (C1OUT) {timerCount = TMR0; ከሆነ (T0IF) {overflowCount ++; T0IF = 0; }} ቆጠራ = (256 * overflowCount) + timerCount; // የሰዓት ቆጣሪን ዳግም ያስጀምሩ የቁጥር ቆጣሪ ቁጥር = 0; የተትረፈረፈ ቁጥር = 0; የመመለሻ ብዛት; }
int isTouching (int tolerance) {
// የብዙ ናሙናዎች አማካይ ድርብ አማካይ = 0; ለ (int i = 0; i calibrationValue+tolerance) አማካይ ++; } አማካይ /= TOUCH_SAMPLE; // አማካኝ በ 0 እና 1 መካከል ቁጥር ይሆናል (አማካይ> 0.2) 1 ቢመለስ። መመለስ 0; }
ባዶነት መለኪያ () {
int አማካይ = 0; int ናሙናዎች [CALIBRATION_SAMPLE]; // ለ (int i = 0; i <CALIBRATION_SAMPLE; i ++) {ናሙናዎች = getChargeTime (); አማካይ += ናሙናዎች ; } አማካይ /= CALIBRATION_SAMPLE; የካሊብሬሽን እሴት = አማካይ; // ከፍተኛ/ደቂቃ እሴቶችን maxCalibrationValue = ናሙናዎችን ያግኙ [0]; minCalibrationValue = ናሙናዎች [0]; ለ (int i = 0; i maxCalibrationValue) maxCalibrationValue = ናሙናዎች ; ከሆነ (ናሙናዎች <minCalibrationValue) minCalibrationValue = ናሙናዎች ; }}
ባዶነት ማዋቀርCapacitiveTouch () {
// ቅንብር እንደ ክፍያ/የፍሳሽ ማስወገጃ ቅንብር ፣ በዚህ ሁኔታ RC4 TRISCbits. TRISC4 = 0 ነው። // ሰዓት ቆጣሪን ማዘጋጀት 0 T0CS = 0; PSA = 1; // ንፅፅር ማቀናበር C1CH0 = 0; C1CH1 = 0; C1R = 0; C1ON = 1; C1POL = 0; // የቁጥር እሴቶች ቆጠራ = 0; // የማካካሻ እሴቶችን ማፅዳቱ እሴት = 0; maxCalibrationValue = 0; minCalibrationValue = 0; // በጅማሬ ማመሳከሪያ () ላይ መለኪያ ማካሄድ (); }
ደረጃ 3 ዋናውን ኮድ መጻፍ
ከዋናው ኮድ ጀምሮ ፣ በቀደመው ደረጃ የተፈጠረውን የራስጌ ፋይል ማካተት ያስፈልግዎታል። የሚከተለው ኮድ isTouching ተግባሩን እንደ መቀየሪያ እንዴት እንደሚጠቀሙበት ምሳሌ ነው። በእኔ ሁኔታ የራስጌውን ስም capacitiveTouch.h ሰጥቼዋለሁ።
#ያካትቱ
#"capacitiveTouch.h" ን ያካትቱ
// ይህ ተለዋዋጭ አዝራሩ ካለ ወይም ካልተጫነ ይነግረዋል
int lastState = 0;
ባዶ ባዶ () {
// RC5 ን እንደ ውፅዓት TRISCbits ማዘጋጀት። TRISC5 = 0; // በፕሮግራሙ ማዋቀርCapacitiveTouch () መጀመሪያ ላይ ይህንን ተግባር መደወል ያስፈልግዎታል። _ መዘግየት_ኤምኤስ (1000); // ከትክክለኛ ማዋቀሪያዎ መለኪያ () በኋላ/ያስተካክሉ ፣ (1) {// አዝራሩ እየተጫነ መሆኑን ማረጋገጥ (isTouching (15) && lastState == 0) {ከሆነ (RC5) RC5 = 0; ሌላ RC5 = 1; lastState = 1; } // (lastState == 1 &&! isTouching (15)) lastState = 0 ከሆነ ሌላ አዝራር እየተለቀቀ መሆኑን ማረጋገጥ። _ መዘግየት_ኤምኤስ (20); }}
መለካት
ይህ ተግባር ተለዋዋጮች የመለኪያ እሴት በሚባልበት ጊዜ maxCalibrationValue እና minCalibrationValue ይዘምናል። የካሊብሬሽን እሴት በ isTouching ተግባር ጥቅም ላይ ይውላል። በሚለካበት ጊዜ የመዳሰሻ ሰሌዳው ብቻውን መቀመጥ እንዳለበት ያስታውሱ።
ማዋቀርCapacitiveTouch:
በፕሮግራምዎ መጀመሪያ ላይ መጠራት አለበት። በሌሎች ተግባራት የሚጠቀሙባቸውን አስፈላጊ ቢቶች ያዘጋጃል። እንዲሁም ጥሪ ጥሪን ያካሂዳል። ሆኖም አንድ ሰከንድ በመጠባበቅ የተሻለ ውጤትን አግኝቻለሁ እና እንደገና መለየቱን በተናጠል አሂድ።
መንካት ነው
በ C12IN0 ላይ የአቅም መጨመርን ካስተዋለ እና ይህ በመለኪያ ጊዜ ከነበረው ጋር ቅርብ ከሆነ 0 ይመልሳል። በቀላል አነጋገር ፣ አንድ ሰው ሰሌዳውን ከነካ የ isTouching ተግባር ይመለሳል 1. ተግባሩ እንዲሁ ግቤትን እንደ ግቤት ይፈልጋል ፣ ይህ ለማነቃቃት መቻቻል ነው። የመቻቻል ዋጋው ከፍ ባለ መጠን ስሜቱ ይቀንሳል። በማዋቀሬ ውስጥ 15 በደንብ ሰርቷል ፣ ግን ይህ በ ocsillator ድግግሞሽ ላይ የሚመረኮዝ ስለሆነ እና እሱን ሲጫኑ ምን ያህል አቅም እንደሚጨምር እርስዎ የሚስማማዎትን እስኪያገኙ ድረስ በዚህ እሴት ዙሪያ መሞከር አለብዎት።
getChargeTime ፦
አቅምዎን ወደ CVREF ቮልቴጅ ለመሙላት ምን ያህል ጊዜ እንደሚወስድ ለማወቅ ሲፈልጉ ይህ ተግባር ይፈትነዋል እና ኢንቲጀር ይመልሳል። በሰከንዶች ውስጥ ጊዜውን ለማግኘት ይህንን ቀመር ይጠቀሙ (4 * getChargeTime) / oscillatorFrequency = chargeTimeInSeconds ይህ ቀመር የመቻቻል ግቤትን ከ isTouching ተግባር ወደ ሰከንዶች ለማግኘትም ሊያገለግል ይችላል።
የሚመከር:
የአርዱዲኖ ተክል መቆጣጠሪያ በአፈር አቅም አነፍናፊ - አጋዥ ስልጠና 6 ደረጃዎች
የአርዱዲኖ ተክል መቆጣጠሪያ በአፈር አቅም አነፍናፊ - አጋዥ ሥልጠና - በዚህ መማሪያ ውስጥ አቅም ያለው የእርጥበት ዳሳሽ በ OLED ማሳያ እና በቪሱኖ በመጠቀም የአፈርን እርጥበት እንዴት መለየት እንደሚቻል እንማራለን። ቪዲዮውን ይመልከቱ
ማይክሮ - ቦት - ማይክሮ - ቢት - 20 ደረጃዎች
ማይክሮ - ቦት - ማይክሮ - ቢት - እራስዎን ማይክሮ - ቦት! እሱ ገዝቶ ለማሽከርከር በሶናር ግንባታ ውስጥ ማይክሮ -ቢት የሚቆጣጠር ሮቦት ነው ፣ ወይም ሁለት ማይክሮ ቢት ፣ ሬዲዮ ቁጥጥር የሚደረግበት ማሽከርከር ካለዎት
ማይክሮ - ቢት - ማይክሮ ከበሮ ማሽን - 10 ደረጃዎች (ከስዕሎች ጋር)
ማይክሮ - ቢት - ማይክሮ ድራም ማሽን - ይህ ማይክሮ -ቢት ማይክሮ ከበሮ ማሽን ነው ፣ ድምፁን ብቻ ከማመንጨት ይልቅ ፣ ተዋናይ ከበሮዎችን። ከማይክሮ ቢት ኦርኬስትራ ጥንቸሎች የተነሳሱ ከባድ ነው። ከሞክሮ ጋር ለመጠቀም ቀላል የሆኑ አንዳንድ ሶሎኖይዶችን ለማግኘት ትንሽ ጊዜ ወስዶብኛል ፣ ቢት ፣
AVR ማይክሮ መቆጣጠሪያ Fuse ቢት ውቅር። በማይክሮ መቆጣጠሪያ መቆጣጠሪያ ፍላሽ ማህደረ ትውስታ ውስጥ የ LED ብልጭ ድርግምተኛ መርሃ ግብር መፍጠር እና መስቀል። 5 ደረጃዎች
AVR ማይክሮ መቆጣጠሪያ Fuse ቢት ውቅር። በማይክሮ መቆጣጠሪያ ተቆጣጣሪው ፍላሽ ማህደረ ትውስታ ውስጥ የ LED ብልጭ ድርግምተኛ መርሃ ግብር መፍጠር እና መስቀል የ Atmel ስቱዲዮን እንደ የተቀናጀ የልማት መድረክ በመጠቀም የራሳችንን ፕሮግራም እንጽፋለን እና የሄክሱን ፋይል እናጠናቅቃለን። እኛ ፊውዝ bi ን እናዋቅራለን
አርዱዲኖ ናኖ አቅም አቅም 8 ደረጃዎች (ከስዕሎች ጋር)
አርዱዲኖ ናኖ የአቅም መለኪያ - ይህ ፕሮጀክት በ 16X2 ኤልሲዲ ማሳያ ፣ በ potentiometer 10K እና በአርዱዲኖ ናኖ ስለተገነባ ይህ ፕሮጀክት በተግባር ሶስት አካላት ነው ፣ የተቀሩት ክፍሎች ደግሞ EasyEda ሶፍትዌር ፣ 1 X 40 HEADER ፣ 0.1 " ክፍተት ፣ እና 1x6 ፌማል