my name is Philip and I am working on a project involving the NHS3152 placed on the therapy adherence developement board. I am trying to read out a sensor that is based on a capacitive voltage divider. For reading I am using the default NFC interface of an Android smartphone. My setup looks like this:
For testing, I wrote myself a small program that initializes the necessary components. The sequence looks like this:
1. setup board, NDEFT2T, GPIO pins, ADC, timer.
2. start the timer
3. set GPIO pin 6 to HIGH
4. start the ADC measurement in continuous mode
Since I am only interested in the voltage peak right at the beginning of the measurement, I am setting up a timer to 10 ms. Once the timer runs out, ADC is disabled and a message containing the value will be written to the NFC shared memory. Pin 6 will be set to LOW again within the timer CB function, marking the end of the measurement.
On a scope the measurement looks like this:
The blue line indicates start and the end of measurement. The red line is the voltage Vmeas as described in the setup picture above. The green line is a pin I toggle everytime execution flow enters and leaves the ADC callback routine.
This setup works fine as long as I power the demo board over the LPC Linker. The values I receive from the ADC vary in a range of 20 - 50 from the value I expect, which should be good enough for my use case. Howeve, once I deplug the Linker and start powering the board over NFC only (there is no battery attached), the picture on the scope looks like this:
As you can see on the picture above, I can measure an inital voltage peak followed by two boot ups of the IC. This is confusing to me, since the code should not reset the IC and remain in main function as long as the NFC field is present. From what I can observe, the first boot up sequence is to short. The IC is running for a duration of 5 ms and then ends execution abruptly. So I am assuming that there is a problem with the power supply over the NFC field and the controller times out due to a lack of power.
I did a lot of testing on this and the values I received from the ADC were sometimes okay, but more often really far off. Strangely enough, I set up a threshhold for the ADC of 300 to 3800 and I still encounter values outside of this range from time to time. From my understanding, this should not be possible.
What do you think what the problem is? I do not think that there is a problem with my source code, since it runs just fine when the board is connected to the LPC Linker.
Do you have documentation on how much energy I can actually harvest over the NFC field? And is there a way to improve accuracy of the ADC? I really hope you can help me out on this one, since I do not know how to proceed from this point.
Best regards and thanks in advance,
I have been encountering a similar problem with my boards with a voltage divider like setup. Some of the things you could try, if you haven't tried them already is attaching a decoupling cap in parallel to two high current drive GPIO pins (as discussed in the data sheet). You might also want to measure the current consumption of your capacitor circuit to see if that's exceeding rated values. In our case, those things were where we started to debug the problem. Hopefully someone from NXP can also suggest some more techniques to solve the problem.
thanks for your advice - I will definitely try that out. I read about connecting an additional capacitor in another post:
But just to make sure I understood it right:
- for charging up the capacitor I connect two pins (for example GPIO3 and GPIO7) to the top of the capacitor and GND to the bottom
- PIN3 will be configured as input with pull-up and PIN7 as output with a resistance in series to charge up the capacity slowly.
- once the cap is charged up, I reconfigure PIN7 as output to get rid of the charging resistance.
Regarding your thought on current consumption, I made a simulation on the circuit and right after PIN6 is configured to HIGH, a lot of current is drawn (~ 17 mA peak). Current declines fast, but during charge up that peak in power consumption might be too high.
Thank you for linking that thread, I hadn't come across that before and its suggested approach seems like something I could try out too!
Yes, I think you it correctly, if you meant to write that PIN3 (which was initially INPUT) is reconfigured to OUTPUT on the final step.
As for the current consumption, yes, that looks too high, the pin seems to be rated for a maximum of 16mA as per the data sheet.