I do not have very much experience in embedded electronics. Most of my experience is simple Arduino projects. I do quite a bit of diving and have fairly recently started diving a closed-circuit rebreather. While I feel the model of rebreather I currently use is the best currently on the market, I am not satisfied withe the electronic-controllers currently available in civilian closed-circuit rebreathers. My primary gripe is lack of redundancy and fault-tolerance in the electronic controllers. So basically, I have come to the conclusion that it might be an interesting experience trying to build one on my own.
The basic function is as follows:
3 galvanic oxygen cells are exposed to the atmosphere of a closed breathing circuit. These sensors produce voltage (around 14 mV in air) when exposed to oxygen and their readout is linear in nature.
3 cells are interpreted by the electronic controller. This controller has a stored calibration value and converts the cells' readouts from mV to partial pressure of oxygen. These values are displayed in Atmospheres of pressure (ATM) on a display.
The controller opens a solenoid valve and injects oxygen in the breathing loop to maintain a setpoint (typically 1.3 ATM of O2).
The controller also monitors several other sensors including several temperatures (system and environmental), absolute pressure, and ambient light just to name a few, and uses these parameters to display other pertinent dive info as well as system status.
As far as the general architecture of the system goes;
Two separate power supplies that will automatically take over for the other if one should fail will drive 3 op-amps that will amplify the 3 cells. Each output will be channeled into an ADC.
Data from all three cells will then be processed by triple-redundant flash-based FPGAs. Voting logic will be used to vote out a faulty O2 cell. The solenoid will be briefly opened when the partial pressure of O2 in the breathing loop is determined to be below the setpoint.
Separate from the triple-redundant FPGAs are dual ARM microcontrollers functioning in lockstep. The primary role of these controllers will be to perform the functions that are not critical to life such as system temp and absolute pressure. These controllers will also monitor the function of the FPGAs and should there be a total failure of the FPGAs, they will be able to take over life support functions and maintain the setpoint. Naturally, if an error occurred in any of the subsystems the diver would be alerted in order for him to abort the dive before a total system failure could occur.
Obviously this is just a very, very brief description of what I want to do.
Anyway, my question is where should I start? I know this is a huge and very advanced project, however, it is also really the only reason I am getting into embedded systems at all so I kind of want to get started on at least bits and pieces of this project as opposed to doing all kinds of other stuff to build up to this. Primary what I would like help with is:
1. Do I need a FPGA "development/evaluation board" or something else altogether? I would like to spend as little money as possible and try to only buy what I really NEED to build this controller.
2. Are there any books or resources you can recommend to help me get started?
3. Are there any MAJOR issues with my general project idea and if so what can I do to fix it?
Thanks for all the help!
The basic function is as follows:
3 galvanic oxygen cells are exposed to the atmosphere of a closed breathing circuit. These sensors produce voltage (around 14 mV in air) when exposed to oxygen and their readout is linear in nature.
3 cells are interpreted by the electronic controller. This controller has a stored calibration value and converts the cells' readouts from mV to partial pressure of oxygen. These values are displayed in Atmospheres of pressure (ATM) on a display.
The controller opens a solenoid valve and injects oxygen in the breathing loop to maintain a setpoint (typically 1.3 ATM of O2).
The controller also monitors several other sensors including several temperatures (system and environmental), absolute pressure, and ambient light just to name a few, and uses these parameters to display other pertinent dive info as well as system status.
As far as the general architecture of the system goes;
Two separate power supplies that will automatically take over for the other if one should fail will drive 3 op-amps that will amplify the 3 cells. Each output will be channeled into an ADC.
Data from all three cells will then be processed by triple-redundant flash-based FPGAs. Voting logic will be used to vote out a faulty O2 cell. The solenoid will be briefly opened when the partial pressure of O2 in the breathing loop is determined to be below the setpoint.
Separate from the triple-redundant FPGAs are dual ARM microcontrollers functioning in lockstep. The primary role of these controllers will be to perform the functions that are not critical to life such as system temp and absolute pressure. These controllers will also monitor the function of the FPGAs and should there be a total failure of the FPGAs, they will be able to take over life support functions and maintain the setpoint. Naturally, if an error occurred in any of the subsystems the diver would be alerted in order for him to abort the dive before a total system failure could occur.
Obviously this is just a very, very brief description of what I want to do.
Anyway, my question is where should I start? I know this is a huge and very advanced project, however, it is also really the only reason I am getting into embedded systems at all so I kind of want to get started on at least bits and pieces of this project as opposed to doing all kinds of other stuff to build up to this. Primary what I would like help with is:
1. Do I need a FPGA "development/evaluation board" or something else altogether? I would like to spend as little money as possible and try to only buy what I really NEED to build this controller.
2. Are there any books or resources you can recommend to help me get started?
3. Are there any MAJOR issues with my general project idea and if so what can I do to fix it?
Thanks for all the help!