MolecularD's instructables
Tell us about yourself!
Achievements
- MolecularD commented on MolecularD's instructable Continuous Light Panel With Regulated Brightness From a Broken LCD Monitor
- MolecularD commented on MolecularD's instructable Continuous Light Panel With Regulated Brightness From a Broken LCD MonitorView Instructable »
I see, the answers help a lot. Two more questions:1) Is MP3394 controller located on the motherboard?2) If I understand you correctly, you want to eliminate motherboard and power the LED strip directly from the power supply, is this correct?
- MolecularD commented on MolecularD's instructable Continuous Light Panel With Regulated Brightness From a Broken LCD MonitorView Instructable »
Finally, you provide a useful connection diagram. Would you mind answering at least some of my questions? Like: 1) How do you turn the backlight LEDs now?2) What is connected to the BOSC pin (either 7, or 9, depending on the specific package of MP3394)?3) What is the type/model of your monitor?And yes, please do post _clear_ pictures of the board containing MP3394.
- MolecularD commented on MolecularD's instructable Continuous Light Panel With Regulated Brightness From a Broken LCD MonitorView Instructable »
Here is the diagram
- MolecularD commented on MolecularD's instructable Continuous Light Panel With Regulated Brightness From a Broken LCD MonitorView Instructable »
Hmmm... Every monitor I know of has an on/off switch. Why can't you use it? Is it because you have removed it along with motherboard? You have measured voltages in stand-by state as well as in the "on" state, hence you had to have some method of turning it on, right? How did you do that? Well, you wrote that Green wire is connected to the Enable pin of MP3394. Looks like this is the place where you can insert your bipolar switch: in one position it will deliver 3V to this pin, in the other position it will connect the pin to the ground.
- MolecularD commented on MolecularD's instructable Continuous Light Panel With Regulated Brightness From a Broken LCD Monitor
What kind if monitor do you have? Can you send me its schematics?
View Instructable »I guess, your LEDs do light up and all you want is the dimming control, right? I am glad you mentioned MP3394, since it can provide LED dimming control. First, download its datasheet: https://www.monolithicpower.com/en/mp3394.html. You will see from the pin description that DBRT (pin 3) controls dimming. On page 9 of the datasheet you'll see there are two modes of dimming control: either PWM, or DC signal. You have to find out which mode your monitor uses and hack it accordingly.This page offers some useful info, as well: https://www.petervis.com/electronics%20guides/17ips20/mps3394s.html
- MolecularD commented on MolecularD's instructable Pulse Oximeter With Much Improved PrecisionView Instructable »
It sounds like the well known problem with some cheap clones that have IR and RED channels swapped:https://github.com/aromring/MAX30102_by_RF/issues/13#issue-601473302
- MolecularD commented on MolecularD's instructable Pulse Oximeter With Much Improved PrecisionView Instructable »
No, I haven't. It won't work on the wrist because of motion artifacts.
- MolecularD commented on MolecularD's instructable Pulse Oximeter With Much Improved PrecisionView Instructable »
Yes, algorithm_by_RF.h uses defines that are different from yours, so start your debugging from there.Raivis Strogonovs' approach is interesting and well explained, but it's very different from mine.The FlexiPlot you have attached (thank you) has period of 0.96-0.97 s between peaks. Hence, it corresponds to an approximate HR = 62 bpm. No such HR is reported in the Serial Monitor capture, your second image, thus I am assuming FlexiPlot does not represent raw data for any of these outputs.
- MolecularD commented on MolecularD's instructable Pulse Oximeter With Much Improved Precision
First, I don't think adding an INT wire is such a big deal, but maybe your ESP32 board does not have enough digital pins? Anyway, I took a look at the role of INT signal in my code (https://github.com/aromring/MAX30102_by_RF/blob/master/RD117_ARDUINO.ino) - it's only use is detection of the new data availability in the main signal loop:while(digitalRead(oxiInt)==1); //wait until the interrupt pin assertsThe analogous loop in SparkFun library (https://github.com/sparkfun/SparkFun_MAX3010x_Sensor_Library/blob/master/examples/Example8_SPO2/Example8_SPO2.ino) features the following calls instead: while (particleSensor.available() == false) //do we have new data? particleSensor.check(); //Check the sensor for new dataSee the enclosed images. Thus, it's rather obvious what to do. I mig…
see more »View Instructable »Hmm, all drivers I know use interrupt line. Can you elaborate on your "other drivers do not use interrupt line"? Please provide links to relevant examples.
- MolecularD commented on MolecularD's instructable Pulse Oximeter With Much Improved PrecisionView Instructable »
Sorry, I have never used ESP32 board.
- MolecularD commented on MolecularD's instructable Pulse Oximeter With Much Improved Precision
Thank you very much for good work!
View Instructable »Well, I am no expert regarding Maxim hardware, thus I simply copied Maxim's reference settings and never touched them again. However, I have done some Internet search and found out that in _other_ Maxim sensor this register controls the current of IR LED in proximity mode. This is an extra function that is activated when the sensor enters standby state, awaiting the object sensed. For more details see:https://datasheets.maximintegrated.com/en/ds/MAX86...https://datasheets.maximintegrated.com/en/ds/MAX30105.pdf
- MolecularD commented on MolecularD's instructable Pulse Oximeter With Much Improved PrecisionView Instructable »
Thanks for your interest. You provide no useful information at all, thus all I can do is to guess/speculate:1) Faulty sensor2) Bad connectionswhich is not satisfying and probably irritating, but what else can I do?Uncomment "#define DEBUG" line in the main code and collect raw signal data. Next,follow this linkhttps://github.com/aromring/MAX30102_by_RF/blob/ma...then scroll down to "How to report bugs" section.
- MolecularD commented on MolecularD's instructable Pulse Oximeter With Much Improved PrecisionView Instructable »
Even though the I2C might work in the way you described for some time, you should never mix 3.3 and 5 V logic on the same bus. Otherwise, you will shorten lifespan of your sensor. Here are two links that contain detailed explanation:https://www.robotshop.com/community/blog/show/runn...https://www.nxp.com/docs/en/application-note/AN104...
- MolecularD commented on MolecularD's instructable Pulse Oximeter With Much Improved Precision
Hi Radovan,Thank you for testing my little project. Yes, I am interested in test data; please send it to me, but please don't use the horrible Instructables mail or comments: it's been known to mangle the data. Instead, use my GitHub page for this project:https://github.com/aromring/MAX30102_by_RFsince at least it works OK with tab-delimited columns of numerical data as well as it can handle attachments. Besides, GitHub is much more appropriate for code related issues.I will also need an explanation of some terms you are using, like "artifacted PPG" - do you mean a PPG signal to which you added random noise? Furthermore, "SpO2 is going fine, giving no valid value during artifact" - now, which one is it: "fine", meaning OK, or "no valid value", meani…
see more »View Instructable »Ah, never mind. Only now I have realized that your "artifacted PPG" means a signal with motion induced artifacts - right? Sorry for not guessing it the first time.
- MolecularD commented on MolecularD's instructable Pulse Oximeter With Much Improved PrecisionView Instructable »
Hi Andrew,Thank you very much for your interest in my work. I will be very happy to help you in resolving all issues - providing my very limited time allows it. (You've probably noticed I haven't published any new Instructable in quite a while - this is because my professional work clamped hard on my waking time.) Regarding your points a and b, let's switch our communication to GitHub since these items are code-specific. Alternatively, feel free to use Instructable's e-mail to send me a private message with your preferred e-mail address where I can reach you.
- MolecularD commented on MolecularD's instructable Pulse Oximeter With Much Improved Precision
- MolecularD commented on MolecularD's instructable Pulse Oximeter With Much Improved PrecisionView Instructable »
Hi Shea,Thank you for your interest in my work. Most scientific journals allow one "electronic resource" type of reference, which consists of the author's name, URL, and date of last access. You can use either a link to this Instructable or to my Github page; for example:Fraczkiewicz, R. https://github.com/aromring/MAX30102_by_RF, accessed 10/30/2019.I am curious about your code. Does it power a pulse oximeter, as well? Where will you publish it?
- MolecularD commented on MolecularD's instructable Pulse Oximeter With Much Improved PrecisionView Instructable »
No, I haven't but other have done it and encountered a bug resulting in incorrect HR numbers reported at high heart rates. See the GitHub page for more details:https://github.com/aromring/MAX30102_by_RF
- MolecularD commented on MolecularD's instructable Pulse Oximeter With Much Improved PrecisionView Instructable »
Hmm... Just scroll this page up to Step 6 - there is a link to the MAX30102 code.
- MolecularD commented on MolecularD's instructable Pulse Oximeter With Much Improved PrecisionView Instructable »
Thank you for the update! :)
- MolecularD commented on MolecularD's instructable Pulse Oximeter With Much Improved PrecisionView Instructable »
Thank you for your interest in my little project.As for your troubles: You provide no useful information at all, thus all I can do is to guess/speculate:1) Faulty sensor2) Bad connectionswhich is not satisfying and probably irritating, but what else can I do?Uncomment #ifdef DEBUG in the main code and collect raw signal data. Next,follow this linkhttps://github.com/aromring/MAX30102_by_RF/blob/ma...then scroll down to "How to report bugs" section.
- MolecularD commented on MolecularD's instructable Pulse Oximeter With Much Improved PrecisionView Instructable »
4 seconds x 25 Hz = 100 samples. C arrays are indexed from 0, thus the sample indices run from 0 to 99. To mean-center these indices first calculate the mean ( = 49.5), then subtract it from each index and you get 0 - 49.5 = -49.5, 1 - 49.5 = -44.5, etc.
- MolecularD commented on MolecularD's instructable Pulse Oximeter With Much Improved PrecisionView Instructable »
I am glad it is working now. It is impossible for me to tell why you see results so seldom without knowing much more details about your project. It could be a million different things. Uncomment #define DEBUG to capture raw data in Serial monitor. Next, for debugging instructions as well as some tips please follow this linkhttps://github.com/aromring/MAX30102_by_RF/blob/ma...then scroll down to "How to report bugs" section.
- MolecularD commented on MolecularD's instructable Pulse Oximeter With Much Improved PrecisionView Instructable »
Here is the sum calculated in Excel to dispel any doubts: it is 83325, indeed. Try it yourself. Your formula, I think, applies to numbers from 1 to n only.Now, the matter of unchanging results is concerning since my device's results do change as I wrote in other answers below. If you think it's the result of a bug in my code, then for debugging instructions as well as some tips please follow this linkhttps://github.com/aromring/MAX30102_by_RF/blob/ma...then scroll down to "How to report bugs" section. Otherwise, the sensor may be faulty in which case you should contact Maxim.
- MolecularD commented on MolecularD's instructable Pulse Oximeter With Much Improved PrecisionView Instructable »
Yes, you can.
- MolecularD commented on MolecularD's instructable Pulse Oximeter With Much Improved PrecisionView Instructable »
First, let's get minor inconsistencies out of the way first: The "straight lines" you see in my plots in the second figure are an illusion caused by large vertical scales (matching the extent of noise caused by the original algorithm). In fact, both SpO2 and HR vary in time, although not much. If you don't believe me, then click in the lower left corner to download the original image and expand it.Second, I had the same question: how can I validate that MAX30102 even works? I did a few tests to convince myself. For example, I measured my heart rate at rest and after physical exertion. As expected, the HR went up in this experiment. I also compared the sensor output to independently measured HR by a Sleeptracker device I installed not so long after this project. The numbers and t…
see more » - MolecularD commented on MolecularD's instructable Pulse Oximeter With Much Improved PrecisionView Instructable »
Yes, it's normal that once a while the signal quality does not meet standards and an indicator -999 is returned instead of the expected parameters. About serial plotting, I think you mean graphs posted in Step 2? Yes, that was Arduino IDE's plotter capturing live data. You must turn DEBUG on to get the raw data output.
- MolecularD commented on MolecularD's instructable Pulse Oximeter With Much Improved PrecisionView Instructable »
Sorry, this is the first time I hear about "keil". I use Arduino IDE and am quite happy with it. Not knowing anything about keil indicates that I know even less about its libraries...Motion artifacts are not entirely about the sensor moving against the skin, but about moving muscles/tendons/etc. _under_ the skin. To the sensor, these are like loud sonic booms while you try recording bird songs. Hence, I am skeptical about MAXIM returning reliable data under these conditions. My setup, in particular, is almost guaranteed not to work - with a modicum of quality control the code would reject almost all signals. But not to discourage you, I admit that in my specific application I did not dedicate enough thought to combating these artifacts. Persistence is the mother of invention, so…
see more » - MolecularD commented on MolecularD's instructable Pulse Oximeter With Much Improved PrecisionView Instructable »
Thank you for the interest in my project. 1. Unfortunately, Arduino Uno is not powerful enough to execute this algorithm. I've learned it the hard way. :) But if you insist on using this platform, nonetheless, then you would have to go back to the original MAXREFDES117# code and see how they pulled it off. Basically, they've greatly sacrificed accuracy to save memory. For example, their uch_spo2_table[184] in algorithm.h is composed of uint8_t's instead of floats. I have retained some of their edits as comments in my code. IMHO, it's a losing battle not worth your time. It is much more efficient to just buy sufficiently powerful MCU.2. No, I haven't added an accelerometer. In fact, I have not touched this project since January 2018. One idea would be to use it to detect motion and hold sa…
see more » - MolecularD commented on MolecularD's instructable Pulse Oximeter With Much Improved PrecisionView Instructable »
Hi, for debugging instructions as well as some tips please follow this linkhttps://github.com/aromring/MAX30102_by_RF/blob/ma...then scroll down to "How to report bugs" section.
- MolecularD commented on MolecularD's instructable Pulse Oximeter With Much Improved PrecisionView Instructable »
I wish I had powers of the Wizard of Oz, or at least those of a proficient mind reader, to be able to correctly guess what the problem is when given almost zero information about your system. Especially the one involving sensor I have never tested.Let's do this: follow this linkhttps://github.com/aromring/MAX30102_by_RF/blob/ma...then scroll down to "How to report bugs" section, OK?
- MolecularD's instructable How to Measure High Frequency and Duty Cycle, Simultaneously, Using a Microcontroller.'s weekly stats:
- MolecularD commented on MolecularD's instructable How to Measure High Frequency and Duty Cycle, Simultaneously, Using a Microcontroller.View Instructable »
Awesome work! Thank you for sharing. My oscilloscope can show frequency and duty cycle, too, but I wanted something battery operated and portable.So, ARM Cortex M3! At 72 MHz it looks even better than M0. With it, can you measure frequencies above 1 MHz? Is that the Blue Pill board you are using? Where did you buy it? Did you have to replace its D+ resistor to make it work with USB? I am guessing it does not work with Arduino IDE, does it?
- MolecularD commented on MolecularD's instructable Invisible Killer of the Phone RingView Instructable »
Thank you for an interesting suggestion. I looked Nomorob up and learned that it (currently) works only on VoIP lines. Hence, creating the "first ring killer" would be a whole new project which would be, I suspect, quite different from this Instructable that works on POTS lines...
- MolecularD's instructable Continuous Light Panel With Regulated Brightness From a Broken LCD Monitor's weekly stats:
- MolecularD commented on MolecularD's instructable Pulse Oximeter With Much Improved PrecisionView Instructable »
This should not be much of a problem, since the same reference design, MAXREFDES#117, should work with MAX30101. According to MAXIM: https://maximintegratedsupport.force.com/support/s...the only modification is an additional green LED that may need to be connected. Now, the ease of hardware design does not compare to the complexity of a new application you (probably) have in mind: monitoring HR/SpO2 during exercise, right? Wrist mount and huge motion artifacts pose significant problems and my code is not designed to deal with these. An additional accelerometer is required to compensate, at somewhat, for this additional noise. Fortunately, MAXIM offers such a kit that you may want to consider:https://datasheets.maximintegrated.com/en/ds/MAX30...https://www.maximintegrated.com/en/products/s…
see more » - MolecularD commented on crashmeplease's instructable Simple Video Camera MicroscopeView Instructable »
I have just finished a similar project of converting my old Sony Digital8 camcorder into a microscope. The differences are:1. I bought an extra macro lens for it (found by camera type on Amazon), which lets me achieve quite good magnifications up to 60x. Useful in detecting microscopic solder cracks. :)2. It is connected through a FireWire to my old iMac. The iMovie software nicely interfaces with it and lets me record and edit videos.3. The camera mount is motorized 9made out of an old professional CD burner), but it moves it only up and down. Seems your boom arm is better in this respect.
- MolecularD's instructable Reverse Parking Assist in the Garage Using Existing Safety Sensor and Analog Circuit's weekly stats:
- MolecularD commented on MolecularD's instructable Pulse Oximeter With Much Improved PrecisionView Instructable »
This question has just been resolved over e-mail.
- MolecularD's instructable Pulse Oximeter With Much Improved Precision's weekly stats:
- MolecularD commented on xlks's instructable Finger Pulse Oximeter Using MAX30100View Instructable »
Nice project, thank you for sharing. There seems to be only one tiny bug in the code as posted. In the main loop you have the following construct: if ((analogRead(0)>130) && (analogRead(0)<160)) { <part 1> } else if ((analogRead(0)>130) && (analogRead(0)<160)) {<part 2>}Huh? Apart from the missing last bracket, <part 2> will never execute.
- MolecularD commented on Mechanical Attraction's instructable Harvesting Sound Energy From Passing CarsView Instructable »
On a car - that would increase car's air resistance. So, yes, you would get electrical energy (with very poor efficiency) at a cost of burning more gasoline.
- MolecularD's instructable Telephone Recorder Made the Easy Way's weekly stats:
- MolecularD completed the lesson PCB Concepts and Materials in the class Circuit Board Design Class
- MolecularD commented on MolecularD's instructable Invisible Killer of the Phone RingView Instructable »
Thank you. Wow, you've been very productive: 53 Instructables! However (correct me if I'm wrong), none of these involves phone hacks. Please share at least some these since I'm at the moment interested in landline phone electronics.About the ringer-off switch: Do you solemnly swear to dutifully and manually turn the ringer off every evening and back on every morning? :)Although my phone has such a switch, too, I am not that disciplined. I have better things to do than remembering about the switch all the time... This is what machines are for.
- MolecularD commented on MolecularD's instructable Invisible Killer of the Phone RingView Instructable »
Done, in Step 3.
- MolecularD commented on Amardes's instructable Arduino Controlled Versatile Timer/controllerView Instructable »
Very nice work. There is only one tiny snafu: your LED screen still reads "SYSTEM ON" when it's in the OFF state.
- MolecularD's instructable Invisible Killer of the Phone Ring's weekly stats:
- MolecularD commented on MolecularD's instructable Invisible Killer of the Phone Ring
Thank you for excellent tips!
View Instructable »Thank you. Yes, timed switch would also work (although you wouldn't be able to make calls). There are many ways to skin a cat. ;) In fact, Amazon sells an ordinary switch + RJ11 jack combo for $15!https://www.amazon.com/Telephone-connected-Interru...Amazing what nowadays people make money on. :)
- MolecularD's instructable How to add parallel flash memory to Arduino's weekly stats:
- MolecularD followed MolecularD
- MolecularD commented on MolecularD's instructable Centering a Painting on a Wall with Off-Center Studs
Sure, there are many ways to skin a cat, according to one popular saying. I chose the simplest one. Fasteners - these I would have to buy form a specialty store miles away. What could be simpler than just two nails?Actually, my picture hangs on two wood screws. But these are only marginally more complicated than nails :)
View Instructable »Why drive to a mailbox that is 60 feet away from home (I've seen people actually do that), when one can just walk? Why complicate things with some fasteners (I have to buy form a specialty store miles away) when two nails are so simple? (Actually, two wood screws in my case.)There are many ways to skin a cat, according to one popular saying. I chose the simplest one.For our foreign readers: 60 feet is about 20 meters. Yes, I literally saw a person opening the garage door, getting into a car, then driving these 20 meters to pick up mail, then making a U-turn and driving back to the garage... Wonders of America.
- MolecularD commented on ASCAS's instructable The Ultimate FM Transmitter (Long Range Spybug)View Instructable »
If your transmitter does not work - and you verified that all connections are OK - then it may be that the oscillator does not oscillate (I've found it the hard way). Desolder your antenna and try again at close distance. I've used the (advised elsewhere) quarter-wave flexible wire antenna and my oscillator worked only at super high frequencies. At lower ones it was damped down - see attached images.
- Show More Activities
Ah, finally, I have enough information. It seems you are focusing on a wrong connector. It's not C701 that is important to your purpose, but CN861. Pins 8, 9, 10, 11 of MP3394 connect there and this connector is where all the LED cathodes should connect to. Are there 4 separate LED strings?Now, the remaining problem is the common LED anode. Obviously, it should come from the same voltage source that powers pin 15 of the MP3394, but it should come _after_ the cathode of D801! I guess, this voltage source comes out of the two middle pins of CN861 - but you have to precisely track it!Thus, the connection of LED strips is solved, but I can guess that without motherboard MP3394 will be disabled. Therefore, you have to supply 3V on _both_ pins 2 and 3 (i.e., the green and white wires of CN701).…
see more »Ah, finally, I have enough information. It seems you are focusing on a wrong connector. It's not C701 that is important to your purpose, but CN861. Pins 8, 9, 10, 11 of MP3394 connect there and this connector is where all the LED cathodes should connect to. Are there 4 separate LED strings?Now, the remaining problem is the common LED anode. Obviously, it should come from the same voltage source that powers pin 15 of the MP3394, but it should come _after_ the cathode of D801! I guess, this voltage source comes out of the two middle pins of CN861 - but you have to precisely track it!Thus, the connection of LED strips is solved, but I can guess that without motherboard MP3394 will be disabled. Therefore, you have to supply 3V on _both_ pins 2 and 3 (i.e., the green and white wires of CN701). You can rig it as a simple voltage divider using one of the 5V wires (red or orange) as the voltage source. Make sure to use high value resistors for this divider. Now, I am assuming that pin 3, DBRT, expects a simple DC signal. Well, it may very well expect a PWM signal. This depends on the Dimming Control Mode - consult pages 12 and 13 of the MP3394 datasheet. It's hard to tell, since pin BOSC has both resistor and capacitor connected to it. The surest way to check it is with an oscilloscope while the motherboard is still connected. If it's PWM, then you may want to desolder the BOSC resistor and, perhaps, solder a proper capacitor (see page 13).
Sorry, I forgot to add that the DBRT pin expects no more than 1.2 V in the DC Input mode!