Close
0%
0%

FreeEEG32 + alpha1.5

4xAD7771BCPZ 64 kSPS,
STM32H743ZIT6 MCU 1027 DMIPS,
USB, UART, SPI, SD-Card

Similar projects worth following
FreeEEG32 + alpha1.5 32 channels 5min eyes closed, https://github.com/neuroidss/FreeEEG32-alpha1.5/blob/master/OpenVIBE/gdf/record-%5B2019.11.13-22.23.59%5D.edf,

ciPLV 32 channel coherence onboard with Butterworth filtering, output via isolated USB, UART, SPI, and SD-Card https://github.com/neuroidss/FreeEEG32-alpha1.5/blob/master/AC6/STM32H743ZI_alpha1.5_SD_CDC.tar.xz,

for multi-architecture amd64, arm64, armhf docker containers with OpenVIBE https://github.com/neuroidss/FreeEEG32-alpha1.5/blob/master/multiar

 FreeEEG32 + alpha1.5 based on https://hackaday.io/project/165748-freeeeg32-prealpha2 and https://hackaday.io/project/20618-freeeeg32-alpha-32-channels-electroencephalography

pcba FreeEEG32 plus alpha1.5 32B1H743 https://docs.google.com/spreadsheets/d/1l08JTSrGSRcxZXpl6SzznG30cp7E945ALPTCCIwC7Yk/edit#gid=996100150

BOMs FreeEEG32 plus alpha1.5 32B1H743 https://docs.google.com/spreadsheets/d/1l08JTSrGSRcxZXpl6SzznG30cp7E945ALPTCCIwC7Yk/edit#gid=815577919

text/csv - 3.44 kB - 11/16/2019 at 19:01

Download

Zip Archive - 673.46 kB - 08/09/2019 at 14:03

Download

Zip Archive - 90.73 kB - 08/09/2019 at 14:03

Download

  • 4 × AD7771BCPZ
  • 1 × ADR4525BRZ Power Management ICs / Voltage References
  • 2 × 105017-0001 Connectors and Accessories / Telecom and Datacom (Modular) Connectors
  • 1 × STM32H743ZIT6
  • 8 × CL10A225KQ8NNNC Capacitors / Ceramic

View all 24 components

View all 2 project logs

Enjoy this project?

Share

Discussions

the_3d6 wrote 02/24/2020 at 22:15 point

The PCB looks a bit overcrowded with connectors :) But ultimately, does it work? From the data on github it isn't really clear - at least some channels look like they've hit precision limit, and overall pattern is not really clear (or whether there is a pattern at all).
Have you confirmed that data acquisition part works fine? It's easy to check collecting EMG signal (and before that - ECG just to make sure everything is ok).

I have some problem with schematics - parts of it are clearly corrupt, for example all inputs are just not connected to sockets (but they are connected on the PCB, so I guess it is some kind of version conflict or something). Parts that I was able to check don't have obvious problems - but again, due to corrupt parts and very non-intuitive naming system (for example, the largest region is called ACC_6_GND - what is ACC_6? If there are 6 or more of them - why number 6 is special?) I wasn't able to understand much.

Are analog/digital supply separated well? Are analog/digital grounds separated at all? (looking at ACC_6_GND and relative positions of MCU and ADCs I suspect that they aren't - but again, can't be sure).

In the code I wasn't able to see section providing proper timing (reading new data when they are available, ensuring we don't miss anything, and that we don't read data 2nd time before new value is available) - but there are dozens of debug cases in the file, so I could have missed it.
So basically the only way to tell if it works is to see how it measures known signal :)

  Are you sure? yes | no

Dmitry Sukhoruchkin wrote 02/26/2020 at 02:10 point

>>Have you confirmed that data acquisition part works fine? 

there recording of 5 minutes of closed eyes, you can see alpha rhythm on it, https://github.com/neuroidss/FreeEEG32-alpha1.5/blob/master/OpenVIBE/gdf/record-%5B2019.11.13-22.23.59%5D.edf

>>I have some problem with schematics - parts of it are clearly corrupt, for example all inputs are just not connected to sockets 

alpha1.5 is made from prealpha2, so connector parts from prealpha2 not connected in schematics and not placed on PCB

>>what is ACC_6?

ACC_6_GND is naming from prealpha2 where each module have own ground, and KiCAD automatically taking one of ground name to call common ground network

>>reading new data when they are available, ensuring we don't miss anything, and that we don't read data 2nd time before new value is available

all AD7771 are masters via SAI, and one of AD7771 main master that rule them all, so MCU only SAI slave, and only setup and start adcs,
MCU on DRDY interrupt asking DMA SAI to get data, as i see on sampling -- it works 100% fine, no missed or extra samples

  Are you sure? yes | no

the_3d6 wrote 02/26/2020 at 12:47 point

These data look consistent - but with brainwaves, you don't really know what is happening, even alpha rhythm makes sense when compare in eyes open/closed states. It would be great if you can make some obvious test with most channels grounded, and a couple connected to a muscle - so you have full control over the signal. For instance, I was getting quite consistent, from its look, alpha rhythm on my setup and only much later realized how unstable and practically useless the signal was - now working on a more reliable version.

Also can you point which lines of code are processing this interrupt? Can't locate that part it in the file, there is really a lot of debug code :)

  Are you sure? yes | no

Dmitry Sukhoruchkin wrote 06/03/2020 at 02:59 point

>>which lines of code are processing this interrupt

void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)

if(FREESMARTEEG_ADC & FREESMARTEEG_ADC_SAI_READ_INT)

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates