הכירו את פרויקט AquaTank – מבוא.

  • כבר כמה זמן אני משחרר פה ושם, בבלוג, בפייסבוק, בmakers.co.il, כל מיני פיצ'רים שקשורים לפרויקט, אבל אף פעם לא הצגתי אותו באופן רשמי, אז: הכירו את סדרת הפרויקטים AquaTank.
    הכל התחיל מאקווריום, אחד פשוט, עם פילטר, אור, אויר וגוף חימום, לפני 13 שנה.
    לאט לאט האקווריום עבר שדרוגים והגיע הרצון הטבעי לאוטומציה של האור והאויר.
    בזמנו 2 טיימרים בתוך קופסת פיקוד פתרו את העניין ועבדו יפה מאוד.אבל אז הגיע הCO2, למי שלא יודע, אסביר בקצרה, שבאקווריום משלבים מערכת שממיסה גז CO2 במים, המטרה היא ליצור חומצות פחמניות במים ולאפשר לצמחים לעשות פוטוסינטזה בכמה רמות גבוהה יותר, עשירה יותר, לתחזק צמחים בריאים ואקסקלוסיביים ובו זמנית להעשיר את המים בחמצן שנוצר בתהליך, הגז נמצא בתוך בלון מיוחד, עובר לווסת לחץ וממנו לשסתום חשמלי 24V.

    הכירו את AquaTank v1:
    aquatankv1פיצ'רים: 2 טיימרים לכיבוי והדלקה של האור, האויר וCO2, מפסקים להדלקה וכיבוי (יותר לכיבוי) ולדים לחיווי, ה24V מסופק מספק כוח של מחשב ישן, ע"י ניצול מסילות ה 12V ו 12V- ,אשר יוצרים פוטנציאל של 24V, כל זה בקופסא של אל-פסק ישן ששופצרה למידה הנכונה.

    מהר מאוד AquaTank v1 שבק חיים, הספק בפנים יותר נכון, הפסיק להביא מתח תקין לשסתום, ובמהרה גם הלך אחד הטיימרים לעולמו, כל זה קרא לשדרוג!
    הכירו את AquaTank v2:
    aquatankv2harder, better, faster, stronger
    ספק חדש, טיימר חדש, קופסא חדשה (גם אל-פסק בעברו 🙂 ) שימוש בממסרים להדלקה וכיבוי!
    עבד שנים רבות… באמת!, אבל הוא מזדקן, גם פה הטיימר נשרף והוחלף אחרי זה, הכפתורים לא עובדים כמו שצריך, חלק מהלדים נשרפו.

    ואז הגיע הארדואינו.
    כן, לפני כבר חצי שנה אולי יותר, התחלתי להזמין חלקים לפרויקט חדש, AquaTank v4:
    aquatankv4
    איפה v3? ובכן v3 קפא, ולא סיים את דרכו לעולם, הוא היה מבוסס על Arduino Mega, עם מסך LCD גראפי 128×64 פיקסלים, הפרויקט נגנז לתקופה.
    והתעורר מחדש עם Arduino DUE, מסך LCD TFT צבעוני 2.8", עם ממשק צבעוני.
    כולל בתוכו: RTC, מד pH שנעשה לו האק כדי לתקשר עם הארדואינו, חיישני טמפרטורה דיגיטלים, ממסרים, eeprom חיצוני ועוד..

    הסטטוס והtodo שלו כרגע:

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

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

עשה זאת בעצמך: חיישן לחות אדמה קיבולי.

הבעיה:

regsensorsזאת הבעיה! כמו שאתם רואים על מזלגי הלחות שלי מאיביי שחיו כ4 חודשים בתוך אדמת עציץ, יש קורוזיה, מתכות ומים לא באמת אוהבים אחד את השני, וזאת התוצאה.
הם עדיין פעילים – חוץ מהתחתון שהצפתי את העציץ והסוללה לא אהבה את את זה בכלל, אבל מכיין שפני השטח של המוליך השתנו גם ההתנגדות שלו השתנתה וכך גם הקריאות שאני מקבל השתנו, וכדי להבטיח דיוק אני נאלץ לעשות כיול פעם בכמה זמן (מזל ששמתי כפתור כיול 🙂 ).

הפיתרון:

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

בחיישן שלנו הלוחות לא מקבילים אחד מעל השני אלא אחד לצד השני והמבודד הוא לא רק הSolder Mask שעל הPCB אלא גם הסביבה שלו – ובמקרה שלנו המבודד הולך להיות מים (מוזר הא?)
המים לא באמת מבודדים בין הלוחות, אין להם מגע עם הלוחות בכלל.
אבל מים בתור מבודד יכולים להגדיל את הקיבול עד פי 100 מאשר בחומר אחר. 

מתוך An Open Access Biomedical Image Search Engine

נתקלתי חיישן מסוג כזה לראשונה לא מזמן באחת הקבוצות בפייסבוק עם הקישור פוסט בבלוג Zero Characters Left, בו המחבר יוצר חיישן כזה בעזרת יצירת PCB שכזה.
origואז אמרתי לעצמי, זה כולה 2 מוליכים מקבילים בתוך מבודד בוא נבנה כזה לבד.

כמה קשה זה יכול להיות

החומרים:

  • סרט קפטון – אפשר גם סלוטייפ אבל קפטון הוא יותר עמיד ונוח לעבוד איתו
  • תבנית אלומיניום חד פעמית לאפיה – חומר עבה וקל לעבוד איתו
  • מספריים
  • דבק חם
  • חוטי חשמל

materials

 

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

מה עושים עם זה?

כל זה מגניב, בניתי קבל, אבל מה עושים איתו?
זה קבל! צריך למדוד את הקיבוליות שלו! ניקח ארדואינו לעזרתינו, ונבנה מעגל טעינה ופריקה של הקבל, נתזמן את העניין ונדע מה הקיבול של הקבל בכל רגע נתון.
בשביל זה טעינה ופריקה של קבל זה חומר של כיתה י' בשיעור פיזיקה, צריך נגד לטעינה.
את המעגל שהשתמשתי בו ניתן לראות כאן: http://www.arduino.cc/en/Tutorial/CapacitanceMeter
בשביל העבודה, שמתי קבל טעינה של 4.7 מגה אוהם, הקיבול של הקבל יהיה קטן ולכן כדי למדוד את זמן הטעינה אני צריך שהוא יהיה ארוך, לפריקה השתמשתי בנגד 220 כמו שמופעי באתר.

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

הקוד:

בדיקות:

2

מהבדיקות שנערכו קיבלתי את התוצאות הבאות:
זמן טעינה כאשר החיישן יבש: 600 מיקרו-שניות
זמן טעינה כאשר החיישן מושרה במים: 4000 מיקרו-שניות

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

מה שנשאר לעשות הוא לנסות את זה בתוך אדמה אמיתית… המשך יבוא.

eeprom חיצוני בתקשורת I2C לארדואינו

הכל התחיל מזה שיצאתי נוב, בפרויקט AquaTank שלי אני עובד עם ארדואינו DUE, ואני צריך שיהיו פרמטרים שישארו בזיכרון גם לאחר כיבוי/הפעלה מחדש/הפסקת חשמל, סוג של הגדרות, כמו טמפרטורה רצויה והאם הטיימר דלוק ובאיזה שעה צריך לכבות.
כל אלא פשוט היו מתאפסים להגדרות hard-coded בכל ריסט של הארדואינו.

הגעתי לשלב מאוד מתקדם מבחינת הקוד בפרויקט, שאפשר להגיד שאני כמעט בשלבי סיום, מעט מאוד דברים נשארו בTodo, והוספת זיכרון בלתי נדיף הוא אחד מהם.
מאחר שכבר עשיתי משהו כזה פעם עם ארדואינו אונו, פשוט כתבתי את מה שאני רוצה לזכור לeeprom, אז צברתי כוחות ויצאתי לטיול ב4K שורות של הקוד שלי ועברתי על פני משתנים, ופנקציות ומצבים בהם אני רוצה לשמור את השינויים ואת ההגדרות בeeprom, חשוב לזכור שהeeprom מוגבל במספר הכתיבות אליו, לכן צריך לכתוב אליו רק כאשר באמת צריכים וכאשר באמת יש שינוי.
עשיתי עבודה יוצאת מן הכלל במשך שעה, ופשוט הוספתי את הפיצ'ר של "לזכור" לקוד שלי, לחיצה על קומפילציה כמובן זרקה שגיאות פה ושם שתוקנו בזריזות, אבל אז קפצה שגיאה שלקח לי כמה רגעים להבין…

לארדואינו DUE אין eeprom

כן, מה שקראתם, אין לו! למה אני מופתע בכלל?! זה מעבד ARM, מה הקשר לו ולארדואינו אונו.
חיפוש זריז באינטרנט הביא לי כמה פתרונות מעניינים ויצירתיים ביותר:

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

24LC01B

זהו ג'וק eeprom חיצוני שמדבר בתקשורת i2c, של חברת microchip.
הוא מכיל 1kbit זיכרון, שזה בלוק אחד של 128x8bit של זיכרון, כלומר יכול לשמור 128 בטים, כלומר יכול לשמור 128 ערכים של 0-255, מה שתפור עלי!
מה שיותר תפור עלי, זה שהיה לי כאלה, ממש במקרה, פעם הזמנתי בשביל לעשות האק למצלמת gopro, שלא יצא לפועל – או יותר נכון יצא לפועל בצורה אחרת, ואז איבדתי אותה בים, ועכשיו היא שייכת לפוסידון.

main

כשחיפשתי דוגמאות וספריות נתקלתי במלא דברים שסתם מסבכים את החיים, אז החלטתי לכתוב לבד בעזרת ספריית wire.h שנועה לתקשורת בi2c.
למזלי הערכים שאני צריך לכתוב הם משפרים שלמים קטנים – פחות מ255
משתנים בוליאנים שהשפה ממירה לבד בין true,flase ו 0,1.
והחלק הטיפה מסובך הוא מספרים עשרוניים- float, שצריך לבצע בהם מניפולציה קטנה:
נניח יש לי מספר – 28.5, נכפול ב 10 ונקבל 285 – כבר יותר יפה, אבל עדיין לא נכנס בבייט.
טריק שהשתמשתי בו פעם כדי לשמור קילובייט (1024) בשני בתים הוא לחלק את המספר ב4, כי 255 נכנס ב1024 בדיוק 4 פעמים, לקחת את החלק השלם של החילוק ב4 ולשמור בבייט אחד ולקחת את המודולו ב4 ולשמור בבייט שני.
לדוגמא, 285/4 = 71 (החלק השלם), ו285%4 = 1 (שארית החלוקה)
להרכיב מחדש זה 71*4 ועוד 1 = 285
במקרה שלי חילקתי גם ב 10 וקיבלתי 28.5 בחזרה.

את הקוד שרשמתי אפשר לראות פה כדוגמא:

חיבור הeeprom לארדואינו – ממש פשוט vcc,gnd,sda,scl וזהו, find & replace זריז על כל הקוד כדי להחליף את השם של הפונקציה שקוראת וכותבת לזיכרון, והוספת זיכרון בלתי נדיף לפרויק00ט שלי הושלמה.

multi

לחברת microchip, יש עוד מגוון צ'יפים כאלה נם נפחים הרבה יותר גדולים, כמו 256kbit ו512kbit u ואפילו 1024, בנוסף גם במגוון תקשורות, את כל אלה ניתן לראות בקישור פה.

מקווה שזה תרם למישהו.