מיחזור תוכנית המים העמוקים קולוקולוב-שקרין הבדלים מהתכנית המקורית:
1. אין מתנד גביש בשבב k561 .. וקוורץ 32 קילו הרץ. האות של 32 קילו הרץ מעניק ל- Arduino Pro Mini.
2. גם מעגלי התראה קוליים בכמה מעגלי מיקרו-סדרה של 561 סדרות אינם קיימים, ארדואינו גם משמיע את היעד (ואני חייב לומר, מדובר בהשמעה מצוינת, בהשוואה לתכנית של הכותב).
3. מופעל על ידי מתח 12 חד-קוטבי (סוללת עופרת חומצה).
4. התאם את הרגישות באמצעות הכפתורים. עם סולם ה- ADC בין 0 ל 1023, סף התגובה ניתן לכוונון בין 1 ל 38 (ניתן לשנות בקלות את הערך בסקיצה).
והכי חשוב, רציתי להראות במאמר זה שאפשר להרכיב MDs על ארדואינו שלא נחות מהמקור ברגישות (זה הסתדר, מכיוון שמקוריות המעגל המקורי נאספו בסדר גודל של 10 חלקים, כך שיש חומר להשוואה). מעגל מקורי:
כשהתחלתי לעבוד לראשונה עם ארדואינו, הייתי כל כך נלהב שחשבתי שאוכל למצוא ולהרכיב כל מעגלי גלאי מתכות מהאינטרנט באינטרנט בארדואינו שיכולתי למצוא בקלות בשטח האשפה העצום. באופן עקרוני, כך התברר, אך המעגלים התבססו על מונה תדרים, שלא אפשר להשיג טווח טוב באמת. כמה צעצועים לילדים ובדיקת עט + מנסה להרוויח כסף למתחילים. המקור של MD זה הוא סוס עבודה אמיתי שמאפשר למצוא חפצים גדולים במרחק של 2 מ '(ראה ספר קולוקולוב-שדרין בגוגל). אין נתונים סטטיסטיים לגבי ה- md שעבר טרנספורמציה. אני מקווה שהיא מופיעה בתמיכת אוהדי MD ו Arduino. התוכנית עבדה עם Arduino Uno ו- Arduino Pro Mini.
בהמשך הקישור מוצג תהליך לידתו של ד"ר זה באתר האינטרנט של הלחמה, שנמשך יותר משנה ודחף את המחבר ללמוד דואין תכנות. אולי הסקיצה תיראה עלובה למישהו - אני מקבל בשמחה את התיקונים שלך.
כרגע, יש סקיצה המאפשרת לך להתאים את מחסום הרגישות (סיכה 7 מזכירה +1 למחסום, סיכה 8 -1 למחסום). .
Arduino על מיני 5v, 16 מגה הרץ, ATmega168 והתצוגה השתמשו בהם. ליד הסולם נמצא מתאם ה- Mini SD
כאמור 1602 עולה 86 רובל, ProMini - 82 רובל. אם תרצו, תוכלו בדרך כלל לקחת ATmega168 עירום, לפתח עבורו לוח ולמלא את השרטוט ישירות לתוכו.וכך, למשל, התקנתי את אמא-אבא בלוח ה- MD באמצעות המחבר. בתמונה מוצג התקע בן 6 הפינים של ארדואינו, דרכו נשפכו רישומים ישירות על הלוח.
Sketch-MD.Rx-Tx.ProMini.SrednjajaTochkaRegBar.ino
// קלט A3 אנלוגי למתח מתח
// קלט אנלוגי A4 לאות
// 6- מסקנת הזוק
// 9 - תדר פלט 31200 הרץ
# כלול
Lcd גביש נוזלי (12, 11, 5, 4, 3, 2);
byte z1 [8] = {// סמל סוללה
0b01100, 0b11110, 0b11110, 0b11110, 0b11110, 0b11110, 0b11110};
int countleds = 0; // משתנה לשמירת ערך רמת הסקאלה
int volt = 0; // משתנה לאחסון ערך המתח
int noll = 0; // משתנה לאחסון ערך נקודת האמצע
# הגדר NUM_SAMPLES 10 // 10 דוגמאות אנלוגיות לקריאה תוך שנייה אחת
סכום int = 0; // סכום הדגימות שנלקחו
שמש int = 0; // אותו דבר, אך מחולק ב- 10
מדגם char = לא חתימה = 0; // מספר מדגם נוכחי עם
מתח צף = 0.0; // מתח מחושב
const int לחצן 1 = 7; // כפתור פלוס מחסום
const int כפתור 2 = 8; // כפתור מחסום מינוס
int i = 5; // מחסום
הגדרת ביטול () {
lcd.begin (16, 2); // אתחול תצוגה
lcd.set סמן (1, 0);
lcd.set cursor (10, 1);
lcd.print ("Rx-Tx");
עיכוב (3000);
lcd.clear ();
TCCR1A = TCCR1A & amp; 0xe0 | 2;
TCCR1B = TCCR1B & amp; 0xe0 | 0x09;
analogWrite (9, 126); // בסיכה 10 PWM = 50% f = 31200Hz
lcd.createChar (1, z1);
}
לולאת חלל () {
int buttonState1 = HIGH; // מצב הכפתור הוא אחד
int buttonState2 = HIGH; // מצב שני כפתורים
sample_count = 0; // לאפס את קווי המתאר של מספר התוספות
סכום = 0; // לאפס את סכום 10 התוספות
בעוד (sample_count & lt; NUM_SAMPLES) {
סכום + = analogRead (A4); // המדידה הבאה מתווספת לסכום
sample_count ++; // היחידה מתווספת למספר המדידה
sun = סכום / 10;} // מצא את הערך הממוצע מתוך 10 מדידות
noll = analogRead (A3) / 2; // כוח נקודת אמצע
מתח צף = מפה (analogRead (A3), 0,1023,0,1500) /100.0;
// מד מתח שנבנה בכניסה A3
אם (שמש & gt; = noll + i) {countleds = מפה (שמש, noll + i, noll * 2 - 250, 9, 14);
// אם התוצאה שהתקבלה היא בחלק ה-9-15 בסולם
צליל (6, ספרות * 100);}
if (שמש & lt; = noll - i) {countleds = מפה (שמש, 116, noll - i, 0, 7);
// אם התוצאה המתקבלת היא 0-7 קטע של הסקאלה
טון (6, ספרות * 50); }
אם (שמש & lt; noll & amp; & amp; sun & gt; = noll - (i-1)) {countleds = 7;
noTone (6); } // האי של אפס וירטואלי (קטע 7)
אם (שמש & nt; noll & amp; & amp; sun & lt; = noll + (i-1)) {countleds = 8;
noTone (6); } // אי בקנה מידה אפס וירטואלי (8 קטע)
{lcd.setCursor (ספרות, 0); // הגדר את הסמן לטור המסומן, שורה 0
lcd.print ("\ xff"); // סמל מלא
lcd.setCursor (0, 1); // מעבר לשורה 2, עמודה 0
lcd.print (char (1)); // אינדיקציה על אייקון סוללה
lcd.set סמן (1, 1); // לעבור לאינדיקטור מתח
lcd.print (מתח); // מתח
lcd.setCursor (7, 0); // טור 8 בשורה ראשונה
if (sun & lt; noll) {lcd.print ("{");} // הדפס
lcd.set cursor (8, 0); // טור 9 בשורה ראשונה
if (שמש & nt; noll) {lcd.print ("}");} // הדפס
lcd.set cursor (7, 1);
lcd.print ("B =");
lcd.setCursor (9, 1); // עמודה 11 בשורה השנייה
lcd.print (i); // מחסום
lcd.set cursor (13, 1); // טור 13 בשורה שניה
lcd.print (שמש); // הדפיס את הערך הממוצע של ערך ה- ADC
עיכוב (100); // לחכות
buttonState1 = digitalRead (כפתור 1); // קרא מצב כפתור 1
buttonState2 = digitalRead (button2); // קרא מצב כפתור 2
if (buttonState1 == LOW) {i = i + 1; עיכוב (50);}
// בעת לחיצה על הכפתור, המכשול גדל ב- 1. עיכוב 50
אם (buttonState2 == LOW) {i = i - 1; עיכוב (50);}
// בעת לחיצה על הכפתור, המכשול פוחת ב- 1. עיכוב 50
אם (i & lt; 1) {i = 1;} // גבול התחתון של המכשול
if (i & gt; 38) {i = 38;} // הגבול העליון של המכשול
lcd.clear ();
}
}
לא השתמשתי במכונית. שני האלמנטים האחרונים של TL074 נותרו במצב סרק. אבל על המעגל והלוח הם נמצאים. יתכן שתרצה להביא אותם למצב עבודה קצת אחר כך. אני מאמין שהשגתי את המטרה שלי. יחידת התצוגה עובדת נפלא. כל השאר תלוי ברופא.