Servo-testador multicanal DIY

Olá

Conforme anunciado no artigo anterior sobre a programação , concluí o trabalho no projeto de um servo testador multicanal e estou pronto para compartilhar todos os materiais com a comunidade. Pode ser feito em casa, mas pedi um lote de placas e agora meu testador fica assim:


Para que serve?


Na eletrônica de hobby, os sistemas com controle de sinal PWM são amplamente utilizados. Este é um trem de pulsos com uma frequência de 50 Hz. As informações neles são codificadas na forma de durações de pulso, que podem variar de 0,8 a 2,3 ms. Os valores extremos desse intervalo podem variar um pouco de fabricante para fabricante.



Os servoconversores para a construção de modelos de aeronaves, hexapods, manipuladores etc. usam exatamente esse sinal. Como regra, eles têm três fios - potência, comum e sinal. Além disso, na modelagem de aeronaves, modelagem de carros e construção de aeronaves, os reguladores do curso de motores coletores e sem escova usam o mesmo sinal de controle que determina a velocidade e a direção de rotação dos motores.

A fonte desse sinal pode ser um painel de controle, um controlador programado ou algo parecido. Mas, muitas vezes, na fase de construção, é conveniente usar um servo-testador, que gera o mesmo sinal no modo manual. Isso permite que você verifique previamente o desempenho da mecânica, meça posições extremas etc.

Características e características do nosso dispositivo


A maioria dos testadores que você pode comprar agora é muito simples ou cara. Eu queria torná-lo o mais barato possível, mas, ao mesmo tempo, oferecer a funcionalidade mais ampla possível. Aqui está o que eu tenho:
  1. Seis canais de controle independentes. É independente! Geralmente, no modo pronto, você pode conectar vários motores ao mesmo tempo, mas o sinal para eles é o mesmo. No meu dispositivo, você pode executar um no modo automático e gerenciar o restante manualmente, etc.
  2. Condicionamento e indicação de sinais em microssegundos. Na maioria dos testadores, a indicação é exibida, não está claro o que ou está completamente ausente
  3. O passo mínimo para alterar a duração é de 1 µs. Ou seja, o intervalo de 0,8-2,3ms é dividido em 1500 etapas
  4. Capacidade de se conectar a um PC. Você pode usá-lo, por exemplo, emparelhado com um Raspberry Pi. O sinal em si será formado nesse caso com muito mais precisão do que por meio do próprio computador de placa única
  5. Abertura. No final do artigo, você encontra todos os arquivos necessários para a fabricação independente do testador

E aqui estão suas características:
  1. Tensão de alimentação - 5V
  2. ( ), — 100
  3. — 0,8-2,3
  4. — 1
  5. — 50
  6. — 9600, 8 bits, 1 stop bit


Enquanto trabalhava no esquema, tentei torná-lo o mais barato possível e facilitar a repetição. O controlador popular Atmega8A-AU foi usado como o controlador de controle.

Um display de sete segmentos e três dígitos é conectado através de um registro de deslocamento e transistores lógicos. Seis LEDs são usados ​​para exibir o modo atual e são conectados pelo método do chamado charleplexing para salvar as conclusões do MK.
Para controle, um codificador incremental convencional e dois botões são usados. O codificador controla o ângulo definido e os botões alternam o modo de controle e o canal atual. Em todos os lugares existem capacitores de contato ressalto, para que tudo isso funcione com muita clareza.

Os soquetes do testador são projetados para conectar os próprios servos, programar, conectar a um PC e energia. Decidi não instalar um regulador de energia no quadro. Ou seja, para seu uso, não funcionará para usar a voltagem da bateria diretamente. É necessário encontrar uma fonte ou estabilizador de 5V com uma corrente correspondente à corrente consumida pelos motores conectados.
Ao verificar a conexão de um motor sem escova com um controlador de velocidade (ESC), o próprio motor é alimentado por uma bateria. Se o ESC tiver um controlador de velocidade embutido, você poderá ligar o testador diretamente a partir dele.



A placa de circuito é preparada no formato de Sprint Layout. Este é um quadro de dupla face, mas eu o desenhei para poder ficar em casa com o LUT ou com um fotorresistente, e jumpers de um lado ao outro podem ser facilmente soldados nas vias.

A parte frontal do quadro:



... e o inverso:



eu criei este quadro manualmente e tudo foi verificado para mim:



também conduzi uma pequena campanha entre os assinantes do Commodities da China para o fã de rádio e nosso espaço de hackers local MakeItLab e encontrei pessoas que apoiavam o lançamento de um pequeno lote de dispositivos. Aproveito esta oportunidade para expressar minha gratidão a eles. Aqui está o dispositivo fabricado na fábrica:




Lista de componentes


Aqui está a lista completa com links:
  1. Atmega8A-AU TQFP44
  2. BC56-12GWA. , , aliexpress
  3. SN74HC595DR SOIC16
  4. BCR108E6327 SOT23 — 3
  5. KP-2012SGC, 0805 — 6
  6. EC12E24204A9
  7. T491C226K016AT (22-16, C)
  8. 0,1 0805 — 7
  9. 1 0805
  10. 1 0603×4
  11. 300 0603×4 — 3
  12. DTSM20-4.3N — 2
  13. 5,08
  14. Pente de contato PLS-40 (são necessários 26 pinos)
  15. Jumper

Habitação


Também desenhei e imprimi em uma impressora 3D um pequeno mandril e uma alça do codificador. Arquivos para baixar um pouco mais tarde.




Firmware


Os arquivos de firmware estarão no final do artigo. Você pode piscar o controlador usando qualquer programador ISP através de um conector padrão de 6 pinos. Na placa, seis dos oito pinos à esquerda do codificador foram projetados principalmente para isso.
Os bits do fusível devem ser configurados conforme mostrado na figura:



Testador de trabalho


É mais fácil, é claro, ver uma vez:



Para iniciar o testador no modo de controle manual, é necessário que o jumper “PC / Manual” seja instalado quando a energia for ligada.

Ao iniciar no modo manual, a mensagem "HI" será exibida no visor e o testador entrará no modo de espera quando o usuário selecionar a duração inicial do sinal. Grosso modo, a partir da borda ou do meio da faixa. Quando você pressiona o botão esquerdo, o controle ocorre a partir de zero, quando você pressiona o botão direito, a partir do meio. Depois de clicar em um dos botões, a geração do sinal será iniciada, o primeiro canal ficará ativo e passará para o modo "1".

No modo de operação, o botão MODE alterna os modos de controle, alterando o incremento. O modo atual é exibido usando seis LEDs. Existem quatro modos manuais (etapa 0.1; 1; 10 e de 0 a 150, ou seja, entre as bordas das faixas) e dois automáticos (iniciar / parar). Uma pressão longa no botão MODE coloca o canal no modo de controle automático e o motor começa a girar suavemente de um lado para o outro. Um toque breve no botão MODE interrompe ou retoma automaticamente o movimento. Uma pressão longa no botão MODE retorna o canal ao modo de controle do codificador.

O botão CHANNEL alterna entre os canais ativos. O canal ativo atual é exibido no visor em código binário usando pontos de bits. Uma pressão prolongada nesse botão coloca o testador no modo de gerar os mesmos pulsos em todos os canais.

Observe que os números de 0 a 150 são exibidos no indicador, o que corresponde aproximadamente ao ângulo do servoconversor e pode ser convertido para a duração do pulso. Para recalcular, basta multiplicar as leituras por dez e adicionar 800. Por exemplo, se houver dez no indicador, a duração do pulso é de 900 μs.

Conexão com o computador


Se você estiver usando um Raspberry Pi, basta conectar Rx, Tx e GND na parte inferior esquerda da placa. Se você não tiver uma porta COM compatível com TTL no seu computador, poderá usar um adaptador USB-COM, que é muito barato. Você também pode tirar a tensão da porta USB de 5V, mas lembre-se de que sua corrente máxima é de 500mA! A velocidade da conexão é 9600.
Para que o testador inicialize no modo de controle a partir de um PC, é necessário ativá-lo sem um jumper. Nesse caso, as letras “PC” serão exibidas no indicador e o testador entrará no modo de espera para obter comandos do PC. Até o primeiro pacote completo chegar, não haverá sinal em todos os canais.

As durações de pulso devem ser enviadas em microssegundos de 0 a 1500. Ou seja, dois bytes são consumidos por canal.

O pacote de dados deve consistir em 16 bytes: primeiro dois bytes 0xFF para indicar o início do pacote, depois 12 bytes de duração de pulso para cada canal e no final dois bytes da soma de verificação. A soma de verificação é necessária para verificar a exatidão da embalagem e deve ser igual à soma de todas as durações.

1 byte - 255 (0xFF)
2 byte - 255 (0xFF)
3 byte - byte alto do primeiro canal
4 byte - byte baixo do primeiro canal
5 byte - byte alto do segundo canal
6 byte - byte baixo do segundo canal
7 byte - byte alto do terceiro canal
8 byte - byte baixo do terceiro canal
9 byte - byte alto do quarto canal
10 byte - byte baixo do quarto canal
11 byte - byte alto do quinto canal
12 byte - byte baixo do quinto canal
13th byte - byte alto do sexto canal
14 byte - byte baixo do sexto canal
15 byte - byte alto da soma de verificação
16 byte - byte baixo da soma de verificação

Exemplos de pacotes válidos (em decimal):
255 255 0 0 0 0 0 0 0 0 0 0 0 0 0 0 (todos os motores para a posição inicial)
255 255 2 238 0 0 0 0 0 0 0 0 0 0 0 0 240 (primeiro motor para a posição do meio)
255 255 2 238 2 238 2 238 2 238 2 238 2 238 17 148 (todos os motores na posição intermediária)

Arquivos para download


Placa de circuito impresso Modelo de
firmware
para imprimir o estojo
E, com licença, um link para o artigo principal do meu site .

Source: https://habr.com/ru/post/pt395963/


All Articles