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

סט ממסרים שעובד בלוגיקה שלילית


card

Recommended Posts

שלום

סט הממסרים הבא, עובד בלוגיקה שלילית:

2-channel-relay-module_02.jpg

http://www.buyincoins.com/new_en/details/new-5v-2-channel-relay-module-shield-for-arduino-arm-pic-avr-dsp-electronic-10a-product-11200.html

אני צריך לספק [-] במגעי ה-Input, כדי להפעיל ממסר..

מצד אחד אפשר להגיד שזו לא בעיה,

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

אז נשלח "1" עבור מצב כבוי,

ו-"0" עבור מצב דלוק.

עד כאן בסדר..

אבל הבעיה שאני כן רואה כאן היא כזו:

כשמיקרו-בקר מקבל מתח לראשונה, אז המצב ה-default-י של רגלי ה-GPIO שלו, הוא "0".

ה-"0" הזה מבחינת ה-Input של מודול הממסרים, אומר לו "תפעיל" את הממסרים..

כדי למנוע את זה, אני אכתוב קוד ש-רץ בהתחלה, ומאתחל את הרגליים להיות "1", כלומר כבויים.

אבל הבעיה היא שייקח כמה זמן(אפילו אם קצר) עד שהרגליים ישתנו מה-"0" הדיפולטי שלהם, ל-"1"..

ז"א שכשהמעגל יקבל מתח לראשונה,

המיקרו-בקר מתחיל עם רגלי GPIO במצב "0" = פועל מבחינת הסט ממסרים,

ואחרי זמן קצר רגלי ה-GPIO ישתנו ל-"1" = כבוי,

אבל ההתחלה הזו תהיה כמו רעידה..

הממסרים יופעלו, ואז יכובו במהירות, לחינם..

האם אני אכן צודק או שאני מפספס כאן משהו?

ולמה בכלל שמישהו יבנה סט ממסרים שה-Input שלהם עובד בלוגיקה שלילית? איזה יתרון יש בזה?

להלן סרטוט המעגל:

OptoRelayChannelData-575.jpg

קישור לתוכן
שתף באתרים אחרים

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

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

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

קישור לתוכן
שתף באתרים אחרים

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

אוקיי,

אבל אני חושב שברוב המקרים דווקא הלוגיקה החיובית היא הנדרשת,

כך שמוזר שהם מימשו את זה הפוך.. (מה שיכול להועיל במעט מקרים, על פני הרוב..)

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

אין שם טרנזיסטורים מהפכים, ממה שזה נראה:

OptoRelayChannelData-575.jpg

פשוט כניסות ה-Input, מחוברות לצד השלילי של ה-OptoIsolator,

כך שבשביל לסגור מעגל בכניסת ה-optoisolator, צריך לספק שם 0v..

כך שאין לי רכיב שאני יכול להעיף משם.. :/

(אני צודק או שפיספסתי משהו?)

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

הממ

זה רעיון נחמד..

אני צריך טרנזיסטור שיכול להעביר נגיד עד 0.5A, ב-5v.

יש לי סט טרנזיסטורים שקניתי ב-electrodragon..

http://www.electrodragon.com/?product=general-low-power-transistor-pack-11-kinds-10

הסט כולל 17 סוגים.

מי מבינהם יתאים למשימה הנ"ל?

S9012

S9013

S9014

S9015

S9018

A1015

C1815

A42

A92

2N5401

2N5551

A733

C945

S8050

S8550

2N3906

2N3904

קישור לתוכן
שתף באתרים אחרים

אה, לא שמתי לב לשרטוט...

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

במקרה הזה תבטל את הגאמפר, ואת VCC לחיבור הממסרים תחבר בנפרד.

קישור לתוכן
שתף באתרים אחרים

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

ז"א,

לקצר את כל ה-IN-ים ביחד

(IN1, IN2),

ואז אותם לחבר ל-0v,

כך פתרנו צד אחד,

אבל עכשיו בצד השני - ה-VCC (שאמור להיות בעצם ה-IN-ים החדשים) יש בעיה:

צריך קודם כל להפריד בינהם, ה-VCC מחובר לכולם ביחד..

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

(משמע, הם על שכבה פנימית..)

ז"א שהאופציה הזו כנראה לא ישימה כאן לצערי..

קישור לתוכן
שתף באתרים אחרים

וואלה..

לא רע =)

תודה

אם אני אלך על האופציה הפשוטה יותר שאמרת - טרנזיסטור שיחובר לרגל יציאה של המיקרו-בקר,

וכך המיקרו-בקר יספק מתח לסט כולו רק כשהמיקרו-בקר מוכן,

איזה טרנזיסטור יתאים מבין ה-17 שיש לי?

קישור לתוכן
שתף באתרים אחרים

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

מעבר לכך, כל בקר 8 ביט מתחיל לרוץ לדעתי באופן די מיידי (מיקרו שניות) , שזה ב-3 סדרי גודל מזמן התגובה של הממסרים (מילי שניות לכל הפחות).

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

קישור לתוכן
שתף באתרים אחרים

אוקיי

אחרי בדיקה, הנה התוצאות:

כשאני שולח "1" לרגל היציאה, זה מכבה את הממסר כמו שצריך, והנורה שנמצאת על ה-PCB, כבויה:

4r25fp.png

כשאני שולח "0" לרגל היציאה, זה מדליק את הממסר, והנורה שנמצאת על ה-PCB, נדלקת גם:

16rm93.png

אבל, כשאני מחבר את הארדואינו לראשונה למקור מתח,

במשך השנייה הראשונה, הנורה ש-על ה-PCB נמצאת במין מצב ביניים מוזר:

s4nd49.png

שימו לב שעוצמת ה-LED כאן נמוכה מהעוצמה במצב הקודם.

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

ארודאינו, כשהוא מקבל מתח, לוקח לו שנייה לעלות.

אני חושב שזו השנייה הזו שה-bootloader ממתין לקבל upload חדש של תוכנית אליו.

אם לא מגיעה תוכנית, הוא מבין שאין upload, ופשוט מריץ את הקיימת..

(אני מניח שהבעיה הזו לא הייתה קיימת, אם הייתי משתמש ב-AVR נקי, ולא ב-Arduino..)

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

קישור לתוכן
שתף באתרים אחרים

רעיון טוב..

רק לוודא,

אם אני אשים נגד Pull Up של 10K,

והרגל המדוברת היא ב-Default רגל כניסה, ואז אחרי שנייה היא הופכת לרגל יציאה(על פי הגדרה בקוד),

אין בעיה נכון?

כלומר Pull Up לא מפריע גם כשהרגל היא יציאה, כאשר הנגד הוא מספיק גדול - 10K?

(במקרה שהרגל מוציאה "0", אז יהיה זרם של 5v/10K = חצי מיליאמפר בנגד..)

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

קישור לתוכן
שתף באתרים אחרים

אוקיי מצאתי מה גורם לבעיה הזו של ה-LED שדולק במין ערך ביניים מוזר כזה..

במיקרו-בקר, הגדרתי בקוד את הרגל הדיגיטלית D8 כרגל Output, וחיברתי אותה עם חוט אל המודול ממסרים, לרגל In1 - הרגל שמפעילה את ממסר1.

כשאני מוציא ברגל D8 "0", הממסר נדלק,

וכשאני מוציא ברגל הזו "1", הממסר כבה.

עד כאן הכל טוב.

אבל לרגל D8, חוץ מהממסר, יש עוד משהו שמחובר,

וזה LED שאני שמתי על המטריצה..

LED אדום, עם נגד 10K.

כך שזה בעצם: D8, מחובר אל ה-LED האדום שלי, שמחובר עם נגד 10K אל ה-0v.

מה שקורה הוא,

שבזמן ההפעלה של המיקרו-בקר,

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

אז יוצא בעצם, שבשנייה הראשונה הזו הרגל מוגדת עדיין במצב הדיפולטי שלה שהוא Input,

והנגד 10K שששמתי, שמחובר לאדמה, בעצם נותן זרם חלש לממסר,

ובגלל זה המודול ממסרים מדליק (חלקית) את ה-LED שם - כי ה-0v הזה זה בדיוק מה שבלוגיקה שלו זה "הפעלה".

ברגע שניתקתי את ה-LED שלי מ-D8, נפתרה הבעיה...

קישור לתוכן
שתף באתרים אחרים

הבעיה המוזרה של השנייה הראשונה נפתרה,

אבל יש משהו קטן שמסקרן אותי..

כל בקר 8 ביט מתחיל לרוץ לדעתי באופן די מיידי (מיקרו שניות) , שזה ב-3 סדרי גודל מזמן התגובה של הממסרים (מילי שניות לכל הפחות).

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

במהלך השנייה הראשונה(שבה ה-Bootloader רץ, ולא התוכנית עדיין),

הרגל מוגדרת ב-default ככניסה,

ובשנייה הזו הכל בסדר.

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

ואז הדבר הראשון שהיא עושה זה:

1) להגדיר את הרגל כיציאה

2) להוציא ברגל ערך "1", שעבור הממסרים הנ"ל(בלוגיקה שלילית) זה אומר "כיבוי".

עכשיו קורה משהו מעניין:

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

כשה-bootloader מסיים את העבודה והתוכנית שלי מתחילה לפעול, ה-LED שנמצא על המודול ממסרים נדלק לזמן מאד מאד קצר,

אבל הממסר עצמו לא מספיק לפעול כשזה קורה..

למרות שלכאורה אני לא אמור לדאוג מזה,

אני סקרן לנסות גם את שיטת הטרנזיסטור.

מבין ה-17 סוגים של הטרנזיסטורים שיש ב-סט שיש לי,

מי מהם יתאים, כדי לספק מתח לכל המודול, ברגע המתאים?

מדדתי עם המולטימטר, המודול ממסרים צורך 105mA בעומס מקסימלי - כששני הממסרים פועלים.

להלן הרשימה שוב:

S9012

S9013

S9014

S9015

S9018

A1015

C1815

A42

A92

2N5401

2N5551

A733

C945

S8050

S8550

2N3906

2N3904

קישור לתוכן
שתף באתרים אחרים

ארכיון

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

×
  • צור חדש...