Arduino: Controlando el control remoto de un auto RC

3

Tengo un Rueda Reflex de Carson para el control remoto de mi auto RC. Tiene dos potenciómetros, uno para acelerar y otro para dirigir.

Mi objetivo es controlar el RC Car desde mi PC mediante el envío de comandos a través de la conexión en serie al arduino.

Me gustaría desconectar los potenciómetros y colocar los pines (en el cuadro blanco - > ver imagen) en dos pines Arduino para que Arduino pueda controlar el control remoto. Esto excluiría los potenciómetros del circuito y haría que los arduinos los reemplazaran.

El control remoto funciona a 12V.

Los dos potenciómetros están conectados con los cables amarillo rojo negro.

¿Qué circuito debo usar entre los pines (en el cuadro blanco - > ver imagen) del control remoto y el Arduino?

ACTUALIZACIÓN: Hace poco recibí un multímetro. El voltaje entre los pines amarillo y negro es 5V (constante). Entre las otras clavijas no hay voltaje a menos que el potenciómetro esté conectado. En este caso, el voltaje entre negro y rojo varía de -4.9 (izquierda), -2.9 (centro) a -0.4 (derecha). Entre rojo y amarillo es 0 (izquierda), -2 (centro) y -4.4 (derecha). (dependiendo de la posición del volante)

    
pregunta Toast

4 respuestas

5

Si desea controlar el automóvil desde la PC a través del Arduino, deberá configurar el puerto serie para recibir los comandos y emitir una señal PWM para emular los potencímetros.

No soy realmente un hombre Arduino, pero tu código debería verse un poco así. Recibe los comandos + y - de la PC y aumenta o disminuye la posición del potenciómetro virtual. Tenga en cuenta que esto es sólo un marco; no hay pruebas para la posición mínima o máxima, por ejemplo.

const int analogOutPin = 9; // Analog output pin that the LED is attached to

int outputValue = 0;        // value output to the PWM (analog out)

void setup() {
  // initialize serial communications at 9600 bps:
  Serial.begin(9600);
}

void loop() {
  if ( Serial.available()) {
    char ch = Serial.read();

    switch(ch) {
      case '+':
        outputValue+;
        break;
      case '-':
        outputValue-;
        break;
    }
  }

  // change the analog out value:
  analogWrite(analogOutPin, outputValue);   
}

Filtra la señal de salida con un filtro RC. Esto le dará un voltaje entre 0 V y 5 V. Mida el rango de voltaje de los potencímetros e informe al respecto. Es posible que tengas que amplificar la señal.

editar después de la información actualizada en la pregunta
¡Bonito! Así que los potenciómetros te dan un rango de salida de 0 V a 5 V, que es exactamente lo que hará la salida de Arduino también. Así que puedes usar la función analogWrite como en el código de ejemplo anterior. Tenga en cuenta que los chicos de Arduino lo llaman "analógico", pero el AVR no tiene una salida analógica, por lo que es probable que solo sea PWM. El Arduino no tiene un filtro RC para convertirlo en CC, por lo que tendrás que agregar tú mismo la resistencia y el condensador.

Unvalorde100kΩparalaresistenciay1µFparaelcondensadorprobablementeesténbien.

editardespuésdetusmedicionesycomentarios

LasflechasenelesquemadelfiltroRCindicanunvoltaje.Lapuntadeflechaapuntaalaseñalcuyovalordeseamedir,elextremoposteriordelaflechaalareferenciaconlaqueestámidiendo,quegeneralmenteestierra.Entonces,siconectaraelpindetierradelasondadeunalcancealaconexióninferior,ylapuntadelasondaa\$V_{IN}\$veríalasalidaPWMdeArduino.Indagueen\$V_{OUT}\$yelPWMsepromediaráaunvoltajedeCCconalgunafluctuación.Esoesloquequeremossiqueremosemularlospotenciómetros.

Sientiendocorrectamente,loscablesnegroyamarillotienenlosvaloresdelospotenciómetrosyestánreferenciadosalcablerojo,queesde+5V.(Estoesconfuso;generalmenteseaceptaqueelnegroestáconectadoatierra).PuedebuscarterrenoenlaPCB,perotambiénpodemosusarlareferenciade+5V,solotendremosquevoltearelfiltrobocaabajo:

La línea superior es tu cable rojo. \ $ V_ {IN} \ $ es la salida del Arduino, tiene dos de esos. \ $ V_ {OUT} \ $ para uno de esos va al cable negro, la otra salida al amarillo.

    
respondido por el stevenvh
4

edit
Esta respuesta se basa en la frase de la pregunta "desconecte los potenciómetros y colóquelos en dos pines Arduino". Aparentemente, OP lo quiere al revés. Lea mi otra respuesta para eso.
(fin de edición)

Si desea controlar el automóvil desde su PC, entonces el circuito de Arduino es simple. Conecte los dos potenciómetros a dos de las entradas analógicas de Arduino, donde conecta los extremos de los potenciómetros a tierra y +5 V resp.

A continuación, use la conexión USB como un puerto COM virtual para enviar las lecturas del ADC a la PC.

void setup()
{
  Serial.begin(9600);                  // set up Serial library at 9600 bps
}

void loop()
{  
  Serial.println("Data:");             // sync 
  Serial.println(analogRead(0), DEC);  // read ADC channel 0 and send to PC as decimal
  Serial.println(analogRead(1), DEC);  // same for channel 1
  delay(100);                          // wait 100 ms before sending next readings
}
    
respondido por el stevenvh
2

Usted está leyendo los valores analógicos que los potenciómetros le dan, por lo que desea que su Arduino los lea y luego puede escribir el código para hacer lo que quiera con los datos. Asegúrese de que está conectando los pines analógicos de Arduino directamente a las ollas, y no a algún otro punto en la placa de circuito de su controlador (si desea obtener los resultados en bruto, que creo que es lo que está buscando).

El código de Steven es correcto.

    
respondido por el capcom
2

La mayoría de los conjuntos RC proporcionales, excepto los conjuntos PCM (que en HF / VHF solían ser más caros, son comunes en 2.4 GHz, pero no es una antena de 2.4 GHz) utilizan una cadena de pulsos modulados por ancho de pulso para indicar el Posiciones del canal.

Si puede encontrar esta señal, tal vez entre el codificador IC y el circuito transmisor real, inyectar una salida PWM desde el Arduino sería ideal.

    
respondido por el Chris Stratton

Lea otras preguntas en las etiquetas