- PWM (modulação por largura de pulso):
- Servo motor e PWM:
- Componentes necessários:
- Diagrama de circuito:
- Explicação de trabalho e programação:
Raspberry Pi é uma placa baseada em processador de arquitetura ARM projetada para engenheiros eletrônicos e amadores. O PI é uma das plataformas de desenvolvimento de projeto mais confiáveis que existe agora. Com maior velocidade do processador e 1 GB de RAM, o PI pode ser usado para muitos projetos de alto perfil, como processamento de imagens e Internet das coisas.
Para fazer qualquer um dos projetos de alto nível, é necessário compreender as funções básicas do PI. Estaremos cobrindo todas as funcionalidades básicas do Raspberry Pi nestes tutoriais. Em cada tutorial, discutiremos uma das funções do PI. Ao final desta série de tutoriais do Raspberry Pi, você será capaz de realizar projetos de alto nível sozinho. Passe pelos tutoriais abaixo:
- Primeiros passos com Raspberry Pi
- Configuração Raspberry Pi
- LED piscando
- Interface de botão Raspberry Pi
- Geração Raspberry Pi PWM
- Controle do motor DC usando Raspberry Pi
- Controle de motor de passo com Raspberry Pi
- Fazendo a interface do registro de mudança com Raspberry Pi
- Tutorial do Raspberry Pi ADC
Neste tutorial, controlaremos o servo motor com Raspberry Pi. Antes de ir para o servo, vamos falar sobre o PWM porque o conceito de controle do servo motor vem dele.
PWM (modulação por largura de pulso):
Já falamos anteriormente sobre PWM muitas vezes em: Modulação de largura de pulso com ATmega32, PWM com Arduino Uno, PWM com 555 timer IC e PWM com Arduino Due. PWM significa 'Modulação por largura de pulso'. PWM é um método usado para obter tensão variável de uma fonte de alimentação estável. Para melhor compreensão do PWM, considere o circuito abaixo,
Na figura acima, se a chave for fechada continuamente por um período de tempo, o LED ficará 'LIGADO' durante esse tempo continuamente. Se a chave for fechada por meio segundo e aberta por meio segundo seguinte, o LED ficará LIGADO apenas na primeira metade de segundo. Agora, a proporção para a qual o LED está LIGADO ao longo do tempo total é chamada de Ciclo de Trabalho e pode ser calculada da seguinte forma:
Ciclo de trabalho = tempo para ligar / (tempo para ligar + tempo para desligar)
Ciclo de trabalho = (0,5 / (0,5 + 0,5)) = 50%
Portanto, a tensão média de saída será 50% da tensão da bateria.
Conforme aumentamos a velocidade de LIGADO e DESLIGADO para um nível, veremos o LED sendo escurecido em vez de LIGADO e DESLIGADO. Isso ocorre porque nossos olhos não conseguem captar frequências superiores a 25 Hz com clareza. Considere um ciclo de 100 ms, com o LED DESLIGADO por 30 ms e LIGADO por 70 ms. Teremos 70% de tensão estável na saída, então o LED acenderá continuamente com 70% de intensidade.
A razão de trabalho vai de 0 a 100. '0' significa completamente DESLIGADO e '100' totalmente LIGADO. Este Duty Ratio é muito importante para o Servo Motor. A posição do servo motor está sendo determinada por esta razão de trabalho. Verifique isso para demonstração PWM com LED e Raspberry Pi.
Servo motor e PWM:
Um servo motor é uma combinação de motor DC, sistema de controle de posição e engrenagens. Os servos possuem diversas aplicações no mundo moderno e com isso, estão disponíveis em diversos formatos e tamanhos. Estaremos usando o Servo Motor SG90 neste tutorial, é um dos mais populares e mais baratos. SG90 é um servo de 180 graus. Portanto, com este servo podemos posicionar o eixo de 0 a 180 graus.
Um servo motor tem principalmente três fios, um é para tensão positiva, outro é para aterramento e o último é para ajuste de posição. O fio vermelho está conectado à alimentação, o fio marrom está conectado ao aterramento e o fio amarelo (ou BRANCO) está conectado ao sinal.
No servo, temos um sistema de controle que leva o sinal PWM do pino de sinal. Ele decodifica o sinal e obtém a relação de trabalho dele. Depois disso, ele compara a proporção com os valores das posições predefinidas. Se houver uma diferença nos valores, ele ajusta a posição do servo de acordo. Portanto, a posição do eixo do servo motor é baseada na relação de trabalho do sinal PWM no pino de sinal.
A frequência do sinal PWM (modulado por largura de pulso) pode variar com base no tipo de servo motor. Para SG90, a frequência do sinal PWM é 50Hz. Para descobrir a frequência de operação do seu servo, verifique a folha de dados desse modelo específico. Assim, uma vez que a frequência é selecionada, a outra coisa importante aqui é a DUTY RATIO do sinal PWM.
A tabela abaixo mostra a posição do servo para aquela relação de trabalho específica. Você pode obter qualquer ângulo intermediário, escolhendo o valor de acordo. Portanto, para 45º de servo, o Duty Ratio deve ser '5' ou 5%.
POSIÇÃO |
RELAÇÃO DE SERVIÇO |
0º |
2,5 |
90º |
7,5 |
180º |
12,5 |
Antes de fazer a interface do servo motor com o Raspberry Pi, você pode testar seu servo com a ajuda deste circuito testador de servo motor. Verifique também nossos projetos Servo abaixo:
- Controle servo motor usando Arduino
- Controle do servo motor com Arduino Due
- Interface Servo Motor com Microcontrolador 8051
- Controle servo motor usando MATLAB
- Controle de servo motor por Flex Sensor
- Controle de posição servo com peso (sensor de força)
Componentes necessários:
Aqui, estamos usando o Raspberry Pi 2 Model B com o Raspbian Jessie OS. Todos os requisitos básicos de hardware e software foram discutidos anteriormente. Você pode consultá-los na introdução do Raspberry Pi, exceto o que precisamos:
- Pinos de conexão
- Capacitor 1000uF
- Servo motor SG90
- Tábua de pão
Diagrama de circuito:
A1000µF deve ser conectado ao barramento de alimentação de + 5V, caso contrário, o PI pode desligar aleatoriamente enquanto controla o servo.
Explicação de trabalho e programação:
Depois que tudo estiver conectado de acordo com o diagrama de circuito, podemos ligar o PI para escrever o programa em PYHTON.
Vamos falar sobre alguns comandos que vamos usar no programa PYHTON, Vamos importar o arquivo GPIO da biblioteca, a função abaixo nos permite programar os pinos GPIO do PI. Também estamos renomeando “GPIO” para “IO”, portanto, no programa, sempre que quisermos nos referir aos pinos GPIO, usaremos a palavra 'IO'.
importar RPi.GPIO como IO
Às vezes, quando os pinos GPIO, que estamos tentando usar, podem estar executando algumas outras funções. Nesse caso, receberemos avisos durante a execução do programa. O comando abaixo diz ao PI para ignorar os avisos e prosseguir com o programa.
IO.setwarnings (falso)
Podemos referir os pinos GPIO do PI, tanto pelo número do pino a bordo quanto pelo número da função. Como 'PIN 29' na placa é 'GPIO5'. Portanto, dizemos aqui que vamos representar o pino aqui por '29' ou '5'.
IO.setmode (IO.BCM)
Estamos definindo PIN39 ou GPIO19 como pino de saída. Obteremos a saída PWM deste pino.
IO.setup (19, IO.OUT)
Depois de definir o pino de saída, precisamos configurar o pino como pino de saída PWM, p = IO.PWM (canal de saída, frequência do sinal PWM)
O comando acima é para configurar o canal e também para configurar a frequência do canal ”. 'p' aqui é uma variável, pode ser qualquer coisa. Estamos usando GPIO19 como o canal de saída “PWM. “Frequência do sinal PWM” escolheremos 50, pois a frequência de trabalho do SG90 é 50Hz.
O comando abaixo é usado para iniciar a geração do sinal PWM. ' DUTYCYCLE ' é para definir a proporção de 'Ligar' como explicado antes
p.start (DUTYCYCLE)
O comando abaixo é usado como um loop permanente, com este comando as instruções dentro deste loop serão executadas continuamente.
Enquanto 1:
Aqui, o programa para controlar o servo usando Raspberry Pi fornece um sinal PWM no GPIO19. O Duty Ratio do sinal PWM é alterado entre três valores por três segundos. Portanto, para cada segundo, o Servo gira para uma posição determinada pelo Duty Ratio. O servo gira continuamente para 0º, 90º e 180º em três segundos.