Let op: Tweakers stopt per 2023 met Tweakblogs. In
dit artikel
leggen we uit waarom we hiervoor hebben gekozen.
Windrichting
Het bepalen van de windrichting is tamelijk makkelijk zou je denken tot dat er hier een elektronische waarde aan gekoppeld moet worden. en zeker als je deze dan nog eens wilt weergeven ook.
Toen ik begon aan mijn eindwerk had ik 3 ideeën:
* werken met een pot-meter
* werken met reed-contacten
* werken met een optisch gescheiden schakeling
Het werken met een pot-meter is eigenlijk je windvaan aansluiten op 2 pot-meters, aangezien pot-meters altijd een dood punt hebben . Door de weerstand van de pot-meters te bepalen kan men via een µC een programma schrijven waarbij beide waarden ingelezen worden en men zo de richting kan bepalen. Nadeel hierbij is dat het analoog inlezen van signalen met µC zeer moeilijk is
Het werken met reed-contacten is dan weer niet gebruikt omdat er ten eerste met een permanente magneet gewerkt moet worden en men evenveel ingangssignalen als richtingen nodig heeft wat een dus zeer zware beperking is.
Ik heb dus met een optische scheiding gewerkt hierbij draait een doorzichtige schijf rond die in bepaalde sectoren niet doorzichtig is. boven de schijf bevinden zich 4 leds er onder 4 fototransistors wanneer de schijf onder 1 van de leds niet doorzichtig is laat de transistor geen stroom meer door, zo ontstaan er in mijn geval 4 ingangssignalen wat dus wil zeggen 16 richtingen. (tekening om toch iets duidelijker te maken
)

Er is gewerkt met fototransistors omdat die een beter bereik hadden dan fotodiodes.
en nu mijn programmatjes
Via dit programma worden dus 16 ledjes aangestuurd die in een cirkel staan. Dit programma is een deel van mijn uiteindelijke programma van mijn eindwerk maar hier over later meer.
Het programma is geschreven in Basic, Ook zijn er 8 ingangen omdat de windrichting t.o.v. de molen en t.o.v. de persoon bepaald moesten worden. DE strustuur van dit programma is tamelijk eenvoudig en men kan hier een zeer goede nauwkeurigheid mee behalen per extra ingang word het aantal richtingen vermenigvuldigd met 2.
Toen ik begon aan mijn eindwerk had ik 3 ideeën:
* werken met een pot-meter
* werken met reed-contacten
* werken met een optisch gescheiden schakeling
Het werken met een pot-meter is eigenlijk je windvaan aansluiten op 2 pot-meters, aangezien pot-meters altijd een dood punt hebben . Door de weerstand van de pot-meters te bepalen kan men via een µC een programma schrijven waarbij beide waarden ingelezen worden en men zo de richting kan bepalen. Nadeel hierbij is dat het analoog inlezen van signalen met µC zeer moeilijk is
Het werken met reed-contacten is dan weer niet gebruikt omdat er ten eerste met een permanente magneet gewerkt moet worden en men evenveel ingangssignalen als richtingen nodig heeft wat een dus zeer zware beperking is.
Ik heb dus met een optische scheiding gewerkt hierbij draait een doorzichtige schijf rond die in bepaalde sectoren niet doorzichtig is. boven de schijf bevinden zich 4 leds er onder 4 fototransistors wanneer de schijf onder 1 van de leds niet doorzichtig is laat de transistor geen stroom meer door, zo ontstaan er in mijn geval 4 ingangssignalen wat dus wil zeggen 16 richtingen. (tekening om toch iets duidelijker te maken

Er is gewerkt met fototransistors omdat die een beter bereik hadden dan fotodiodes.
en nu mijn programmatjes
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
| DEVICE 18F4450 ;De gebruikte µC is een PIC18F4450
CLOCK_ON
ALL_DIGITAL TRUE ;Al de gebruikte signalen zijn digitaal: de snelheid door de led-driver en de richting door de fototransistors
SYMBOL I_R1 = PORTA.0 ;Poort A.1 heeft nu de naam I_R1 = pin 19
SYMBOL I_R2 = PORTA.1 ;pin 20
SYMBOL I_R3 = PORTA.2 ;pin 21
SYMBOL I_R4 = PORTA.3 ;pin 22
SYMBOL I_R5 = PORTA.4 ;pin 23
SYMBOL I_R6 = PORTA.5 ;pin 24
SYMBOL I_R7 = PORTE.0 ;pin 25
SYMBOL I-R8 = PORTE.1 ;pin 26
SYMBOL I_S = PORTE.2 ;pin 27
SYMBOL O_R1 = PORTB.0 ;pin 8
SYMBOL O_R2 = PORTB.1 ;pin 9
SYMBOL O-R3 = PORTB.2 ;pin 10
SYMBOL O_R4 = PORTB.3 ;pin 11
SYMBOL O_R5 = PORTB.4 ;pin 14
SYMBOL O_R6 = PORTB.5 ;pin 15
SYMBOL O_R7 = PORTB.6 ;pin 16
SYMBOL O_R8 = PORTB.7 ;pin 17
SYMBOL O_R9 = PORTC.0 ;pin 32
SYMBOL O_R10 = PORTC.1 ;pin 35
SYMBOL O_R11 = PORTC.2 ;pin 36
SYMBOL O_R12 = PORTD.1 ;pin 39
SYMBOL O_R13 = PORTC.4 ;pin 42
SYMBOL O_R14 = PORTC.5 ;pin 43
SYMBOL O_R15 = PORTC.6 ;pin 44
SYMBOL O_R16 = PORTC.7 ;pin 1
SYMBOL O_MOTP = PORTD.0 ;pin 38
SYMBOL O_MOTN = PORTD.2 ;pin 40
SYMBOL ON = 1
SYMBOL OFF = 0
PORTA=%00000000
PORTB=%00000000
PORTC=%00000000
PORTD=%00000000
PORTE=%00000000
TRISA=%00111111
TRISB=%00000000
TRISC=%00000000
TRISD=%00000000
TRISE=%00000111
START: ;Label is Start, hier naar moet iedere keer op het einde van het programma terug gekeerd worden
WHILE 1=1
CLEAR ;Hierdoor word het werkgeheugen volledig gewist
IF I_R1 = ON THEN
IF I_R2 = ON THEN
IF I_R3 = ON THEN
IF I_R4 = ON THEN
O_R16 = OFF
O_R1 = ON
O_R2 = OFF
ELSEIF I_R4 = OFF THEN
O_R1 = OFF
O_R2 = ON
O_R3 = OFF
ENDIF
ELSEIF I_R3 = OFF THEN
IF I_R4 = ON THEN
O_R2 = OFF
O_R3 = ON
O_R4 = OFF
ELSEIF I_R4 = OFF THEN
O_R3 = OFF
O_R4 = ON
O_R5 = OFF
ENDIF
ENDIF
ELSEIF I_R2 = OFF
IF I_R3 = ON THEN
IF I_R4 = ON THEN
O_R4 = OFF
O_R5 = ON
O_R6 = OFF
ELSEIF I_R4 = OFF THEN
O_R5 = OFF
O_R6 = ON
O_R7 = OFF
ENDIF
ELSEIF I_R3 = OFF THEN
IF I_R4 = ON THEN
O_R6 = OFF
O_R7 = ON
O_R8 = OFF
ELSEIF I_R4 = ON THEN
O_R7 = OFF
O_R8 = ON
O_R9 = OFF
ENDIF
ENDIF
ENDIF
ELSEIF I_R1 = OFF THEN
IF I_R2 = ON THEN
IF I_R3 = ON THEN
IF I_R4 = ON THEN
O_R8 = OFF
O_R9 = ON
O_R10 = OFF
ELSEIF I_R4 = OFF THEN
O_R9 = OFF
O_R10 = ON
O_R11 = OFF
ENDIF
ELSEIF I_R3 = OFF THEN
IF I_R4 = ON THEN
O_R10 = OFF
O_R11 = ON
O_R12 = OFF
ELSEIF I_R4 = OFF THEN
O_R11 = OFF
O_R12 = ON
O_R13 = OFF
ENDIF
ENDIF
ELSEIF I_R2 = OFF
IF I_R3 = ON THEN
IF I_R4 = ON THEN
O_R12 = OFF
O_R13 = ON
O_R14 = OFF
ELSEIF I_R4 = OFF THEN
O_R13 = OFF
O_R14 = ON
O_R15 = OFF
ENDIF
ELSEIF I_R3 = OFF THEN
IF I_R4 = ON THEN
O_R14 = OFF
O_R15 = ON
O_R16 = OFF
ELSEIF I_R4 = OFF THEN
O_R15 = OFF
O_R16 = ON
O_R1 = OFF
ENDIF
ENDIF
ENDIF
ENDIF
WEND
END |
Via dit programma worden dus 16 ledjes aangestuurd die in een cirkel staan. Dit programma is een deel van mijn uiteindelijke programma van mijn eindwerk maar hier over later meer.
Het programma is geschreven in Basic, Ook zijn er 8 ingangen omdat de windrichting t.o.v. de molen en t.o.v. de persoon bepaald moesten worden. DE strustuur van dit programma is tamelijk eenvoudig en men kan hier een zeer goede nauwkeurigheid mee behalen per extra ingang word het aantal richtingen vermenigvuldigd met 2.