MICROCONTROLADORES (STM)
Nessa aula, os candidatos irão compreender como utilizar e configurar microcontroladores, para posteriormente controlar uma ponte H com a utilização de um microcontrolador.
Last updated
Was this helpful?
Nessa aula, os candidatos irão compreender como utilizar e configurar microcontroladores, para posteriormente controlar uma ponte H com a utilização de um microcontrolador.
Last updated
Was this helpful?
Download de Programas:
Acesse o .
Clique no botão Download para baixar o instalador adequado para o seu sistema operacional.
Execute o arquivo baixado para iniciar o processo de instalação.
Siga os passos do assistente de instalação.
Após a conclusão, abra o Visual Studio Code usando o ícone criado no menu Iniciar ou na área de trabalho.
Para instalar a extensão PlatformIO no VS Code, siga os passos abaixo:
Abra o Visual Studio Code.
Acesse a aba de extensões: Clique no ícone de quadrados na barra lateral esquerda ou use o atalho Ctrl+Shift+X
.
Busque por PlatformIO: No campo de pesquisa, digite "PlatformIO" e pressione Enter
.
Instale a extensão: Encontre "PlatformIO IDE" na lista de resultados e clique no botão de Instalar
.
Reinicie o VS Code: Após a instalação, pode ser necessário reiniciar o VS Code para que a extensão seja carregada corretamente.
Com a extensão instalada, você poderá gerenciar seus projetos de sistemas embarcados de forma eficiente diretamente no VS Code.
Material Oficial:
pinMode(nome do pino, modo do pino) - seta o pino para entrada ou saída.
Serial.begin(bauld rate) - Inicia o monitor serial com um valor de bauld rate de entrada.
Serial.println(mensagem) - printa alguma coisa no monitor serial.
digitalRead(nome do pino) - lê um valor digital.
digitalWrite(nome do pino, valor do pino) - retorna um valor alto ou baixo para um pino.
pwm_start(nome do pino, frequencia, duty cicle, resolução) - retorna um pwm com frequencia e resolução variável.
adc_read_value(nome do pino, resolução) - lê um valor analógico com uma resolução variável.
Material Adicional:
Mas afinal, o que é um Conversor A/D? No que consiste esse mecanismo interno do microcontrolador? Qual a sua principal função?
Um Conversor Analógico Digital é um dispositivo programável capaz de transformar um sinal analógico, em um sinal digital;
Quando convertido, este mesmo sinal torna-se “legível” por uma máquina (no caso o STM);
O Conversor, por sua vez, quantifica esses valores de conversão eletronicamente dentro de um número finito de valores inteiros, determinado pela resolução do conversor (dada em Bits);
Logo, um Conversor de 8 Bits, por exemplo, transforma a tensão em valores legíveis por uma máquina, isto é, valores decimais entre 0 e 256;
Como 100% da tensão equivale a 3.3V, pode-se afirmar que 100% da conversão A/D, em decimal, equivale a 256. Assim, 1% da conversão A/D equivale à resolução de 12.89mV / Bit;
Observe que cada canal, desde o AN0 até o AN3, pode ser configurado tanto como entrada, quanto como saída, sendo ela analógica ou digital.
O valor numérico da conversão A/D (0 a 1023 - 10 Bits) pode ser manuseado pelo programador.
Mas afinal, o que é um Timer? No que consiste esse mecanismo interno do microcontrolador? Qual a sua principal função?
Um Timer (ou temporizador) é um mecanismo registrador, de natureza programável, responsável por realizar contagens com base na frequência do microcontrolador, seja ela interna ou externa;
Assim como o Conversor A/D, o Timer também constitui um módulo interno dentro do STM e, por essa razão, sua medida é dada em Bits;
Para efetuar a contagem, o Timer, precisa, em tese, ter todas as suas “entradas” configuradas para obter o desempenho desejado;
Para que o Timer 0 funcione, é preciso definir os valores de frequência, a transição de borda (subida ou descida), o tipo de oscilação (interna/externa), o número de Bits (8 ou 16), etc;
Quando o Timer 0 estiver configurado, ele será capaz de realizar diversas contagens: as mais simples (de 0 até 255 - 8 Bits), até outras mais complexas, partindo de valores diferentes de zero ou interrompendo-as para não atingir o valor máximo suportado pelo módulo;
Essa interrupção, ou esse “estouro” do Timer, só pode ser viabilizado pela Flag desde mesmo registrador, isto é, pela “bandeira” que sinaliza não somente o início, mas também o fim dessa mesma contagem.
Mas afinal, o que é um sinal PWM? No que consiste esse sinal? Como sintetizá-lo adequadamente?
O PWM é um recurso muito utilizado na programação para alterar o comportamento de uma determinada saída do microcontrolador;
Normalmente, o PWM é utilizado em robôs para comunicação entre módulos ou para controles de potência;
Há diversas formas de gerar um sinal PWM em um microcontrolador, todos têm uma coisa em comum, eles utilizam um timer para medir o tempo entre as variações do sinal;
Em baixos níveis de abstração pode-se configurar os módulos do timer para isso ou, se estiverem disponíveis, os módulos de PWM do microcontrolador;
Em abordagens de alto nível de abstração, pode se encontrar funções que realizam toda essa configuração de uma forma mais dinâmica;
Nesse sentido, quanto MAIOR a largura do período em que o sinal PWM estiver EM NÍVEL ALTO, MAIOR a intensidade do LED aceso. Se o circuito utilizasse uma carga potente, um motor por exemplo, mais rápida seria a sua rotação;
Por outro lado, quanto MENOR a largura do período em que o sinal PWM estiver EM NÍVEL ALTO, MENOR a intensidade do LED aceso. Se o circuito utilizasse uma carga potente, um motor por exemplo, mais lenta seria a sua rotação.
Mas afinal, como é a comunicação do Sensor VL530X? No que consiste esse componente? Como ele funciona?
Os Sensores VL530X são responsáveis pelo direcionamento e orientação do robô e detectar a distância do robô adversário;
O sensor VL53L0X é um sensor do tipo ToF (Time of Fligth). Este tipo de sensor mede a distância à sua frente enviando um sinal infravermelho e medindo o tempo até a reflexão do mesmo;
O VL530X possui um rápido tempo de reação e um alcance de, aproximadamente, 2m de distância;
Sua interface conta com 6 pinos:
Dois referentes à alimentação do sensor (VCC e GND);
Dois referentes à comunicação I2C (SDA e SCL);
Um de configuração do endereço de comunicação (XSHUT);
Um de interrupção, não utilizado pela equipe (GPIO01).
Seu funcionamento consiste na emissão e recepção de um feixe de lu infravermelha como no diagrama abaixo:
A comunicação I2C (Inter-Integrated Circuit) é um protocolo de comunicação serial que permite a troca de dados entre dispositivos eletrônicos de maneira simples e eficiente. Este protocolo utiliza duas linhas principais:
SDA (Serial Data Line): Responsável pela transmissão de dados entre os dispositivos.
SCL (Serial Clock Line): Fornece o sinal de clock que sincroniza a transferência de dados.
A comunicação I2C permite a conexão de múltiplos dispositivos em um barramento compartilhado, utilizando endereços para identificar cada dispositivo participante. Com suporte nativo em muitos microcontroladores e sensores, como o VL530X, a I2C é amplamente utilizada em aplicações de sistemas embarcados devido à sua flexibilidade e simplicidade.