-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
John Stef
committed
Sep 8, 2021
0 parents
commit 844b367
Showing
6 changed files
with
4,249 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,16 @@ | ||
.SUFFIXES: .jpg .eps .ms .ps .pdf | ||
|
||
IMAGES=$(shell ls *.jpg | sed 's/.jpg/.eps/g') | ||
all: $(IMAGES) flex_sensor.pdf | ||
|
||
.jpg.eps: | ||
convert $< $@ | ||
|
||
.ms.ps: | ||
GHLENABLECOLOR=0 && soelim -r $< | ghighlight | groff -Geptk -ms -Tps > $@ | ||
|
||
.ps.pdf: | ||
ps2pdf $< > $@ | ||
|
||
clean: | ||
rm *.pdf *.eps |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,113 @@ | ||
.EQ | ||
delim $$ | ||
.EN | ||
.ds FAM TNR | ||
.TL | ||
Flex Sensor | ||
.AU | ||
Ιωάννης Στεφανίδης | ||
ΑΕΜ: 9587 | ||
.AI | ||
ΑΠΘ | ||
|
||
.NH | ||
Αισθητήρας | ||
.PP | ||
Ο flex sensor είναι απλά μια αντίσταση που όσο περισσότερο τον λυγίσουμε τόσο | ||
μεγαλύτερη τιμή αντίστασης παίρνουμε. Έχει δηλαδή την ίδια λειτουργία με ένα | ||
ποτενσιόμετρο. | ||
|
||
.PSPIC -C ./image_pinout.eps 2.5 | ||
|
||
.NH | ||
Κυκλώματα | ||
.SH 2 | ||
1\*{ο\*} Κύκλωμα | ||
|
||
.PS | ||
copy "/home/john/Documents/circuitslib-pic/circuitslib.pic" | ||
textpad=0.2 | ||
box "\fBArduino\fR" width 1 | ||
p(,,,A0) | ||
wire(r,0.5) | ||
B: p() | ||
r(u,$R sub c$,d) | ||
ground(u) | ||
move to B | ||
wire(r) | ||
textpad=0.4 | ||
r(d,Flex Sensor) | ||
p(,,5V) | ||
.PE | ||
.SH 2 | ||
2\*{ο\*} Κύκλωμα | ||
.R | ||
.PS | ||
copy "/home/john/Documents/circuitslib-pic/circuitslib.pic" | ||
textpad=0.2 ground(d) | ||
wire(u) | ||
C: | ||
wire(l,0.5) | ||
r(u,1K) | ||
LEDS: | ||
wire(l); wire(u); circle "G" radius 0.1; wire(u); p(D10) | ||
move to LEDS | ||
wire(r); wire(u); circle "R" radius 0.1; wire(u); p(D11) | ||
move to C | ||
r(u,220Ω,0.05) | ||
circle "Buzzer" | ||
wire(u) | ||
p(D12) | ||
move to C | ||
wire(r,0.5) | ||
r(u,$R sub c$) | ||
p(,A0) | ||
textpad=.4 | ||
r(u,Flex Sensor,d) | ||
p(5V) | ||
.PE | ||
.NH | ||
Επιλογή αντίστασης | ||
.PP | ||
Όπως φαίνεται στο 1\*{o\*} κύκλωμα πρέπει να χρησιμοποιήσουμε μια αντίσταση $R | ||
sub c$ η οποία όμως θα είναι σταθερή. Εφόσον η Rf παίρνει τιμές από 30Κ έως | ||
100Κ (οι τιμές αυτές βγήκαν από το πολύμετρό μου). Μέσω του τύπου διαιρέτη | ||
τάσης: | ||
.EQ | ||
define Rc `R sub c` | ||
V sub A0 = Vin ({R sub c} over {R sub f + Rc}) | ||
.EN | ||
μπορούμε να υπολογίσουμε για ποια τιμή της $Rc$ θα έχουμε μεγαλύτερη ευαισθησία | ||
(δηλαδή το $V sub A0$ να μπορεί να πάρει περισσότερες τιμές). Επίσης ανάλογα | ||
την εφαρμογή που θέλουμε να χρησιμοποιήσουμε τον flex sensor αν δηλαδή θα τον | ||
λυγίζουμε πολύ ή λίγο, η καλύτερη αντίσταση $Rc$ είναι διαφορετική. | ||
.G1 | ||
copy "./graph1.grap" | ||
.G2 | ||
.ce | ||
$Rc$ Value | ||
|
||
Παρόλο που βρήκαμε ότι για μια εφαρμογή που θα λυγίζαμε τον αισθητήρα στο 50% η | ||
καλύτερη αντίσταση είναι 36Κ και αντίστοιχα για 100% 51Κ, εγώ θα χρησιμοποιήσω | ||
μια αντίσταση 10Κ με την οποία στο Arduio παίρνω τιμές από 85 έως 245. | ||
|
||
.NH | ||
Κώδικας | ||
.SH 2 | ||
Για 1\*{ο\*} Κύκλωμα | ||
.PP | ||
Παρακάτω φαίνεται ένας απλός κώδικας για να δούμε την αλλαγή στην τιμή τάσης | ||
στο pin Α0. | ||
|
||
.bp | ||
.SH 2 | ||
Για 2\*{ο\*} Κύκλωμα | ||
.PP | ||
Για το δεύτερο κύκλωμα θέλουμε όταν ο αισθητήρας είναι καθόλου ή λίγο | ||
λυγισμένος να ανάβει το πράσινο led. Αν τον λυγίσουμε παραπάνω (περίπου | ||
90\*{ο\*}) να ανάψει το κόκκινο led και στην περίπτωση που τον λυγίσουμε | ||
περισσότερο να χτυπήσει και το buzzer. |
Binary file not shown.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,74 @@ | ||
####################### | ||
#Graph left | ||
####################### | ||
graph A | ||
frame wid 2.5 | ||
draw solid | ||
label top "50% Flexing" | ||
label left "Voltage Range" "" "" | ||
ticks bottom at 1000 "1K", 10000 "10K", 20000 "20K", 30000 "30K" | ||
###################### | ||
#Vars | ||
###################### | ||
vin=5 | ||
min_y=0 | ||
max_y=0 | ||
max_x=0 | ||
rfmin=29000 | ||
rfmax=90000*0.5 | ||
###################### | ||
#Functions | ||
###################### | ||
define vout { (vin * ( ($2) / ( ($1)+($2) ) )) } | ||
define yy { vout(rfmin,($1)) - vout(rfmax,($1))} | ||
define y { | ||
rc=$1 | ||
v_range=yy(rc) | ||
if (rc == 1000) then { min_y = v_range} | ||
if (v_range > max_y) then { | ||
max_y = v_range | ||
max_x = rc | ||
} | ||
next at rc,v_range | ||
} | ||
###################### | ||
#Plot left | ||
###################### | ||
for i from 1000 to 40000 by + 1000 do { | ||
y(i) | ||
} | ||
#max value mark | ||
times at max_x,max_y | ||
plot max_y at max_x,max_y+0.02 | ||
line dashed from max_x,min_y to max_x,max_y | ||
ticks bottom at max_x "36K" | ||
#10K mark | ||
times at 10000,yy(10000) | ||
plot yy(10000) at 10000-4000,yy(10000)+0.02 | ||
line dashed from 10000,min_y to 10000,yy(10000) | ||
####################### | ||
#Graph right | ||
####################### | ||
graph A with .Frame.w at A.Frame.e + (0.1,0) | ||
label top "100% Flexing" | ||
frame wid 2.5 left solid bot solid | ||
ticks left off | ||
ticks right on | ||
ticks bottom at 1000 "1K",10000 "10K", 20000 "20K", 30000 "30K",40000 "40K" | ||
draw solid | ||
rfmax=90000 | ||
###################### | ||
#Plot right | ||
###################### | ||
for i from 1000 to 55000 by + 1000 do { | ||
y(i) | ||
} | ||
#10K mark | ||
times at 10000,yy(10000) | ||
plot yy(10000) at 10000-4000,yy(10000)+0.1 | ||
line dashed from 10000,min_y to 10000,yy(10000) | ||
#max value mark | ||
times at max_x,max_y | ||
plot max_y at max_x,max_y+0.04 | ||
line dashed from max_x,min_y to max_x,max_y | ||
ticks bottom at max_x "51K" |
Oops, something went wrong.