Go Down

Topic: Dos potenciometros, ni en serie ni en paralelo, que dan la señal en el mismo pin (Read 424 times) previous topic - next topic

j99

Muy buenas a todos
Es muy probable que el título del post sea una grandísima estupidez debido a mi ignorancia total en electrónica.
Sin embargo me he empecinado en finalizar mi proyecto de construir un volante al estilo de la Formula 1 para mejorar mi experiencia en el mundo de las carreras online con simuladores de conducción.
Consiste básicamente en una caja con botones, pulsadores, switches, etc, acoplada al eje de un motor de un volante comercial de la marca Logitech. Confieso que a mi edad me resulta muy difícil intentar aprender a programar en el IDE los sketch y considero que me llevaría años. Así que confieso también que lo que estoy haciendo es coger el trabajo de otros que encuentro por la red por mal que suene, ya que entiendo que aparezco aquí como un aprovechado, pero es eso o abandonar. Espero lo entendáis y no me castiguéis mucho por ello.
Habiendo aprendido como realizar las conexiones (en una pro micro) y con algún sketch ya hecho de terceros tengo la mayor parte bajo control, pero hay un tema que me quita el sueño y no se ya la cantidad de búsquedas que he realizado en google sin éxito. Como quiero que mi volante tenga de todo, y al haber visto algunos modelos carísimos en youtube (hay bastante mercado actualmente de este tipo de cosas) donde funciona el sistema de accionar el embrague manipulando 2 levas en la parte trasera, me he decidido a hacer esta consulta.
No es fácil explicar como funciona con palabras y podría aburriros llenando la página. En este vídeo se ve el funcionamiento con uno de estos volantes a partir del minuto 2:05 (la explicación dura algo menos de 2 minutos)

https://youtu.be/ZWMS6K29L9g

He probado con esta placa la versión fácil con un solo potenciometro y funciona correctamente. Una vez hechas las conexiones y subido el sketch, configuro el dispositivo desde "dispositivos e impresoras". Después se entra en el simulador de conducción y se asigna ese potenciometro como embrague. Todo ok.
De ahí el título. Si pongo 2 potenciometros totalmente independientes en 2 pines analógicos diferentes, solo podría seleccionar uno de ellos en el juego. Así que entiendo que ambos han de ir conectados al mismo pin, pero he probado configurándolos tanto en serie como en paralelo y dan lecturas que no son válidas para la finalidad que se requiere. Ambos potenciómetros deberían ir de 0 a 1 (no se si está bien expresado) recorriendo los 1024 pasos y esto no ocurre. Tras "pisar" uno a fondo y el otro al 50%, al soltar el primero completamente, el segundo debería mantener ese valor al 50% para que el resultado fuera el esperado.
Las conexiones tanto en serie como en paralelo las he hecho a través del pin 03, GND y VCC. También probé a conectar el segundo usando el mismo pin, pero con otra salida GND diferente y RAW (esto lo hice porque creo que RAW, al recibir la placa la corriente via USB, se comporta de forma similar a VCC)(puede que ésta sea otra burrada). De esta manera tampoco ha funcionado y por suerte la placa sigue viva.
Lamento tantas letras y tan juntas y agradezco a quien lo lea. Espero me podáis ayudar a pesar de mi cara dura.

Un saludo

tauro0221

Hi,
Aqui segun tu dices que desconoces electronica y estas tratando de leer dos pontenciometros usando un  arduino pro micro. Para leer los dos potenciometros necesitas dos pines analogos y los tienes que leer individualmente para que te trabajen. Al ponerlos en paralelo con un solo pin esta cambieando la resistencia de ambos cuando varia una de las resistencias. Aqui para resolver el problema es incluir en el sketch que lea los dos pines individuales.Estas variando dos variables o sea dos potenciometros y de acuerdo a los valores de los dos  haces los cambios en la programacion. En otras palabras tienes que cambiar/modificar la programacion.Que funcion hace ambos potenciometros.Me imagino que cada potenciometro tiene una funcion diferente.No

j99

Hola Tauro, gracias por responder.
Efectivamente, si quiero tener lecturas correctas de los pots ambos deben estar conectados individualmente a pines diferentes. Y ese es el problema, porque después, en el juego de simulación, solo puedo asignar uno de ellos y entonces el invento no sirve. Ambos pots sirven para lo mismo, el embrague virtual en un juego de carreras.
La verdad es que se que es posible de realizar, pero no estoy seguro de que los que he visto en internet utilicen arduino. Podrían estar hechos de alguna otra manera. Seguiré buscando...
Gracias de nuevo

tauro0221

Hi,
Pregunta: Si tu tienes el sketch de la aplicacion puedes modificarla /ver como lo hacen para que lee los dos pines individualmente.

surbyte

Ya que has aclarado suficientemente tu desconocimiento de electrónica/electricidad mi mejor consejo es que uses un potenciómetro como ajuste grueso y otro como ajuste fino. Ambos conectados en serie.

Entonces Uno te dara un acercamiento brusco y el segundo el ajuste delicado. Si eso puede funcionar entonces dinos si te interesa la idea o lo quieres probar.
Este arreglo que te menciono mantendrá uno en su estado y el otro podrá variar.

Supongamos que el potenciómetro grueso tiene una variabilidad del 90% y dejas el segundo para el ajuste del 10%.
Esto mismo es solo una idea asi que podrías usar la combinación que te resulte mas cómoda.

j99

Hola de nuevo Tauro,
Tengo un sketch que utiliza un solo potenciometro que creo que viene definido en una librería llamada joystick.
Usando ese sketch debería ser capaz de añadir otro pot en otro pin analógico, pero no lo consigo. Te pongo aquí el código:

Code: [Select]


#include <Joystick.h>

Joystick_ Joystick;

void setup()

{pinMode(A3, INPUT);
   Joystick.begin();}

const int pinToButtonMap = A3;

void loop()

{int pot = analogRead(A3);
int mapped = map(pot,0,1023,0,255);
{Joystick.setThrottle(mapped);}}


También te adjunto la librería y muchas gracias por ayudar

j99

Hola surbyte, gracias por responder

eso que me comentas me interesa mucho. De echo cada búsqueda que he hecho me ha llevado a foros donde se habla de lo que propones, estando relacionado con la música. Creo que podría probarlo y ver como se mueven las barras en la pantalla para hacerme una idea.
Una pregunta, ¿se podría cambiar el porcentaje de ajuste grueso y fino?. Creo que para lo mio me vendría mejor algo así como 70%-30%. O incluso ¿cambiar esos porcentajes sin tener que acceder al código? o accediendo también daría igual.
Voy a mirar a ver si veo un código como el que dices y lo pruebo.
Muchas gracias de nuevo

renxo596

J99 justo estoy buscando lo mismo que vos, y estuve analizando el proyecto y lo que responden cada uno.
Estoy buscando en otros sitios para encontrar otros codigos para tener otras alternativas, pero se pone muy interesante esto.

surbyte

Ante todo y no porque use vocabulario técnico, debes seguirme y si no comprendes entonces consulta donde te hayas quedado.

Dos potenciómetros fijos conectados en serie solo pueden modificarse modificando alguno de ellos.
La única posibilidad que veo es la de usar uno digital y otro analógico con lo cual seguramente ya te dejé con la boca abierta. Supongamos que no, y eso espero.
Si tengo un potenciómetro digital puedo por código decirle cosas como modificar hasta donde lo uso. Asi que eso alteraría un porcentaje. Lo básico será usar algo que simule el movimiento grueso (supongamos) para tener la variación 0-100% del potenciómetro digital. Tal vez un enconder sirva.

Supongamos este potenciómetro Digital. El . AD5171 código y modo de uso.
Bien, con este potenciómetro, tienes versiones en 5, 10, 50 y 100K. Hoja de datos

El primer detalle importante que sale de la hoja de datos es que solo tiene 64 pasos asi que lo descarto.
Una nueva búsqueda rápida arroja al MCP41100 que ya tiene interesantes 256 u 8 bits de pasos posibles. Eso esta mucho mejor.
Recuerdo haber respondido alguna consulta y hablar de uno que tiene 1024 pasos.
Asi que estamos en la misma situación que usando un potenciómetro analógico y luego lo leyéramos con el AD.

Por códig podrias fijar el limite superior y claro perderás pasos pero todo no se puede. Acá es donde un potenciómetro digital con mas pasos es recomendable.

Entonces si dices leo todo lo que llegue hasta 7K (porque asumimos un pote de 10k) tendrás tu 70% y si luego lo cambias a 75% solo debes prestar atención a los valores hasta 7.5k. Como estas en un pote digital tendrás que estimar estas situaciones máximas con los pasos y descartar aquellos que no te interesan haciend lo mismo que haría un potenciometro fijo.

Empiezas con 70% entonces 256x0.7 = 179 pasos.
Si mas tarde decides cambiar a 75% tu limite de lectura sera 256 x 0.75 = 192

Es muy simple!!. El pote digital mas allá de que veas muchos pines se comporta igual que un analógico asi que del mismo modo que conectas el pote analógico conectas esta versión modificable.

Espero te haya servido la idea.


j99


j99

Hola de nuevo surbyte

No te voy a mentir, me dejaste con la boca abierta. Ni siquiera sabía de la existencia de potes digitales. Nada mas leer tu post se me ocurrían 1000 preguntas que hacerte, pero no me parecía justo robarte tiempo extra. Me fui a leer los enlaces para tratar de entenderlo y asi poder hacerte las preguntas  mínimas y oportunas. Varias horas me ha llevado y he ido enlazando con mas info cada vez que no entendía algo.

La cuestión es que esta tarde, mientras estaba en ello se me ocurrió algo. Creo que no estaba haciéndome las preguntas correctas respecto a lo que quería conseguir y por fin me las hice mientras estaba involucrado en seguir tus indicaciones. Sinceramente lo lamento mucho si consideras que te hice perder el tiempo.

La pregunta correcta es ¿como comparar dos lecturas analógicas?. Esa búsqueda en google arrojó un resultado prometedor en el siguiente enlace:

https://github.com/jorgerivera/ULCR-BINGE61/wiki/Comparaci%C3%B3n-de-valores-anal%C3%B3gicos

Es un código para arduino uno con la finalidad de encender un led dadas unas circunstancias. Me quedaba adaptarlo para la pro micro adjuntando la biblioteca joystick y tal. Por suerte hice también una búsqueda sobre salidas analógicas y encontre que debía asignar el output a un pin digital PWM (el 5 en mi caso).

El resultado ha sido inmejorable y estoy mas que contento. Funciona exactamente como debe. Dejo aquí el código que también le interesa a Renxo.

Por último te agradezco enormemente tus aportaciones surbyte, sin tu ayuda no habría llegado a la solución, gracias.

Code: [Select]
#include <Joystick.h>

Joystick_ Joystick;

int sensorPin1 = A2;
int sensorPin2 = A3;
int ledPin = 5;
int Pot1 = 0;
int Pot2 = 0;

void setup() {
pinMode(ledPin, OUTPUT);
  Joystick.begin();}

void loop() {
Pot1 = analogRead(sensorPin1);
Pot2 = analogRead(sensorPin2);
if (Pot1 > Pot2)
{int pot = analogRead(A2);
int mapped = map(pot,0,1023,0,255);
{Joystick.setThrottle(mapped);}}

else
{int pot = analogRead(A3);
int mapped = map(pot,0,1023,0,255);
{Joystick.setThrottle(mapped);}}
}

surbyte

Bueno, a veces uno tiene una idea y luego se da cuenta que no era la pregunta adecuada. Al menos el camino por el que te llevó despertó la curiosidad por un lado y luego tu propio análisis permitió que comprendieras que no habías hecho la consulta adecuada.
Finalmente encontraste lo que querías y aunque no fuera lo que yo te sugerí (cosa que no importa ahora) resolviste tu problema.

Suerte!!.

Go Up