New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[TW#12287] ESP32 ADC accuracy #164

Open
nassks opened this Issue Dec 14, 2016 · 96 comments

Comments

Projects
None yet
@nassks
Copy link

nassks commented Dec 14, 2016

Hi,

I'm testing the ESP32's ADC on the SparkFun ESP32 Thing.
Currently my measure seems very noisy, it constantly varies on the 5 first bits, and the zero value is around 90mV.
Is there a way to achieve better accuracy?

My test code :

adc1_config_width(ADC_WIDTH_12Bit);
adc1_config_channel_atten(ADC1_CHANNEL_7, ADC_ATTEN_0db);

while (true) {
        vTaskDelay(300 / portTICK_PERIOD_MS);
        printf("ADC value : %x\n", adc1_get_voltage(ADC1_CHANNEL_7));
}

Thank you in advance for your help.

@projectgus

This comment has been minimized.

Copy link
Member

projectgus commented Dec 15, 2016

The ADC has a non-linear response, and we are working on producing characterisation data which will be added to esp-idf to produce a linear output.

When you say "noisy", are you getting noisy readings on a constant voltage or is this noise caused by the non-linearity?

There's some more in this related Arduino bug: espressif/arduino-esp32#92

@projectgus projectgus changed the title ESP32 ADC precision ESP32 ADC accuracy Dec 15, 2016

@CarlosGS

This comment has been minimized.

Copy link

CarlosGS commented Dec 16, 2016

@projectgus

This comment has been minimized.

Copy link
Member

projectgus commented Dec 19, 2016

@CarlosGS : for issues, it is much better to start a new one than to post off-topic in an existing one.

For questions like this, the http://esp32.com forum may be an even better choice.

@michapr

This comment has been minimized.

Copy link

michapr commented Dec 27, 2016

@projectgus : I think nassks means the "noise" within same values - additional I have seen that there is a "noise" between the inputs.
put 1 Volt (with capacititor) on inputs CH4 ..CH7 I get such results:
(using 0bd and 11db for the values)

ADC1 CH4 value: 3719 @ 0db, 1056 @ 11db
ADC1 CH5 value: 3889 @ 0db, 1052 @ 11db
ADC1 CH6 value: 3883 @ 0db, 1052 @ 11db
ADC1 CH7 value: 3891 @ 0db, 1052 @ 11db
-------
ADC1 CH4 value: 3867 @ 0db, 1056 @ 11db
ADC1 CH5 value: 3885 @ 0db, 1053 @ 11db
ADC1 CH6 value: 3887 @ 0db, 1040 @ 11db
ADC1 CH7 value: 3886 @ 0db, 1057 @ 11db
-------
ADC1 CH4 value: 3894 @ 0db, 1056 @ 11db
ADC1 CH5 value: 3855 @ 0db, 1061 @ 11db
ADC1 CH6 value: 3887 @ 0db, 1049 @ 11db
ADC1 CH7 value: 3875 @ 0db, 1053 @ 11db
-------

Difference is up to 5% - maybe it is normal?

But for 0V - I get a value "0" ... without "noise" - it is ok for me

Michael

@michapr

This comment has been minimized.

Copy link

michapr commented Dec 27, 2016

Do not know why the crazy style came up before ;)

Code snippet for reference:

...
adc1_config_width(ADC_WIDTH_12Bit);
...
adc1_config_channel_atten(ADC1_CHANNEL_4,ADC_ATTEN_0db);
int val=adc1_get_voltage(ADC1_CHANNEL_4);
adc1_config_channel_atten(ADC1_CHANNEL_4,ADC_ATTEN_11db);
int val1=adc1_get_voltage(ADC1_CHANNEL_4);
printf("ADC1 CH4 value: %d @ 0db, %d @ 11db\n", val, val1);
....

Michael

@marcmerlin

This comment has been minimized.

Copy link

marcmerlin commented Mar 28, 2017

So, in case anyone finds this ADC bug, I've found another ADC issue apparently where it will return data between 0-50% input, and cap out at 4096 from 50 to 100% input, but only after I try to use RMT.
Details here: #462

@marcmerlin

This comment has been minimized.

Copy link

marcmerlin commented Apr 4, 2017

So, the lastest arduino-esp32 fixes the issue I just reported when RMT is turned on, analogread values would get damaged.

@FayeY

This comment has been minimized.

Copy link
Collaborator

FayeY commented May 4, 2017

Hi nassks, is this problem solved?

@igrr

This comment has been minimized.

Copy link
Member

igrr commented May 4, 2017

@FayeY not yet, @Spritetm is working on it.

@FayeY FayeY changed the title ESP32 ADC accuracy [TW#12287] ESP32 ADC accuracy May 4, 2017

@dmody

This comment has been minimized.

Copy link

dmody commented May 6, 2017

Just leaving my two cents on this...
I was hoping to use an inexpensive Voltage Reference IC (LM4040C30ILP) to help increase the accuracy of measured values. I too found the ADC to be non linear and have included my data below for anyone interested.
voltage, ADC
2 2222
3 3730
1 1033
1.5 1629
0 0
0.5 422
2.5 2840
2.8 3300
3.1 3980
3.007 3750

image

@dmody

This comment has been minimized.

Copy link

dmody commented May 7, 2017

took another crack at this, and assuming the ADC readings are related to the 3.3V regulator voltage (mine is at 3.275 V on a developer board). Here's what I found.
image

@negativekelvin

This comment has been minimized.

Copy link
Contributor

negativekelvin commented May 7, 2017

@dmody interesting, have you tried to fit curves to the upper range and lower range separately?

@imotion-software

This comment has been minimized.

Copy link

imotion-software commented May 11, 2017

In the future, are you planning to include linearization of adc1_get_voltage or it will be in charge to the user to correct non linear behavior?

Just to know, because if we implement linearization on user app and then adc1_get_voltage will change behavior we'll have to remove all those parts.

@dmody

This comment has been minimized.

Copy link

dmody commented May 11, 2017

@markterrill

This comment has been minimized.

Copy link

markterrill commented Jun 18, 2017

really interested in this

@al3x-huang

This comment has been minimized.

Copy link

al3x-huang commented Jun 22, 2017

Are we going to fix this soon? I feel like many applications depend on this feature. Is there a workaround at least?

@Spritetm

This comment has been minimized.

Copy link
Member

Spritetm commented Jun 23, 2017

Yes, we are. It took us some time to build an automated testing rig to accurately and reliably grab the characteristics of a representative sample of ESP32s; that has rendered the first curves this week and we're working on converting these into some linearization code.

@al3x-huang

This comment has been minimized.

Copy link

al3x-huang commented Jun 30, 2017

@Spritetm any updates on this? Perhaps a timeline to when this might be fixed? Thanks!

@MaxSNi

This comment has been minimized.

Copy link

MaxSNi commented Jul 28, 2017

@Spritetm @igrr I would love to hear an update on this - or if there is an effective workaround?

@dmody

This comment has been minimized.

Copy link

dmody commented Jul 28, 2017

@MaxSNi
The best workaround for me was to write a little function that returns the voltage based on the DAQ value using the formula I presented above. I can post the function if you like.

@MaxSNi

This comment has been minimized.

Copy link

MaxSNi commented Jul 28, 2017

@dmody I would love to see your function. I made a quick function from my own excel trend equation and while it does work better, its pretty crude...

@dmody

This comment has been minimized.

Copy link

dmody commented Jul 29, 2017

@MaxSNi
//*************************************** Analog to Digital Conversion Function ****************************
float A2D(float SenVal)
{
if(SenVal<1) return(0);
else if (SenVal>4094) return(99);
else return(-0.000000000023926 * pow(SenVal,3) + 0.000000094746 * pow(SenVal,2) + 0.00074539 * SenVal + 0.14925);

}

@imotion-software

This comment has been minimized.

Copy link

imotion-software commented Aug 3, 2017

Is there any update on this issue?
It sounds me really crazy that on an IoT chip there's no way to have a good ADC reading.

@markterrill

This comment has been minimized.

Copy link

markterrill commented Aug 3, 2017

Probably time to look at other options.
i realised a few months ago its simply not going to be ready anytime this calendar year for production use

@jan-bozelie

This comment has been minimized.

Copy link

jan-bozelie commented Aug 21, 2017

we have a simmulair problem , i can live with a correction factor but we discoverd in testing 10 esp32 samples , the difference between samples can be >10 to 20% , making a calibration nessesery for each esp , making it unusable for serios work

@krzychb

This comment has been minimized.

Copy link
Collaborator

krzychb commented Feb 17, 2018

What and how you connected to the ADC input, and what was on the display? What hw you use?

Csaba,
All connections and h/w I used are on the picture above.
The FLUKE calibrator is set in voltage source mode to provide 2.997V.
It is connected to GPIO34 (ADC1_CHANNEL_6 / ADC_WIDTH_12Bit / ADC_ATTEN_11db) and GND pins of the ESP-WROVER-KIT.

@tcsaba101

This comment has been minimized.

Copy link

tcsaba101 commented Feb 17, 2018

Ok, now I see. But what you have read from the ADC? I made stable voltage on the inputs, but reading from ADC was what you have seen in my post.

@krzychb

This comment has been minimized.

Copy link
Collaborator

krzychb commented Feb 18, 2018

Readings from the ADC are copy-and-pasted above the picture in a format similar what you used.

@tcsaba101

This comment has been minimized.

Copy link

tcsaba101 commented Feb 18, 2018

Slowly I see your example.
I would be happy with your readings.
I use Arduino, the same setup, on Pin39. Same Wroom on Lolin32 board
adcAttachPin(PIN_VEGETRO);
analogReadResolution(12);
analogSetWidth(12);
analogSetAttenuation(ADC_0db);
analogSetPinAttenuation(PIN_VEGETRO, ADC_11db);

Do you use Ext Reference?
Version of ESP32?
I don't see any special noise reduction on the Wrover-Kit board!

Now I have done again the v-ref and helipot experiment, short wires.
Output impedance approx 400ohm. Value on input is 100nV stable.
No real change in readings: +- 1% variation.
If I connect the Vegetronix sensor using a non inverting MCP6021 OpAmp the variation decreased to +- 0,5%. But this is still hardly reaching the 8 bit precision.

This is quite strange.
I have used breadboard with Arduino, PIC boards, there was no problem.
Any ideas to solve it?

20180218_113122

@tcsaba101

This comment has been minimized.

Copy link

tcsaba101 commented Feb 18, 2018

I have EVB board from Olimex,
I try on that too.

@tcsaba101

This comment has been minimized.

Copy link

tcsaba101 commented Feb 18, 2018

I have tried EVB.
Mdev: max deviation of samples from the average, also in %.
At 3 V input:
evb_adc

At 1V input
evb_adc2

I give it up now.
This ADC is unusable for measurement.
This I can call "guess", if this is enough I can use ESP32 ADC.

@negativekelvin

This comment has been minimized.

Copy link
Contributor

negativekelvin commented Feb 18, 2018

@tcsaba101 did you try a pin other than 36 or 39?

@tcsaba101

This comment has been minimized.

Copy link

tcsaba101 commented Feb 18, 2018

negativekelvin: no only those two in three different projects.

I can try, in the present project I have free ADC pins.

@tcsaba101

This comment has been minimized.

Copy link

tcsaba101 commented Feb 18, 2018

just to be sure I made the same test on Arduino-Uno, Due, Chipkit Uno32.
Chipkit very good, Uno acceptable.
The same hw and firmware. Those ADCs are woorking our ESP32 is not.

UNo 1V
uno_adc_1v
Uno 3V
uno_adc_3v
Uno 5V
uno_adc_5v

DUe 1V
due_adc_1v
DUE 3V
due_adc_3v

Chipkit UNO32 1V
uno32_adc2
UNO32 3V
uno32_adc_3v

All acceptable.

@tcsaba101

This comment has been minimized.

Copy link

tcsaba101 commented Feb 18, 2018

I have tried pin34 ADC1_CH6 what Krzysztof used in his test, no real change.
I have to put an ADS1x15 chip on i2c bus.

@krzychb

This comment has been minimized.

Copy link
Collaborator

krzychb commented Feb 18, 2018

Csaba,

I like you have introduced other boards to compare the noise of the ADC readings. 👍

To substitute your analysis, below are results of couple of my tests for different ESP32 boards and silicon revisions. It looks like ESP-WROVER-KIT board design is more immune to noise of the ADC readings comparing to other boards I have.

I made the tests using latest master of esp-idf and the following code - https://gist.github.com/krzychb/37076b52ee90a34bb59d32c1a8407beb

If you post your Arduino code I can test my boards with Arduino as well to have a complete picture.

With the data you posted I do not expect breaking news but would like to indicate that results may depend on design of particular board with the ESP32 chip.

Olimex ESP32-EVB, GPIO34 = 1.000V, ADC_ATTEN_0db, Silicon Rev 0

3795 3983 3943 3819 3771 3775 3839 3839 3797 3743 3811 3807 3799 3851 3879 Avg: 3830 Dev:  4.0%
4023 3835 3935 3775 3921 3975 3915 3921 3871 3939 3789 3711 3755 3891 3831 Avg: 3872 Dev: -4.2%
3839 3851 3807 3826 3903 3823 3824 3823 3907 3759 3791 3871 3835 3783 3806 Avg: 3829 Dev:  2.0%
3727 3919 3915 3915 3743 3831 3941 3760 3839 3699 3855 3796 3839 3941 3795 Avg: 3834 Dev: -3.5%
3920 3787 3839 3767 3871 3815 3919 3895 3951 3850 3863 3871 3837 3781 3839 Avg: 3853 Dev:  2.5%
3859 3915 3915 3763 3923 3919 3838 3947 3811 3887 3803 3797 3823 3783 3919 Avg: 3860 Dev: -2.5%
3919 3879 3875 3949 3919 3667 3759 3767 3799 3760 3807 3831 3711 3897 3822 Avg: 3824 Dev: -4.1%
3951 3791 3743 3889 3814 3751 3829 3799 3875 3875 3947 3823 3787 3915 3823 Avg: 3840 Dev:  2.9%
3927 3807 3787 3933 3863 3829 3856 3789 3907 3919 3879 3862 3831 3805 3765 Avg: 3850 Dev: -2.2%
3859 3747 3824 3727 3855 3851 3923 3875 3797 3792 3953 3774 3943 3837 3895 Avg: 3843 Dev: -3.0%
3919 3935 3831 3839 3751 3835 3839 3767 3882 3824 3999 3837 3919 3759 3759 Avg: 3846 Dev:  4.0%
3954 3894 3901 3903 3743 3867 3839 3879 3859 3811 3825 3839 3891 3883 3791 Avg: 3858 Dev: -3.0%
3839 3789 3878 3839 3885 3895 3871 3879 3889 3822 3763 3751 3871 3981 3807 Avg: 3850 Dev:  3.4%
3767 3795 3802 3815 3919 3863 3823 3789 3963 3779 3935 3826 3789 3855 3907 Avg: 3841 Dev:  3.2%
3827 3790 3781 3571 3623 3927 3826 3793 3888 3907 3959 3847 3939 3783 3750 Avg: 3814 Dev: -6.4%
3765 3795 3863 3903 3887 3879 3811 3861 3824 3779 3699 3877 3913 3775 3855 Avg: 3832 Dev: -3.5%
3889 3810 3821 3903 3903 3871 3925 3923 3877 3894 3861 3763 3835 3827 3770 Avg: 3858 Dev: -2.5%
3867 3883 3951 3739 3855 3839 3847 3785 3891 3859 3765 3869 3934 3870 3967 Avg: 3861 Dev: -3.2%
3871 3839 4011 3935 3883 3855 3775 3921 3825 3871 3889 3891 3851 3807 3887 Avg: 3874 Dev:  3.5%
3815 3895 3903 3885 3939 3935 3822 3858 3851 3903 3779 3859 3815 3735 3782 Avg: 3851 Dev: -3.0%
3715 3794 3831 3859 4095 3791 3954 3839 3931 3735 3863 3947 3839 3871 3761 Avg: 3855 Dev:  6.2%
3955 3813 3865 3867 3951 3890 3718 3815 3823 3839 3823 3910 3879 3879 3879 Avg: 3860 Dev: -3.7%
3823 3761 3838 3831 3755 3957 3923 3862 3895 3791 3925 3774 3733 3987 3847 Avg: 3846 Dev:  3.7%
3955 3927 3857 3779 3707 3807 3934 3793 3921 3835 3799 3891 3919 3887 3893 Avg: 3860 Dev: -4.0%
3811 3931 3826 3827 3739 3819 3795 3761 3891 3772 3869 3719 3879 3727 3815 Avg: 3812 Dev:  3.1%
3699 3753 3920 3735 3871 3856 3735 3826 3731 3893 3887 3761 3802 3803 3831 Avg: 3806 Dev:  3.0%
4015 3811 3728 3893 3783 3857 3943 3863 3807 3926 3875 3807 3939 3853 3879 Avg: 3865 Dev:  3.9%
3787 3839 3941 3935 3835 3887 3958 3833 3839 3903 3943 3886 3887 3871 3803 Avg: 3876 Dev: -2.3%
3855 3921 3725 3963 3863 3857 3911 3962 3903 3773 3787 3869 3901 3901 3887 Avg: 3871 Dev: -3.8%
3839 3871 3911 3863 3919 3767 3781 3883 3887 3815 3935 3903 3799 3885 3895 Avg: 3863 Dev: -2.5%

Olimex ESP32-EVB, GPIO34 = 3.000V, ADC_ATTEN_11db, Silicon Rev 0

3671 3695 3677 3741 3687 3675 3657 3647 3618 3651 3679 3739 3663 3669 3703 Avg: 3678 Dev:  1.7%
3583 3679 3699 3607 3735 3709 3728 3723 3747 3655 3743 3743 3759 3747 3723 Avg: 3705 Dev: -3.3%
3675 3679 3751 3627 3743 3711 3655 3697 3677 3677 3655 3759 3703 3717 3679 Avg: 3693 Dev:  1.8%
3633 3671 3775 3653 3642 3690 3733 3647 3711 3683 3687 3703 3685 3677 3675 Avg: 3684 Dev:  2.5%
3750 3711 3699 3695 3711 3615 3679 3702 3695 3651 3701 3723 3703 3629 3623 Avg: 3685 Dev: -1.9%
3661 3707 3631 3735 3652 3664 3693 3687 3721 3665 3643 3697 3695 3709 3677 Avg: 3682 Dev:  1.4%
3683 3706 3687 3735 3723 3695 3727 3721 3813 3687 3695 3749 3667 3711 3707 Avg: 3713 Dev:  2.7%
3741 3663 3607 3760 3695 3775 3723 3659 3719 3669 3693 3671 3696 3693 3677 Avg: 3696 Dev: -2.4%
3671 3629 3723 3721 3747 3709 3695 3727 3783 3729 3639 3679 3675 3699 3696 Avg: 3701 Dev:  2.2%
3718 3739 3695 3739 3731 3685 3711 3674 3600 3698 3723 3751 3663 3755 3743 Avg: 3708 Dev: -2.9%
3711 3701 3727 3695 3671 3691 3735 3663 3697 3701 3653 3711 3655 3655 3631 Avg: 3686 Dev: -1.5%
3649 3691 3664 3711 3664 3615 3735 3743 3735 3718 3735 3695 3751 3679 3687 Avg: 3698 Dev: -2.2%
3647 3639 3727 3711 3691 3675 3770 3695 3686 3711 3727 3665 3639 3638 3735 Avg: 3690 Dev:  2.2%
3701 3699 3707 3665 3664 3647 3633 3685 3701 3655 3671 3747 3711 3706 3661 Avg: 3683 Dev:  1.7%
3727 3649 3673 3711 3743 3698 3686 3699 3678 3742 3711 3643 3743 3707 3697 Avg: 3700 Dev: -1.5%
3791 3757 3690 3632 3703 3670 3699 3723 3763 3638 3679 3719 3651 3707 3695 Avg: 3701 Dev:  2.4%
3760 3727 3637 3731 3647 3663 3664 3659 3702 3723 3743 3664 3683 3759 3695 Avg: 3697 Dev:  1.7%
3711 3623 3691 3711 3770 3667 3711 3709 3715 3757 3721 3751 3675 3643 3707 Avg: 3704 Dev: -2.2%
3719 3655 3671 3685 3679 3723 3718 3647 3600 3675 3667 3651 3663 3696 3679 Avg: 3675 Dev: -2.0%
3762 3677 3723 3757 3671 3651 3735 3645 3647 3663 3667 3671 3695 3733 3703 Avg: 3693 Dev:  1.9%
3699 3670 3700 3699 3711 3696 3663 3639 3663 3683 3663 3743 3694 3699 3703 Avg: 3688 Dev:  1.5%
3639 3695 3605 3699 3675 3665 3707 3699 3679 3673 3735 3751 3729 3655 3685 Avg: 3686 Dev: -2.2%
3647 3623 3715 3694 3723 3638 3669 3664 3707 3702 3735 3755 3678 3671 3635 Avg: 3683 Dev:  2.0%
3631 3650 3583 3699 3659 3761 3755 3759 3783 3638 3703 3649 3611 3683 3721 Avg: 3685 Dev: -2.8%
3707 3664 3678 3759 3729 3661 3703 3751 3684 3683 3787 3759 3659 3743 3759 Avg: 3715 Dev:  1.9%
3633 3667 3669 3701 3735 3733 3691 3696 3647 3696 3685 3687 3647 3697 3679 Avg: 3684 Dev:  1.4%
3783 3717 3701 3723 3671 3671 3735 3615 3742 3743 3691 3739 3643 3679 3683 Avg: 3702 Dev: -2.4%
3741 3643 3711 3659 3655 3687 3671 3647 3698 3728 3703 3723 3729 3687 3645 Avg: 3688 Dev:  1.4%
3691 3647 3691 3711 3659 3635 3677 3607 3671 3669 3727 3667 3691 3651 3699 Avg: 3672 Dev: -1.8%
3631 3679 3699 3751 3679 3703 3742 3711 3643 3614 3727 3666 3677 3623 3715 Avg: 3684 Dev: -1.9%

ESP32 DevKitC V2, GPIO34 = 1.000V, ADC_ATTEN_0db, Silicon Rev 0

4083 4078 4011 4015 4077 4016 4049 4039 4011 4087 4027 4071 4043 4031 4031 Avg: 4044 Dev:  1.1%
4083 4051 4067 4051 4063 4061 4071 4055 4079 4051 4071 4062 4027 4011 4022 Avg: 4055 Dev: -1.1%
4031 4022 4081 4067 3990 4015 4093 4017 3990 4061 4030 4055 3999 4003 4063 Avg: 4034 Dev:  1.5%
3999 4080 4063 4023 4023 4023 4049 4006 4021 4007 4047 4031 4015 4031 4071 Avg: 4032 Dev:  1.2%
4083 4016 4079 4080 4031 4039 4079 4017 4063 4015 4027 4039 4045 4023 4003 Avg: 4042 Dev:  1.0%
4047 4039 3995 4031 4035 4079 4027 4007 3979 4045 4022 4007 4037 4095 4031 Avg: 4031 Dev:  1.6%
4019 3991 3987 4053 3966 4017 4075 4063 4017 4023 4063 3986 4071 4087 4063 Avg: 4032 Dev: -1.6%
3983 4071 4079 4079 4010 4023 3983 4071 4083 4081 4016 4016 4059 4031 4031 Avg: 4041 Dev: -1.4%
4039 4087 4015 4086 4050 4047 4067 4007 4055 4031 4055 4011 4015 4043 4035 Avg: 4042 Dev:  1.1%
4031 4043 4083 4037 4071 4039 4071 4015 4035 4055 4030 4019 4095 4031 4059 Avg: 4047 Dev:  1.2%
4047 4059 4049 4071 4039 3999 4047 4079 4003 4035 3990 4080 4019 4063 4087 Avg: 4044 Dev: -1.3%
4059 4047 4043 4059 4013 4063 4079 4019 4018 4009 4027 4015 4031 4051 4063 Avg: 4039 Dev:  1.0%
3986 4007 3991 4059 4031 4031 4016 4051 4031 4059 4019 4075 4061 4023 4043 Avg: 4032 Dev: -1.1%
4017 4063 4063 4027 4043 3991 4049 4087 4047 4017 4067 4015 4049 4047 3998 Avg: 4038 Dev:  1.2%
4003 4019 4047 4031 4031 4035 4062 4043 4031 4059 4021 4047 4077 4043 3995 Avg: 4036 Dev:  1.0%
4046 4035 4050 4017 4038 4015 4016 3989 4047 4031 4047 4079 4063 4047 4015 Avg: 4035 Dev: -1.1%
4015 4061 4063 4031 4045 4047 4015 4055 4079 4017 4087 4061 4023 4067 4063 Avg: 4048 Dev:  1.0%
4059 4031 4019 4063 4083 4031 4080 3989 4019 4031 4095 4041 4074 4027 4079 Avg: 4048 Dev: -1.5%
4071 4039 4035 4031 3999 4031 4071 4063 4031 3995 4071 4091 4031 4035 4022 Avg: 4041 Dev:  1.2%
4087 4063 3999 4071 4047 4023 4039 4049 4011 4059 4022 4062 3995 4079 4063 Avg: 4044 Dev: -1.2%
4087 4039 4029 4025 4079 4048 4063 3991 4055 4063 4031 4022 4045 4051 4049 Avg: 4045 Dev: -1.3%
4047 4063 4063 4021 3999 4059 4031 4011 4027 4081 4031 4029 4014 4015 4070 Avg: 4037 Dev:  1.1%
4048 4031 4047 4094 4031 4062 4007 4055 4003 4077 4063 4019 3995 4007 4070 Avg: 4040 Dev:  1.3%
4031 4071 4023 4023 4031 4031 4023 4083 4055 3986 4061 4067 4031 4035 4037 Avg: 4039 Dev: -1.3%
4015 4039 4079 4043 4049 4003 4071 3987 4087 4055 4087 4031 4017 3995 4031 Avg: 4039 Dev: -1.3%
4051 4023 4007 4051 4007 4031 4037 4083 4051 4047 3999 4063 4051 4047 4063 Avg: 4040 Dev:  1.1%
4079 4011 4015 3999 4055 4019 4085 4087 4075 4082 4027 4015 4007 4067 4035 Avg: 4043 Dev:  1.1%
4055 4061 4063 4035 4015 4027 4007 4063 4059 4047 4095 4049 4059 4011 4037 Avg: 4045 Dev:  1.2%
4043 4018 3997 4031 4051 4031 4035 4039 4023 4017 4061 4017 4053 4007 4059 Avg: 4032 Dev: -0.9%
4070 4092 4049 4006 4047 4083 4079 4050 4050 3999 4068 4051 4035 4045 4019 Avg: 4049 Dev: -1.2%

ESP32 DevKitC V2, GPIO34 = 3.000V, ADC_ATTEN_11db, Silicon Rev 0

3792 3798 3790 3793 3819 3803 3792 3789 3793 3792 3807 3827 3795 3795 3824 Avg: 3800 Dev:  0.7%
3799 3827 3799 3775 3775 3793 3794 3813 3815 3781 3811 3794 3811 3831 3801 Avg: 3801 Dev:  0.8%
3789 3807 3823 3827 3813 3814 3802 3829 3797 3831 3811 3807 3798 3807 3805 Avg: 3810 Dev:  0.6%
3787 3793 3791 3821 3807 3807 3793 3823 3799 3807 3811 3815 3807 3793 3775 Avg: 3801 Dev: -0.7%
3811 3797 3819 3791 3783 3791 3824 3803 3823 3807 3819 3799 3787 3793 3827 Avg: 3804 Dev:  0.6%
3826 3838 3775 3803 3818 3821 3823 3827 3807 3819 3779 3775 3827 3823 3823 Avg: 3812 Dev: -1.0%
3803 3830 3791 3823 3825 3827 3831 3824 3838 3827 3819 3793 3802 3773 3803 Avg: 3813 Dev: -1.0%
3802 3803 3807 3839 3821 3799 3823 3793 3803 3791 3795 3795 3783 3787 3795 Avg: 3802 Dev:  1.0%
3791 3790 3791 3821 3815 3799 3803 3791 3825 3822 3791 3815 3782 3795 3797 Avg: 3801 Dev:  0.6%
3779 3831 3803 3795 3825 3811 3793 3799 3791 3779 3799 3799 3803 3811 3799 Avg: 3801 Dev:  0.8%
3815 3827 3795 3815 3815 3783 3793 3815 3795 3815 3793 3815 3815 3797 3823 Avg: 3807 Dev: -0.6%
3786 3791 3827 3797 3787 3795 3799 3807 3830 3819 3799 3822 3825 3793 3831 Avg: 3807 Dev:  0.6%
3798 3815 3787 3791 3815 3780 3799 3795 3821 3799 3793 3792 3819 3823 3807 Avg: 3802 Dev: -0.6%
3774 3829 3827 3791 3813 3807 3799 3814 3798 3787 3831 3795 3823 3798 3823 Avg: 3807 Dev: -0.9%
3799 3823 3803 3819 3775 3787 3789 3829 3814 3819 3791 3795 3825 3823 3793 Avg: 3805 Dev: -0.8%
3807 3815 3775 3799 3831 3819 3827 3807 3793 3787 3795 3830 3783 3792 3794 Avg: 3803 Dev:  0.7%
3827 3807 3791 3785 3805 3807 3783 3823 3815 3807 3791 3783 3779 3803 3787 Avg: 3799 Dev:  0.7%
3799 3839 3823 3783 3791 3823 3774 3767 3815 3791 3773 3798 3807 3791 3831 Avg: 3800 Dev:  1.0%
3805 3792 3793 3783 3823 3795 3803 3795 3799 3798 3823 3823 3791 3815 3794 Avg: 3802 Dev:  0.6%
3827 3792 3819 3819 3815 3791 3793 3803 3815 3779 3782 3795 3815 3783 3795 Avg: 3801 Dev:  0.7%
3790 3799 3795 3791 3794 3787 3792 3791 3787 3793 3821 3822 3783 3794 3775 Avg: 3794 Dev:  0.7%
3807 3782 3807 3803 3779 3807 3783 3787 3823 3798 3807 3802 3791 3807 3797 Avg: 3798 Dev:  0.7%
3811 3811 3799 3819 3799 3795 3799 3811 3803 3789 3779 3797 3811 3792 3813 Avg: 3801 Dev: -0.6%
3794 3811 3787 3823 3783 3783 3779 3819 3813 3799 3829 3839 3807 3815 3791 Avg: 3804 Dev:  0.9%
3839 3807 3815 3815 3807 3835 3794 3823 3787 3791 3775 3799 3822 3791 3799 Avg: 3806 Dev:  0.9%
3783 3787 3815 3797 3815 3799 3793 3823 3789 3815 3799 3821 3807 3781 3798 Avg: 3801 Dev:  0.6%
3807 3793 3814 3783 3807 3830 3814 3826 3807 3795 3821 3783 3795 3819 3827 Avg: 3808 Dev: -0.7%
3825 3807 3831 3813 3795 3791 3787 3803 3793 3807 3779 3799 3803 3815 3815 Avg: 3804 Dev:  0.7%
3813 3797 3815 3795 3819 3813 3795 3789 3807 3815 3827 3807 3793 3807 3807 Avg: 3806 Dev:  0.6%
3829 3795 3822 3821 3825 3793 3807 3807 3802 3791 3815 3815 3779 3803 3799 Avg: 3806 Dev: -0.7%

ESP-WROVER-KIT V1, GPIO34 = 1.000V, ADC_ATTEN_0db, Silicon Rev 0

3957 3967 3967 3983 3959 3984 3985 3959 3987 3983 3967 3967 3959 3984 3975 Avg: 3972 Dev:  0.4%
3967 3959 3986 3979 3967 3975 3963 3987 3981 3991 3975 3987 3967 3983 3955 Avg: 3974 Dev: -0.5%
3991 3984 3990 3975 3982 3967 3967 3999 3979 3955 3983 3967 3967 3959 3967 Avg: 3975 Dev:  0.6%
3973 3963 3967 3965 3965 3959 3981 3986 3975 3974 3983 3983 3959 3955 3967 Avg: 3970 Dev:  0.4%
3979 3983 3971 3967 3959 3963 3967 3975 3979 3967 3965 3979 3959 3983 3979 Avg: 3971 Dev:  0.3%
3967 3963 3953 3959 3971 3967 3979 3975 3966 3967 3979 3975 3987 3967 3971 Avg: 3969 Dev:  0.5%
3967 3967 3959 3991 3967 3995 3974 3947 3973 3958 3967 3991 3985 3973 3959 Avg: 3971 Dev:  0.6%
3985 3983 3967 3967 3984 3991 3967 3963 3983 3979 3979 3967 3975 3983 3967 Avg: 3976 Dev:  0.4%
3967 3953 3967 3973 3991 3995 3967 3983 3978 3999 3979 3974 3991 3983 3979 Avg: 3978 Dev: -0.6%
3975 3959 3975 3983 3982 3983 3974 3979 3991 3967 3987 3979 3967 3999 3979 Avg: 3978 Dev:  0.5%
3967 3951 3967 3979 3953 3951 3975 3983 3967 3985 3983 3975 3963 3979 3959 Avg: 3969 Dev: -0.5%
3981 3981 3953 3967 3954 3959 3967 3967 3967 3959 3979 3983 3965 3967 3971 Avg: 3968 Dev:  0.4%
3951 3967 3995 3973 3983 3967 3967 3967 3967 3995 3966 3959 3975 3985 3980 Avg: 3973 Dev:  0.6%
3983 3959 3999 3967 3967 3959 3975 3951 3967 3979 3984 3959 3958 3959 3975 Avg: 3969 Dev:  0.8%
3967 3983 3975 3975 3967 3983 3967 3967 3983 3979 3967 3975 3963 3975 3975 Avg: 3973 Dev:  0.3%
3967 3985 3975 3957 3967 3967 3967 3985 3963 3955 3985 3981 3957 3967 3967 Avg: 3969 Dev:  0.4%
3967 3974 3975 3981 3989 3967 3995 3975 3963 3957 3967 3979 3967 3965 3983 Avg: 3973 Dev:  0.6%
3954 3983 3967 3955 3985 3987 3955 3959 3967 3975 3989 3986 3963 3967 3975 Avg: 3971 Dev:  0.5%
3979 3979 3975 3983 3975 3967 3973 3991 3963 3975 3979 3965 3985 3979 3967 Avg: 3975 Dev:  0.4%
3975 3973 3963 3963 3975 3963 3979 3953 3981 3985 3979 3966 3953 3975 3981 Avg: 3970 Dev: -0.4%
3967 3967 3967 3979 3979 3975 3967 3979 3985 3955 3984 3975 3963 3983 3971 Avg: 3973 Dev: -0.5%
3975 3983 3967 3982 3975 3983 3955 3955 3975 3991 3975 3998 3999 3979 3959 Avg: 3976 Dev:  0.6%
3987 3963 3967 3967 3979 3990 3963 3977 3957 3963 3987 3975 3957 3979 3959 Avg: 3971 Dev:  0.5%
3975 3955 3983 3959 3966 3975 3959 3975 3967 3983 3963 3975 3971 3979 3967 Avg: 3970 Dev: -0.4%
3981 3986 3983 3967 3967 3985 3953 3967 3985 3967 3974 3951 3983 3952 3943 Avg: 3969 Dev: -0.7%
3985 3967 3955 3983 3947 3967 3979 3975 3975 3974 3983 3979 3979 3975 3983 Avg: 3973 Dev: -0.7%
3963 3975 3983 3959 3957 3958 3967 3967 3967 3967 3967 3963 3974 3967 3983 Avg: 3967 Dev:  0.4%
3963 3999 3959 3975 3979 3981 3995 3963 3981 3983 3983 3967 3975 3963 3967 Avg: 3975 Dev:  0.6%
3981 3967 3971 3963 3963 3983 3967 3959 3967 3959 3987 3951 3974 3959 3967 Avg: 3967 Dev:  0.5%
3983 3983 3967 3967 3959 3991 3975 3987 3959 3973 3991 3963 3967 3989 3973 Avg: 3975 Dev:  0.4%

ESP-WROVER-KIT V1, GPIO34 = 3.000V, ADC_ATTEN_11db, Silicon Rev 0

3845 3834 3823 3829 3831 3827 3839 3847 3835 3839 3825 3824 3839 3838 3839 Avg: 3834 Dev:  0.3%
3827 3839 3823 3831 3827 3839 3827 3839 3824 3831 3847 3831 3835 3837 3847 Avg: 3833 Dev:  0.4%
3827 3825 3834 3851 3838 3829 3839 3851 3831 3839 3823 3839 3835 3847 3831 Avg: 3835 Dev:  0.4%
3831 3835 3827 3839 3827 3853 3839 3846 3819 3855 3851 3823 3839 3827 3839 Avg: 3836 Dev:  0.5%
3831 3831 3853 3839 3825 3829 3825 3838 3827 3829 3847 3837 3847 3831 3831 Avg: 3834 Dev:  0.5%
3830 3831 3835 3829 3823 3827 3847 3839 3835 3827 3831 3835 3839 3829 3831 Avg: 3832 Dev:  0.4%
3831 3835 3839 3837 3839 3847 3839 3830 3839 3839 3827 3847 3837 3851 3827 Avg: 3837 Dev:  0.4%
3824 3819 3839 3839 3839 3823 3839 3831 3839 3827 3839 3839 3831 3837 3831 Avg: 3833 Dev: -0.4%
3821 3839 3827 3835 3835 3823 3839 3823 3839 3835 3831 3839 3839 3829 3831 Avg: 3832 Dev: -0.3%
3822 3849 3838 3831 3839 3831 3829 3823 3839 3835 3835 3839 3827 3826 3827 Avg: 3832 Dev:  0.4%
3827 3819 3839 3853 3827 3839 3839 3847 3827 3839 3829 3839 3825 3831 3831 Avg: 3834 Dev:  0.5%
3827 3835 3831 3827 3831 3827 3839 3847 3831 3838 3835 3839 3839 3839 3838 Avg: 3834 Dev:  0.3%
3831 3837 3839 3837 3834 3839 3839 3825 3831 3839 3831 3827 3847 3835 3819 Avg: 3834 Dev: -0.4%
3826 3851 3823 3829 3837 3839 3831 3823 3830 3831 3838 3839 3839 3839 3826 Avg: 3833 Dev:  0.5%
3831 3839 3831 3839 3831 3831 3823 3835 3839 3831 3827 3839 3831 3839 3831 Avg: 3833 Dev: -0.3%
3831 3847 3847 3839 3823 3827 3823 3839 3834 3839 3831 3839 3823 3827 3839 Avg: 3833 Dev:  0.4%
3839 3835 3847 3847 3839 3839 3839 3839 3855 3839 3838 3839 3839 3838 3826 Avg: 3839 Dev:  0.4%
3823 3839 3839 3831 3839 3839 3839 3839 3835 3839 3838 3851 3823 3825 3831 Avg: 3835 Dev:  0.4%
3851 3839 3821 3829 3839 3834 3831 3839 3835 3837 3839 3831 3854 3839 3835 Avg: 3836 Dev:  0.5%
3837 3839 3822 3827 3823 3839 3839 3824 3825 3821 3847 3839 3831 3835 3831 Avg: 3831 Dev:  0.4%
3823 3825 3823 3838 3835 3839 3839 3839 3835 3839 3835 3831 3823 3815 3827 Avg: 3831 Dev: -0.4%
3829 3847 3831 3847 3839 3831 3831 3851 3839 3823 3835 3831 3827 3839 3823 Avg: 3834 Dev:  0.4%
3831 3830 3839 3829 3839 3845 3839 3834 3839 3827 3829 3823 3839 3839 3839 Avg: 3834 Dev:  0.3%
3827 3839 3839 3839 3825 3829 3837 3826 3845 3837 3835 3831 3823 3827 3839 Avg: 3833 Dev:  0.3%
3831 3839 3827 3839 3839 3831 3824 3847 3829 3847 3831 3839 3839 3839 3824 Avg: 3835 Dev:  0.3%
3835 3824 3831 3851 3827 3855 3839 3823 3847 3839 3821 3847 3839 3825 3847 Avg: 3836 Dev:  0.5%
3837 3823 3835 3839 3839 3831 3839 3847 3835 3839 3845 3847 3847 3829 3827 Avg: 3837 Dev: -0.4%
3839 3839 3831 3822 3825 3839 3822 3839 3839 3855 3847 3830 3835 3831 3839 Avg: 3835 Dev:  0.5%
3835 3831 3831 3851 3847 3839 3839 3831 3831 3846 3835 3830 3825 3839 3839 Avg: 3836 Dev:  0.4%
3825 3824 3826 3830 3822 3851 3839 3833 3851 3839 3839 3839 3827 3831 3835 Avg: 3834 Dev:  0.4%

ESP-WROVER-KIT V3, GPIO34 = 1.000V, ADC_ATTEN_0db, Silicon Rev 1

3863 3859 3863 3855 3855 3859 3863 3863 3863 3857 3856 3853 3853 3853 3855 Avg: 3858 Dev:  0.1%
3855 3855 3862 3839 3839 3847 3855 3856 3851 3863 3855 3855 3851 3847 3863 Avg: 3852 Dev: -0.3%
3855 3863 3871 3867 3855 3863 3855 3859 3859 3855 3857 3853 3855 3855 3855 Avg: 3858 Dev:  0.3%
3857 3857 3857 3861 3855 3855 3854 3857 3859 3855 3867 3855 3854 3862 3857 Avg: 3857 Dev:  0.3%
3858 3858 3869 3859 3851 3855 3851 3867 3855 3870 3855 3851 3855 3853 3855 Avg: 3857 Dev:  0.3%
3847 3855 3859 3861 3857 3859 3839 3867 3863 3857 3854 3847 3859 3857 3856 Avg: 3855 Dev: -0.4%
3857 3856 3859 3855 3856 3879 3855 3857 3858 3855 3851 3856 3859 3856 3860 Avg: 3857 Dev:  0.6%
3855 3861 3862 3855 3855 3869 3859 3855 3859 3859 3855 3823 3859 3863 3854 Avg: 3856 Dev: -0.9%
3859 3857 3856 3847 3855 3859 3859 3859 3855 3857 3859 3858 3859 3855 3847 Avg: 3856 Dev: -0.2%
3856 3854 3857 3857 3859 3853 3861 3863 3854 3855 3863 3862 3855 3859 3855 Avg: 3857 Dev:  0.2%
3863 3863 3856 3855 3857 3858 3859 3863 3856 3855 3871 3856 3859 3853 3869 Avg: 3859 Dev:  0.3%
3854 3855 3859 3863 3862 3858 3847 3857 3855 3855 3857 3855 3839 3879 3853 Avg: 3856 Dev:  0.6%
3857 3857 3839 3861 3867 3855 3855 3855 3863 3857 3847 3855 3862 3855 3859 Avg: 3856 Dev: -0.4%
3855 3831 3855 3847 3853 3854 3859 3851 3855 3855 3870 3862 3861 3855 3853 Avg: 3854 Dev: -0.6%
3847 3853 3847 3855 3855 3839 3869 3847 3863 3857 3863 3871 3823 3859 3851 Avg: 3853 Dev: -0.8%
3859 3867 3855 3855 3847 3855 3847 3856 3855 3855 3855 3851 3855 3851 3839 Avg: 3853 Dev:  0.4%
3857 3859 3851 3855 3847 3855 3851 3845 3859 3859 3859 3859 3853 3858 3855 Avg: 3854 Dev: -0.2%
3851 3857 3861 3858 3859 3855 3859 3856 3839 3855 3863 3871 3879 3859 3863 Avg: 3859 Dev:  0.5%
3839 3847 3855 3854 3855 3855 3859 3855 3855 3859 3863 3859 3867 3867 3860 Avg: 3856 Dev: -0.4%
3861 3862 3851 3857 3862 3847 3850 3851 3858 3857 3856 3853 3863 3863 3855 Avg: 3856 Dev: -0.2%
3855 3859 3863 3855 3863 3854 3867 3856 3867 3853 3859 3858 3847 3867 3855 Avg: 3858 Dev: -0.3%
3853 3855 3855 3855 3855 3853 3847 3847 3860 3855 3871 3855 3847 3839 3863 Avg: 3854 Dev:  0.4%
3855 3855 3859 3851 3861 3856 3861 3847 3855 3855 3861 3851 3857 3847 3851 Avg: 3854 Dev:  0.2%
3863 3861 3859 3856 3855 3863 3861 3861 3858 3859 3845 3857 3859 3862 3847 Avg: 3857 Dev: -0.3%
3857 3857 3863 3862 3857 3855 3855 3851 3855 3851 3856 3857 3863 3856 3857 Avg: 3856 Dev:  0.2%
3859 3856 3863 3853 3839 3861 3851 3854 3856 3863 3847 3855 3871 3859 3851 Avg: 3855 Dev:  0.4%
3853 3859 3851 3867 3855 3859 3857 3857 3851 3855 3855 3855 3855 3849 3859 Avg: 3855 Dev:  0.3%
3857 3855 3871 3870 3855 3859 3857 3859 3855 3855 3857 3856 3859 3887 3855 Avg: 3860 Dev:  0.7%
3847 3855 3859 3857 3858 3863 3867 3855 3861 3855 3839 3851 3863 3867 3863 Avg: 3857 Dev: -0.5%
3855 3851 3851 3853 3847 3867 3855 3851 3858 3878 3886 3851 3859 3855 3856 Avg: 3858 Dev:  0.7%

ESP-WROVER-KIT V3, GPIO34 = 3.000V, ADC_ATTEN_11db, Silicon Rev 1

3738 3727 3731 3734 3729 3731 3739 3730 3741 3731 3739 3739 3735 3735 3733 Avg: 3734 Dev:  0.2%
3728 3733 3739 3731 3735 3733 3743 3731 3735 3731 3728 3739 3737 3731 3735 Avg: 3733 Dev:  0.3%
3731 3728 3731 3735 3735 3731 3743 3739 3731 3735 3728 3739 3729 3733 3739 Avg: 3733 Dev:  0.3%
3739 3743 3728 3739 3739 3728 3739 3735 3742 3735 3738 3735 3734 3741 3737 Avg: 3736 Dev: -0.2%
3719 3735 3747 3725 3735 3741 3729 3733 3731 3743 3731 3729 3739 3731 3735 Avg: 3733 Dev:  0.4%
3731 3733 3731 3730 3739 3741 3729 3741 3731 3741 3739 3735 3735 3733 3729 Avg: 3734 Dev:  0.2%
3739 3731 3738 3741 3743 3738 3731 3729 3731 3735 3738 3729 3735 3735 3743 Avg: 3735 Dev:  0.2%
3735 3743 3739 3743 3731 3733 3739 3733 3734 3731 3731 3729 3739 3739 3735 Avg: 3735 Dev:  0.2%
3739 3731 3739 3743 3735 3735 3727 3731 3733 3735 3739 3733 3731 3735 3735 Avg: 3734 Dev:  0.2%
3731 3739 3733 3734 3735 3735 3738 3732 3735 3729 3727 3741 3743 3731 3739 Avg: 3734 Dev:  0.2%
3729 3731 3734 3731 3742 3737 3735 3733 3735 3735 3746 3739 3735 3739 3739 Avg: 3736 Dev:  0.3%
3731 3735 3735 3728 3741 3727 3735 3735 3729 3735 3738 3741 3733 3739 3727 Avg: 3733 Dev:  0.2%
3739 3739 3727 3735 3735 3733 3739 3727 3741 3735 3739 3739 3735 3731 3739 Avg: 3735 Dev: -0.2%
3729 3735 3731 3733 3735 3739 3735 3738 3733 3731 3743 3735 3741 3735 3735 Avg: 3735 Dev:  0.2%
3735 3735 3731 3735 3743 3731 3731 3750 3743 3735 3735 3731 3735 3733 3734 Avg: 3735 Dev:  0.4%
3741 3735 3731 3731 3743 3731 3735 3735 3735 3727 3743 3735 3729 3731 3731 Avg: 3734 Dev:  0.2%
3735 3743 3731 3725 3741 3735 3739 3743 3733 3746 3739 3743 3728 3735 3739 Avg: 3737 Dev: -0.3%
3731 3735 3731 3749 3729 3731 3733 3743 3743 3739 3733 3731 3739 3731 3743 Avg: 3736 Dev:  0.3%
3733 3731 3731 3731 3728 3743 3739 3739 3735 3735 3735 3735 3741 3743 3739 Avg: 3735 Dev:  0.2%
3743 3735 3735 3733 3743 3751 3743 3739 3743 3743 3719 3739 3729 3727 3733 Avg: 3737 Dev: -0.5%
3731 3739 3733 3731 3741 3735 3735 3735 3731 3729 3739 3735 3731 3729 3738 Avg: 3734 Dev:  0.2%
3731 3735 3730 3741 3742 3729 3742 3743 3733 3743 3735 3735 3733 3731 3731 Avg: 3735 Dev:  0.2%
3739 3733 3729 3739 3731 3729 3731 3735 3731 3733 3735 3735 3730 3735 3739 Avg: 3733 Dev:  0.2%
3731 3733 3731 3729 3739 3734 3730 3727 3735 3729 3731 3731 3743 3730 3733 Avg: 3732 Dev:  0.3%
3751 3731 3743 3739 3735 3738 3747 3733 3731 3739 3739 3732 3739 3743 3735 Avg: 3738 Dev:  0.3%
3731 3751 3739 3733 3733 3739 3735 3743 3731 3739 3743 3729 3739 3731 3731 Avg: 3736 Dev:  0.4%
3731 3731 3731 3742 3739 3741 3743 3739 3733 3728 3733 3735 3735 3730 3729 Avg: 3734 Dev:  0.2%
3731 3739 3743 3735 3741 3742 3743 3731 3728 3731 3731 3729 3729 3739 3743 Avg: 3735 Dev:  0.2%
3731 3735 3731 3743 3733 3731 3741 3734 3731 3735 3731 3735 3739 3739 3738 Avg: 3735 Dev:  0.2%
3731 3733 3731 3735 3735 3731 3735 3735 3731 3735 3731 3729 3735 3731 3739 Avg: 3733 Dev:  0.2%
@jan-bozelie

This comment has been minimized.

Copy link

jan-bozelie commented Feb 18, 2018

@krzychb
super results , and nice work , complements with the results of <0.5% of 1V input
Did you compare also for the other ports as GPIO34 , one of the complains was that we had to calibrate for each port individual , what will kill the case , but overall the fun
are you still capable to do multiple AD channels with an 0.1 sec refresch ?

@tcsaba101

This comment has been minimized.

Copy link

tcsaba101 commented Feb 19, 2018

This editor is not supporting to attach xxx.ino file.
I am not expert of github, and I have no time to play at the moment. I attach as an txt.
Chip_EVB_ADC_Test.txt

I have studied a bit of wrover kit, I don't see any specific what would validate the result..
All wrover-kit boards give this good result?

@krzychb

This comment has been minimized.

Copy link
Collaborator

krzychb commented Feb 24, 2018

Csaba,

Below are sample results for three ESP-WROVER-KIT boards using your sketch. This is to give some indication what variation of measurements to expect. I would not judge for other wrover-kit boards. My general observation is that ADC measurements perform better on ESP-WROVER-KIT comparing to e.g. ESP32-DevKitC or ESP32-EVB. This is likely related to layout of power distribution, overall layout of traces and components on PCB, selection of decoupling capacitors, etc.

ESP-WROVER-KIT V1, GPIO34 = 3.000V, ADC_ATTEN_11db, Silicon Rev 0

esp-wrover-kit-v1_3v_11db

ESP-WROVER-KIT V2, GPIO34 = 3.000V, ADC_ATTEN_11db, Silicon Rev 0

esp-wrover-kit-v2_3v_11db

ESP-WROVER-KIT V3, GPIO34 = 3.000V, ADC_ATTEN_11db, Silicon Rev 1

esp-wrover-kit-v3_3v_11db

ESP-WROVER-KIT V1, GPIO34 = 1.000V, ADC_ATTEN_0db, Silicon Rev 0

esp-wrover-kit-v1_1v_0db

ESP-WROVER-KIT V2, GPIO34 = 1.000V, ADC_ATTEN_0db, Silicon Rev 0

esp-wrover-ki-v2_1v_0db

ESP-WROVER-KIT V3, GPIO34 = 1.000V, ADC_ATTEN_0db, Silicon Rev 1

esp-wrover-ki-v3_1v_0db

@tcsaba101

This comment has been minimized.

Copy link

tcsaba101 commented Feb 25, 2018

Thanks Krzysztof!
At least we see there is possible to make close reach to 10 bit ADCs (Chipkit, Arduino boards) with ESP32.
There is some light at the end of the tunnel.

We could use the ESP32 ADC in other application too, if the real secret of Wrover-Kit would be revealed.
I have no idea how to make it!

@jan-bozelie

This comment has been minimized.

Copy link

jan-bozelie commented Feb 25, 2018

Thanks Krzysztof! , im reading your results with interest
i will buy one of these and see if that really make the difference
however if layout an powersuply would be the problem, expected , the manufacturer , would have give out pcb instructions , for sure i checked the rimple on the power supply before we published the ADC problems
i did not see reactions of the manufacturer in these
one question did you also use multiple analog inputs at the same time ?

@jack0c

This comment has been minimized.

Copy link
Collaborator

jack0c commented Mar 21, 2018

@igrr Maybe we can try to close this issue.

@negativekelvin

This comment has been minimized.

Copy link
Contributor

negativekelvin commented Mar 21, 2018

@jack0c expectations of accuracy/precision should be documented

@tcsaba101

This comment has been minimized.

Copy link

tcsaba101 commented Mar 21, 2018

The issue has not been solved!
I hope somebody will present a reproducible solution, at least to reach the Arduino 10 bit performance, what was not an issue with any board I tried.
Should we close the issue, when the problem still exist?

@jan-bozelie

This comment has been minimized.

Copy link

jan-bozelie commented Mar 22, 2018

pls leave it open , as it is a real problem in using this chip as it was intended
the worst was that you have to calibrate for each chanel seperatly , which is undoable

i hope the manufacturer will solve this with a newer version

@rin67630

This comment has been minimized.

Copy link

rin67630 commented Apr 15, 2018

I have here following settings with a chip ESP32D0WDQ6 (revision 1) (WROOM32) powered by exactly 3,3V Vcc:

analogSetWidth(10); // 10Bit resolution
analogSetAttenuation((adc_attenuation_t)0); // 0=0db (0..1V) 1= 2,5dB; 2=-6dB (0..2V); 3=-11dB

I expected to get a reasonable linearity and ADC=512 upon applying 0,5V on pin SVP.

In fact I get 459. That is about 10% error!

@tobymurray

This comment has been minimized.

Copy link

tobymurray commented Jun 3, 2018

I'm trying to use the ADC on an ESP-WROOM-32, and I'm not quite understanding where this issue left off.

the worst was that you have to calibrate for each chanel seperatly , which is undoable

Acknowledging that this is a massive pain, for what I'm doing right now, that seems feasible. I've read the documentation for ADC Calibration, but I'm not quite understanding the process. Can someone lay out how to get usable values out of the ADC today given a single channel on a single chip?

With the chip I'm using I don't have the two point values or reference voltage stored in eFuse, so I understand it's using the default Vref. While the values coming out of the ADC are not particularly close, I've applied a non-linear compensation and it seems to be working reasonably well - this says to me that it's likely usable if I do the right thing. How do we find a more accurate Vref?

@shivankgarg98

This comment has been minimized.

Copy link

shivankgarg98 commented Jun 4, 2018

Can we use external ADC chip like MCP3008 or something else to get better results?
Actually, I am working on LoPy modules which are based on ESP32. And I need to get the correct reading of soil moistures. Please, someone, help. Novice here.

@elFallino

This comment has been minimized.

Copy link

elFallino commented Jun 4, 2018

@tcsaba101

This comment has been minimized.

Copy link

tcsaba101 commented Jun 4, 2018

Yes, we can use ADS, but for Arduino and other MCUs you don't need it, if 10 bit precision is enough, what works reasonably many times (STM32 12 bit, Teensy 11bit).
The ESP32 ADC has not only calibration problem. Huge noise too. Calibration problem could be handled with some effort. Noise makes the internal ADC usable at about 8 bit precision, what is a big disadvantage on the comparison with other MCUs.

@markterrill

This comment has been minimized.

Copy link

markterrill commented Jun 14, 2018

8 bit precision is like knowing its hot but not knowing the temperature

@SmoothWifi

This comment has been minimized.

Copy link

SmoothWifi commented Jul 6, 2018

Hello all,

I am quite new with ESP32 and I am facing an issue I can't solve: I want to get a TFT Touch (resisitv) working and I have the 4 wires (X+,X- and Y+,Y-). Working with the ADC I can get the X position or the Y position alone but no way that I get both of them simultaneously.
I have put some delays, combine them in different functions but something is crashing when I combine the two:
gpio_set_direction(GPIO_NUM_33, GPIO_MODE_OUTPUT); //X+
gpio_set_level(GPIO_NUM_33, 1);
gpio_set_direction(GPIO_NUM_26, GPIO_MODE_OUTPUT); //X-
gpio_set_level(GPIO_NUM_26, 0);
gpio_set_direction(GPIO_NUM_25, GPIO_MODE_OUTPUT); //Y-
gpio_set_level(GPIO_NUM_25, 0);
gpio_set_direction(GPIO_NUM_32, GPIO_MODE_INPUT); //Y+
adc1_config_width(3);
adc1_config_channel_atten(ADC1_CHANNEL_4, ADC_ATTEN_11db); //3v3 signal from TFT
X=adc1_get_raw(ADC1_CHANNEL_4)/(4096/240);//Reads X axis touch position
gpio_set_direction(GPIO_NUM_32, GPIO_MODE_OUTPUT); //Y+
gpio_set_level(GPIO_NUM_32, 1);
gpio_set_direction(GPIO_NUM_33, GPIO_MODE_INPUT); //X+
adc1_config_width(3);
adc1_config_channel_atten(ADC1_CHANNEL_5, ADC_ATTEN_11db); //3v3 signal from TFT
Y=adc1_get_raw(ADC1_CHANNEL_5)/(4096/320);//Reads Y axis touch position
printf("X=%d Y=%d\r\n", X, Y);

I only get 0. Has one of you already face that problem?

@RobbesU RobbesU referenced this issue Sep 21, 2018

Open

I2C wire speed #3

@flodmotorgrodan

This comment has been minimized.

Copy link

flodmotorgrodan commented Nov 19, 2018

Hardware revision required!

There is no need for reference voltage calibration and crap. The process of making a ADC is to deliver a product ready to use. If calibration is needed is has to be made in the manufacturing process and not made a software issue.

The hardware issue should not be fixed by customers spending time calibrating.

The biggest problem is it has an offset error so any voltage below ~100mV will return 0.

Secondly it has reference voltages worse than a two resistor voltage divider. On top of that it is so unlinear it can not possibly be made properly using the simplest ADC principles.

Tested a few ESP-WROOM-32 and an early Lolin 32 Lite with a PWM output sweep heavily filtered using both a 1k and 10k resistor charging 1000µF//220nF capacitors close to ADC input.

The ADC ranges 0..3 tested and all have a starting offset, but the highest ADC range is really bad.

esp32_adc_vs_pwm_dac_2

Unacceptable

Espressif - Fix the hardware!

@flodmotorgrodan

This comment has been minimized.

Copy link

flodmotorgrodan commented Nov 22, 2018

A closer look at the offset at which each ADC attenuation range produces a reading. The PWM high side is 3.4 Volts so PWM filtered DC voltage is 3.4/4096 = 0.83 mV/tick

In my case ADC readings starts ticking from:
Range 0 & 1 = 85 * 0.83 = 71mV
Range 2 = 110 * 0.83 = 91 mV
Range 3 = 148 * 0.83 = 123 mV

adc_sweep_2018-11-21_215115
Chart - The offsets makes it harder to read smaller voltages in the 100mV range out of the box.

adc_sweep_2018-11-21_162935
Chart - Range 3, gray curve is more than unlinear.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment