Fala Pessoal! Beleza?! 😉
💡 Bom, hoje vamos falar de um assunto que pode parecer ou mesmo ser, “muito comum” para bastante gente, ainda assim, acho que é um tema muitas vezes “desconhecido” por parte de um grande público, e que por esta razão principalmente (além de outras), pode ser explicado novamente (claro, considerando suas respectivas atualizações). ❗
MODULAÇÃO POR LARGURA DE PULSO UTILIZANDO FUNÇÃO “AnalogWrite()”:
Vamos ir diretamente ao ponto do título deste post pessoal!
Vamos iniciar com uma questão, que serve como exemplo: imagina que você já “dominou a técnica” de controle digital dos pinos da plataforma embarcada ARDUINO. Bom, isso se torna mesmo um “domínio” bem interessante quando queremos obter por exemplo: LEDs piscando, motores girando com velocidades constantes, controlando relés, enfim, utilizando o “0V e 5V” da melhor maneira possível para otimizar ou mesmo “incrementar” nosso projeto e(ou) protótipo.
❗ SURGE ENTÃO UMA PERGUNTA!
O que fazer quando queremos enviar para saída, para um pino, terminal, do MCU ATMega328P, uma TENSÃO diferente de 0V ou 5V? 🙄
Infelizmente a resposta é: não é possível utilizando apenas os recursos oferecidos em uma Arduino UNO PCI.
PS: a não ser que venhamos a utilizar um “chip DAC (Digital Analog Conversor) externo ao Microcontrolador.
Na placa Arduino UNO, para realizarmos a “emulação” de “Saídas Analógicas“, poderemos utilizar os pinos: 3, 5, 6, 9, 10 e 11 do MCU ATmega328P da Atmel, pois todos estes 6 pinos, são pinos do tipo PWM.
- OBSERVAÇÃO IMPORTANTE: A Saída PWM tem uma resolução de 8 bits “(2^8-1)”, o que equivale a 256 posições diferentes possíveis na saída.
SKETCH / PROGRAMA PARA HABILITAR E OBSERVAR EMULAÇÃO DE SAÍDA ANALÓGICA NA PLATAFORMA ARDUINO UNO OU SIMILARES ATRAVÉS DE SAÍDA DO TIPO PWM (Largura de Pulso Modulada):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
/* * PROGRAMA: LOOP FOR PARA SUBSTITUIR O "CONHECIDO BLINK" através de SAÍDA PWM - PINO DIGITAL 9 do RODUINO * LED com velocidade de piscadas variáveis (imperceptíveis à visão humana) * "EMULANDO SAÍDAS ANALOGICAS" UTILIZANDO PINO "PWN" DO MCU ATMEGA 328P" * ======================================================================================================= * PINO 09 DO ARDUINO - 328P MCU * AUTOR: RODRIGO COSTA. * 07/06/2017 */ const int LED = 9; //define o LED como pino 9 do Arduino void setup() { pinMode(LED, OUTPUT); //configura o pino do LED como saída //Serial.begin(9600); //setamos o monitor serial para debug } void loop() { // primeiro o LED vai brilhando MAIS for(int i=0; i<256; i++) { analogWrite(LED, i); delay(3); //Serial.println(i); //vamos saber o valor de i no final de cada loop FOR } // segundo o LED vai brilhando MENOS for(int i=255; i>=0; i--) { analogWrite(LED, i); delay(3); //Serial.println(i); //vamos saber o valor de i no final de cada loop FOR } //delay(1000); } |
TODOS OS DETALHES DO PROJETO, O FUNCIONAMENTO, A VISÃO NO OSCILOSCÓPIO, O ESQUEMÁTICO ELETRÔNICO E MUITO MAIS, SEGUE NO VIDEO-TUTORIAL ABAIXO:
GOSTOU?
Foi Útil?
Comenta e Compartilha! 🙂
- Medindo e Monitorando a Temperatura com Arduino (Sensor LM35) - 5 de setembro de 2021
- Controle de Cargas através de Entrada Analógica com Arduino - 30 de agosto de 2021
- REVIEW E DICAS – ALICATE AMPERÍMETRO (UNI-T UT210E PRO) - 28 de agosto de 2021