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

Transcription

פרויקטון בקרת שער חניה הסבר פרויקטון חומרה IR משדר מקלט ובכך הוא קובע א
‫פרויקטון בקרת שער חניה‬
‫הסבר פרויקטון חומרה‬
VCC
VCC
P1
R
10k
R1
10K
200
P1
VCC
C8
U4
4
SLCT(D4)
PE(D5)
1
+
-
3
2
7
+
-
5
6
8
+
-
10
9
14
+
-
12
13
LM324
10K
0.1u
VCC=5V
R2
VCC1
1k
LED
DATA0
DATA1
2
7
10
15
M1
8
U2
16
MOTOR LEFT
CONNECTOR DB25F
D3
L293D
1A
2Y
2A
1Y
3A
3Y
4A
4Y
6
3
11
14
VCC=5V
1,2EN
3,4EN
4
5
13
12
GND
GND
GND
GND
1
9
IR ‫משדר מקלט‬
‫ ובכך הוא קובע את‬IR ‫ קובע את עוצמת הזרם דרך הדיודה‬R1 ‫ הנגד‬-‫מעגל המשדר‬
.‫עוצמת השידור‬
. 1.2V IR ‫מפל המתח על הדיודה‬
19mA=
5 − 1.2 VCC − VD
=
=I
200
R
sensor1
VCC
C9
DATA2
IR
0.1u
R1
R
200
11
1
14
2
15
3
16
4
17
5
18
6
19
7
20
8
21
9
22
10
23
11
24
12
25
13
VCC2
STROBE(D0-out2)
AUTO(D1-out2)
DATA0(out0)
ERROR(D3-in1)
DATA1(out0)
INT(D2-out2)
DATA2(out0)
SELECT(D3-out2)
DATA3(out0)
GND
DATA4(out0)
GND
DATA5(out0)
GND
DATA6(out0)
GND
DATA7(out0)
GND
ACKNLG(D6-in1)
GND
BUSY(D7-in1)
GND
PE(D5-in1)
GND
SLCT(D4-in1)
- ‫חישוב הזרם דרך המשדר‬
IR
sensor2
‫מעגל המקלט‪ -‬המקלט הוא פוטו טרנזיסטור ‪ ,‬זרם הבסיס נקבע על ידי קרינת ‪. IR‬‬
‫כאשר המקלט קולט שידור ‪) IR‬אין חסימה(‪ ,‬הזרם במעגל המקלט גדול‪.‬‬
‫מתח על ‪ R2‬גדול לפיכך המתח בנקודה ‪ A‬קטן‪) .‬בסביבות ‪ , 0--0.5V‬תלוי‬
‫בעוצמת הקליטה(‪.‬‬
‫בזמן חסימה בין המשדר למקלט‪ ,‬הזרם בענף המקלט קטן עד למינימום‪ ,‬מפל המתח על ‪R2‬‬
‫קטן‪ ,‬המתח בנקודה ‪ A‬גדל )בסביבות ‪.( 4-3V‬‬
‫‪VCC‬‬
‫בנקודה ‪ A‬קיבלנו שינויי מתח‪.‬‬
‫‪R2‬‬
‫‪R1‬‬
‫‪10K‬‬
‫‪200‬‬
‫על מנת להפוך שינויים אלה ל‪ '0' -‬או '‪'1‬‬
‫שהמחשב יזהה יש צורך במשווה‪.‬‬
‫‪IR‬‬
‫‪sensor1‬‬
‫‪C8‬‬
‫‪0.1u‬‬
‫תפקיד הקבל לסנן רעשים )מקצר את הרעשים לאדמה(‪.‬‬
‫משווה‬
‫המשווה בנוי ממגבר שרת בחוג פתוח‬
‫‪ V‬מחובר לנגד משתנה ואנו קובעים את המתח בנקודה לפי מחלק המתח של הנגד‪.‬‬‫‪ V+‬מחובר לנקודה ‪ A‬קולקטור הפוטוטרנזיסטור‪.‬‬
‫‪A‬‬
‫מתח המוצא של המשווה‬
V+ > V-
VOÎ '1'
V+ < V- VOÎ ' 0'
‫חיבור המשווה לכניסות\יציאות של המדפסת‬
VCC
VCC
P1
R2
10k
A
R1
10K
200
VCC
U4
IR
4
0.1u
+
-
3
2
7
+
-
5
6
8
+
-
10
9
14
+
-
12
13
sensor1
VCC
10K
200
11
1
LM324
C8
C9
0.1u
IR
sensor2
‫דוחף הזרם ‪L293D‬‬
‫מאפיינים‪:‬‬
‫•‬
‫זרם מקסימלי ‪500mA‬‬
‫•‬
‫זרם רגעי ‪1.5mA‬‬
‫•‬
‫חסינות לרעש גבוהה‬
‫•‬
‫הגנה מפני התחממות‬
‫השימוש בדוחף הזרם הוא חיוני משום שלא ניתן לחבר ליציאות המחשב את המנוע בגלל צריכת זרם‬
‫גבוהה‪ .‬המחשב מסוגל להוציא זרמים בערכי מילי אמפרים מנועי ה‪ DC-‬בהם אנחנו משתמשים צורכים‬
‫עד מאה מילי אמפר‪ ,‬ולכן התבקש להשתמש בדוחף כמתווך‪.‬‬
‫דוחף זה הוא מסוג ‪ H‬בו מחוברים ‪ 4‬טרנזיסטורים אשר עובדים בקטעון או רוויה בהתאם לאות הכניסה‪.‬‬
‫בכך הם מאפשרים למתח המנועים להגיע למנוע בקוטביות מסוימת )מנוע מסתובב קדימה(‪ ,‬בקוטביות‬
‫הפוכה )מנוע מסתובב הפוך( או ניתוק המתח )מנוע עוצר(‪.‬‬
‫מבנה עקרוני של דוחף מסוג ‪H‬‬
‫הטרנזיסטורים משמשים כמפסקים )עבודה ברוויה ובקטעון(‬
‫כאשר ‪ S3,S2‬ברוויה ו‪ S1,S4 -‬בקטעון הזרם יזרום מימין לשמאל המנוע יסתובב לכיוון אחד‪.‬‬
‫כאשר ‪ S1,S4‬ברוויה ו‪ S3,S2 -‬בקטעון הזרם יזרום משמאל לימין המנוע יסתובב לכיוון השני‪.‬‬
‫תוכנה‬
‫>‪#include <windows.h‬‬
‫הכרזה על ספריות מובנות לשימוש בפונקציות‬
‫>‪#include <stdio.h‬‬
‫>‪#include<conio.h‬‬
‫;)‪short _stdcall Inp32(short portaddress‬‬
‫;)‪void _stdcall Out32(short portaddress,short data‬‬
‫*************************************‪//‬‬
‫‪//‬‬
‫‪password‬‬
‫*************************************‪//‬‬
‫)(‪int password‬‬
‫{‬
‫;‪int a,f‬‬
‫;‪char key‬‬
‫מערך של הקוד בערכי ‪char code[4]={0x31,0x32,0x33,0x34}; ASCII‬‬
‫;]‪char get_code[4‬‬
‫הכרזה על מערך לקליטת הקוד מהמשתמש‬
‫הודעת הכנסת קוד‬
‫;)"‬
‫לולאה ‪ 4‬פעמים לקליטת הקוד‬
‫קליטת מקש בקוד‬
‫הכנסת הערך הנקלט למערך הקליטה‬
‫הדפסת * על המסך‬
‫‪printf(" ENTER PASSWORD:‬‬
‫)‪for (a=0;a<4;a++‬‬
‫{‬
‫‪key=getch(); ASCII‬‬
‫;‪get_code[a]=key‬‬
‫;)"*"(‪printf‬‬
‫}‬
‫)‪for (f=0,a=0;a<4;a++‬‬
‫לולאת בדיקת הקוד‬
‫{‬
‫)]‪if (code[a]!=get_code[a‬‬
‫האם הקוד הנקלט שונה מהקוד‬
‫{‬
‫האמיתי‬
‫;‪f=1‬‬
‫אם כן שים בדגל ‪1‬‬
‫;‪break‬‬
‫סיים את הלולאה‬
‫}‬
‫}‬
‫;‪return f‬‬
‫‪ f‬קוד שגוי ‪ f=1‬קוד נכון ‪f=0‬‬
‫החזר את‬
‫}‬
‫********************************************‪//‬‬
‫‪//‬‬
‫‪motor‬‬
‫*******************************************‪//‬‬
‫)(‪void motor‬‬
‫{‬
‫;‪int s‬‬
‫;)"‪printf("\n THE GATE IS OPEN\n‬‬
‫הודעת פתיחת השער‬
‫הפעלת המנוע לפתיחה והדלקת הלד ;)‪Out32(0x378,0x05‬‬
‫;)‪Sleep(2000‬‬
‫השהיה של ‪ 2‬שניות בה המנוע יעבוד‬
‫;)‪Out32(0x378,0x00‬‬
‫עצירת המנוע כיבוי הלד‬
‫;)‪Sleep(2000‬‬
‫השהייה ‪ 2‬שניות לאפשר מעבר רכב‬
‫{‪do‬‬
‫לולואה‬
‫קלוט מצב המפסקים למשתנה ‪s=Inp32(0x379); s‬‬
‫בצע מיסוך לחיישני כניסה\יציאה ‪s=s&0x30; d5,d4‬‬
‫}‬
‫;)‪while (s!=0x00‬‬
‫אם יש רכב בשער )חישניים ב‪ ('1'-‬חזור על‬
‫הלולאה‬
‫;)"‪printf("\n THE GATE IS close\n‬‬
‫אין רכב בשער הוצא הודעת‬
‫סגירה‬
‫;)‪Out32(0x378,0x06‬‬
‫הפעל מנוע לסגירת השער‬
‫;)‪Sleep(2000‬‬
‫המתן ‪ 2‬שניות‬
‫;)‪Out32(0x378,0x00‬‬
‫עצור את המנוע השער סגור‬
‫}‬
‫**********************************************‪//‬‬
‫‪//‬‬
‫‪main‬‬
‫**********************************************‪//‬‬
‫)(‪void main‬‬
‫{‬
‫הכרזת משתנים‬
‫כיבוי מנוע ולד‬
‫הודעת‬
‫סריקה‬
‫קליטת כניסה מצב חיישני כניסה יציאה‬
‫מיסוך סיביות ‪ 4,5‬לבדיקת החיישנים‬
‫אם החיישנים ב‪ '0'-‬לא הגיע רכב חזור‬
‫האם חיישן הכניסה הופעל )'‪('1‬‬
‫לולאה אין סופית‬
‫הפעל את הפונקציה לקליטת קוד‬
‫ערך מוחזר '‪ '0‬הקוד תקין‬
‫האם הקוד תקין‬
‫;‪int p,sensor‬‬
‫)‪while(1‬‬
‫{‬
‫;)‪Out32(0x378,0x00‬‬
‫;)"‪printf("SYSTEM SCANING\n‬‬
‫{‪do‬‬
‫;)‪sensor=Inp32(0x379‬‬
‫;‪sensor=sensor&0x30‬‬
‫}‬
‫;)‪while ((sensor&0x30)==0x00‬‬
‫)‪if (sensor==0x10‬‬
‫{‬
‫)‪while(1‬‬
‫{‬
‫;)(‪p=password‬‬
‫)‪if ( p==0‬‬
‫{‬
‫הפעל פונקצה לפתיחה וסגירה של השער ;)(‪motor‬‬
‫;)‪Sleep(5000‬‬
‫השהיה ‪ 5‬שניות‬
‫;‪break‬‬
‫}‬
‫‪else‬‬
‫הודעת שגיאה במידה ;)"‪printf("\n ERROR TRY AGAIN\n‬‬
‫והקוד שגוי‬
‫חיישן יציאה הופעל)'‪('1‬‬
‫הפעל פונקציה לפתיחה וסגירת השער‬
‫;)(‪motor‬‬
‫}‬
‫}‬
‫‪else‬‬
‫}‬
‫}‬