Taula de continguts:

Servo controlador basat en Arduino: 6 passos
Servo controlador basat en Arduino: 6 passos

Vídeo: Servo controlador basat en Arduino: 6 passos

Vídeo: Servo controlador basat en Arduino: 6 passos
Vídeo: Control Position and Speed of Stepper motor with L298N module using Arduino 2024, Desembre
Anonim
Servo controlador basat en Arduino
Servo controlador basat en Arduino
Servo controlador basat en Arduino
Servo controlador basat en Arduino

Es tracta d’un controlador sèrie simple per a diversos servos basat en l’Arduino. (el meu primer instructable també:))

La major part del treball en això prové d’aconseguir que el programari parli amb l’arduino i de fer un protocol per transmetre les dades. Pel que fa a l’aspecte del maquinari, només he utilitzat dos servos (el servidor estàndard Parallax.) Un Sparkfun Arduino ProtoShield i un Arduino Duemilanove amb ATMEGA328, però la majoria d’aquestes parts es poden substituir per articles similars. Vaig pensar aquest projecte com a part d’un sistema de RC, però configurar la comunicació va trigar molt de temps. Si algú té alguna millora, idees o errors, no dubteu a fer comentaris. EDITAR: Vaig escriure això fa estona, vaig començar a publicar-lo recentment.

Pas 1: coses que potser necessiteu …

Coses que potser necessiteu …
Coses que potser necessiteu …
Coses que potser necessiteu …
Coses que potser necessiteu …

Algunes coses que necessitareu per construir això. 1. Taula Arduino (trieu) 2. dos (o un) servos 3. cables de pont 4. Visual Studio 2008 Express - enllaç (opcional) 5. ID Arduino - enllaç Ho sento, fan de Linux i Apple, el meu programa només funciona Windows per ara, però encara podeu enviar comandes serials manualment a l’arduino sense canviar el codi.

Pas 2: connecteu el maquinari

Connecteu el maquinari
Connecteu el maquinari

Res de molt complex a aquest pas: connecteu només un servo al pin 9 i l’altre al pin 10.

Pas 3: programa l'Arduino

Programa l'Arduino
Programa l'Arduino

ara podeu penjar l'esbós a l'arduino.

Aquí teniu un simple desglossament del codi: #include Servo myservo; // crear un objecte servo per controlar un servo Servo myservo1; int incomingByte = 0, datacount = 0, comptador = 0, llest = 0; // per a dades de sèrie de dades de caràcters entrants [10]; const char verify [8] = "ma11hew"; ordre char [3]; void setup () {myservo.attach (9); myservo1.attach (10); Serial.begin (38400); // obre el port sèrie, estableix la velocitat de dades Serial.println ("Hola Arduino aquí!"); // afegit per ajudar a identificar el port sèrie Això només configura el port sèrie i els servos. int i; per a (i = 0; i <180; i ++) {myservo.write (i); retard (15); } myservo.write (5); per a (i = 0; i <180; i ++) {myservo1.write (i); retard (15); } myservo1.write (5); } Moviment d'escombrat simple per verificar que els servos funcionin correctament. bucle buit () {llest = 0; comptador = 0; while (1 == 1) {if (Serial.read ()! = verifica [comptador]) {break; } if (comptador == 6) {demora (20); ordre [0] = Serial.read (); ordre [1] = Serial.read (); // if (Serial.read () == ((ordre [1] * 12)% 8)) // {llest = 1; //} Serial.println ("ordre desada"); } comptador ++; retard (2); } això comprova la memòria intermèdia de sèrie per a la cadena d'autorització correcta i després agafa dos bytes per a l'ordre. la declaració comentada si permet una suma de comprovació improvisada però dificultaria la interfície manual. ready es pot establir a 0, de manera que no s'analitzaran les ordres, com ara en el cas de dades danyades. // cerca ordres if (llest == 1) {if (ordre [0] == 'T') {ordre [0] = 0; Serial.print ("control de l'accelerador al pin 9 a:"); Serial.println (mapa (ordre [1], 32, 126, 2, 180), DEC); myservo.write (mapa (ordre [1], 32, 126, 2, 180)); } if (ordre [0] == 'S') {ordre [0] = 0; Serial.print ("control de l'accelerador al pin 10 a:"); Serial.println (mapa (ordre [1], 32, 126, 2, 180), DEC); myservo1.write (mapa (ordre [1], 32, 126, 2, 180)); }}} la resta del codi és cercar a l'ordre comandes vàlides (T o S.) si coincideix, pren el següent byte i l'envia al servo. més al mapa (ordre [1], 32, 126, 2, 180) més endavant … el codi aquí es pot ampliar per a qualsevol altra cosa que pugueu necessitar (per exemple, llums, motors, IR, etc.) aquest codi hauria de funcionar bé sense modificacions.

Pas 4: Instal·leu el programari

Instal·leu programari
Instal·leu programari

Tinc dues maneres d'instal·lar aquest … nsis installer: descarregueu l'instal·lador d'autoextracció que es mostra a continuació i executeu-lo. Tindreu l'opció d'instal·lar fonts durant la instal·lació. el paquet binari de l’instal·lador instal·la dlls c ++ bàsics perquè es pugui executar en un ordinador sense que tingui instal·lat c ++ visual. Un cop finalitzat l'instal·lador, podeu executar-lo des de l'escriptori o el menú d'inici. zip zip (sense verificar): baixeu-lo i executeu-lo, hauria de funcionar. pot ser. (L'arxiu zip té la mateixa estructura de carpetes creada per l'instal·lador, sense fonts. No tinc cap màquina sense visual studio per provar-lo, de manera que potser no funcioni.)

Pas 5: utilitzeu el programa d'interfície

Utilitzeu el programa d'interfície
Utilitzeu el programa d'interfície
Utilitzeu el programa d'interfície
Utilitzeu el programa d'interfície

Per utilitzar el programa, primer seleccioneu la velocitat en bauds definida a l'esbós d'arduino. L'esbós sense modificar té un valor predeterminat a 38400 bauds, però es pot canviar per adaptar-lo a les vostres necessitats per a coses com ara un enllaç de ràdio més lent. nota: els índexs de transmissió superiors a 38400 no han estat molt estables, crec que això es deu al fet que el uart s'omple abans de processar les dades. A continuació, seleccioneu el port COM que voleu utilitzar. el programa per defecte és COM4. Assegureu-vos de canviar-lo o el programa fallarà. Finalment, feu clic a obre. Si tot va bé, el programa obrirà el port sèrie seleccionat a la velocitat de transmissió seleccionada. Si no, el programa probablement es bloquejarà amb una excepció no gestionada. assegureu-vos que el port és correcte i torneu-ho a provar. Utilitzeu els quadres de text per enviar ordres directes a l’arduino. El "mapa (ordre [1], 32, 126, 2, 180)" escala totes les 94 ordres possibles, * espai * a ~, llegibles per l'arduino en ASCII de 2 a 180 per al servo. qualsevol byte inferior a ASCII 32 (espai) o superior a 126 (~) per defecte és 63 (?) Les barres de pista proporcionen una interfície més àmplia per a ordres directes. cada pas envia una ordre de sèrie de manera incremental a l'arduino.

Pas 6: sigueu creatius

Sigues creatiu
Sigues creatiu
Sigues creatiu
Sigues creatiu

Penseu en coses interessants per fer amb això. Algunes idees: 1. Acelerador remot per a un cotxe. 2. Muntatge de càmera 3D 3. rover submarí Diverteix-te !!

Recomanat: