Curso Robótica – #2 – Controlador do Robot, Sensores
Ao construir robots móveis, é melhor evitar a confusão de fios e placas de contato. Vibrações que aparecem durante a condução podem levar a erros na operação da estrutura.
É por isso que começaremos a familiarizarmos nos com as shield para Arduino!
A sobreposição que combina os conectores Arduino foi projetada e montada pela empresa polonesa MSX , que lida, entre outras coisas, na produção de módulos universais. Graças à cooperação com um parceiro tão experiente, conseguimos preparar a placa perfeito, que contém quase tudo o que pode ser útil em robots móveis simples!
O curso de construção de robots é direcionado principalmente para iniciantes. Portanto, nesta parte do curso, vamos nos concentrar em conhecer todo o shield.
Fonte de alimentação do robot
Durante a construção de robots, deve ser lembrado que a partir de uma fonte de energia devemos “reviver” a parte eletrónica e os motores. Infelizmente, as unidades podem apresentar muito mal nas linhas de energia.
No caso deste robot, devemos alimentar um mínimo de dois motores com engrenagens. Cada motor durante a inicialização recebe uma corrente relativamente alta (maior que a consumida durante a operação normal do inversor).
Uma demanda tão súbita por uma grande quantidade de corrente pode levar
a uma queda de tensão no sistema, e isso é apenas um passo para a redefinição do Arduino.
Para evitar tais problemas, é necessário projetar adequadamente a fonte de alimentação. No nosso caso, consiste em vários elementos:
Conector de Energia
No lado esquerdo, encontrará um conector de energia verde na placa. É neste lugar que precisa conectar a bateria. No nosso caso, serão 6 baterias AA conectadas em série. Essa conexão nos dará cerca de 9V.
As baterias de 9V têm uma capacidade muito pequena e não são adequadas para alimentar “sistemas que consomem muita energia”. Na melhor das hipóteses, o nosso robot trabalharia nele por alguns minutos. Para algumas configurações, pode acontecer que o robot não se possa mover quando for alimentado por uma pequena bateria de 9V. Baterias AA durarão muito mais tempo em tal trabalho.
Ao conectar a fonte de alimentação, certifique-se que está a usar a polaridade correta. Os símbolos “+” e “-” podem ser encontrados no quadro.
Fusível
Outro elemento que garante a segurança da eletrónica é o fusível do polímero. De outros fusíveis distingue-se de ser reutilizável. Quando a corrente que flui através do fusível atinge o valor crítico, o fusível começa a aquecer até que o circuito seja aberto.
Depois de remover a falha (desligar ou reduzir o fluxo de corrente)
e resfriar o fusível, ele pode continuar a executar a sua função.
Interruptor
A fonte de alimentação da estrutura pode ser ligada e desligada usando o interruptor.
Depois de conectar o cabo USB, o Arduino ainda pode ser alimentado pela porta USB
e as configurações do switch não afetarão sua operação.
Fonte de alimentação separada para servos
A unidade será capaz de ser controlada num momento. Já podemos ver, no entanto, que a nossa placa também permite que conecte um servo motor. Como foi dito durante o curso dos fundamentos de programação Arduino #6 , não pode usar o mesmo estabilizador de componentes eletrónicos e servo power-hung. Portanto, nós construímos num estabilizador que funciona perfeitamente com o fornecimento de pequenos servos.
Filtragem de ruído – condensadores
Para eliminar a interferência, existem vários condensadores na placa. Um papel importante também é desempenhado aqui por dois grandes condensadores eletrolíticos – isto é, aquelas pequenas latas de prata. Eles diferem dos condensadores eletrolíticos que conhecemos do curso dos fundamentos eletrónicos , mas não há nada a temer. Simplesmente condensadores , que são projetados para montagem em superfície (sem pernas longas), são produzidos em tais caixas.
Um jumper que desliga a fonte de alimentação para drives
Esse jumper discreto é um dos meus “gadgets” favoritos colocados na placa. Ao construir robots, muitas vezes é necessário mudar o software. A maneira mais conveniente é colocar o robot ao lado do computador, conectar o cabo USB e fazer o upload de um novo algoritmo.
dives. Neste caso, serão motores com engrenagens e servo.
Jumpers são pequenos elementos que (como o nome sugere) contêm um sinal, ou seja, eles conectam dois pinos do conector. Um exemplo de tais elementos é visível na imagem (eles geralmente têm formas e cores diferentes).
Díodo de sinal
Também havia um díodo que indica a fonte de alimentação correta e a inicialização do módulo.
Controle da unidade
Nenhum robot será capaz de se mover sem as unidades adequadas. No nosso caso, são dois motores DC com engrenagens. É claro que tais elementos não podem ser controlados diretamente do Arduino (detalhes no curso do Arduino). Bridge-h é necessário, desta vez vamos usar um pequeno DRV8835, que permite controlar dois motores.
Este sistema pode controlar motores que requerem até 11V. Cada motor pode baixar até 1,2 A.
O segundo elemento importante é o conector de 3 pinos, que serve para conectar o servo. Durante este curso não iremos utilizá-lo, mas se alguém tiver um drive assim após o primeiro nível do curso de programação do Arduino, poderá conectá-lo aqui.
Da mesma forma que ao fornecer a parte eletrónica, aqui também encontrará um díodo separado, que sinalizará a fonte de alimentação para as unidades.
Este LED só fica aceso quando o jumper de energia do
drive está na posição ON.
Funções adicionais da shield
Além das funções realmente básicas para robots, a nossa shield está equipada com toda uma gama de adições interessantes.
Conectores dedicados a sensores
Perto das bordas esquerda e direita da placa existem conectores de 3 pinos. Cada um deles é uma tomada elétrica (Vcc, terra) e uma entrada analógica. Lá vamos conectar sensores (linhas, luzes, obstáculos, etc.).
Receptor IR
Num dos cantos da placa, o receptor infravermelho TSOP foi colocado. Com a sua ajuda, será possível controlar remotamente o robot. Para isso, usaremos o controle remoto IR incluído, que gera códigos no padrão RC5.
Expansor de porta
Acontece que o número de entradas/saídas disponíveis no Arduino nos limita. Então o expansor de portas acaba por ser uma solução muito conveniente. Portanto, o sistema que comunica com o Arduino usa apenas 2 pinos e, em troca, oferece 8 E/S digitais adicionais!
Botão, LED, Campainha
Em primeiro lugar, apareceu um díodo ligado ao pino 13. Graças a isso, não precisa de olhar sob a shield, para verificar o díodo, que é conectado a essa tomada por padrão na placa do Arduino.
O díodo emissor de luz é conveniente ao testar sistemas “estáticos”. No entanto, quando se lida com robots de condução, é difícil correr atrás do nosso veículo e observar o brilho de um pequeno ponto. Portanto, há também um lugar para uma campainha.
Ao testar um novo programa no robot,
é muito mais fácil pegar o som.
Há também um botão conectado ao Arduino na placa usando o filtro RC. Graças a isso, não precisa de se preocupar com vibrações de contato!
UART
Para maior conveniência, conectores separados com sinais da UART também foram derivados. Eles podem, no futuro, ser usados para conectar módulos adicionais, incluindo comunicação sem fio via Wi-Fi ou Bluetooth. No momento, porém, não os usaremos – para que possam ser tratados como pinos comuns de E/S.
Outras portas de E/S, Entradas analógicas
Todas as portas livres do Arduino (incluindo entradas analógicas) foram enviadas para os conectores, para que possa desenvolver ainda mais o nosso robot com outros componentes.
Sensores universais
Ao construir robots móveis, pode conectar vários sensores diferentes neles. O curso de construção de robots deveria ser universal, então não queríamos usar sensores sofisticados. Nós nos concentramos em soluções simples. Portanto, o conjunto inclui dois tipos de sensores (2 cada um deles, 4 no total).
Sensores mecânicos
Os sensores de obstáculo mais simples, eficazes e frequentemente utilizados são os interruptores mais comuns. Depois de bater no robot com um obstáculo, o sinal dentro do sensor é curto. No nosso robot, usamos chaves limitadoras que possuem placas extremamente longas.
É claro que às vezes até essas ligações podem ser muito pequenas. Portanto, usaremos a maneira popular de estendê-las. Pedaços de braçadeiras e tubos manga termorretrátil serão perfeitos aqui!
Sensores ópticos
O segundo tipo de sensores é uma combinação de uma resistência fotossensível e um díodo emissor de luz azul. Depois de girá-los, colocar o jumper e a configuração certa, será usado para construir um robot que vai numa pista colada com fita isolante preta (LineFollower).
Informações detalhadas sobre os sensores, sua conexão
e uso aparecerão nos momentos apropriados deste curso.
O primeiro teste da shield
Agora é possível testar as funções mais simples do módulo. Vamos começar com o código que pressiona o botão colocado no quadro (campainha) e flash LED.
Vamos começar com a conexão de energia. Para fazer isso, remova a ficha inserida no soquete e desparafuse a fixação com uma chave de fenda.
De seguida, coloque no fio. É importante colocar o cabo na parte superior do conector, conforme ilustrado:
Cuidado! Insira apenas a parte isolada do cabo dentro do conector!
É importante lembrar sobre a polaridade correta do conector.
Mais (fio vermelho) no lado esquerdo e terra (fio preto) no lado direito.
Colocamos 6 baterias. Se tudo foi feito corretamente, mudar a posição da chave deve ativar ou desativar todo o sistema (a posição do jumper de energia das unidades não é importante neste momento).
Então pode fazer o upload de um programa simples. O processo de upload em si é o mesmo que no básico do Arduino, então não vou descrevê-lo aqui. Espero que o programa também não exija uma descrição mais ampla.
#define LED 13 #define BUZZER 10 #define PRZYCISK 2 void setup() { //Konfiguracja wyjsc pinMode(LED, OUTPUT); pinMode(BUZZER, OUTPUT); //Konfiguracja wyjscia pinMode(PRZYCISK, INPUT_PULLUP); //Wylaczenie diody i buzzera digitalWrite(LED, LOW); digitalWrite(BUZZER, LOW); //Testowe migniecia LED digitalWrite(LED, HIGH); delay(500); digitalWrite(LED, LOW); delay(500); } void loop() { if (digitalRead(PRZYCISK) == LOW) { //Jesli przycisk jest wcisniety... digitalWrite(LED, HIGH); digitalWrite(BUZZER, HIGH); delay(500); } else { //Jesli przycisk nie jest wcisniety... digitalWrite(LED, LOW); digitalWrite(BUZZER, LOW); } }
O funcionamento do programa na prática é visível no seguinte vídeo curto:
Sumário
Depois de nos familiarizarmos com a eletrónica que temos, você pode facilmente ir até a montagem da peça mecânica. Isso é o que faremos na próxima parte, será o último passo antes de iniciar o robot!