Guia de conexão do chapéu do servo Pi
Introdução
O chapéu SparkFun Pi Servo permite que seu Raspberry Pi controle até 16 servo motores via conexão I2C. Isso salva o GPIO e permite que você use o GPIO integrado para outros fins. Além disso, o Pi Servo Shield adiciona uma conexão de terminal serial que permitirá que você abra um Raspberry Pi sem ter que conectá-lo a um monitor e teclado.
Materiais necessários
Aqui está o que você precisa para acompanhar este tutorial. Sugerimos comprar um cartão microSD em branco em vez de um cartão compatível com NOOBS, uma vez que os cartões compatíveis com NOOBS podem não ter um sistema operacional novo o suficiente para suportar o Pi Zero W.
- Cabeçalhos de quebra - direto
- Fonte de alimentação do adaptador de parede - 5,1 V CC 2,5 A (USB Micro-B)
- Cartão microSD com adaptador - 16 GB (classe 10)
- Raspberry Pi GPIO Cabeçalho alto - 2 × 20
- Raspberry Pi Zero W
- SparkFun Pi Servo HAT
Além disso, você vai querer algum tipo de servo motor para testar a configuração. Tente testar os exemplos fornecidos posteriormente no tutorial com o sub-micro servo genérico primeiro.
- Servo - Genérico (tamanho sub-micro)
Ferramentas necessárias
Nenhuma ferramenta especial é necessária para acompanhar a montagem deste produto. Você precisará de um ferro de solda, solda e acessórios de solda em geral.
- Solda sem chumbo - tubo de 15 gramas
- Ferro de soldar - 30W (EUA, 110V)
Visão geral do hardware
Existem apenas alguns itens de interesse no quadro, pois é um chapéu projetado para ser minimamente difícil de usar.
Conector USB Micro B - Este conector pode ser usado para alimentar os servo motores apenas, ou para alimentar os servo motores, bem como o Pi que está conectado ao chapéu. Ele também pode ser usado para se conectar ao Pi por meio de uma conexão de porta serial para evitar o uso de um monitor e teclado para configurar o Pi.
Jumper de isolamento da fonte de alimentação - Este jumper pode ser limpo (é fechado por padrão) para isolar o barramento de alimentação do servo do barramento de alimentação Pi 5V. Por que você gostaria de fazer isso? Se houver vários servos, ou servos grandes com uma carga pesada sobre eles, o ruído criado no trilho de alimentação pelos servo motores pode causar operação indesejada no Pi, até um reset completo ou desligamento. Observe que, enquanto o Pi estiver ligado, a interface serial ainda funcionará independentemente do estado deste jumper.
Cabeçalhos de pino do servo motor - Esses cabeçalhos são espaçados para facilitar a fixação de servo motores a eles. Eles são fixados na ordem correta para a maioria dos conectores de servo motores do tipo hobby.
Montagem de Hardware
Sugerimos soldar os cabeçalhos machos no Pi Zero W.
Meu truque favorito para este tipo de situação é soldar um pino, derreter a solda naquele pino com o ferro seguro em minha mão direita e usar minha mão esquerda para ajustar o coletor até que fique plano como mostrado abaixo. Certifique-se de que você está soldando com o lado mais curto do cabeçalho e os pinos mais longos no lado do componente. Depois de pregar um pino, termine de soldar todos os pinos no Pi Zero W.
Repita as etapas com o cabeçalho feminino e o chapéu Pi Servo.
Certifique-se de inserir os pinos curtos da parte inferior da placa e adicionar solda ao lado do componente de modo que o chapéu do servo Pi empilhe na parte superior dos pinos de cabeçalho macho do Pi Zero W. Você também precisará se certificar de que a plataforma está nivelada antes de soldar todos os pinos.
Uma vez que os cabeçalhos tenham sido soldados, empilhe o Pi Servo Hat no Pi Zero W. Em seguida, conecte um servo hobby a um canal “0” baseado no servo que você está usando. Tente olhar a ficha técnica do servo hobby ou consultar algumas das pinagens do conector servo padrão listadas neste tutorial. Usando um adaptador de parede 5V suficiente, podemos alimentar o Pi Zero W. Conecte o adaptador de parede a uma tomada de parede para alimentação e conecte o conector micro-B rotulado como a porta “PWR IN” no Pi Zero W.
Software - Python
Veremos com alguns detalhes aqui como acessar e usar o chapéu do servo pi em Python.
O código de exemplo completo está disponível no repositório GitHub do produto.
Configure o acesso aos recursos do SMBus
Primeiro ponto:na maioria das interações de nível de sistema operacional, o I 2 O barramento C é conhecido como SMBus. Assim, obtemos nossas primeiras linhas de código. Isso importa o módulo smbus, cria um objeto do tipo SMBus e o anexa ao barramento "1" dos vários SMBuses do Pi.
import smbus
bus =smbus.SMBus (1)
Temos que informar ao programa o endereço da peça. Por padrão, é 0x40, então defina uma variável para usar mais tarde.
addr =0x40
Em seguida, queremos habilitar o chip PWM e dizer a ele para incrementar endereços automaticamente após uma gravação (o que nos permite fazer gravações multibyte de operação única).
bus.write_byte_data (addr, 0, 0x20) bus.write_byte_data (addr, 0xfe, 0x1e)
Grave valores nos registros PWM
Essa é toda a configuração que precisa ser feita. De agora em diante, podemos gravar dados no chip PWM e esperar que ele responda. Aqui está um exemplo.
bus.write_word_data (addr, 0x06, 0) bus.write_word_data (addr, 0x08, 1250)
A primeira gravação é no registro de “hora de início” do canal 0. Por padrão, a frequência PWM do chip é 200 Hz, ou um pulso a cada 5 ms. O registro de tempo de início determina quando o pulso fica alto no ciclo de 5 ms. Todos os canais são sincronizados com esse ciclo. Geralmente, isso deve ser gravado em 0. A segunda gravação é no registrador de “tempo de parada” e controla quando o pulso deve diminuir. O intervalo para este valor é de 0 a 4095, e cada contagem representa uma fatia desse período de 5 ms (5 ms / 4095), ou cerca de 1,2us. Assim, o valor de 1250 escrito acima representa cerca de 1,5 ms de tempo por período de 5 ms.
Servo motores obtêm seu sinal de controle dessa largura de pulso. De um modo geral, uma largura de pulso de 1,5 ms resulta em uma posição "neutra", a meio caminho entre os extremos da faixa do motor. 1,0 ms rende aproximadamente 90 graus fora do centro e 2,0 ms rende -90 graus fora do centro. Na prática, esses valores podem ser um pouco mais ou menos do que 90 graus, e o motor pode ser capaz de um pouco mais ou menos do que 90 graus de movimento em qualquer direção.
Para endereçar outros canais, simplesmente aumente o endereço dos dois registradores acima em 4. Assim, o tempo de início para o canal 1 é 0x0A, para o canal 2 é 0x0E, o canal 3 é 0x12, etc. e o endereço de tempo de parada para o canal 1 é 0x0C, para o canal 2 é 0x10, o canal 3 é 0x14, etc. Consulte a tabela abaixo.
Canal # | Endereço inicial | Endereço de parada |
---|---|---|
Ch 0 | 0x06 | 0x08 |
Ch 1 | 0x0A | 0x0C |
Ch 2 | 0x0E | 0x10 |
Ch 3 | 0x12 | 0x14 |
Ch 4 | 0x16 | 0x18 |
Ch 5 | 0x1A | 0x1C |
Ch 6 | 0x1E | 0x20 |
Ch 7 | 0x22 | 0x24 |
Ch 8 | 0x26 | 0x28 |
Ch 9 | 0x2A | 0x2C |
Ch 10 | 0x2E | 0x30 |
Ch 11 | 0x32 | 0x34 |
Ch 12 | 0x36 | 0x38 |
Ch 13 | 0x3A | 0x3C |
Ch 14 | 0x3E | 0x40 |
Ch 15 | 0x42 | 0x44 |
Se você escrever um 0 no endereço inicial, cada grau de deslocamento de 90 graus requer 4,6 contagens gravadas no endereço de parada. Em outras palavras, multiplique o número de graus de deslocamento de neutro que você deseja alcançar por 4,6 e, em seguida, some ou subtraia esse resultado de 1250, dependendo da direção do movimento desejada. Por exemplo, um deslocamento de 45 graus do centro seria 207 (45 × 4,6) contagens mais ou menos que 1250, dependendo da direção em que você deseja que o movimento ocorra.
Leia mais informações ...
Guia de conexão de chapéu de servo Pi
Processo de manufatura
- Guia de Prototipagem CNC
- Guia FLIR Lepton Hookup
- Guia de conexão do Raspberry Pi 3 Starter Kit
- Qwiic HAT para Raspberry Pi Hookup Guide
- Guia de conexão de cunha Pi de 40 pinos pré-montada
- Robô Pi Simples
- Guia para martelos elétricos
- Guia para forjas de ferraria
- Guia de fundição de precisão
- Guia Rápido Para Paralelismo GD&T