Índice:
- Suprimentos
- Etapa 1: construção
- Etapa 2: Fiação
- Etapa 3: Teoria de Controle
- Etapa 4: usando MPU 6050
- Etapa 5: codificação
- Etapa 6: Procedimento de Ajuste PID
- Etapa 7: Conclusão
2024 Autor: John Day | [email protected]. Última modificação: 2024-01-30 11:35
Este instrutível passará pelo processo de design e construção de um robô com autobalanceamento. Como observação, só quero dizer que os robôs com autobalanceamento não são um conceito novo e foram construídos e documentados por outros. Quero aproveitar esta oportunidade para compartilhar com vocês minha interpretação deste robô.
O que é um robô com equilíbrio automático?
Um robô com autobalanceamento é um sistema que usa dados de medição inercial, coletados de um sensor integrado, para ajustar continuamente sua posição para se manter em pé.
Como funciona?
Uma analogia simples a se considerar é um pêndulo invertido. Onde o centro de massa está acima do ponto de pivô. Porém, no nosso caso, estamos restringindo o pêndulo a 1 grau de liberdade por ter um eixo de rotação, no nosso caso o eixo de rotação das duas rodas. Uma vez que qualquer tipo de perturbação fará com que o robô caia, precisamos de um método para mantê-lo ativamente equilibrado. É aqui que nosso algoritmo de malha fechada (controlador PID) entra em ação, sabendo em qual direção nosso robô está caindo, podemos ajustar a direção de rotação de nossos motores para manter o sistema equilibrado.
Como funciona o algoritmo de malha fechada?
O princípio básico para manter o robô equilibrado é, se o robô estiver caindo para frente, ele compensará movendo a parte inferior do robô para frente para se segurar e, portanto, se manter na vertical. Da mesma forma, se o robô estiver caindo para trás, ele compensará movendo a parte inferior do robô para trás para se segurar.
Portanto, precisamos fazer duas coisas aqui, primeiro, precisamos calcular o ângulo de inclinação (Roll) que o robô está experimentando e, como resultado, precisamos controlar a direção de rotação dos motores.
Como vamos medir o ângulo de inclinação?
Para medir o ângulo de inclinação, usaremos uma Unidade de Medição Inercial. Esses módulos incorporam um acelerômetro e giroscópio.
- O acelerômetro é um dispositivo eletromagnético que mede a aceleração adequada, ou seja, a aceleração de um corpo em repouso instantâneo.
- Um giroscópio é um dispositivo eletromecânico que mede a velocidade angular e é usado para determinar a orientação do dispositivo.
No entanto, o problema com o uso de tais sensores é que:
- O acelerômetro é muito barulhento, mas é consistente ao longo do tempo, o ângulo varia com movimentos horizontais repentinos
- O valor do giroscópio, por outro lado, irá variar com o tempo, mas inicialmente, é bastante preciso
Para isso, não vou implementar um filtro, em vez disso, vou usar o Digital Motion Processing (DMP) integrado. Outros usaram um filtro complementar para obter um sinal suave, você pode escolher o método que desejar. à medida que o robô se equilibra com qualquer uma das implementações.
Suprimentos
Partes:
- Arduino Pro Mini 3.3V 8 com um ATMEGA328 de 8 MHz
- FT232RL 3.3V 5.5V FTDI USB para módulo adaptador serial TTL
- Módulo GY-521 com MPU-6050
- Um par de motor micro redutor N20 6V - 300rpm
- Motorista L298N
- LM2596S DC para conversor buck DC
- Bateria (bateria recarregável de íon de lítio de 9,7 V)
- Alça de bateria
- Duas placas de circuito de PCB de prototipagem
- Fios de jumper de pinos de cabeçalho macho e fêmea
Ferramentas:
- Ferro de solda e solda
- Distanciador de espaçador hex de nylon
- Conjunto de chaves de fenda de precisão
- impressora 3d
Etapa 1: construção
Como eu tinha acesso a uma impressora 3D, decidi imprimir em 3D o chassi e usar isolantes para conectar tudo junto.
O robô consiste em 4 camadas
- A camada inferior conecta os motores e tem pontos de montagem para o módulo acionador de motor L298N
- A próxima camada abriga a placa de protótipo com o Arduino pro mini e cabeçalhos soldados a ela
- A terceira camada monta o IMU
- A camada superior, que eu chamo de "camada de pára-choques", resguarda a bateria, o conversor de dólar e uma chave monetária
Meu principal princípio de design era manter tudo modular. A razão para isso é que se algo deu errado com um dos componentes, eu poderia facilmente substituí-lo ou se eu precisasse de um componente para outro projeto, posso pegá-lo facilmente sem me preocupar em não poder usar o sistema novamente.
Etapa 2: Fiação
Eu soldava alguns pintos de cabeçalho fêmeas a uma placa de perfurações para combinar com os mini pinos de cabeçalho do Arduino pro. Em seguida, soldei os pinos do conector macho na placa para permitir o acesso à E / S. O resto dos componentes foram montados na moldura impressa em 3D e conectados usando fios de jumper.
Etapa 3: Teoria de Controle
Agora passamos para o cerne do projeto. Para manter o robô equilibrado, precisamos gerar um sinal de controle apropriado para acionar os motores na direção correta e na velocidade correta para manter o robô equilibrado e estável. Para fazer isso, usaremos um algoritmo de malha de controle popular conhecido como controlador PID. Como o acrônimo sugere, existem três termos para esse controlador: os termos proporcionais, integrais e derivados. Cada um deles é acompanhado por coeficientes que determinam sua influência no sistema. Freqüentemente, a parte mais demorada da implementação do controlador é o ajuste dos ganhos para cada sistema exclusivo para obter a resposta ideal.
- O termo proporcional multiplica diretamente o erro para dar uma saída, portanto, quanto maior o erro, maior a resposta
- O termo integral gera uma resposta com base no acúmulo do erro para reduzir o erro em regime permanente. Quanto mais tempo o sistema ficar desequilibrado, mais rápido os motores responderão
- O termo derivativo é a derivada do erro que é usado para prever a resposta futura e, ao fazer isso, reduz a oscilação devido a ultrapassagem do estado estacionário.
O princípio básico deste algoritmo é calcular continuamente o ângulo de inclinação que é a diferença entre a posição desejada e a posição atual, isso é conhecido como erro. Em seguida, ele usa esses valores de erro e calcula a soma das respostas proporcional, integral e derivada para obter uma saída, que são os sinais de controle enviados aos motores. Como resultado, se o erro for grande, o sinal de controle enviado aos motores girará os motores em alta velocidade para chegar a um estado de equilíbrio. Da mesma forma, se o erro for pequeno, o sinal de controle irá girar os motores em baixa velocidade para manter o robô equilibrado.
Etapa 4: usando MPU 6050
Biblioteca MPU6050
github.com/jrowberg/i2cdevlib/tree/master/…
Calibrando deslocamentosNem todos os sensores são réplicas exatas uns dos outros. Como resultado, se você testar dois MPU 6050, poderá obter valores diferentes para o acelerômetro e o giroscópio quando colocados ainda na mesma superfície. Para superar esse desvio de ângulo constante, precisamos celebrar cada sensor que usamos. Executando este script:
www.i2cdevlib.com/forums/topic/96-arduino-…
escrito por Luis Rodenas, teremos compensações. Os erros de deslocamento podem ser eliminados definindo os valores de deslocamento na rotina setup ().
Usando o processador de movimento digital
O MPU6050 contém um DMP (Digital Motion Processor).
O que é um DMP? Você pode pensar no DMP como um microcontrolador integrado que processa o movimento complexo do giroscópio de 3 eixos e do acelerômetro de 3 eixos a bordo do mpu6050, usando seus próprios algoritmos de fusão de movimento. Descarregando o processamento que, de outra forma, seria feito pelo Arduino
Como usá-lo? Para descobrir como usar o DMP, vá até o esboço de exemplo MPU6050_DMP6 que vem com a biblioteca MPU6050 (no IDE do Arduino: Arquivo-> Exemplo-> MPU6050-> MPU6050_DMP6). Essa também é uma boa oportunidade para verificar se o sensor realmente funciona e se a fiação está correta
Etapa 5: codificação
Usei o Arduino IDE e uma interface FTDI para programar o Arduino pro mini.
Usando o esboço de exemplo (MPU6050_DMP6) que vem com a biblioteca MPU6050 como meu código base, adicionei as funções PID () e MotorDriver ().
Adicione a biblioteca
- MPU6050: Para usar o sensor MPU6050, precisaremos baixar a biblioteca do desenvolvedor I2C de Jeff Rowberg e adicioná-la à pasta “bibliotecas” do Arduino encontrada nos arquivos do programa em seu computador.
- Wire: também precisamos da biblioteca Wire para nos permitir a comunicação com dispositivos I2C.
Pseudo-código
Incluir Bibliotecas:
- Wire.h
- MPU6050
- I2Cdev.h
Inicializar variáveis, constantes e objetos
Configurar ()
- Defina o modo de pino para controlar os motores
- Defina o modo de pino para o LED de status
- Inicialize o MPU6050 e defina os valores de deslocamento
PID ()
Calcular o valor PID
MotorDriver (resposta PID)
Use o valor PID para controlar a velocidade e direção dos motores
Ciclo ()
- Obtenha dados do DMP
- Chamar funções PID () a MotorDriver ()
Etapa 6: Procedimento de Ajuste PID
Esta é a parte mais tediosa do projeto e requer um pouco de paciência, a menos que você tenha muita sorte. Aqui estão as etapas:
- Defina os termos I e D como 0
- Segurando o robô, ajuste P para que o robô comece a oscilar sobre a posição de equilíbrio
- Com P definido, aumente I para que o robô acelere mais rápido quando estiver desequilibrado. Com P e I devidamente afinados, o robô deve ser capaz de se autoequilibrar por pelo menos alguns segundos, com alguma oscilação
- Finalmente, aumente D reduza a oscilação
Se a primeira tentativa não der resultados satisfatórios, repita as etapas com um valor diferente de P. Além disso, esteja ciente de que você pode ajustar os valores PID posteriormente, para aumentar ainda mais o desempenho. Os valores aqui dependem do hardware, não se surpreenda se obtiver valores de PID muito grandes ou muito pequenos.
Etapa 7: Conclusão
Os micromotores usados deviam desacelerar para reagir a grandes perturbações e, como o sistema era muito leve, não havia inércia suficiente para obter o efeito de pêndulo desejado, portanto, se o robô se inclinasse para a frente, ele apenas se inclinaria em um ângulo e dispararia para a frente. Finalmente, as rodas impressas em 3D são uma má escolha, pois continuam escorregando.
Sugestões para melhorar:
- Motores mais rápidos com torque mais alto, ou seja, para motores DC, quanto maior a classificação de tensão, maior o torque
- pegue uma bateria mais pesada ou apenas mova a massa um pouco mais para cima
- Substitua as rodas impressas em 3D por rodas de borracha para obter mais tração
Recomendado:
Proyecto Laboratorio De Mecatrónica (Robô de Equilíbrio de Duas Rodas): 6 Passos
Proyecto Laboratorio De Mecatrónica (Robô de Balança de Duas Rodas): Este projeto se mostrara, o funcionamento e o como hacer para elaborar um " Robô de balança de duas rodas " paso a paso y con explicación y concejos. Este é um sistema que consiste em que o robô no se debe caer, se debe de mantener en el
Robô com autoequilíbrio de 2 rodas: 4 etapas
Robô de equilíbrio automático de 2 rodas: Na minha humilde opinião, você não é um verdadeiro Criador, a menos que não construa seu próprio robô de equilíbrio automático de 2 rodas.:-) Então, aqui está … e, o mais importante, ele funciona !!! Este projeto parece muito simples. Em vez disso, requer um bom nível de conhecimento de
Robô de equilíbrio / Robô de 3 rodas / Robô STEM: 8 etapas
Robô de balanceamento / Robô de 3 rodas / Robô STEM: Construímos um robô de balanceamento combinado e de 3 rodas para uso educacional em escolas e programas educacionais após as aulas. O robô é baseado em um Arduino Uno, um escudo personalizado (todos os detalhes de construção fornecidos), um pacote de bateria Li Ion (todos constr
Robô de 4 rodas controlado por Wi-Fi: 6 etapas
Robô de 4 rodas controlado por Wi-Fi: Para este projeto, estaremos desenvolvendo um robô de 4 rodas usando ESP8266 que será controlado por uma rede Wi-Fi. O robô pode ser controlado a partir de um navegador de internet comum, usando uma interface projetada em HTML ou também a partir de um aplicativo móvel Android
Construa um robô muito pequeno: faça o menor robô com rodas do mundo com uma garra: 9 etapas (com fotos)
Construa um robô muito pequeno: faça o menor robô com rodas do mundo com uma garra: Construa um robô de 1/20 de polegada cúbica com uma garra que pode pegar e mover pequenos objetos. É controlado por um microcontrolador Picaxe. Neste momento, acredito que este seja o menor robô com rodas do mundo com uma garra. Isso sem dúvida ch