Índice:

Servo controlador serial baseado em Arduino: 6 etapas
Servo controlador serial baseado em Arduino: 6 etapas

Vídeo: Servo controlador serial baseado em Arduino: 6 etapas

Vídeo: Servo controlador serial baseado em Arduino: 6 etapas
Vídeo: TUDO SOBRE Servo motor Arduino 2024, Julho
Anonim
Servo-controlador serial baseado em Arduino
Servo-controlador serial baseado em Arduino
Servo-controlador serial baseado em Arduino
Servo-controlador serial baseado em Arduino

Este é um controlador serial simples para vários servos baseado no Arduino. (meu primeiro instrutível também:))

A maior parte do trabalho foi fazer com que o software falasse com o arduino e criar um protocolo para que os dados fossem transmitidos. Quanto ao aspecto de hardware, tudo o que usei foram dois servos (servo padrão Parallax aqui.) Um Sparkfun Arduino ProtoShield e um Arduino Duemilanove com ATMEGA328, mas a maioria dessas peças podem ser substituídas por itens semelhantes. Pensei neste projeto como parte de um sistema RC, mas configurar a comunicação demorou muito. Se alguém tiver alguma melhoria, ideia ou bug, sinta-se à vontade para comentar. EDIT: Eu escrevi isso há algum tempo, acabei de publicá-lo recentemente.

Etapa 1: coisas de que você pode precisar …

Coisas que você pode precisar …
Coisas que você pode precisar …
Coisas que você pode precisar …
Coisas que você pode precisar …

Algumas coisas você precisará para construir isso. 1. Placa Arduino (você escolhe) 2. dois (ou um) servos 3. fios de jumper 4. Visual Studio 2008 Express - link (opcional) 5. Arduino IDE - link Desculpe, fãs de Linux e Apple, meu programa só funciona em windows por enquanto, mas você ainda pode enviar manualmente comandos seriais para o arduino sem alterar o código.

Etapa 2: conectar o hardware

Conecte o hardware
Conecte o hardware

Nada muito complexo para esta etapa. Basta conectar um servo ao pino 9 e o outro ao pino 10.

Etapa 3: programar o Arduino

Programe o Arduino
Programe o Arduino

agora você pode fazer o upload do esboço para o arduino.

Aqui está uma divisão simples do código: #include Servo myservo; // cria um objeto servo para controlar um servo Servo myservo1; int EntryByte = 0, datacount = 0, counter = 0, ready = 0; // para dados seriais de entrada char data [10]; const char verify [8] = "ma11hew"; comando char [3]; void setup () {myservo.attach (9); myservo1.attach (10); Serial.begin (38400); // abre a porta serial, define a taxa de dados Serial.println ("Hi Arduino Here!"); // adicionado para ajudar a identificar a porta serial Isso apenas configura a porta serial e os servos. int i; para (i = 0; i <180; i ++) {myservo.write (i); atraso (15); } myservo.write (5); para (i = 0; i <180; i ++) {myservo1.write (i); atraso (15); } myservo1.write (5); } Movimento de varredura simples para verificar se os servos funcionam corretamente. loop vazio () {pronto = 0; contador = 0; while (1 == 1) {if (Serial.read ()! = verificar [contador]) {quebrar; } se (contador == 6) {atraso (20); comando [0] = Serial.read (); comando [1] = Serial.read (); // if (Serial.read () == ((command [1] * 12)% 8)) // {ready = 1; //} Serial.println ("comando salvo"); } contador ++; atraso (2); } isso verifica o buffer serial para a string de autorização correta e pega dois bytes para o comando. a instrução if comentada permite uma soma de verificação improvisada, mas dificultaria a interface manual. pronto pode ser definido como 0 para que os comandos não sejam analisados, como no caso de dados corrompidos. // pesquisa por meio de comandos if (ready == 1) {if (command [0] == 'T') {command [0] = 0; Serial.print ("controle do acelerador no pino 9 para:"); Serial.println (map (comando [1], 32, 126, 2, 180), DEC); myservo.write (map (command [1], 32, 126, 2, 180)); } if (comando [0] == 'S') {comando [0] = 0; Serial.print ("controle do acelerador no pino 10 para:"); Serial.println (map (comando [1], 32, 126, 2, 180), DEC); myservo1.write (map (comando [1], 32, 126, 2, 180)); }}} o resto do código é para pesquisar o comando por comandos válidos (T ou S.) se qualquer um deles corresponder, ele pega o próximo byte e o envia para o servo. mais no mapa (comando [1], 32, 126, 2, 180) mais tarde … o código aqui é expansível para tudo o que você precisar (por exemplo, luzes, motores, IR, etc.) este código deve funcionar bem sem modificações.

Etapa 4: Instale o software

Instalar software
Instalar software

Tenho duas maneiras de instalar este… instalador nsis: Baixe o instalador de extração automática abaixo e execute-o. Você terá a opção de instalar os fontes durante a instalação. o pacote binário do instalador instala dlls c ++ centrais para que possa ser executado em um computador sem o visual c ++ já instalado. Assim que o instalador terminar, você pode executá-lo a partir da área de trabalho ou do menu iniciar. maneira zip (não verificado): Baixe e execute, ele deve funcionar. pode ser. (O arquivo zip tem a mesma estrutura de pastas criada pelo instalador, sem fontes. Não tenho uma máquina sem visual studio para testá-la, então pode não funcionar.)

Etapa 5: usar o programa de interface

Use o programa de interface
Use o programa de interface
Use o programa de interface
Use o programa de interface

Para usar o programa, primeiro selecione a taxa de transmissão definida no esboço do Arduino. O esboço não modificado é padronizado para 38400 baud, mas pode ser alterado para se adequar às suas necessidades, como um link de rádio mais lento. nota: as taxas de baud superiores a 38400 não têm estado muito estáveis, acho que isso ocorre porque o uart se enche antes que os dados possam ser processados. Em seguida, selecione a porta COM a ser usada. o programa padrão é COM4, certifique-se de alterá-lo ou o programa irá travar. Finalmente, clique em abrir. Se tudo correr bem, o programa abrirá a porta serial selecionada na taxa de transmissão selecionada. Caso contrário, o programa provavelmente irá travar com uma exceção não tratada. certifique-se de que a porta está correta e tente novamente. Use as caixas de texto para enviar comandos diretos ao arduino. O "map (command [1], 32, 126, 2, 180)" dimensiona todos os 94 comandos possíveis, * espaço * a ~, legíveis pelo arduino em ASCII de 2 a 180 para o servo. qualquer byte menor que ASCII 32 (espaço) ou acima de 126 (~) padroniza para 63 (?) As barras de trilha fornecem uma interface de eaiser para comandos diretos. cada etapa envia um comando serial para o arduino de forma incremental.

Etapa 6: seja criativo

Seja criativo!
Seja criativo!
Seja criativo!
Seja criativo!

Pense em coisas legais para fazer com isso. Algumas idéias: 1. Acelerador remoto para um carro. 2. Montagem de câmera 3D 3. Rover subaquático Divirta-se !!

Recomendado: