[{"data":1,"prerenderedAt":412},["ShallowReactive",2],{"page-\u002Fdocs\u002Fcalibration":3,"list-docs":303},{"id":4,"title":5,"body":6,"description":287,"extension":288,"file":289,"group":290,"label":291,"meta":292,"minutes":293,"navigation":294,"order":295,"path":296,"section":297,"seo":298,"slug":299,"stem":300,"updated":301,"__hash__":302},"pages\u002Fdocs\u002FCALIBRATION.md","Bench test and calibration",{"type":7,"value":8,"toc":279},"minimark",[9,14,18,31,34,113,117,131,135,142,147,159,164,200,203,213,219,222,225,228,232,276],[10,11,13],"h2",{"id":12},"_1-bench-test-of-the-ad5328-module-no-coils-connected","1. Bench test of the AD5328 module (no coils connected)",[15,16,17],"p",{},"The module's output stage is undocumented. The firmware assumes:",[19,20,21,25,28],"ul",{},[22,23,24],"li",{},"2.5 V onboard reference (jumper 1-2);",[22,26,27],{},"AD5328 GAIN = 1, giving 0–5 V from the DAC;",[22,29,30],{},"module output = 4·V_DAC − 10 V, so code 0x000 → −10 V, 0x800 → 0 V, 0xFFF → +10 V.",[15,32,33],{},"Verify this before connecting coils:",[35,36,37,65,85,91,101,107],"ol",{},[22,38,39,40,44,45,48,49,52,53,56,57,60,61,64],{},"Module jumper on ",[41,42,43],"strong",{},"1-2",", 5 V from a USB supply, ESP32 wired as in docs\u002FWIRING.md, ",[41,46,47],{},"no coils, arming switch not connected",". First check the module's test pads against GND: ",[41,50,51],{},"5V"," ≈ 5 V, ",[41,54,55],{},"12V"," ≈ +12 V, ",[41,58,59],{},"−12V"," ≈ −12 V, ",[41,62,63],{},"VREF"," ≈ 2.50 V. If VREF reads 0 V or drifts, the reference jumper is on 2-3 or missing (docs\u002FWIRING.md, \"The AD5328 module\").",[22,66,67,68,72,73,76,77,80,81,84],{},"Flash the firmware (",[69,70,71],"code",{},"cd firmware && pio run -e \u003Cboard> -t upload",", with ",[69,74,75],{},"esp32s3",", ",[69,78,79],{},"esp32dev"," or ",[69,82,83],{},"esp32e_lcd28",") and connect the app (Connect → GodHelmet-XXXX).",[22,86,87,90],{},[41,88,89],{},"Power-on state."," Before the ESP32 boots (hold its EN button), measure AO1…AO8 against GND. Expect ≈ −10 V (DAC code 0). This is why the arming switch exists.",[22,92,93,96,97,100],{},[41,94,95],{},"After boot."," All outputs should read ",[41,98,99],{},"0 V ± 20 mV"," (mid-scale).",[22,102,103,106],{},[41,104,105],{},"Full scale."," In the app, Helmet → Calibration → DC test on CH1 at +4.5 mA. With nothing connected, the output is the DAC voltage: expect about +9.9 V. At −4.5 mA expect about −9.9 V. Check every channel. CH1 must be AO1 (DAC A), and so on.",[22,108,109,112],{},[41,110,111],{},"If full scale is only 0 to −10 V or −10 to 0 V",", the module expects the other gain setting: toggle \"DAC gain ×2\" in Helmet → Settings and repeat. If the swing is ±5 V, set \"Module full scale\" to 5.",[10,114,116],{"id":115},"_2-wiring-and-polarity-check-coils-connected-helmet-off","2. Wiring and polarity check (coils connected, helmet off)",[19,118,119,125],{},[22,120,121,124],{},[41,122,123],{},"Helmet → Wiring check → rotation test",", 1000 ms dwell, 2 mA. Measure the voltage across each 2.2 kΩ resistor: about 4.4 V on the active channel and 0 V elsewhere, moving in CCW order (docs\u002FPLACEMENT.md).",[22,126,127,130],{},[41,128,129],{},"DC test per coil with a compass"," in front of the coil face. Mark the face the compass's south end points to as N (it is the coil's north pole). Mount all coils N-face inward.",[10,132,134],{"id":133},"_3-field-calibration-µt-per-ma-at-20-mm","3. Field calibration (µT per mA at 20 mm)",[15,136,137,138,141],{},"The firmware converts the µT you choose into current using a per-channel factor: µT at 20 mm, on axis, per mA. The default 1.8 is the model of this coil with its core; the same winding without a core gives 0.73 (",[69,139,140],{},"tools\u002Fcoil_field.py","). Measure every coil: the core material of these commodity coils is not documented (sellers list ferrite or iron), and the field falls about 12 % per mm at 20 mm, so the spacer must be accurate to ±0.3 mm for ±4 %.",[15,143,144],{},[41,145,146],{},"You need:",[19,148,149,156],{},[22,150,151,152,155],{},"a phone with a magnetometer and ",[41,153,154],{},"phyphox"," (free; \"Magnetometer\" experiment, absolute values), or the optional I2C magnetometer;",[22,157,158],{},"a 20 mm spacer (a stack of coins, a piece of wood).",[15,160,161],{},[41,162,163],{},"Per coil:",[35,165,166,169,172,179,190,197],{},[22,167,168],{},"Lay the phone flat and find where its magnetometer sits (move a small magnet over it; usually near the top edge). Find the axis that changes most when the coil is held against the phone.",[22,170,171],{},"Put the coil face 20 mm from the sensor, on axis, with nothing metallic nearby.",[22,173,174,175,178],{},"Note the reading with the coil ",[41,176,177],{},"off"," (Earth's field and phone offsets).",[22,180,181,182,185,186,189],{},"Start a DC test at ",[41,183,184],{},"+2 mA"," (Helmet → Calibration) and note the reading ",[41,187,188],{},"on",".",[22,191,192,193,196],{},"Repeat at ",[41,194,195],{},"−2 mA","; the change should be the same size with the opposite sign.",[22,198,199],{},"Enter |on − off| and the current; \"Use for this channel\" computes µT\u002FmA. Save.",[15,201,202],{},"Or collect all readings in a CSV and fit them:",[204,205,210],"pre",{"className":206,"code":208,"language":209},[207],"language-text","channel,mA,uT_on,uT_off\n1,2,49.10,47.62\n1,-2,46.15,47.62\n...\n","text",[69,211,208],{"__ignoreMap":212},"",[204,214,217],{"className":215,"code":216,"language":209},[207],"python3 tools\u002Fcalibrate.py measurements.csv\n",[69,218,216],{"__ignoreMap":212},[15,220,221],{},"Type the printed values into Helmet → Calibration and save.",[15,223,224],{},"Expected values: about 1.8 µT\u002FmA with the core (model range 1.4–2.2), 0.73 without. With 1.8, the 4.54 mA cap gives about 8 µT at 20 mm, about 1 µT at 45 mm and about 0.47 mT at the core face. An uncalibrated helmet with the old default (0.73) delivered about 2.4× the requested field; with the current default the error is small if the coil has a core and the field comes out lower (about 0.4×) if it has none.",[15,226,227],{},"To check the model itself, also measure on axis at 0, 2, 5, 10 and 40 mm and at 90° in the coil's mid-plane (reverse the current to cancel Earth's field). Model values per mA: 105 µT at the face, 60 at 2 mm, 25 at 5 mm, 8.1 at 10 mm, 0.33 at 40 mm; −0.6 µT at 90°, 20 mm from the coil's side. A fluxgate (FLC100) or MMC5983MA works from about 5 mm outwards; use a Hall sensor (DRV5055) only at 0–5 mm.",[10,229,231],{"id":230},"_4-what-the-numbers-mean","4. What the numbers mean",[233,234,235,248],"table",{},[236,237,238],"thead",{},[239,240,241,245],"tr",{},[242,243,244],"th",{},"Setting",[242,246,247],{},"Meaning",[249,250,251,260,268],"tbody",{},[239,252,253,257],{},[254,255,256],"td",{},"Intensity (µT)",[254,258,259],{},"Peak field 20 mm in front of each coil, i.e. roughly at the cortex under it",[239,261,262,265],{},[254,263,264],{},"Max field (Helmet → Settings)",[254,266,267],{},"Your ceiling (default 5 µT, absolute limit 10 µT)",[239,269,270,273],{},[254,271,272],{},"Max reachable",[254,274,275],{},"Hardware cap × weakest channel's µT\u002FmA",[15,277,278],{},"Literature values: Persinger helmet ≈ 1 µT; Octopus 5–10 µT; Shakti 1–9 µT. Presets default to 1 µT (2 µT for the circumcerebral research presets).",{"title":212,"searchDepth":280,"depth":280,"links":281},3,[282,284,285,286],{"id":12,"depth":283,"text":13},2,{"id":115,"depth":283,"text":116},{"id":133,"depth":283,"text":134},{"id":230,"depth":283,"text":231},"Bench test of the module, wiring checks, and measuring µT per mA with a phone.","md","docs\u002FCALIBRATION.md","Build it","Calibration",{},4,true,9,"\u002Fdocs\u002Fcalibration","docs",{"title":5,"description":212},"calibration","docs\u002FCALIBRATION",null,"baoydeyzC66kQqaF0NCcXcEvoGxOD6lUB4Lh0RXQydg",[304,314,322,329,337,338,346,355,364,372,380,389,396,404],{"path":305,"title":306,"description":307,"section":297,"slug":308,"label":309,"group":310,"order":311,"minutes":312,"updated":301,"file":313},"\u002Fdocs\u002Foverview","God Helmet: 8-coil weak-field headset (ESP32 + AD5328 + web app over Bluetooth or USB)","What the project is, what is in the repository, quick start and current status.","overview","Overview","Start here",5,7,"README.md",{"path":315,"title":316,"description":317,"section":297,"slug":318,"label":316,"group":310,"order":319,"minutes":320,"updated":301,"file":321},"\u002Fdocs\u002Fsafety","Safety","Who must not use the helmet, the rules for every session, and the safeguards built into the firmware.","safety",6,29,"docs\u002FSAFETY.md",{"path":323,"title":324,"description":325,"section":297,"slug":326,"label":327,"group":290,"order":312,"minutes":283,"updated":301,"file":328},"\u002Fdocs\u002Fparts","Bill of materials","Every part of the helmet with quantities and notes.","parts","Parts list","hardware\u002FBOM.md",{"path":330,"title":331,"description":332,"section":297,"slug":333,"label":331,"group":290,"order":334,"minutes":335,"updated":301,"file":336},"\u002Fdocs\u002Fwiring","Wiring","Schematic, coil leads, pin tables for each supported board, the arming switch and cable pair mapping.","wiring",8,15,"docs\u002FWIRING.md",{"path":296,"title":5,"description":287,"section":297,"slug":299,"label":291,"group":290,"order":295,"minutes":293,"updated":301,"file":289},{"path":339,"title":340,"description":341,"section":297,"slug":342,"label":343,"group":290,"order":344,"minutes":312,"updated":301,"file":345},"\u002Fdocs\u002Fstandalone","Standalone display board","Running the helmet from the 2.8\" display board without phone or computer: flashing, the SD-card program pack, clock and screens.","standalone","Touchscreen board",10,"docs\u002FSTANDALONE.md",{"path":347,"title":348,"description":349,"section":297,"slug":350,"label":348,"group":351,"order":352,"minutes":353,"updated":301,"file":354},"\u002Fdocs\u002Fplacement","Coil placement","The 10-10 system, finding sites with a tape measure, the standard and program-specific layouts, depth and field per target.","placement","Use it",11,42,"docs\u002FPLACEMENT.md",{"path":356,"title":357,"description":358,"section":297,"slug":359,"label":360,"group":351,"order":361,"minutes":362,"updated":301,"file":363},"\u002Fdocs\u002Fexperiments","Testing it honestly: blinded sessions and psi trials","Blinded real and sham sessions, remote-viewing and telepathy protocols, and the statistics behind the results table.","experiments","Experiments",12,33,"docs\u002FEXPERIMENTS.md",{"path":365,"title":366,"description":367,"section":297,"slug":368,"label":369,"group":351,"order":370,"minutes":312,"updated":301,"file":371},"\u002Fdocs\u002Fguides","Guided sessions (\"Guides\")","The guided-session format, the audio engine and how guides arm the helmet.","guides","Guided sessions",13,"docs\u002FGUIDES.md",{"path":373,"title":374,"description":375,"section":297,"slug":376,"label":374,"group":351,"order":377,"minutes":378,"updated":301,"file":379},"\u002Fdocs\u002Fquestionnaires","Questionnaires","The questionnaires used in guides, their sources, licences and scoring.","questionnaires",14,20,"docs\u002FQUESTIONNAIRES.md",{"path":381,"title":382,"description":383,"section":297,"slug":384,"label":385,"group":386,"order":335,"minutes":387,"updated":301,"file":388},"\u002Fdocs\u002Fsignals","Signals: what the coils play and where it comes from","What the coils play: coil physics and exposure limits, the Persinger-lab signals rebuilt from primary sources, vendor signal families and clinical timings.","signals","Signals","Reference",44,"docs\u002FSIGNALS.md",{"path":390,"title":391,"description":392,"section":297,"slug":393,"label":391,"group":386,"order":394,"minutes":334,"updated":301,"file":395},"\u002Fdocs\u002Fpreset-format","Program file format","The program file format, every signal and coil mode, the pulse-table generators and the preset checker.","preset-format",16,"docs\u002FPRESET_FORMAT.md",{"path":397,"title":398,"description":399,"section":297,"slug":400,"label":401,"group":386,"order":402,"minutes":293,"updated":301,"file":403},"\u002Fdocs\u002Fbrain-view","Brain view: how the field map is made","How the field map on the brain is computed, how accurate it is, and the data and licences behind it.","brain-view","Brain view",17,"docs\u002FBRAIN_VIEW.md",{"path":405,"title":406,"description":407,"section":297,"slug":408,"label":409,"group":386,"order":410,"minutes":352,"updated":301,"file":411},"\u002Fdocs\u002Fprotocol","Bluetooth LE and USB protocol","The Bluetooth service, packet framing, the USB line protocol, every operation, session JSON and the trial commitment.","protocol","Device protocol",18,"docs\u002FBLE_PROTOCOL.md",1794317839967]