- Compreendendo o módulo ADC:
- Diagrama de circuito:
- Programando seu MSP430 para ADC:
- Testando seu resultado!
Um recurso comum usado em quase todas as aplicações embarcadas é o módulo ADC (conversor analógico para digital). Esses conversores analógico para digital podem ler a tensão de sensores analógicos como sensor de temperatura, sensor de inclinação, sensor de corrente, sensor Flex e muito mais. Portanto, neste tutorial, aprenderemos como usar ADC no MSP430G2 para ler tensões analógicas usando o IDE Energia. Faremos a interface de um pequeno potenciômetro com a placa MSP e forneceremos uma tensão variável a um pino analógico, leremos a tensão e a exibiremos no Monitor Serial.
Compreendendo o módulo ADC:
Acredite em mim, dificilmente levaria 10 minutos para conectar e programar o MSP430G2 para ler a tensão analógica. Mas, vamos gastar algum tempo para entender o módulo ADC na placa MSP para que possamos usá-lo de forma eficaz em todos os nossos próximos projetos.
Um microcontrolador é um dispositivo digital, o que significa que pode compreender apenas 1 e 0. Mas no mundo real, quase tudo como temperatura, umidade, velocidade do vento, etc. são de natureza analógica. Para interagir com essas mudanças analógicas, o microcontrolador usa um módulo chamado ADC. Existem muitos tipos diferentes de módulos ADC disponíveis, o usado em nosso MSP é o ADC de 10 bits de canal SAR 8.
ADC de aproximação sucessiva (SAR): O ADC SAR funciona com a ajuda de um comparador e algumas conversas lógicas. Este tipo de ADC usa uma tensão de referência (que é variável) e compara a tensão de entrada com a tensão de referência usando um comparador e a diferença, que será uma saída digital, é salva a partir do bit mais significativo (MSB). A velocidade da comparação depende da frequência do relógio (Fosc) na qual o MSP está operando.
Resolução de 10 bits: Este ADC é um ADC de 8 canais e 10 bits. Aqui, o termo 8 canais implica que existem 8 pinos ADC usando os quais podemos medir a tensão analógica. O termo 10 bits implica a resolução do ADC. 10 bits significa 2 elevado à potência de dez (2 10), que é 1024. Este é o número de etapas de amostra para nosso ADC, portanto, a faixa de nossos valores de ADC será de 0 a 1023. O valor aumentará de 0 a 1023 com base no valor da tensão por etapa, que pode ser calculada usando a fórmula abaixo
Nota: Por padrão em Energia, a tensão de referência será definida como Vcc (~ 3v), você pode variar a tensão de referência usando a opção analogReference () .
Verifique também como fazer a interface do ADC com outros microcontroladores:
- Como usar ADC no Arduino Uno?
- Interface do ADC0808 com o microcontrolador 8051
- Usando Módulo ADC do Microcontrolador PIC
- Tutorial do Raspberry Pi ADC
Diagrama de circuito:
Em nosso tutorial anterior, já aprendemos como fazer a interface do LCD com o MSP430G2, agora vamos apenas adicionar um potenciômetro ao MSP430 para fornecer uma tensão variável e exibir o valor da tensão no LCD. Se você não está ciente da interface do LCD, volte ao link acima e leia, pois estarei pulando as informações para evitar o arrependimento. O diagrama de circuito completo do projeto é fornecido abaixo.
Como você pode ver, existem dois potenciômetros usados aqui, um é usado para definir o contraste do LCD enquanto o outro é usado para fornecer uma tensão variável para a placa. Nesse potenciômetro, uma extremidade do potenciômetro é conectada ao Vcc e a outra extremidade é conectada ao aterramento. O pino central (fio azul) é conectado ao pino P1.7. Este pino P1.7 fornecerá uma tensão variável de 0 V (terra) a 3,5 V (Vcc). Portanto, temos que programar o pino P1.7 para ler essa tensão variável e exibi-la no LCD.
Na Energia, precisamos saber a qual canal analógico o pino P1.7 pertence? Isso pode ser encontrado consultando a imagem abaixo
Você pode ver o pino P1.7 no lado direito, este pino pertence a A7 (Canal 7). Da mesma forma, podemos encontrar o respectivo número do canal para outros pinos também. Você pode usar qualquer pino de A0 a A7 para ler tensões analógicas aqui. Selecionei A7.
Programando seu MSP430 para ADC:
Programar seu MSP430 para ler a tensão analógica é muito simples. Neste programa irei ler o analógico do valor e calcular a tensão com aquele valor e depois exibir ambos na tela LCD. O programa completo pode ser encontrado no final desta página, mais abaixo estou explicando o programa em trechos para ajudá-lo a entender melhor.
Começamos definindo os pinos do LCD. Eles definem a qual pino do MSP430 os pinos do LCD são conectados. Você pode referir sua conexão para se certificar de que os pinos estão conectados respectivamente
#define RS 2 #define EN 3 #define D4 4 #define D5 5 #define D6 6 #define D7 7
Em seguida, incluímos o arquivo de cabeçalho para o display LCD. Isso chama a biblioteca que contém o código de como o MSP deve se comunicar com o LCD. Esta biblioteca será instalada no Energia IDE por padrão, então você não precisa se preocupar em adicioná-la. Certifique-se também de que a função Liquid Crystal seja chamada com os nomes dos pinos que acabamos de definir acima.
#incluir
Dentro de nossa função setup () , forneceríamos apenas uma mensagem de introdução a ser exibida na tela LCD. Não estou me aprofundando muito, pois já aprendemos como usar o LCD com o MSP430G2.
lcd.begin (16, 2); // Estamos usando um display LCD 16 * 2 lcd.setCursor (0,0); // Posiciona o cursor na 1ª linha 1ª coluna lcd.print ("MSP430G2553"); // Exibe uma mensagem de introdução lcd.setCursor (0, 1); // define o cursor para a 1ª coluna 2ª linha lcd.print ("- CircuitDigest"); // Exibir uma mensagem de introdução
Finalmente, dentro de nossa função loop infinito () , começamos a ler a tensão fornecida ao pino A7. Como já discutimos, o microcontrolador é um dispositivo digital e não pode ler o nível de tensão diretamente. Usando a técnica SAR, o nível de voltagem é mapeado de 0 a 1024. Esses valores são chamados de valores ADC, para obter este valor ADC basta usar a seguinte linha
int val = analogRead (A7); // leia o valor ADC do pino A7
Aqui, a função analogRead () é usada para ler o valor analógico do pino, especificamos A7 dentro dela, uma vez que conectamos a tensão variável ao pino P1.7. Por fim, salvamos este valor em uma variável chamada “ val ”. O tipo desta variável é inteiro porque obteremos apenas valores variando de 0 a 1024 para serem armazenados nesta variável.
A próxima etapa seria calcular o valor da tensão a partir do valor ADC. Para fazer isso, temos as seguintes fórmulas
Tensão = (Valor ADC / Resolução ADC) * Tensão de Referência
No nosso caso já sabemos que a resolução ADC do nosso microcontrolador é 1024. O valor ADC também se encontra na linha anterior e armazenou a variável chamada val. A tensão de referência é igual à tensão na qual o microcontrolador está operando. Quando a placa MSP430 é alimentada por cabo USB, a tensão de operação é 3,6V. Você também pode medir a tensão de operação usando um multímetro no Vcc e o pino terra na placa. Portanto, a fórmula acima se encaixa em nosso caso, conforme mostrado abaixo
tensão flutuante = (flutuante (val) / 1024) * 3,6; // fórmulas para converter o valor ADC em tensão
Você pode ser confundido com a linha float (val). Isso é usado para converter a variável “val” do tipo de dados int para o tipo de dados “float”. Esta conversão é necessária porque somente se obtivermos o resultado de val / 1024 em float podemos multiplicá-lo por 3.6. Se o valor for recebido em número inteiro será sempre 0 e o resultado também será zero. Depois de calcularmos o valor ADC e a tensão, tudo o que resta é exibir o resultado na tela LCD, o que pode ser feito usando as seguintes linhas
lcd.setCursor (0, 0); // define o cursor para a coluna 0, linha 0 lcd.print ("ADC Val:"); lcd.print (val); // Exibir valor ADC lcd.setCursor (0, 1); // define o cursor para a coluna 0, linha 1 lcd.print ("Voltage:"); lcd.print (voltagem); // Exibir tensão
Aqui, exibimos o valor de ADC na primeira linha e o valor da tensão na segunda linha. Finalmente, damos um atraso de 100 mill segundos e limpamos a tela LCD. Este é o valor que será atualizado a cada 100 mils.
Testando seu resultado!
Finalmente, chegamos à parte divertida, que é testar nosso programa e brincar com ele. Basta fazer as conexões conforme mostrado no diagrama do circuito. Usei uma pequena placa de ensaio para fazer minhas conexões e fios de jumper para conectar a placa de ensaio ao MSP430. Assim que as conexões forem feitas, o meu ficou assim abaixo.
Em seguida, carregue o programa abaixo para a placa MSP430 através do IDE Energia. Você deve ser capaz de ver o texto de introdução no LCD, se não ajustar o contraste do LCD usando o potenciômetro até ver palavras claras. Além disso, tente pressionar o botão de reinicialização. Se as coisas funcionarem como esperado, você verá a tela a seguir.
Agora varie o potenciômetro e você também deverá ver a voltagem exibida no LCD variando. Vamos verificar se estamos medindo a tensão corretamente para fazer isso, use um multímetro para medir a tensão entre o centro do POT e o terra. A tensão exibida no multímetro deve ser próxima ao valor exibido no LCD, conforme mostrado na imagem abaixo.
É isso, aprendemos a medir a tensão analógica usando o ADC da placa MSP430. Agora podemos conectar muitos sensores analógicos com nossa placa para ler parâmetros em tempo real. Espero que você tenha entendido o tutorial e gostado de aprendê-lo. Se tiver algum problema, entre em contato por meio da seção de comentários abaixo ou dos fóruns. Vamos ver outro tutorial do MSP430 com outro novo tópico.