Calibrar de forma automática el ADC de la ESP32 con precision de milivoltio

  Рет қаралды 438

Ruben Hidalgo Carrillo

Ruben Hidalgo Carrillo

Күн бұрын

Пікірлер: 7
@EniGFX
@EniGFX 7 ай бұрын
Muchisimas gracias Rubén cuando tenga un hueco lo implemento y te doy feedback. Sería de gran ayuda que subieras el código que enseñas en los vídeos a un repositorio publico para poder juguetear con el directamente y trabajar exactamente sobre lo que has hecho en el vídeo. Un saludo. Sigue así se nota la dedicación que tienes, te encanta esto!
@DEA_CARLOS
@DEA_CARLOS 7 ай бұрын
Hola Ruben buenas noches. Transcribi el programa para ponerlo en funcionamiento. Es de gran ayuda para mi ya que ibamos a utilizar un adc externo de microchip con comunicación lo que engrosa bastante el proyecto. Tengo problemas con la libreria #include . La he buscado y no la pude localizar en la web. Esta compilado con arduino el proyecto ? La libreria es de Espresif ? Gracias
@rubenhidalgocarrillo
@rubenhidalgocarrillo 7 ай бұрын
No hay nada especial usado. Todo es de ESPRESSIF. Si te ha encontrado la del adc, debería encontrar la del dac, porque están en el mismo sitio. El link donde está documentado es: docs.espressif.com/projects/esp-idf/en/v4.4.2/esp32/api-reference/peripherals/dac.html Te paso todo el programa, por si acaso. #include #include #include #include void setup() { Serial.begin(250000); Serial.setTimeout(60000); dac_output_enable(DAC_CHANNEL_1); delay (5000); Serial.println (" ============================================================="); Serial.println ("- Conecta la GPIO_25 (DAC1) con la GPIO_36 (ADC1_0)"); Serial.println ("- Conecta un tester en la GIPIO_36 para ver el voltaje"); Serial.println ("- Conecta un pote multivueltas entre +3V3 y GND. El punto medio conectalo a la GPIO_39 (ADC1_3)"); Serial.println ("- Cuando se complete el proceso se guardará la tabla de calibracion en /calibraADC.cfg, en la flash "); Serial.println ("Espera un momento y sigue las instrucciones "); //SPIFFS.format(); if (!SPIFFS.begin(true)) { Serial.println ("ERROR AL MONTAR EL SISTEMA DE FICHEROS"); } } int estado = 0; int valorDac = 0; double recta_n = 0; double recta_m = 0; int mX[18]; int mY[18]; int calibra[4096]; int nMedida = 0; int miliAnt = 0; double filtro = 0; void loop() { // Pedir los datos de referencia de voltaje para el DAC if (estado == 0) { Serial.print("Introducir el voltaje en milivoltios leido en el tester para DAC = 16: "); dac_output_voltage(DAC_CHANNEL_1, 16); int vBajo = Serial.parseInt(); Serial.printf ("%d ", vBajo); Serial.print("Introducir el voltaje en milivoltios leido en el tester para DAC = 200: "); dac_output_voltage(DAC_CHANNEL_1, 200); int vAlto = Serial.parseInt(); Serial.printf ("%d ", vAlto); recta_m = ((double)vAlto - (double)vBajo) / (200 - 16); recta_n = (double)vBajo - (double)recta_m * 16; estado = 1; Serial.printf (" Ecuacion resultante: y = %0.3f·x + %0.3f ", recta_m, recta_n); Serial.println ("Iniciando la calibración... "); delay (1000); mX[0] = 0; mY[0] = 0; nMedida = 1; return; } // Construir la tabla de calibracion y guardarla en el fichero de configuracion if (estado == 1) { // Calibracion terminada. Guardar los datos en el fichero if (valorDac > 256) { mX[nMedida] = 4096; mY[nMedida] = 4096; for (int i=0 ; i miliAnt + 500) { int miliVoltios = (int)(filtro * 3300 / 4095); Serial.printf("ADC1_3 = %d ", miliVoltios); miliAnt = millis(); } } }
@DEA_CARLOS
@DEA_CARLOS 7 ай бұрын
@@rubenhidalgocarrillo Hola Ruben buen día. Gracias por responder. Quiero agradecer su colaboración. Quiero decirle aunque no pueda recompensar de otra manera expresar mi reconocimiento y que toda la pasión que le imprime a sus investigaciones se ven reflejada en los resultados. Desde mi lugar el aporte que me ha hecho ha sido de gran gran utilidad. Muchas gracias. No quise pedirle el código para no excederme en su generosidad. Lo había copiado desde el video. Gracias !!!!
@DEA_CARLOS
@DEA_CARLOS 7 ай бұрын
@@rubenhidalgocarrillo Una consulta Ruben. De acuerdo a su experiencia. Tengo una serie de módulos esp32 iguales en modelos y características. La desviación que tiene el micro en el ADC será igual en todos ? La pregunta consiste si habrá que calibrar todos en forma individual o el archivo generado con la calibración de uno puede implementarse en los restantes ? Gracias
@rubenhidalgocarrillo
@rubenhidalgocarrillo 7 ай бұрын
@@DEA_CARLOS El adc de la ESP32 tiene varios problemas: - No lee menos de 150 mV, mas o menos. - No lee más de 3.1 V, mas o menos. - No es totalmente lineal. Sobre todo en la parte de arriba tiene un codo pronunciado. - El nivel depende de su referencia interna, que varía entre 1 y 1.2 V, tal como declaran en su propia documentación. - Tiene un ruido interno muy grande, lo cual permite solo 10 bits en crudo, sin filtrar. En su documentación lo explican: docs.espressif.com/projects/esp-idf/en/stable/esp32/api-reference/peripherals/adc_calibration.html Si quieres tener todo el rango de voltaje, es decir, desde 0 hasta 3.3V, tendrias que montar un circuito como el que explico en este otro video: kzbin.info/www/bejne/lYK6lpqaj7F_eck
@DEA_CARLOS
@DEA_CARLOS 7 ай бұрын
@@rubenhidalgocarrillo Gracias Ruben. Sigo sus consejos y lo pondré en practica. Lo estamos incluyendo en un proyecto que estamos realizando. De esta manera me evito colocar adc externo mas la complejidad de la placa.
MOSFET   Teoria y primera comprobacion práctica
51:07
Ruben Hidalgo Carrillo
Рет қаралды 116
Lectura Analogica con Arduino y Referencia
18:59
Electgpl
Рет қаралды 7 М.
МАИНКРАФТ В РЕАЛЬНОЙ ЖИЗНИ!🌍 @Mikecrab
00:31
⚡️КАН АНДРЕЙ⚡️
Рет қаралды 40 МЛН
So Cute 🥰
00:17
dednahype
Рет қаралды 58 МЛН
哈莉奎因怎么变骷髅了#小丑 #shorts
00:19
好人小丑
Рет қаралды 48 МЛН
SHAPALAQ 6 серия / 3 часть #aminkavitaminka #aminak #aminokka #расулшоу
00:59
Аминка Витаминка
Рет қаралды 570 М.
ADC con ESP32 | ‼ Cómo aumentar la precisión del ADC📈
47:33
ENTRADA ANALÓGICA DO ESP32 | COMO FILTRAR E LINEARIZAR?
30:08
Crescer Indústria de Automação
Рет қаралды 2,9 М.
ESP32 - Regulador de potencia por PWM - Parte IV - Lectura de corriente
18:52
Arduino R4 WiFi, gestire un servo con un joystick
7:11
Passione orologi e tecnologia.
Рет қаралды 82
How 3 Phase Power works: why 3 phases?
14:41
The Engineering Mindset
Рет қаралды 1 МЛН
Have you ever seen soldering THIS close?
9:53
Robert Feranec
Рет қаралды 332 М.
🟣ESP32 Entradas analógicas
9:49
LaBuhardillaDelLoco
Рет қаралды 56 М.
Consulta para el Helio - 2 - MOSFETs. Por qué se calienta el MOSFET?
13:22
Ruben Hidalgo Carrillo
Рет қаралды 297
03  Curso ESP32   Convertidor Analógico Digital ADC
11:22
Plataforma Educativa Aragón-IEE
Рет қаралды 1,5 М.
МАИНКРАФТ В РЕАЛЬНОЙ ЖИЗНИ!🌍 @Mikecrab
00:31
⚡️КАН АНДРЕЙ⚡️
Рет қаралды 40 МЛН