שְׁאֵלָה:
שימוש / כיול מודול חיישן pH
Jasper
2015-11-03 03:43:30 UTC
view on stackexchange narkive permalink

קניתי את לוח מודול החיישן הזה לקישור לננו של Arduino: http://www.ebay.com/itm/For-Arduino-Liquid-PH-Value-Detection-detect-Sensor-Module -Monitoring-Controller / 321764233326

הנחתי ששני הברגים מיועדים לכיול (נקודה נמוכה + שיפוע), אך נראה כי הפעולה שונה ואינני מצליח להבין כיצד. יש לי שני נוזלי הפניה ל- pH של 4.0 ו- 7.0. כשאני מכניס את החללית לאחת מהן, אני מקבל קריאות. נראה כי סיבוב אחד משני הברגים מקזז את הקריאה ולכן למשל היה לי pH 4 = 900 ו- pH 7 = 1000 (טווח 0 - 1023). סיבוב אחד משני הברגים יוריד מעט את הערך, אך הוא לעולם לא יורד מתחת ל -500 בערך.

אז מה שאני יכול לעשות זה למדוד שתי נקודות (4.0 ו 7.0) ואת ערכי המדידה שלהם בהתאמה. כך יכולתי לחשב נקודות בין לבין, אך עד כמה שידוע לי pH אינו סולם ליניארי, אלא לוגריתמי. אם אני טועה בזה, הקריאה אולי נראית נכונה אך רק מציגה 4.0 ו- 7.0 נכונה ולא את שאר הערכים (אין לי כרגע 10.0 נוזל התייחסות).

עכשיו על הבורג השני, נראה שאותו בהתחלה לא עושה כלום. אבל אז שמתי לב שהוא מגדיר איזשהו ערך סף, והדלקה ונכבה של נורית הלוח. נראה כי נורית ה- LED קשורה לערך הנקרא, אך מטרה נוספת? כִּיוּל? אין לי מושג.

אוקי אז במקרה הטוב למישהו יש מודול שווה ורוצה לפרט כיצד זה עובד. אחרת אולי לחלק מכם יש כמה רעיונות מבריקים לגבי מה שאוכל לנסות בכדי לגרום לזה לעבוד כמו שאני רוצה :)

עדכון 09-11-2015

קיבל משוב מהמוכר. היא שלחה לי את ה- ZIP הבא: http://1drv.ms/1MSk1DX. הוא מכיל כמה קבצים בסינית, אך באחד מהם היה קוד קוד. ניסיתי את זה על הארדואינו שלי אבל לצערי הערכים עדיין לא הגיוניים במיוחד. תלוי איך אני מפעיל את הכפתור בהדפסה, אני מקבל ערכים בין 9 ל -17 עבור נוזל שנמצא בחיים האמיתיים 7.0. לא ניסיתי אבל ספק אם לעשות קיזוז של -7 זה הגיוני.

הקוד עצמו די פשוט, וממוצע של 6 מרכזים של עשרה מדדים רצופים. השורות המעניינות הן אלה:

  avgValue = 0; עבור (int i = 2; i<8; i ++) // קח את הערך הממוצע של 6 מדגם מרכז avgValue + = buf [i]; float phValue = (float) avgValue * 5.0 / 1024/6; // להמיר את האנלוגי למיליוולט phValue = 3.5 * phValue + Offset;  

אולי מישהו יכול להבין את זה, כי אני לא יכול. אני לא מבין את הכפל 5.0 ואת 3.5 אחרי זה. מאיפה אלה באים? בכל מקרה, כשאני טובל את החללית לנוזל האחסון, המונה הרגיל שלי צונח ל- pH 0.5 בזמן שהתוכנה נותנת לי 17 (שזה ערך גבוה יותר מזה שקיבלתי מקריאת הנוזל 7.0 שלי) . אז או שהלוח שלי מקולקל או שקוד הדוגמה הזה חסר תועלת.

ניתן למצוא אגב סכימות בקובץ ה- ZIP.

עדכון 11-11-2015

עשה עוד ניסויים. ראשית גיליתי שהקריאות מהמודול גדלו לנוזל חומצי יותר. אז הפכתי את הערך על ידי שימוש ב

  buf [i] = 1024 - analogRead (SensorPin);  

אוקי, עכשיו הערכים היו יותר הגיוניים. ואז כיוונתי את הסיר כך שיהיה באמצע הטווח הזמין. טבלתי את החללית בנוזל 7.0, קראתי את הערך וכוונתי את הקיזוז. ואז טבל ב 4.0, התאים את הסיר כך שיתאים ל 4.00, להלן התוצאות:

  התייחסות ל- pH 7.0 --> 6.27 קיזוז ל: 0.73pH 4.0 הפניה --> 5.17 התאים את הסיר אז ערך קרא התייחסות ל- 4.0pH 7.0 --> 5.86  

אז כפי שציפיתי, התאמת הסיר מבלבלת גם את מדידת הייחוס 7.0. אז אם כי זה יכול להיות בגלל שיפוע הסיר (אם יהיה כזה), אז הלכתי לערך הנמוך ביותר כדי לקבל את ההבדל הכי פחות. שוב הקריאות:

  התייחסות pH 7.0 --> 8.70 קוזז ל: -11.70pH 4.0 הפניה --> 5.17 התאים את הסיר כך שערך קרא 4.0
התייחסות ל- pH 7.0 --> 5.70  

הדבר המעניין כאן הוא שערך 4.0 נקרא 5.17 בשני המקרים, למרות שהסיר היה במצב אחר. אני לא יכול להסביר מדוע.

כדי לוודא שהחללית בסדר כיולתי מחדש את מד ה- pH הרגיל שלי, פועל כרגיל. זה כולל גם שני סירים, אחד לכיול 7.0 ואחד לשיפוע 4.0. הכיול נעשה על ידי הגדרת 7.0, ואז מדידת 4.0 והתאמת סיר המדרון. מדוד 7.0 שוב, שנה 7.0 סיר, מדוד 4.0 שוב וכו 'עד שהערכים תואמים את נוזליהם. בדרך כלל לוקח לי בערך 3 - 4 לולאות כדי לקבל את זה נכון.

עדכון נוסף

לקח את שני מיכלי נוזלי הייחוס והתחיל לערבב. זה נתן לי מדידות בטווח של pH 4 - 7.5. נמדד גם את נוזל האחסון שיש לו pH של 1.00. התוצאות הן בגיליון אקסל: http://1drv.ms/1lkAO6e. השאלה הבאה היא כיצד להמיר זאת לנוסחה מתאימה?

עדכון 18-11-2015

עובד על הפיתרון של @ slash-dev, הנה מה שאני עשה:

תחילה סובבתי את הסיר עד למטה לערך הנמוך ביותר. הקריאות (עבור pH 7.0) הן כדלקמן: נמוך = 540 וגבוה = 1017. קוד כדלקמן:

  int rawValue = analogRead (SensorPin); int buf [10]; // חיץ עבור אנלוגי קריאה (int i = 0; i<10; i ++) // קבל 10 ערך מדגם מהחיישן כדי להחליק את הערך {buf [i] = rawValue; עיכוב (10);} // מיון שנשאר בחוץ כדי להפחית את אורך הדגימה avgValue = 0; עבור (int i = 2; i<8; i ++) // קח את הערך הממוצע של 6 דגימות מרכז avgValue + = (buf [i] - CENTER);  

בשלב זה אני מדפיס כמובן את הערך הגולמי.

את קיצור מחבר ה- BNC אני לא בדיוק מבין, האם עלי לקצר את החלק הפנימי (לאן שהסיכה עוברת) או את החלק החיצוני של המחבר? ולקצר את זה ל- GND? השתמשתי במקום זאת בפתרון הייחוס.

עכשיו הוספתי את הנוסחה לקביעת המתח. לערך הנמוך הנקרא 0.10. עכשיו הכנסתי את ערך המרכז של 540 שמביא את קריאת המתח ל -0.0, נראה טוב.

עכשיו לשלב 2 הנחתי את החללית לפיתרון הייחוס 4.0. המתח נקרא כעת 0.48, ערך גולמי 637. אני מתחיל להתאים את הסיר למקום בו המתח קורא 2.25, נסתלק מכוונון כלשהו. Raw עכשיו קורא 1000.

עכשיו מגיע החלק שאני לא בדיוק מקבל. אתה אומר שעכשיו אנחנו יכולים לחשב את ה- pH / V, אבל עם אילו משתנים? כלומר, -3 / 2.25 תמיד יביא ל- -1.33 אבל לא צריך להיות כאן משתנה תלוי עד כמה באמת התאמתי את הסיר?

כשאני מכניס כעת את הנוסחה לחישוב ה- pH כצפוי הוא קורא 4.0 לפתרון הייחוס 4.0. אך כעת הוא מברג את פתרון ה- 7.0 כאשר כיוונו את הסיר אך לא פיצינו עליו עד כמה שראיתי? ניסיתי גם את נוסחאות ה- pH המותאמות אבל אני מניח שאלה נועדו לקוד הראשון שהיה לנו ולא לזה המותאם.

אז מה חסר לי בין שלב 2 ל -3 שמבלגן כאן דברים? כמו כן, אתה מצהיר שההיפוך על ידי חיסור מ- 1024 נכון, אך כשאני עושה זאת קריאות המתח הופכות למינוס.

דבר נוסף שאני תוהה לגביו; אם הסיר צריך להיות מדרון, האם הוא לא צריך להיות שונה מזה שלידו (איפה שיש יותר הגיוני)? כי זה לא כך, שניהם קוראים את "W103 / 143C". בינתיים, הספק שולח בחביבות אחד חלופי כדי להבטיח שזה לא פגם בחומרה איפשהו.

העדכון הבא: :)

אז חזרתי עכשיו לקוד המקורי שלי כדי לנסות את חישובי ה- pH המותאמים. השתמשתי בפתרון הייחוס 7.0 כדי לכייל שוב ואז מדדתי את פתרון 4.0. זה כתוב 4.1! בסדר, לא לגמרי במקום אבל גם לא רע. זה הבדל קטן שיכול לבוא גם מהחללית, ולא מהיקרה ביותר.

אז אני תוהה אם בכל זאת ננסה לגרום לכך שהגישה האחרת תעבוד כי היא נשמעת טוב יותר (מדעי יותר?) משום מה. בכל מקרה, זה לפחות הרבה יותר טוב מכלום :)

כוח USB לעומת מקושר? נראה שדבר מוזר אחר קורה כשאני מנתק את הננו מיציאת ה- USB של מחשב נייד ובמקום זה להניע אותו באמצעות פטל. אני רוצה להשתמש ב- I2C כדי לשלוח את הערך מהנאנו ל- RPi. זה עובד, אבל ברגע שאני מפעיל את הננו מה- RPi (5V מחובר ל- vIn), ערך ה- pH המחושב יורד?

גם אני מעוניין בכך מכיוון שאוכל להשתמש בקרוב באחד מאותם חיישנים. ראה אם ​​הקישורים בעמוד זה מועילים: https://www.tindie.com/products/rezahussain/dormant-labs-ph-module-v2/
נראה כי חסר מידע יוצא דופן אודות המודולים הללו, מספקי eBay שדילגתי עליהם. אני מניח שאף אחד מהם לא יודע מה הם עושים. אם אתה יכול למצוא גליון נתונים, זה עשוי לעזור. אולי אם תפרסם איזה שבב יש על הלוח זה עשוי לעזור לצמצם את מה שההתאמות עשויות לעשות.
שלחתי בדואר למוכר בקשה למידע, אעדכן כשאקבל אותו (ואכתוב פוסט בבלוג). לגבי סוגי השבבים, אעשה אבל אצטרך לבדוק הערב מתי אהיה בבית :)
@Jerry; תודה, אבל זה מודול אחר שיש בו כיול תוכנה במקום כפתורי חומרה. לא אותו דבר ולכן אין הרבה מידע שימושי שם.
אני חושב שיש לי בדיוק את אותו חיישן וניסיתי לשחזר את הפתרון, אך ללא תוצאות. האם תוכל לשתף את הקוד שגרם לו לעבוד עבורך? TIAThomas
@Thomas אני חושש שהמדינה "העובדת" נמשכה זמן קצר מאוד. חזרתי שיוצאים רק ערכים מוזרים, הלוח הזה הוא פשוט שטויות היא המסקנה הקצרה שלי. אני עובר ללוח אטלס שאמור להיות הרבה יותר טוב.
שֵׁשׁ תשובות:
slash-dev
2015-11-11 07:53:39 UTC
view on stackexchange narkive permalink

התרשים מציג סיר גימור אחד בלבד (R23), וכפי שאתה חושד, הוא מגדיר רמה לכך שהנורית תידלק. יותר מחוון GOOD / BAD, והוא זמין באמצעות סיכה DO.

סיר הגזירה האחר אינו מופיע בסכמה. האם זה מסומן על הלוח? R6, R7, R8 או R9 אולי? הוא כנראה שולט ברווח ב- p_AOUT.

t_AOUT הוא מתח טמפרטורה אנלוגי, ונראה שהוא מודד את טמפרטורת הלוח.

עריכה - רשמית אך מזויפת לחלוטין: על פי המקור הסודי שלי, אתה אמור להכניס את החללית לפתרון הייחוס pH 7.0 ועם קיזוז מוגדר כ- 0.0, הפעל את התוכנית והציג את ערך ה- pH המחושב. יתכן שתצטרך להקטין את העלייה בסיר הקצץ כדי לקבל מספרים קטנים יותר (הקטנים ביותר?). עכשיו קח את הערך המוצג ושנה את הקבוע Offset בסקיצה כך שיהיה 7.0 פחות הערך המוצג. אם הערך המוצג הוא 8.1,

  #define Offset (-1.1)  

בנה והעלה את השרטוט ששונה. הפעם, הכניס את החללית לפתרון הייחוס שלך ל- pH 4.0 והתאם את סיר הרווח עד שהערך המוצג יהיה קרוב ל -4.0 ככל שתוכל להגיע. זה יכייל אותו לפתרונות חומציים בעיקר. Strike>


Edit 1: Iterate?

זה לא ברור, אבל גם תהיתי אם הליך זה אמור להיות איטרציה. חזור ל -7 וודא שהתאמת הרווח לא השתנתה Offset . ואז לבדוק שוב את תמיסת ה- pH 4; סיר הרווח עשוי לדרוש שינוי קטן (ים). אם נראה שזה שונה, אממ, אל תעשה את זה. ;) אני חושב שזה יסטה רק אם לבדיקה הייתה תגובה הפוכה, וזה כנראה אומר שהיא גרועה.

אם אתה מודד פתרונות בסיסיים, בצע את אותו הליך עם פתרונות הפניה של pH 7.0 (כמובן) ופתרון הפניה בסיסי.

Voilà!

הערה: לבדיקת 7.0 אתה יכול לקצר את סיכות הגשוש יחד. זה באמת צריך להיראות כמו קצר חשמלי כאשר pH == 7.0. אם המעבר לשימוש בבדיקה האמיתית בפתרון ה- pH 7.0 נותן קריאות שונות בפראות, הגשוש עשוי להיות רע. אם אתה מצליח לכייל אותו, זה יכול להיות "טוב מספיק".


ערוך 2: תקן את הנוסחאות בשרטוט שסופק.

התרשים מציג מגבר אופציה שאינו הפוך עם PH + בקלט, ו p_AOUT על הפלט. הרווח (המתכוונן?) הוא

  R9 / R8 + 1 = 10k / 10k + 1 = 2  

השיפוע של תגובת חלון אידיאלית הוא - 59mV / pH. ניסית לקבל מדרון שלילי, שמסכים עם הסכמטי. אני מאמין שהיה נכון "להפוך" את הערך AnalogRead על ידי הפחתתו מ- 1024. אין שום דרך שהקוד שסופק יכול היה לעבוד בשיפוע חיובי של 3.5.

מתח הייחוס המסופק לסיכה PH- הוא מחצי מתח דיודת הזנר ... שאינו מזוהה. זה יכול להיות החלק הנפוץ מאוד של 5.1 וולט, אשר בעצם מכריח את PH- להיות ב-

  5.1V / ((R6 + R7) / R6) = 5.1V / 2 = 2.55V  

אני אומר כנראה, כי בדרך כלל אתה רוצה שנדנדת מתח הבדיקה פלוס-מינוס תהיה כמה שיותר מקום. זה מרמז על אנלוגי קריאה של pH 7.0 להיות

  2.55V / 5.0V * 1024 = 522  

זהו "מרכז" התנודה של החללית בערך pH 7.0.

שלב 1: קבע את מתח הייחוס

ב- pH 7.0, הדפס את ה analogRead הגולמי ערך החזר לפני הפיכתו. (המגב צריך להיות בגבולו. באיזו דרך, אני לא יודע. שינוי סיר הרווח לא צריך לשנות את ה AnalogRead מאוד בקצה הרווח הנמוך. אם זה כן משנה את זה , הפוך אותו לקצה השני.)

כפי שצוין קודם, אתה יכול להריץ את בדיקת ה- pH 7.0 על ידי קיצור סיכת מחבר BNC למגן או באמצעות פתרון הייחוס שלך. אני ממליץ לקצר לעת עתה, כדי למנוע כל הפרעה אפשרית מהחללית. זה בהחלט יקבע את הקיזוז, אבל רק אם הרווח יהיה קטן ככל האפשר. אתה צריך להתחיל כאן. לאחר שתכיר את קריאת המרכז, תוכל לשנות את הקוד כדי להציג את המתח:

  #define CENTER 522int avgValue = 0; עבור (int i = 2; i<8; i ++) // קח את ערך ממוצע של 6 דגימות מרכז avgValue + = (buf [i] - CENTER); מתח צף = (((float) avgValue) / 6.0) * (5.0 / 1024.0);  

הדפס זה בחוץ. עדיף שתקבל משהו קרוב ל 0.0 ... אל תגרום לי לבוא לשם. :)

שלב 2: הגדר את סיר הרווח.

זה קובע את השיפוע, אבל אתה צריך למקסם את הנדנדה לקבלת ה- pH הקיצוני ביותר שאתה רוצה לקרוא, נניח 4.0. השתמש בפתרון הייחוס של 4.0, התאם את סיר הרווח כך שהמתח המוצג יהיה קרוב ל -2.5 וולט, נניח + 2.25 וולט כדי לוודא שהוא לא מחובר ב -1024. (בוא נראה, שיפוע שלילי, 4.0 הוא < 7.0, אז מתח צריך להגדיל ...) עם הקריאה הזו, אתה יכול לחשב את ה- pH / V:

  -3pH / 2.25V = -1.33 pH / V  

שלב 3: חישוב והדפסה של pH

שנה את החישוב המקורי כדי להשתמש במדרון ה- pH / V:

  float phValue = voltage * (-1.33) + 7.0;  

זה אפילו לא קרוב ל phValue = 3.5 * מתח + קיזוז . -_- מצאתי כמה מקורות שעכשיו מהדהדים את תשובתי המקורית. טועה לחלוטין, וטועה עד כדי הטעיה. אני כן חושב שצעדים אלה יעשו זאת. בכל מקרה זה נשמע לי טוב בראש. : D


עריכה 3: "השאלה הבאה היא כיצד להמיר זאת לנוסחה מתאימה?"

אוקי, אם אינך מעוניין לתקן את הנוסחה בקוד, תוכל להתאים לעקומה ליניארית או ריבועית. ליניארי מומלץ למעשה כ"טוב מספיק ", וזה למעשה השינוי המוצע ב ערוך 2 . אם רק נשתמש בנקודות הנתונים שלך, זה יהיה הקירוב הליניארי:

float justeredPh = phValue * 1.627 - 2.499; והקירוב הרביעי:
מקור סודי הא? נשמע מעניין :) בכל מקרה, אנסה גישה זו. הקריאות שלי רחוקות מ- 7, אז זה אומר שהקיזוז יהיה משהו כמו 5 או 6, נראה קצת רחוק מדי. כמו כן, כשאני מכוון את סיר הרווח לפיתרון 4.0, האם זה לא יתעסק בקריאת 7.0? ננסה הערב כשאני בבית.
כן, חשבתי גם על איטרציה מכיוון שכך זה עובד למונה הרגיל שלי. הבעיה היא שמערך זה כולל כעת שני קיזוזים; אחד כסיר על הלוח, אחד בתוכנה. שינוי אחד מהם עבור 4.0 מבלגן את ה- 7.0 באותה מהירות. הדרך היחידה שזה יעבוד היא כאשר התוכנה תיישם שיפוע, או שהסיר יעשה זאת. גם לא לעשות עד כמה שאני יכול לראות. ניסיתי את הפתרון שלך, ראה עדכון.
@Jasper, לא פרסמת כבר כמה ימים, אם כי אני רואה שביקרת. ניסית את "ערוך 2" או "ערוך 3"?
אני מצטער, אתה צודק. קראתי את תגובתך אך לא הגעתי לבדיקה. עכשיו יש לי, ראה עדכון לעיל.
בין היתר פג תוקף השפע אבל אני יותר ממוכן להעניק לך את זה. יידע אותי אם אתה רוצה לנסות לגרום לפתרון השני לעבוד, אחרת אני אלך ואעשה חדש + אענה עליו.
* אנחה. * עריכה 2 הייתה צריכה לעבוד אם הסכמה נכונה. אסור שזה יהיה נכון. נראה שכמה יצרנים פשוט העתיקו אותו לאתרי האינטרנט שלהם. בלוח שלך יש טרנזיסטור נוסף שאינו נמצא בסכמה, ולכן אני לא חושב שכדאי להתעסק עם הפתרון ה"נכון "עד שאתה לא יודע את הסכמה. אם עריכה 3 מספיק טובה, מדוע לטרוח מהנדסת רוורס * לוח * זה? בכל הנוגע להענקת השכר, זה נראה כמו משהו שמנחה יעשה כדי להימנע משאלות ותשובות כפולות. האם תוכל לסמן את התגובה הזו כדי למשוך את תשומת ליבם?
בוצע (דגל). ואתם צודקים. מה שיש לי מספיק טוב לעת עתה, לפחות הערכים אמינים במקצת. בבוא העת אני הולך לשדרג למודול אטלס לדעתי, אלה צריכים להיות טובים בהרבה (https://www.atlas-scientific.com/product_pages/sensors/ph-sensor.html)
RSM
2016-01-13 13:47:42 UTC
view on stackexchange narkive permalink

כוח USB לעומת מקושר

רק כדי להוסיף את 2 הסנטים שלי בעדכון האחרון שלך לגבי ה- USB או 5V מה- PI.

אתה אומר שאתה מחבר אותו ל- VIN:

ברגע שאני מפעיל את הננו מה- RPi (5V מחובר ל- vIn), ערך ה- pH המחושב יורד?

אם אתה מסתכל על התמונה למטה אתה רואה ש- Vin הולך אל 7805 ישן וטוב, אשר זקוק למתח IN> 7.5V, ולכן הפלט כאשר הוא מחובר ל- 5V של ה- PI יהיה נמוך מאוד ובכך לבלגן את הקריאות.

enter image description here

אני ממליץ לך לחבר את ה כוח שלך מה- PI ל- VCC של הארדואינו חזק> מכיוון שזהו 5v מוסדר ואין צורך להסדיר אותו שוב.

אני לא לגמרי בטוח שאני מבין. אתה מצהיר שהוא צריך יותר מ- 7.5V כדי לעבוד כראוי. אבל כשאני מחבר את הכוח מהפי ל- VCC של הארדואינו; כמה וולט אנחנו מדברים אז? חשבתי * שזה 5V אבל אולי אני טועה שם? באיזה יציאה מהסנדלר עלי להשתמש בכדי להתחבר ל- VCC?
ממה שקראתי בעריכה שלך היית אומר שחיברת את ה- Pi '5V' לננו 'Vin' אם זה כך, אתה צריך להתחבר * VCC - VCC *
larzz11
2015-11-10 15:51:16 UTC
view on stackexchange narkive permalink

אני לא יודע אם זו תשובה מלאה, אבל אני עדיין לא יכול להגיב.

פונקציית AnalogRead בארדואינו שמשמשת את החיישן שלך קוראת ערכים בין 0 - 5V. הוא מחלק את הערכים בין 0 ל -5 וולט ב -1024 שלבים. אז זה מחזיר ערך בין 0 ל 1023. לכן הוא מוכפל ב- 5. קל יותר להבין אם החישוב נעשה בסדר הפוך. דוגמה:

analogRead מחזיר 512, כך שזה ב- 1024/512 = החלק החציוני מהטווח שלו. הכפל את זה ב 5.0 כדי לקבל את המתח בפועל. 0.5 * 5.0 = 2.5. לאחר מכן הוא מחולק ב- 6 כדי לקבל את הממוצע.

הייתי משנה גם את סדר החישוב. בתגובות נאמר שהוא מחשב את הממוצע, אך לא רק מוסיף את הערכים. בסופו של דבר הוא מחלק אותו ל -6 כך שלא יגרום לשגיאה, אך לצורך הקריאה בדרך כלל נהוג לתת לקוד שלך לעשות את מה שההערות אומרות.

תודה, מכיוון שהדבר לא פותר את הבעיה אני לא יסמן כתשובה, אבל בכל מקרה זה קלט רב ערך. הקוד מגיע מהמדגם, אני אשפר אותו ואעשה שוב את החישוב, אכן נראה הגיוני יותר.
דבר אחר. האם אתה בטוח שהחיבורים נכונים? התוצאות שלך נראות כמו כאשר אתה מודד מחלק מתח בנגד הלא נכון. אז נסה להפוך את המדידות שלך, כך: measureValue = 1024 - analogWrite (pin);
תודה, השתמשת ברמז לגבי היפוך המדידות. שפר את הקריאה אך לא פתר את הבעיה.
JRobert
2015-11-10 19:02:39 UTC
view on stackexchange narkive permalink

כגישה ראשונה, הייתי אוסף מספר מדידות מכל אחד מכמה הידע שאתה יכול למצוא או לבצע, ולשרטט אותם לרמז חזותי לליניאריות או לא (כנראה שלא) לפלט החיישן לעומת pH. אתה יכול לנסות להתאים עקומת נתונים לגלגל העין; אינטרפולציה לינארית בין נקודות לדוגמא אם יש לך מספיק; או להפעיל התאמת קירוב בריבועים קטנים ביותר. המפתח הוא שתזדקק למספיק נתונים - ידיעות - בכדי שהגישה שתשתמש בה תיתן תוצאות מדויקות מספיק לשימוש המיועד שלך. (ברור שזה יהיה שונה אם אתה רק צריך לדעת אם משהו חומצי או בסיסי, או שאתה עוקב אחר מיכלי דגים טרופיים וכו ').

עדכון: אם מד ה- pH שלך מספיק טוב לדגים , ואם החיישן שלך ניתן לחזרה אמין ורגיש מספיק, מדוע לא לבדוק את המונה שלך בהתאם לשני התקנים ואז לכייל את החיישן למונה שלך? ברגע שתהיה מרוצה מהתוצאה, נעל את הברגים בעזרת טיפ לק (זה לא מאוד חסין טמפרור אבל זה יהיה ברור לחבלה). תקן pH 10.0 לא יועיל במיוחד עבורכם; באותו קצה כבר תדעו שה- pH נגמר וכנראה שלא יהיה לכם אכפת מהערך המדויק. אתה צריך את הדיוק שלך בין הגבולות הנסבלים לדגים, קרוב ליעד ה- pH. למעשה, אם אתה סומך על המונה שלך, אתה אפילו לא צריך את הסטנדרטים. במקרה כזה אתה צריך להמציא רק כמה דוגמאות כפי שתיארת, לכסות את טווח ה- pH של העניין, ולהשתמש בהן לכיול החיישן למונה.

זה אכן מיכל דגים. אני מבין את הגישה, אך אין לי הרבה 'ידע', כרגע רק נוזלי התייחסות של 4.0 ו 7.0. אני יכול לקנות 10.0 נוספים אבל תוהה אם זה יעשה את זה. דבר נוסף שיכולתי לנסות הוא לקחת מי ברז ולימון (או חומצה אחרת) כדי להגביר את החומציות שלב אחר שלב. יש לי גם מד pH רגיל שאוכל להשתמש בו כדי לעקוב אחר הערכים. אני מניח שהמדידות היו אומרות לי יותר. הבעיה שיש לי עם זה היא שזה עדיין לא אומר לי בשביל מה נגדים ואיך זה * צריך * לעבוד. אולי זה פשוט מודול פגום, מי יודע.
Eric Kelly
2015-11-11 09:45:31 UTC
view on stackexchange narkive permalink

אני לא יכול לשאול שאלה אבל לוודא שאתה נותן לו מספיק כוח לגוף החימום, זה לא הרבה אבל אתה אף פעם לא יודע לנסות מקור כוח נפרד אם אתה לא.

עכשיו הזכרת את הננו, האם אתה משתמש בננו 3.3v או 5V? (על הרגולטור יהיו 33 או 50 אחרי אות או שתיים) אם 3.3 וולט ובהנחה שבקוד לדוגמא הם נותנים את הפלט האנלוגי הוא 5V תצטרך מעביר מפלס למיניהם כדי למפות ל -3.3 וולט ואז לשנות את חישובים לשימוש 3.3 במקום ערך 5. אם זה לא המקרה וזה לא כוח או חיבורים אז זה יכול להיות שבור או החללית וכו '... יש כמה משתנים.

באמצעות ננו 5V. קישרתי את המודול גם ליציאות 3.3V וגם ל- 5V, הקריאות זהות.
AeternaMens
2016-01-02 03:56:22 UTC
view on stackexchange narkive permalink

כוח USB לעומת מקושר

קרא את זה והשתמש בקוד Vcc הנוכחי במקום 5.0 בקוד שלך.

יש לי את אותו חיישן ויש לי את אותה הבעיה. אשמח אם תשתף קוד עבודה מלא בשרשור זה.

נא לא רק לפרסם קישור. הקישור עלול לרדת. אם יש בו מידע שימושי, סכם אותו, או ציין אותו, כאן.


שאלה ותשובה זו תורגמה אוטומטית מהשפה האנגלית.התוכן המקורי זמין ב- stackexchange, ואנו מודים לו על רישיון cc by-sa 3.0 עליו הוא מופץ.
Loading...