Taula de continguts:

Servo Control sense fils: 6 passos
Servo Control sense fils: 6 passos

Vídeo: Servo Control sense fils: 6 passos

Vídeo: Servo Control sense fils: 6 passos
Vídeo: How to correctly connect a Servo Driver - Servomotor with any plc?||Complete Guide 2024, Juliol
Anonim
Servo Control sense fils
Servo Control sense fils
Servo Control sense fils
Servo Control sense fils

Aquest projecte controla la rotació d’un servo sense fils mitjançant un potenciòmetre (pom). La rotació es limita a 180 graus.

Pas 1: components

Components
Components
Components
Components
Components
Components

Aquest projecte consta de

  • 2 plaques de controlador Arduino UNO amb cable de connexió USB
  • 2 mòduls transceptors RF nRF24L01 - 2,4 GHz (per obtenir ajuda amb aquests mòduls, consulteu
  • 2 taules adaptadores de sòcol (xips de motxilla) per al nRF24L01
  • 1 placa d’expansió prototip 328 ProtoShield compatible amb Arduino opcional
  • 1 servo
  • 1 potenciòmetre analògic
  • soldador i soldador
  • filferro
  • pinces d'agulla
  • embolcall aïllant, he utilitzat cinta elèctrica

Pas 2: placa del servidor

Taula del servidor
Taula del servidor

La placa de servidor està formada per un mòdul transceptor, la placa de protecció (que es connecta directament a la placa Arduino només d’una manera) i el servo. Vaig decidir incloure el tauler d’escut per evitar el maldestre tauler i donar al projecte i un acabat més net.

El codi i el recurs web inclosos a la llista de components detallen les connexions del mòdul transceptor. Vaig decidir soldar les connexions en lloc d'utilitzar connexions temporals com en projectes anteriors. Com que sóc principiant, vaig aïllar cada soldadura amb cinta elèctrica (no eren boniques).

Els pins de la placa protectora corresponen directament als pins Arduino. Abans d’adherir la placa protectora, vaig connectar els pins de terra i de 5 volt als rails de la placa amb filferro i soldadura. També he soldat els cables de 5 volt i de terra dels components als rails de la placa protectora i, finalment, he connectat l'Arduino a la placa protectora.

El servo està connectat al pin de 3 volt per alimentar i al pin digital 2 per a la comunicació.

** Nota: només després de completar aquesta compilació vaig notar que les meves plaques Arduino no són idèntiques. El meu transceptor de servidor funciona amb el carril de 5 volt de la placa protectora, mentre que el transceptor de client funciona amb el pin de 3 volt, tot i que m’han fet creure que una funció del xip adaptador del transceptor és proporcionar el voltatge adequat. Tot el que puc dir amb seguretat és que el codi proporcionat coincideix amb la configuració que es mostra a les imatges produeix l'efecte descrit.

Pas 3: Codificador del servidor: copieu i enganxeu

// CODI DEL SERVIDOR / * NRF24L01 Arduino CE> D8 CSN> D10 SCK> D13 MO> D11 MI> D12 RO> No s'utilitza GND> GND VCC> 5V * / // cablejat transceptor

#incloure

// servoteca

#incloure

// biblioteca transceptor

#define Servopin 2

// servo pin de sortida de declaració

ServoTimer2 serv;

// declaració del nom del servo

RH_NRF24 nrf24;

// declaració del nom del transceptor

int timeOUT = 0;

// variable per a servo

polsos int = 90;

// variable per emmagatzemar polsos

configuració nul·la ()

{serv.attach (Servopin); // coses de servo

Serial.begin (9600); // coses de transceptors

if (! nrf24.init ())

Serial.println ("init fallit"); // coses del monitor sèrie si (! nrf24.setChannel (12)) // estableix el canal a 125 Serial.println ("setChannel ha fallat"); if (! nrf24.setRF (RH_NRF24:: DataRate2Mbps, RH_NRF24:: TransmitPower0dBm)) Serial.println ("setRF ha fallat"); // coses del monitor de sèrie}

bucle buit ()

{if (nrf24.available ()) {uint8_t buf [RH_NRF24_MAX_MESSAGE_LEN]; uint8_t len = sizeof (buf); if (nrf24.recv (buf, & len)) // material del monitor sèrie {Serial.print ("got request:"); pulsacions = strtol ((const char *) buf, NULL, 10); // coses de canvi de tipus de dades

int prin = mapa (pulsacions, 750, 2250, 0, 180); // coses de canvi de tipus de dades

Serial.println (prin); serv.write (pulsacions); // fa que el servo es mogui}}

}

Pas 4: Taula de clients

Taula de clients
Taula de clients

La placa client està formada per un mòdul transceptor i un potenciòmetre. El mòdul transceptor es connecta de la mateixa manera ** que la placa del servidor amb l'excepció que, sense la placa protectora, es connecta directament als pins de la placa Arduino.

El potenciòmetre pren 5v, es connecta a terra i es connecta al pin 2 analògic.

** Nota: com s'esmenta al pas de la placa del servidor, les meves plaques Arduino no són idèntiques. En aquest cas, el transceptor es connecta al pin etiquetat com a 3.3V, directament adjacent al pin de 5V, però, de nou, tot sembla funcionar bé.

Pas 5: Codi de client: copieu i enganxeu

// CODI CLIENT / * NRF24L01 Arduino CE> D8 CSN> D10 SCK> D13 MO> D11 MI> D12 RO> No s'utilitza GND> GND VCC> 5V * / // cablejat transceptor

#incloure

// biblioteca transceptor

int potpin = A2; // delaració del potenciòmetre

int val;

char tempChar [5];

String valString = ""; // coses de canvi de tipus de dades

RH_NRF24 nrf24; // coses de transceptors

configuració nul·la ()

{Serial.begin (9600); if (! nrf24.init ()) Serial.println ("init ha fallat"); // Els valors predeterminats després de l'inici són 2.402 GHz (canal 2), 2 Mbps, 0 dBm si (! Nrf24.setChannel (12)) Serial.println ("setChannel ha fallat"); if (! nrf24.setRF (RH_NRF24:: DataRate2Mbps, RH_NRF24:: TransmitPower0dBm)) Serial.println ("setRF ha fallat"); } // coses de transceptors

bucle buit () {

val = analogRead (potpin); // coses de potenciòmetre

val = mapa (val, 0, 1023, 750, 2250);

valString = val; String str = (valString); str.toCharArray (tempChar, 5); // canvi de tipus de dades nrf24.send (tempChar, sizeof (tempChar));

}

Pas 6: una nota sobre el codi:

El codi conté algunes funcions limitades de resolució de problemes en forma de comentaris del monitor sèrie de la interfície del programari Arduino. En visualitzar el monitor sèrie des del codi SERVER (ctrl + shift + M), hauríeu de poder veure l’estat del potenciòmetre en forma de número entre 1 i 180.

A més, aquí teniu la biblioteca per al sistema sense fils i el servo:

www.airspayce.com/mikem/arduino/RadioHead/

github.com/nabontra/ServoTimer2

Recomanat: