Skip to content

Commit

Permalink
add flex sensor pdf example
Browse files Browse the repository at this point in the history
  • Loading branch information
John Stef committed Sep 8, 2021
0 parents commit 844b367
Show file tree
Hide file tree
Showing 6 changed files with 4,249 additions and 0 deletions.
16 changes: 16 additions & 0 deletions flex_sensor_pdf/Makefile
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
113 changes: 113 additions & 0 deletions flex_sensor_pdf/flex_sensor.ms
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 added flex_sensor_pdf/flex_sensor.pdf
Binary file not shown.
74 changes: 74 additions & 0 deletions flex_sensor_pdf/graph1.grap
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"
Loading

0 comments on commit 844b367

Please sign in to comment.