-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathnotes.txt
More file actions
293 lines (250 loc) · 9.42 KB
/
notes.txt
File metadata and controls
293 lines (250 loc) · 9.42 KB
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
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
Before we go to print again:
* eyeball review the zones and layers
* also of the gerbers
* testability
* what needs to be pulled out as test pads
* non-tented vias rather than pads?
* or run all the test to the edge of a board and have a connector?
* JTAG - learn about it?
* KiCAD
* CI/CD design rule checks? - is it commanline scriptable
* build KiCAD from source!
* module community?
* footprint default (e.g.: 0603 hand-solder), preference file?
* smarter BoM creation?
* crawl mouser/digikey for smart defaults for "jelly beans" ?
START HERE:
* Boston Board has shorts in solder bridges on WROOM, fix this first.
* Programming the board:
- we are missing pull-up resistors for ENable (~RESET~) and IO0 (boot)
- we have not successfully programmed the Wroom using FTDI, unless
we also by hand toggle the EN & IO0 via jumpers or buttons
- WROOM32 in Utrecht seems to have a bad reset button
- Sequence to program the the Wroom:
0) Connect FT232 USB->Serial to Wroom
* RX0 to TXD0
* TX0 to RXD0
* 3v3 to Power
* GND to GND
1) connect IO0 to ground (or hold down boot button)
2) connect EN to ground briefly (or press and release EN)
3) hit upload from Arduino IDE as ESP32 Dev Module
- To make the board go, plan is:
* solder 10k pull-up resistors between FTDI_V and Q1, Q2
* solder headers for jumper wires into EN and IO0
* manually, or via an arduino, toggle the EN, IO0
* push firmware via USB->Serial
* Case Design
- LEDs not considered, light pipes?
- posts need buttressing
- hex holes allow nuts to spin, make a tad smaller
- screw holes are very tight, widen a tad
- recess touch-proof connectors so they are flush with case or inside
- compensate for some print warping?
- gasket for where case sides join?
* Board design: do we want a programmable LED?
- allows power LED to be Not Installed / controlled via CPU
- allows debug blink-codes
* expose EN and IO0 on FTDI header (P1)?
* label SW1 with OFF and ON
TODO THIS VERSION (v0.2):
* double-check that our very tight pick-and-place requirements are realistic
e.g.: R45
https://ocmmanufacturing.com/resources/resource/dfm-tip-spacing-components-on-a-pcb/
* Case Design
* Software prototype on esp32
* REV2 board required
- FIXED in v0.2 : d'oh! v0.1 BT1 is BAT2 & BT2 is BAT1 !!!
- FIXED in v0.2 : d'oh! v0.1 DGS and CBE are wrong on all the Qs !!!
- (we de-soldered and rotated and/or jumped around on our v0.1 prototypes)
ORDER PROCESS:
* board dimensions units are in CM not MM at Gold Phoenix
SOMEDAY MAYBE:
- add solder mask between pins on ADS? (conflicting recommendations)
- north reserved pin which connects to DGND: smooth awkward copper path
FOR NEXT VERSION:
* more space around mounting holes for screw support placement
* waterproof USB connectors for dust-proofing
* check footprints for corresponding 3D models
* check footprints to see if they are current or from an older version
* Check BOM for duplicates, update schematic accordingly
- e.g.: "R" vs. "R-device" components which are both 100K Ohm 0603.
* keep a detailed journal of decisions
* add manufacturer-partnumber and manufacturer fields before other annotations
* label all of the networks between components
* finish BOM before starting PCB
CONSIDER:
* Medical Instrument Design and Development on page 265
suggests switching to sheilded leads for EMI
(can we use filtering instead?)
* look at standards, determine if external clock is required
* Build a configurably "noisy" and "bad" power-supply for testing
dial-in out-of-spec for USB: (only 3 or 4 volts or +8 volts)
configurable amount of 50Hz or 60Hz noise
* Create test signals (configurable fake EEG readings we can feed in)
* simulate defribulator voltage added to test cardiac signals
* test vibration influence with car, train, metro, bus, bike
compare with swapping-in a tantilum for C8
* Regulater's Capacitor C42 1uF to 10uF should be fine;
bigger is typically better, but we may get oscillation, need to test
# NOTES ON v0.1 SOT-23 TRANSITORS WITH INCORRECT FOOTPRINTS
## KiCad SOT-23 footprint pin numbering:
1
3
2
## Q1 Q2 : DSS4240T-7
v0.1 KiCad actual part
E B
C C
B E
## Q3 Q4 Q5 Q6: 2N7002-7-F
v0.1 KiCad actual part
D G
S D
G S
## Q7 Q8 Q9 Q10 Q11 : DMG2305UX-13
v0.1 KiCad actual part
D G
S D
G S
--------------------------------------------
Alternated resistors front-to-back in order increase the clearance between
resistors.
--------------------------------------------
esp32 20mA
+WiFi 90-260mA
ads1298 5mA
ADP7158 4mA -- just one of many low noise linear regulator
sdCard <1mA
write 100mA
not tx ~100-200mA
w/ tx ~500mA ... thus efficient power isolation to run off of USB
2 main batteries, but can operate from one, and can swap each out one at a time
... simple power-level indicator? push-button and light up to 0-to-3 LEDs?
... also indicate on web-page?
1 (regargeable?) coin battery for the real-time-clock
TODO: look up coin charger schematic on Adafruit?
LP5912-3.0DRVR LDO Voltage Regulator
reference layout suggests big wide ground connecting Pin2 (NC) to thermal pad
with vias to pin 5 (GND)
and use X7R caps anywhere from 1-to-10uF
and a pullup resistor of 10k-100k for PG
charging: conisder the PCP73833 which has cell temperature monitoring
http://www.microchip.com/wwwproducts/en/en027785
18650 batteries are widely available and cost is reasonable
ADS requires 2.7 min; ESP requires 2.8v min; thus no problem.
batteries drop off dramatically around 3 volts:
http://www.candlepowerforums.com/vb/showthread.php?308451-18650-battery-test-with-capacity-curves-for-many-cells
https://www.amazon.de/Nitecore-Intellicharge-Ladeger%C3%A4t-Li-Ion-Batterien/dp/B06XFH6Z5D/ref=sr_1_1?ie=UTF8&qid=1509900684&sr=8-1&keywords=18650+charger+nitecore
https://smile.amazon.com/Battery-Li-Ion-Rechargeable-Button-LR2032/dp/B0058E94O6/ref=sr_1_sc_2?ie=UTF8&qid=1509899680&sr=8-2-spell&keywords=2032+rechagable
V=IR
R=V/I=(1.2V)/(50e-6)=2.4e4V/1A=24000 Ohm
R=V/I=(1.26V)/(47e6)
RO = (R2*RC)/(R2+RC) - (R2*RH)/(R2+RH) = (R2^2*RC - R2^2*RH)/(R2^2 + R2*RC + R2*RH + RC*RH)
R2^2 (RC - RH) = R0 * R2^2 + R0 * R2 * (RC + RH) + R0*RC*RH
0 = -R2^2 * (RC - RH) + R0 * R2^2 + R0 * R2 * (RC + RH) + R0*RC*RH
0 = (R0 - RC + RH) R2^2 + (R0 * (RC + RH)) * R2 + R0*RC*RH
0 = a * R2^2 + b * R2 + c
R2 = -b +/- sqrt(4*a*c - b^2)/(2a)
eric@titan:~/src/build-mysql-server$ python
Python 2.7.13 (default, Nov 24 2017, 17:33:09)
[GCC 6.3.0 20170516] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> from math import *
>>> 10e3 * exp(-3380*(1/(273.15+25.) + 1/(273.15+60))
... )
4.681859273431694e-06
>>> 10e3 * exp(-3380*(1/(273.15+25) - 1/(273.15+60)))
3039.1856851602356
>>> exp(1)
2.718281828459045
>>> exp(1)**2
7.3890560989306495
>>> exp(2)
7.38905609893065
>>> 10e3 * exp(-3380*(1/(273.15+25) - 1/(273.15+60)))
3039.1856851602356
>>> 10e3 * exp(-3380*(1/(273.15+25) - 1/(273.15+45)))
4903.401159843523
>>> 10e3 * exp(-3380*(1/(273.15+25) - 1/(273.15+0.0)))
28223.725086022154
>>> R0 = 19e3
>>> RH = 3039.1856851602356
>>> RC = 28223.725086022154
>>> RH = 4903.401159843523
>>> b= (R0 * (RC + RH))
>>> a = (R0 - RC + RH)
>>> c =R0*RC*RH
>>> R2 = -b - sqrt(4*a*c - b^2)/(2a)
File "<stdin>", line 1
R2 = -b - sqrt(4*a*c - b^2)/(2a)
^
SyntaxError: invalid syntax
>>> R2 = -b - sqrt(4*a*c - b**2)/(2*a)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: math domain error
>>> R2 = (-b - sqrt(b**2 - 4*a*c))/(2*a)
>>> R2
149751.3160728841
>>> R2 = (-b + sqrt(b**2 - 4*a*c))/(2*a)
>>> R2
-4064.231162986638
>>> R2 = (-b - sqrt(b**2 - 4*a*c))/(2*a)
>>> R12
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'R12' is not defined
>>> R2
149751.3160728841
>>> R1=(5e3 -((R2 * RH)/(R2+RH)))
>>> R1
252.0634995252176
>>> 1/( 1/(273.15 + 25) + 1/3380. * ln(24e3/10e3) )
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'ln' is not defined
>>> 1/( 1/(273.15 + 25) + 1/3380. * log(24e3/10e3) )
276.77593699164424
>>> log(10)
2.302585092994046
>>> log(exp(1))
1.0
>>> 1/( 1/(273.15 + 25) + 1/3380. * log(24e3/10e3) ) - 273.15
3.6259369916442665
>>> 1/( 1/(273.15 + 25) + 1/3380. * log(5e3/10e3) ) - 273.15
44.416848098726064
>>> 1/( 1/(273.15 + 25) + 1/3380. * log(5e3*.99/10e3) ) - 273.15
44.71700233658754
>>> 1/( 1/(273.15 + 25) + 1/3380. * log(5e3*1.01/10e3) ) - 273.15
44.12023842251841
>>> 1/( 1/(273.15 + 25) + 1/3380. * log(5e3/10e3) ) - 273.15
44.416848098726064
>>> 1.25/50-3
-2.975
>>> 1.25/50e-3
25.0
>>> 1.25/50e-6
25000.0
>>> 1.2/50e-6
23999.999999999996
>>> 1.26/47e-6
26808.510638297874
>>> 1/( 1/(273.15 + 25) + 1/3380. * log(26808e3*1.01/10e3) ) - 273.15
-97.477943830615
>>> 1/( 1/(273.15 + 25) + 1/3380. * log(26808*1.01/10e3) ) - 273.15
0.919435923053868
>>> 1.20/53e-6
22641.509433962263
>>> 1/( 1/(273.15 + 25) + 1/3380. * log(22641*1.01/10e3) ) - 273.15
4.725901928055919
>>> 0.235/53e-6
4433.962264150943
>>> 1/( 1/(273.15 + 25) + 1/3380. * log(4434*0.99/10e3) ) - 273.15
48.34929827083289
>>> 0.265/47e-6
5638.297872340426
>>> 1/( 1/(273.15 + 25) + 1/3380. * log(5638*0.99/10e3) ) - 273.15
41.16716023313063
>>> 1/( 1/(273.15 + 25) + 1/3380. * log(5638*1.01/10e3) ) - 273.15
40.58363861408782