video Arduino Interfaced with Nonin Pulse Oximeter ( OEM Module) to produce Analog Output
This project was conceived to have a reliable Analog signal that can be interfaced directly with Labview for data collection in a research study that we were trying to do. Also most commercially available pulse oximeter do not have an analog output option
Let me know
First, i developed a loopback program for controller UART at 9600 to make sure that serial port is working fine. it worked beautifully with a serial cable to the PC. Then i simply removed controller UART Rx connection from line driver IC (MAX232) and connected to OEM III Tx line .... here it fails :(
Do you have any clue for my problem ..... plz help :)
did you try to connect the OEM III to the pc directly via an emulated serial port or other means and reading the data of it using hyper terminal or something similar?
I would be curious to know if that worked. Maybe the Silab controller doesn't like the Tx line to be floating; you should connect it to Rx of OEM or maybe ground it.
Good luck
Kunal_djscoe: can you include more information on the TI module...I could not find it. I'm looking for a good module to build some Biomed curriculum around.
Kunal
Here are two things that I will recommend..
1> Do not use the NewSoftSerial Library, use the hardware Serial i.e. Serial.begin and Serial.read, nonin xpod transmits data asynchronously i.e. continuously even if Arduino is not reading it and since software serial doesnot have an internal buffer you loose those bits, probably thats the reason for the incorrect data that you getting.
2> Nonin works on 3.3v logic and Arduino works on 5V logic. Though since we are only reading from nonin, a level shifter is not necessarily needed, it worked for me only with the level shifter.... you can either buy the logic level converter from spakfun
http://www.sparkfun.com/commerce/product_info.php?products_id=8745
or use a logic ic like the 74AHC125N
Let me know how it goes.
Kunal
Now I'm getting 3 bytes of info, but, wrong bytes.... don't know why, do you know something that I should know?.... some hack, some special function to show the received data?....Actually I'm only doing a passtrough, just to see if the received data are correct...I'm lost... but... not the same way that yesterday... Thank you... (by the way, now I'm using one of the Hardware UART's of the Arduino Mega)
dude... try this.... since the data coming on the serial port is 1 byte at a time... initialize the variable reading it as a byte (not as a int because an int is 2 bytes long)
Also how do you know that the data that you getting is wrong? Do you print it out on Serial port???
Dont forget that.. if you will be trying to produce the analog waveform from the received data, you will have to make sure that Arduino is in sync with nonin, i.e. since a packet is say 3 bytes long, you read it in the right sequence, this is imp in asynchronous transmission ( your software has to take care of this)
Thanks for your help, and I'll let you know how can I survive! (XD)
also, which data format are you using for this? if you aren't using data format 7 see page 9 of
www.nonin.com/documents/OEM%20III%20Module%20Specifications.pdf
@bondy100 - "SpO2" always is after processing of the light level information. the actual raw values of the light levels are not available outside the company.
Firstly, thanks... Yes I am using serial format 2 ( which sucks because it has 8 bit resolution while OEM 3 can give me 16 bit resolution with serial format 7 however I just had a 12 bit dac). The reason that we wanted a serial out is that we collect a number of analog channel data along with the the pulse ox and labview program works more efficiently if all are either analog or digitals....
Also all the commercial models give analog waveform for spo2 or pr but not true plethysmograph waveform.
If you want to get raw waveform you will have to build you own circuit else TI sells a OEM module which I believe gives you the raw waveform.
Hope that helps,
Kunal