Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Manufacturing Technology >> Proceso de manufactura

Lectura de la señal PPM del receptor RC usando Arduino

Componentes y suministros

Arduino UNO
× 1

Aplicaciones y servicios en línea

Arduino IDE

Acerca de este proyecto

El transmisor RC es muy adecuado para los proyectos que requieren un enlace inalámbrico ya que tiene enlaces encriptados con un buen alcance.

Todos los receptores RC están hechos para impulsar servomotores. por lo que hay 3 pines para cada canal:tierra, Vcc y señal. aquí se utiliza un tipo especial de señal. Envía pulsos en algún intervalo. Cuando el servo recibe un pulso de 1.5ms, se establece en 90 grados y al variar este valor de 1-2ms, el servo pasa al valor mínimo y máximo. (En la foto de arriba se muestra un receptor de 6 canales con pin PPM)

Un método tan fácil es medir el ancho de pulso en cada pin y mapear esos datos según los requisitos. pero aquí el problema es que:

  • Para cada canal del receptor, necesitamos conectar un cable al pin Arduino. Esto no solo requiere mucha conexión, sino que también consume muchos pines en un Arduino.
  • La mayoría de Arduino solo tiene 2 pines de interrupción, por lo que si usamos más de 2 canales, léalo para agregar un retraso a nuestro código, lo que puede ser problemático para alguna aplicación.

Para resolver este problema, muchos receptores vienen con un pin adicional llamado PPM. este pin PPM transmite datos de todos los canales en una sola señal.

¿Cómo se compone la señal de pines de PPM?

Esta señal consta de paquetes de datos separados por espacios en blanco. Aquí, el espacio entre picos representa el valor del canal. en este caso, he usado un receptor de 6 canales, por lo que hay 7 pulsos.

Entonces, en nuestro código primero, necesitamos detectar el espacio de separación y luego comenzar a registrar datos de los pulsos para cada canal.

Como se puede ver en la segunda imagen,

todos los datos se separan con aproximadamente 11500 microsegundos de tiempo. de 6 valores son para cada canal.

Usando el código:

Aquí read_me () especificado como función:

  a =micros (); c =a-b; b =a; x [i] =c; i =i + 1; if (i ==15) {for (int j =0; j <15; j ++) {ch1 [j] =x [j];} i =0; }}  

esta parte se ejecuta en el pin de interrupción y toma 15 valores de tiempo y los almacena en una matriz.

otra función read_rc ()

esta parte busca cualquier espacio que sea superior a 10000 microsegundos, en nuestro caso detecta el espacio de separación, y cuando detecta que el código de espacio se mueve a la siguiente sección.

después de este espacio, los siguientes 6 valores son para cada posición de canal que se almacena en una matriz llamada ch [canal no], aquí ch [1], ch [2], ch [3], ch [4], ch [5 ], ch [6] representa el valor de cada canal.

Código

  • Código para lectura del canal del receptor RC
Código para lectura de canal del receptor RC Arduino
 unsigned long int a, b, c; int x [15], ch1 [15], ch [7], i; // especificar matrices y variables para almacenar valores void setup () {Serial.begin (9600); pinMode (2, INPUT_PULLUP); attachInterrupt (digitalPinToInterrupt (2), read_me, FALLING); // habilitando la interrupción en el pin 2} void loop () {read_rc (); Serial.print (ch [1]); Serial.print ("\ t"); Serial.print (ch [2]); Serial.print ("\ t"); Serial.print (ch [3]); Serial.print ("\ t"); Serial.print (ch [4]); Serial.print ("\ t"); Serial.print (ch [5]); Serial.print ("\ t"); Serial.print (ch [6]); Serial.print ("\ n"); delay (100);} void read_me () {// este código lee el valor del receptor RC del pin PPM (pin 2 o 3) // este código da valores de canal de 0-1000 valores // -:ABHILASH:- // a =micros (); // almacena el valor de tiempo a cuando el valor del pin cae c =a-b; // calculando el tiempo entre dos picos b =a; // x [i] =c; // almacenando 15 valores en arrayi =i + 1; if (i ==15) {for (int j =0; j <15; j ++) {ch1 [j] =x [j];} i =0;}} // copiar almacenar todos los valores de la matriz temporal otra matriz después de 15 leer void read_rc () {int i, j, k =0; for (k =14; k> -1; k -) {if (ch1 [k]> 10000) {j =k;}} // detectando el espacio de separación 10000us en ese otro arreglo para (i =1; i <=6; i ++) {ch [i] =(ch1 [i + j] -1000);}} // asigna 6 valores de canal después del espacio de separación 

Proceso de manufactura

  1. Controle la temperatura de su hogar usando su Raspberry Pi
  2. Decodificador DTMF usando solo Arduino
  3. Hacer Monitor Ambilight usando Arduino
  4. Máquina de LEVITACIÓN ULTRASÓNICA usando ARDUINO
  5. Programación de la serie Atmel AT89 a través de Arduino
  6. Voltímetro de bricolaje con Arduino y un teléfono inteligente
  7. Monitor de frecuencia cardíaca con IoT
  8. WebServerBlink usando Arduino Uno WiFi
  9. Contador de autos usando Arduino + Procesamiento + PHP
  10. Indicador de latidos cardíacos con ECG
  11. Juego automatizado de Dino usando arduino