Show Posts
Pages: [1] 2 3 ... 6
1  Topics / Product Design / Re: Bio DAQ - EKG, EMG, GSR, Spirometry, and Pulse Ox on: August 07, 2014, 11:37:15 pm
You can use any software you would like.  I chose to build upon what people have already done in Labview.  The system is Super Simple to use.  Plug in the device to the USB.  It auto finds it and connects.  Then choose what you are measuring, and press start.  The data is acquired at 1000Hz and even logged to a .csv file.  The Labview program can also post process the data from the file.

The first revision boards will have 3 2.5mm barrel jack inputs.  One with a differential Op Amp, One with a hardware low pass filter, and one straight analog input.  The board also has the ability to read a differential pressure of .3PSI.  This will be used to acquire the users blood pressure.  An added option is a Force transducer that can measure up to 98Lbs.

I am currently working on adding pulse ox to the device also.  A small hole with an LED, and photo sensor will rest just below the surface.  You will place your finger firmly over it, and it will take the reading.

If anyone is interested in getting one of these, please help me fund it.  Even if you can help spread the word.  It seems like this is going to be a very niche market. 

Check out the video on Kickstarter to see it in action.  Thanks!
2  Topics / Product Design / Bio DAQ - EKG, EMG, GSR, Spirometry, and Pulse Ox on: August 02, 2014, 02:08:17 pm
Hello Arduino friends,

I have launched a Kickstarters campaign for a Bio Medical data acquisition board.  It is based on the Arduino, and talks to the computer using LabView.  It has an on board 5V Regulator, and can be powered by a battery, or the computer.  It has 2 630 mA draw outputs.  You can read any 0-5V analog signal, and has the ability to read EKG, EMG, GSR, Spirometry, and Pulse OX.  Please check it out and help spread the word!  Thanks!

https://www.kickstarter.com/projects/323660810/bio-daq-an-arduino-capable-platform

-Zach Houser-
3  Development / Other Hardware Development / Re: Super Simple N Channel MOSFET driver on: April 18, 2014, 04:11:13 pm
This board is now going to use the IRF540.  Looks like a much better MOSFET for the Arduino.
4  Development / Other Hardware Development / Super Simple N Channel MOSFET driver on: March 31, 2014, 04:47:41 am
Hello,

I have built a really simple break out board for the IRF510.  It is currently on Kickstarters

https://www.kickstarter.com/projects/323660810/super-simple-arduino-motor-driver?ref=discovery

Hope a bunch of other people will find it as useful as I have!
5  Community / Bar Sport / Re: Bitcoin miner - Is it possible? on: March 16, 2014, 04:19:37 am
What would you guys think about using this chip to do the actual SHA256 computing?

ATSHA204-MAH-DA-TTR-ND

http://www.digikey.com/product-search/en/integrated-circuits-ics/specialized-ics/2556114?k=atsha204

The PC would pull the data in from the network, and send it to the arduino.  Then the arduino could send that to a farm of these chips.  It looks like this is all the asic miners are doing.  Butterfly labs uses an atmel AT32UC3A1128. This chip runs at 66MHz An FTDI232 chip for communication.  I'm pretty sure it is possible, and if anyone is willing to write the firmware I would be willing to design some boards, and build the software on the PC side.
6  Topics / Science and Measurement / Re: Calculate Flow through Venturi (Spirometry) on: January 27, 2014, 01:01:21 am
Wow that was easy.  It has taken me a while to grasp this equation, but I finally get it.  That's all it was, should have been using SI units.  Thanks!
7  Topics / Science and Measurement / Calculate Flow through Venturi (Spirometry) on: January 25, 2014, 11:28:27 pm
Hello everyone,

I am going to use a the pressure differential to calculate flow.  I am having a hard time understanding how exactly to execute Bernoulli's equation.  I assume the raw sensor data should be converted into inAq or inHg.  Then Subtract the two to get the pressure Delta.  This is where I get confused.  How do I account for density of whatever I'm using to measure (water/mercury)?
I see in the equation where density of air is taken into consideration, but just cant fully wrap my mind around it.  I have searched all over the web, but still don't quite get it.  If someone could give me an example I would greatly appreciate it.  Thanks!
8  Using Arduino / Interfacing w/ Software on the Computer / Re: Labview DHT22 Digital sensor read on: November 19, 2013, 03:17:57 am
linkers pm me, and I will help you best I can.  Its a steep learning curve, but once you get it you will be able to do anything.  Its all about parsing the data.  Split up the data by a , _ or  a space then parse the data in labview.  then you can graph the different data.  you can have lines after lines of data.  Keep me posted.

Sending info is also very easy in labview.  Just use serial write VI.

what version of labview do you have? a legit version?

show your code, both for arduino and labview if you can.
9  Using Arduino / Interfacing w/ Software on the Computer / Re: Labview DHT22 Digital sensor read on: November 02, 2013, 09:25:43 pm
I have attached a VI that should give you a good start.  Use Serial.println(yourSensordata) in your code.  make sure you use the correct baud rate on each end.  The VI acts just like the arduino com port.  Let me know if it works.
10  Using Arduino / Programming Questions / Re: Parsing data packets on: November 02, 2013, 08:25:24 pm

Quote
If a kid asks where rain comes from, I think a cute thing to tell him is "God is crying." And if he asks why God is crying, another cute thing to tell him is "Probably because of something you did." - PaulS

LOL zoomkat,  this made me laugh.


I didn't get my feelings hurt, and appreciate PaulS advice.

11  Using Arduino / Programming Questions / Re: Parsing data packets on: November 02, 2013, 05:25:50 pm
Sounds good, I'm going to have to do some Google searching to see about setting a flag.  Could I do this with a simple counter? 
Code:
#include <compat/deprecated.h>
#include <FlexiTimer2.h>



#define SAMPFREQ 256                      // ADC sampling rate 256
#define TIMER2VAL (1024/(SAMPFREQ))       // Set 256Hz sampling frequency                   
#define LED1  13
#define CAL_SIG 9

// Global constants and variables

volatile unsigned char counter = 0;   //Additional divider used to generate CAL_SIG
volatile double ADC_Value = 0;   //ADC current value

int flag = 0;

//~~~~~~~~~~
// Functions
//~~~~~~~~~~

/****************************************************/
/*  Function name: Toggle_LED1                      */
/*  Parameters                                      */
/*    Input   :  No                             */
/*    Output  :  No                                 */
/*    Action: Switches-over LED1.                   */
/****************************************************/
void Toggle_LED1(void){

 if((digitalRead(LED1))==HIGH){ digitalWrite(LED1,LOW); }
 else{ digitalWrite(LED1,HIGH); }
 
}


/****************************************************/
/*  Function name: toggle_GAL_SIG                   */
/*  Parameters                                      */
/*    Input   :  No                             */
/*    Output  :  No                                 */
/*    Action: Switches-over GAL_SIG.                */
/****************************************************/
void toggle_GAL_SIG(void){
 
 if(digitalRead(CAL_SIG) == HIGH){ digitalWrite(CAL_SIG, LOW); }
 else{ digitalWrite(CAL_SIG, HIGH); }
 
}


/****************************************************/
/*  Function name: setup                            */
/*  Parameters                                      */
/*    Input   :  No                             */
/*    Output  :  No                                 */
/*    Action: Initializes all peripherals           */
/****************************************************/
void setup() {

 noInterrupts();  // Disable all interrupts before initialization
 
 // LED1
 pinMode(LED1, OUTPUT);  //Setup LED1 direction
 digitalWrite(LED1,LOW); //Setup LED1 state
 pinMode(CAL_SIG, OUTPUT);
 
 
 // Timer2 is used to setup the analag channels sampling frequency and packet update.
 // Whenever interrupt occures, the current read packet is sent to the PC
 // In addition the CAL_SIG is generated as well, so Timer1 is not required in this case!
 FlexiTimer2::set(TIMER2VAL, Timer2_Overflow_ISR);
 FlexiTimer2::start();
 
 // Serial Port
 Serial.begin(57600);
 //Set speed to 57600 bps
 
 // MCU sleep mode = idle.
 //outb(MCUCR,(inp(MCUCR) | (1<<SE)) & (~(1<<SM0) | ~(1<<SM1) | ~(1<<SM2)));
 
 interrupts();  // Enable all interrupts after initialization has been completed
}

/****************************************************/
/*  Function name: Timer2_Overflow_ISR              */
/*  Parameters                                      */
/*    Input   :  No                             */
/*    Output  :  No                                 */
/*    Action: Determines ADC sampling frequency.    */
/****************************************************/
void Timer2_Overflow_ISR()
{
  // Toggle LED1 with ADC sampling frequency /2
  Toggle_LED1();
 
 
 

  ADC_Value = analogRead(1);
  flag++;
 
  // Increment the packet counter

 
  // Generate the CAL_SIGnal
  counter++; // increment the devider counter
  if(counter == 12){ // 250/12/2 = 10.4Hz ->Toggle frequency
    counter = 0;
    toggle_GAL_SIG(); // Generate CAL signal with frequ ~10Hz
  }
}


/****************************************************/
/*  Function name: loop                             */
/*  Parameters                                      */
/*    Input   :  No                             */
/*    Output  :  No                                 */
/*    Action: Puts MCU into sleep mode.             */
/****************************************************/
void loop() {
  if(flag == 1){
    Serial.println(ADC_Value*.0049,8);
    flag = 0;
  }
 __asm__ __volatile__ ("sleep");
 
}
12  Using Arduino / Programming Questions / Re: Parsing data packets on: November 02, 2013, 04:54:30 pm
Thanks AWOL.   I have it reading into Labview now by passing a string through the serial port with Serial.print().

Thank you for the explanation PaulS.  That helps me understand what is going on a bit better.

Will I still run into the problem using  Serial.print(), or is this function handled in a different way?

Would you recommend rewriting the code without it being timer driven?
13  Using Arduino / Programming Questions / Re: Parsing data packets on: November 02, 2013, 04:27:15 pm
whats so bad about calling Serial.write in an ISR? 

Quote
like not using a text based application to view binary data?
If only I could read your mind, then I would know exactly what you mean here.


Quote
Or perhaps, learning proper terminology, so you don't confuse bits and chars? I already did.

Every Char is eventually stored as bits.

Maybe you are the one that is confused.

If you can give me some helpful pointers then do it, but the stuff you are saying is not convincing me that you are a super coding genius.
14  Using Arduino / Programming Questions / Re: Parsing data packets on: November 02, 2013, 04:00:40 pm
PaulS that is exactly what I am trying to do.  I am sitting at my computer trying to better understand it.  I'm learning , all sorts of stuff.  That's the reason I posted here.  So I can better understand it. 

Instead of telling me how bad the program is how about you give some advice?  I'm all ears. 
15  Using Arduino / Programming Questions / Re: Parsing data packets on: November 02, 2013, 03:50:49 pm
I'm by no means a professional computer programmer, and am doing this for a hobby.  If you have any better ideas let me know.  As stated earlier I did not personally write this code.  I am only trying to make sense of it.  The code woks with prebuilt software, and reads a heartbeat just fine, so it must not be that bad.
Pages: [1] 2 3 ... 6