2015-04-17 03:48 AM
Hello again!
I would like to make a question about an issue I have with the measurements of three currents! Specifically I have a 3-phase converter and I would like to measure its currents as fast and accurate as possible, however there are some noise issues with the one ADC ( I use STM32F407). Therefore I have thought some alternatives, which are the following: 1. 3 externals ADCs with the 3 SPIs and DMA 2. 1 external ADC with 3 inputs and send the data sequentially using SPI and then DMA 3. 1 internal ADC using 3 of its channels and then DMA 4. 2 internal ADCs and 1 external ADC (with SPI) and DMA 5. 3 internals ADCs and somehow try to filter the incoming noise of the one ADC Could you please advise me on which one you would pick and why? My comments on each one of the above alternatives are: 1. Probably the most symmetrical solution (Power consumption, in terms of efficiency, is not an issue for the application) 2. Slower solution with the 3 currents samples in different time moments (It would be much better though if the ADC could sample the three currents simultaneously and then send them through the SPI sequentially. I don't know if such an ADC exists, since most of them have one internal capacitor and a MUX, but I will have a look at it). 3. I think it's exactly the same as the above one, but avoids the SPI part, which makes it preferrable. 4. It will have assymetries because of the differnt ADCs and also because of the delay, due to the SPI. 5. I don't think it is something that will ever work. :D Thank you very much in advance and excuse me for the long post! Regards, Pantelis #adc #noise #solution2015-04-18 10:49 AM
I would avoid any external ADCs. Communications will slow everything down.
Don't abandon 5 until you've tried other channels on the ''noisy'' ADC, or determined that oversampling and filtering will not meet speed requirements. The F303 has a 72 MHz ADC clock. If none of the above work, I would use 2 internal ADCs in dual simultaneous mode converting 2 channels each and throw away one conversion. Cheers, Hal Hmmm. 500+ posts! Have I stayed too long at the Fair?2015-04-19 11:35 AM
Dear Hal,
First of all thank you very much for your answer and congratulations on the 500 posts! Actually I tried all the ADC channels and therefore I would guess that it is an ADC issue. However I will try some digital filtering and see if things get better. My only issue is that filtering might affect my measurements, since one of my goals would be to measure the current transitions at the switching frequency, which is already high enough. What you proposed as a second idea is very good. I could definitely do that, even though I don't understand exactly why I should do dual conversion two times. Couldn't I just do ones a dual conversion and ones a single conversion? Or since I have already set the control registries it would be faster keeping it this way? (Sorry for the question, but I didn't use double or triple capture mode before, therefore I haven't studied about it). Finally since time is a bit against me, I was thinking of designing the PCB, so that I will connect the 3rd measurement both at one channel of the ADC2 and one channel of the ADC3 and use a jumper or a switch to pick which of the two I will use. And once I have the PCB, I could debug the application and pick the best solution. Do you think that something like that would be feasible? Thank you very much once again for your answer! Have a nice week. Regards, Pantelis2015-04-19 07:27 PM
use a jumper or a switch to pick which of the two I will use
Think simple. ADC3 has 8 channels common with ADC1 and 2. Pick a combo that will require only a software change. Cheers, Hal2015-04-22 05:41 AM
Dear Hal,
Thank you very much for all your help. What you said is extremely helpful and for sure seems the most efficient solution. Even though between the one phase and the other two unfortunately there will be some measurement lag. However I don't think that there could be any other solution, in case I want to avoid the SPI delay. One final question. Why did you say using 2xdouble and not 1xdouble and 1 single? Most probably next week when I will start implementing the coding it is something that I am going to find out, but I thought it would be better to ask you in advance! :) Either way, once again thank you for everything. Regards, Pantelis2015-04-22 06:59 AM
Why did you say using 2xdouble and not 1xdouble and 1 single?
Because the fastest method is Dual Simultaneous Mode with DMA, and I don't see any way to turn off triggering ADC2 and DMA every second conversion on the fly without a slow reconfiguration. To make a bit of lemonade out of the single channel ADC, reconvert the same channel for the second conversion. When processing the results, average the two readings to eliminate some conversion noise. Its effective timing would be half way between the double channel conversions. Cheers, Hal