FAQ FAQ  •  Buscar Buscar  •  Registrarse Registrarse  •  Entre para ver sus mensajes privados Entre para ver sus mensajes privados  • Login Login

X9C503 funciona con ESP32 ??

Índice de los Foros Electronica Facil » FOROS ELECTRONICA » Microcontroladores PIC
Publicar nuevo tema   Responder al tema
Ver tema anteriorEntre para ver sus mensajes privadosVer tema siguiente
AutorMensaje
Motochuga
Asunto: X9C503 funciona con ESP32 ?? MensajePublicado: 09 May, 2024 - 01:02
Nuevo en el Foro
Nuevo en el Foro


Registrado: 04 May, 2024
Mensajes: 4

X9C503 funciona con ESP32??

No consigo que X9C503 funcione con ESP32 pero si con Arduino Mega.

Que necesito --> Poder manejar el X9C503 para bajar el volumen de una entrada de línea de audio. No quiero usar potenciómetro manuales comunes.

Esquema X9C503:

INC__| o o | VCC
U/D__| o o | CS
RH___| o o | RL
GND__| o o | Rwiper


En mi caso:

INC------| o o | VCC (5v)
U/D------| o o | GND
Audio in | o o | GND
GND------| o o | Salida


En Arduino Mega conecto todo directamente a la placa y el funcionamiento es correcto.

En ESP32 si lo conecto a la placa no funciona, así que he usado el diodo 2N3904 para los pines 'INC' y 'U/D' (también he probado con 'CS' pero Arduino Mega lo hace bien estando a tierra), y funciona pero no lo hace bien, describo el problema:

Hay que introducir valores entre 0 y 99, y en general lo hace bien, para valores bajos el volumen baja y para valores altos el volumen sube. El problema lo detecté introduciendo siempre el mismo valor.

En este caso fue el '91', si lo introduzco varias veces seguidas obtengo distintos resultados, normalmente el volumen se mantiene constante pero a veces sube, otras baja e incluso se produce el silencio total

Con Arduino Mega introduzco el '91' 500 veces y el
volumen no cambia nunca, es constante y su funcionamiento es siempre correcto.

¿Cuál puede ser el problema?
¿Que otro componente puedo usar?

Como alternativa he probado con el FM62429, con ESP32 funciona correctamente, pero tiene la función de amplificar que no me viene bien. Para la entrada de línea ya uso resistencias de 22kΩ, luego el potenciómetro y por último el MSGEQ7, no tiene mucho sentido cambiar un potenciómetro para bajar el voltaje y sustituirlo por un componente que puede amplificar. Puedo limitar por código el FM62429 por ejemplo al 60% y sólo usarlo para bajar el volumen aunque no creo que sea una solución muy elegante.

Audio Line In -> resistencias de 22kΩ-> X9C503 -> MSGEQ7
Audio Line In -> resistencias de 22kΩ-> FM62429 -> MSGEQ7

Alguna idea o sugerencia?


Código:
#include "X9C10X.h"
#define CSPIN 33
#define INCPIN 14
#define UDPIN 27

X9C503 pot;

void setup() {
  Serial.begin(9600);
  pot.begin(INCPIN, UDPIN, CSPIN);  //  pulse, direction, select
  Serial.println("Introduce un valor entre 1 y 99");
}

void loop() {
  if(Serial.available() != 0){
    int value = Serial.parseInt();
    if (value != 0) {
      pot.setPosition(value, true);
      delay(30);
      Serial.print("Valor introducido: ");
      Serial.println(value);
    }
  }
  delay(100);
}
 
 Ver perfil de usuario Enviar mensaje privado  
Responder citando Volver arriba
Motochuga
Asunto: Solución MensajePublicado: 10 May, 2024 - 11:41
Nuevo en el Foro
Nuevo en el Foro


Registrado: 04 May, 2024
Mensajes: 4

Hasta donde he podido averiguar el X9C503 que tengo en mis manos trabaja a 5V, si se conecta a un Arduino Mega funciona correctamente, pero para poder usarlo en ESP32 hay que hacer uso de transistores.

El problema es que no tengo mucha experiencia y no sabía que con los transistores tenía que usar las resistencias de 4k7 a tierra para que pueda alcanzar el estado LOW. Ahora funciona correctamente, para la misma entrada siempre la misma salida.

A tener en cuenta que el X9C503 es uno barato comprado en AliExpress, compré 4 y 1 no funciona.

Ten en cuenta que lo mismo que se ha hecho con 'INC' Y 'U/D' debes hacerlo con 'CS' si quieres que el valor seleccionado de la resistencia se almacene. Yo no necesito que persista así que lo dejo a tierra y en el código selecciono un pin libre que no vaya a usar. Aunque el pin no se vaya a usar no se puede seleccionar cualquiera que esté libre, si seleccionas un pin y no es bueno no te preocupes, cada vez que intentes cambiar el valor de la resistencia te mostrará un mensaje de error por consola y así podrás seleccionar otro que no falle.

El código que lo hace funcionar es el mismo que publiqué al inicio



solucion2.png

Clik para agrandar
Circuito correcto

 
 Ver perfil de usuario Enviar mensaje privado  
Responder citando Volver arriba
Mostrar mensajes anteriores:     
Cambiar a:  
Todas las horas son GMT
Publicar nuevo tema   Responder al tema
Ver tema anteriorEntre para ver sus mensajes privadosVer tema siguiente
 Índice de los Foros Electronica Facil » FOROS ELECTRONICA »  Microcontroladores PIC
powered by phppowered by MySQLPOWERED BY APACHEPOWERED BY CentOS© 2004 - 2025Información Legalpoliticas de cookiesipv6 ready