i want to map analog pins on 5volt between 0 to 1023 (10 bit resolution)

rankit0092
Posts: 5
Joined: Tue Jan 23, 2018 5:31 am

i want to map analog pins on 5volt between 0 to 1023 (10 bit resolution)

Postby rankit0092 » Sun Apr 15, 2018 6:39 pm

I want to use my esp32 to measure a water quality parameters like pH, ORP etc. by ANALOG PINS
I have codes written for ARDUINO BOARD. so those codes give me output in a 10-bit resolution which is mapped between 0 to 5 volt.
but in an ESP32-WROOM board by default, it gives 12-bit resolution(0 to 4095) and which is mapped between 0 to 3.3 volt.

by using analogReadResolution(10) I'm able to change resolution but it gives me improper readings as the analog pins are mapped on 0 to 3.3 volt.
so how can I get readings like an Arduino analog pin???

when i give 5 volts, I want 1023 ADC reading on pin36 and 0 when I give 0-volt
insert how can I map ADC pins between 0 to 5 volt??

User avatar
kolban
Posts: 1337
Joined: Mon Nov 16, 2015 4:43 pm
Location: Texas, USA

Re: i want to map analog pins on 5volt between 0 to 1023 (10 bit resolution)

Postby kolban » Mon Apr 16, 2018 4:20 am

A voltage divider is a simple circuit for linearly dividing an input voltage to an output voltage. For example, if you have an input voltage of between 0 and 5V and you want an output voltage of between 0 and 3.3V then you want to divide your input voltage by 5/3.3 or approx 1.515..

for example:

5 / 1.515 = 3.3

If you google on the phrase "voltage divider" you will find a ton of hits. When we say the voltage divider is a circuit ... well ... technically it is ... but it consists of only two resistors. See the following:

https://learn.sparkfun.com/tutorials/voltage-dividers

In fact the example shown at that page is for conversion of 5V to 3.3V.
Free book on ESP32 available here: https://leanpub.com/kolban-ESP32

rankit0092
Posts: 5
Joined: Tue Jan 23, 2018 5:31 am

Re: i want to map analog pins on 5volt between 0 to 1023 (10 bit resolution)

Postby rankit0092 » Mon Apr 16, 2018 7:23 am

Hello, sir kolban,
sorry, sir, I cannot explain my problem properly.

in Arduino, if we read analog pin it gives output between 0 to 1023
means when I'm reading an analog pin and connect this pin to 5 volts I will receive 1023 on the serial monitor, (i'm connecting the analog pin to supply voltage for checking purpose, not with the sensor.)
when i connect this pin to 3.3 volt it gives 660 on serial monitor.
when i connect this pin to 0 volt it give 0 on serial..
I have codes they are designed only for Arduino.

but i want to use this code for esp32. and want same result.

now in ESP 32 I'm using pin 33. this pin is on 10 bit resolution. for esp32 when I'm connecting this pin to 3.3 it gives 1023 perfect but I want same reading as Arduino

so I must have to change this pins reference voltage to 5v same as Arduino. but don't know how to do this.
and I don't want to change those codes.
so I just want that if I'm giving external 5 volts to analog pin then I want 1023, for 3.3 I want 660 something, and for 0 volt 0
so is there any option to achieve this???
or guide me to any other option

rankit0092
Posts: 5
Joined: Tue Jan 23, 2018 5:31 am

Re: i want to map analog pins on 5volt between 0 to 1023 (10 bit resolution)

Postby rankit0092 » Mon Apr 16, 2018 12:03 pm

kolban wrote:A voltage divider is a simple circuit for linearly dividing an input voltage to an output voltage. For example, if you have an input voltage of between 0 and 5V and you want an output voltage of between 0 and 3.3V then you want to divide your input voltage by 5/3.3 or approx 1.515..

for example:

5 / 1.515 = 3.3

If you google on the phrase "voltage divider" you will find a ton of hits. When we say the voltage divider is a circuit ... well ... technically it is ... but it consists of only two resistors. See the following:

https://learn.sparkfun.com/tutorials/voltage-dividers

In fact the example shown at that page is for conversion of 5V to 3.3V.



Hello, sir kolban,
sorry, sir, I cannot explain my problem properly.

in Arduino, if we read analog pin it gives output between 0 to 1023
means when I'm reading an analog pin and connect this pin to 5 volts I will receive 1023 on the serial monitor, (i'm connecting the analog pin to supply voltage for checking purpose, not with the sensor.)
when i connect this pin to 3.3 volt it gives 660 on serial monitor.
when i connect this pin to 0 volt it give 0 on serial..
I have codes they are designed only for Arduino.

but i want to use this code for esp32. and want same result.

now in ESP 32 I'm using pin 33. this pin is on 10 bit resolution. for esp32 when I'm connecting this pin to 3.3 it gives 1023 perfect but I want same reading as Arduino

so I must have to change this pins reference voltage to 5v same as Arduino. but don't know how to do this.
and I don't want to change those codes.
so I just want that if I'm giving external 5 volts to analog pin then I want 1023, for 3.3 I want 660 something, and for 0 volt 0
so is there any option to achieve this???
or guide me to any other option

Nespressif
Posts: 31
Joined: Tue Sep 12, 2017 11:25 am

Re: i want to map analog pins on 5volt between 0 to 1023 (10 bit resolution)

Postby Nespressif » Mon Apr 16, 2018 12:09 pm

Hi, I think the simplest way to do it is with a function that makes the rule of three....
For 5v then 1024
Xv then?????

(Xv*1024)/5

Greetings

mikemoy
Posts: 41
Joined: Fri Jan 12, 2018 9:10 pm

Re: i want to map analog pins on 5volt between 0 to 1023 (10 bit resolution)

Postby mikemoy » Mon Apr 16, 2018 1:00 pm

What your after is called "Aref" pin. This pin allows the A/D converter to work at different voltage ranges.
The issue here is that the "ARDUINO BOARD" has this pin but the ESP32 (from what I am reading here) does not, and is fixed at +3.3v
So your going to have to accomplish this in hardware via say a resistor divider.
https://www.espressif.com/sites/default ... ual_en.pdf

Archibald
Posts: 40
Joined: Mon Mar 05, 2018 12:44 am

Re: i want to map analog pins on 5volt between 0 to 1023 (10 bit resolution)

Postby Archibald » Mon Apr 16, 2018 2:40 pm

The ESP32 works on 3.3V so you will have to use a voltage divider. Applying up to 5 volts to your ESP32 is quite likely to destroy your ESP32.

The circuit diagram below shows a voltage divider R1 and R2. Espressif documentation on the ADC (here) suggests using a 0.1μF capacitor to reduce noise. A higher value of capacitor would further reduce any noise picked up but would slow down measurement of fast changes of input voltage.

divider1.png
divider1.png (7.33 KiB) Viewed 100 times

The ESP32 ADC does not work right down to zero volts input, as shown by illustrative calibration graph in the same documentation. If you need to be able to measure small voltages, you could add an extra resistor R3 which would be a relatively high value.

You will need to calibrate the ADC as described in the documentation (with the voltage divider circuit in place). With R3 in place, applying zero volts to the circuit input should not give a digital value of zero. Applying 5V to the circuit input should not give maximum 12-bit binary value (4095). You will then need to use these two calibration digital values in your code to convert to a range of 0 to 1023. If you do not use R3, you will need to calibrate with a small voltage that gives a digital reading that is not zero.

Who is online

Users browsing this forum: No registered users and 7 guests