GUSTAVO GARCIA DOS REIS APLICABILIDADE DE MICROCONTROLADORES DA FAMÍLIA STM32 NO CÁLCULO DE PARÂMETROS DE SINAIS ANALÓGICOS

Tamanho: px
Começar a partir da página:

Download "GUSTAVO GARCIA DOS REIS APLICABILIDADE DE MICROCONTROLADORES DA FAMÍLIA STM32 NO CÁLCULO DE PARÂMETROS DE SINAIS ANALÓGICOS"

Transcrição

1 GUSTAVO GARCIA DOS REIS APLICABILIDADE DE MICROCONTROLADORES DA FAMÍLIA STM32 NO CÁLCULO DE PARÂMETROS DE SINAIS ANALÓGICOS Londrina 2011

2 GUSTAVO GARCIA DOS REIS APLICABILIDADE DE MICROCONTROLADORES DA FAMÍLIA STM32 NO CÁLCULO DE PARÂMETROS DE SINAIS ANALÓGICOS Trabalho de Conclusão de Curso apresentado ao Departamento de Engenharia Elétrica da Universidade Estadual de Londrina. Orientador: Prof. Dr. Walter Germanovix. Londrina 2011

3 GUSTAVO GARCIA DOS REIS APLICABILIDADE DE MICROCONTROLADORES DA FAMÍLIA STM32 NO CÁLCULO DE PARÂMETROS DE SINAIS ANALÓGICOS Trabalho de Conclusão de Curso apresentado ao Departamento de Engenharia Elétrica da Universidade Estadual de Londrina. BANCA EXAMINADORA Prof. Dr. Walter Germanovix Dept. de Engenharia Elétrica Orientador Profa. MSc. Juliani Chico Piai Dept. de Engenharia Elétrica Prof. MSc. Osni Vicente Dept. de Engenharia Elétrica Londrina, de de 2011.

4 Dedico este trabalho ao meu pai, mãe e irmã.

5 AGRADECIMENTOS Agradeço aos meus pais, Adelcir Theodoro dos Reis e Lucinéia Garcia dos Reis, pelo esforço incondicional que realizaram para que eu chegasse até aqui. Ao meu avô, Antônio Garcia Filho, e avó, Cezira Vertuan Garcia, pelos exemplos de vida que são, aos quais dedico este trabalho com a mais profunda admiração, respeito e gratidão. Ao meus tios, José Antônio Gazarini e Marilene Garcia Gazarini, pelo apoio na contribuição da minha formação profissional. Ao meu orientador, Prof. Dr. Walter Germanovix, pela compreensão, dedicação, capacidade de orientação e incentivo. Ao meu professor Décio Luiz Gazzoni Filho cujas notas de aula e parte do projeto de sua disciplina foram utilizadas no desenvolvimento deste trabalho. em mim. Aos meus familiares e amigos, pela confiança que depositaram E aos meu colegas de curso, Edivaldo Gomes Junior e Raul Ambrozio Valente Neto, que contribuiram para o avanço deste trabalho. iv

6 v A mente que se abre a uma nova idéia jamais voltará ao seu tamanho original. (Albert Einstein)

7 REIS, Gustavo Garcia. Aplicabilidade de microcontroladores da família STM32 no cálculo de parâmetros de sinais analógicos páginas. Trabalho de Conclusão de Curso (Graduação em Engenharia Elétrica) Universidade Estadual de Londrina, Londrina, RESUMO O projeto de sistemas eletrônicos embarcados teve um crescente aumento devido ao melhor desempenho obtido, à evolução dos processos de fabricação de semicondutores, que tem permitido integrar um maior número de transistores em uma pequena pastilha de silício, e à considerável queda do custo de microcontroladores. Este trabalho desenvolve uma metodologia para o uso de microcontroladores no cálculo de freqüência, razão cíclica e amplitude de sinais elétricos, sendo estes parâmetros variáveis pelo usuário. Para isso, é feito um comparativo dos circuitos típicos geradores de funções utilizando amplificadores operacionais, com a nova geração de circuitos integrados que perfazem essa função. O microcontrolador utilizado é o STM32F103RB (da ST Microelectronics) com núcleo ARM Cortex-M3. Este é responsável por calcular a freqüência, razão cíclica e amplitude dos sinais, além de fornecer tais valores em quatro displays de sete segmentos. De um lado, projeta-se o circuito eletrônico no qual o microcontrolador está inserido, e do outro se escreve um software que interfaceia com este hardware por meio de periféricos do microcontrolador. Palavras-chave: GPIOs. Temporizador. Conversor A/D. vi

8 REIS, Gustavo Garcia. Aplicability of STM32 microcontroller in the calculation of parameters of analog signals páginas. Trabalho de Conclusão de Curso (Graduação em Engenharia Elétrica) Universidade Estadual de Londrina, Londrina, ABSTRACT The design of embedded electronic systems had an increasing because of better performance obtained, the evolution of semiconductor manufacturing processes that has allowed to include increasing amounts of transistors on a small silicon wafer, and the considerable drop in the cost of microcontrollers. This paper develops a methodology for the use of microcontrollers in the calculation of frequency, duty cycle and amplitude of electrical signals, which are variable parameters by the user. For this, a comparison is made of typical circuits function generators using operational amplifiers, with the new generation of integrated circuits that perform this function. The microcontroller used is the STM32F103RB (ST Microelectronics) with ARM Cortex-M3 core. This is responsible for calculating the frequency, duty cycle and amplitude of the signals and provides these values in four seven-segment displays. On the one hand, the electronic circuit is designed to insert the microcontroller, and the other a software is written to interface with this hardware through the microcontroller peripherals. Key words: GPIOs. Timer. Conversor A/D. vii

9 LISTA DE FIGURAS Figura 2.1 Estrutura básica de uma porta de GPIO Figura 2.2 Diagrama de blocos do periférico DMA Figura 2.3 Diagrama de temporização do contador com mudança de divisão do prescaler de 1 para Figura 2.4 Diagrama de temporização do contador com mudança de divisão do prescaler de 1 para Figura 2.5 Diagrama de temporização do contador para cima, clock interno dividido por Figura 2.6 Diagrama de temporização do contador para baixo, clock interno dividido por Figura 2.7 Diagrama de temporização do contador (modo center-aligned), clock interno dividido por 1, TIMxARR = 0x Figura 2.8 Estágio de entrada do temporizador Figura 2.9 Circuito principal do temporizador Figura 2.10 Estágio de saída do temporizador Figura 2.11 Contagem do timer para cálculo da razão cíclica Figura 2.12 Modo de comparação de saída do temporizador Figura 2.13 Operação do periférico de comparação de saída em modo PWM Figura 2.14 Bloco de entrada do conversor A/D Figura 2.15 Tela inicial do Rowley Crossworks Figura 2.16 O programador JTAG Olimex ARM-USB-TINY Figura 3.1 Gerador de ondas quadrada e triangular com Amp Op LM Figura 3.2 Saídas V 0 e V 0 do circuito gerador de funções que correspondem às ondas quadradas e triangular, respectivamente Figura 3.3 Circuito gerador de ondas utilizando CI XR Figura 3.4 R versus freqüência de oscilação Figura 3.5 Tensão de saída como uma função do resistor R 3 colocado no pino Figura 3.6 Diagrama de blocos do CI XR Figura 3.7 CI XR Tabela 3.2 Descrição dos pinos do CI XR Figura 3.8 Circuito atenuador utilizando o CI LM324 com realimentação negativa.38 Figura 3.9 Kit de desenvolvimento Olimex STM32-P Figura 3.10 Fluxograma descrevendo metodologia para o cálculo de freqüência e razão cíclica Figura 3.11 Detector de pico Figura 3.12 Configurações do microcontrolador para o cálculo da amplitude do sinal Figura 4.1 Sinais de saída V 0 (onda quadrada) e V 0 (onda triangular) referentes ao circuito da Figura Figura 4.2 Tensão pico a pico do sinal triangular Figura 4.3 Variação da razão cíclica da onda quadrada Figura 4.4 Sinal de saída quadrado em baixa freqüência Figura 4.5 Sinal de saída quadrado em freqüência maior Figura 4.6 Sinal de saída senoidal com freqüência e amplitude pequenas Figura 4.7 Sinal de saída senoidal com freqüência e amplitude maiores Figura 4.8 Sinal de saída triangular com freqüência e amplitude baixas Figura 4.9 Sinal de saída triangular com freqüência e amplitude maiores viii

10 Figura 4.10 Sinal de saída do circuito atenuador comparado ao sinal de entrada. 60 Figura 4.11 Valor de freqüência calculado pelo microcontrolador Figura 4.12 Outro valor de freqüência calculado pelo microcontrolador Figura 4.13 Razão Cíclica de 50,39% Figura 4.14 Razão Cíclica de 70,07% Figura 4.15 Detecção de pico do sinal quadrado gerado pelo circuito da Fig Figura 4.16 Tensão de pico do sinal quadrado Figura 4.17 Tensão de pico do sinal senoidal Figura 4.18 Tensão de pico do sinal triangular Figura 4.19 Amplitude da onda senoidal de 0,087V Figura 4.20 Amplitude da onda senoidal de 1,443V Figura 4.21 Amplitude da onda senoidal de 2,627V Figura A.1 Distribuição dos periféricos pelos canais do DMA Figura B.1 Distribuição dos periféricos pelos canais do DMA Figura C.1 Diagrama de blocos do periférico USART Figura D.1 Canal de captura / comparação do periférico temporizador Figura E.1 Diagrama de blocos do conversor A/D Figura H.1 Exemplo de montagem com 4 displays de sete segmentos Figura H.2 Diagrama da placa de multiplexação de 4 displays de 7 segmentos ix

11 LISTA DE TABELAS Tabela 2.1 Configuração dos GPIOs Tabela 2.2 Configuração da velocidade máxima dos GPIOs Tabela 2.3 Resistência de entrada externa máxima para freqüência do conversor igual a 14MHz Tabela 3.1 Faixa de freqüência versus capacitor C Tabela 3.2 Descrição dos pinos do CI XR Tabela 4.1 Capacitor de temporização versus freqüência mínima Tabela 4.2 Faixas de freqüências em função do capacitor de temporização Tabela 4.3 Amplitude dos sinais senoidal e triangular x

12 SUMÁRIO LISTA DE FIGURAS... VIII LISTA DE TABELAS... X 1 INTRODUÇÃO FUNDAMENTAÇÃO TEÓRICA GPIOS (GENERAL PURPOSE INPUT/OUTPUT) INTERRUPÇÕES DMA (DIRECT MEMORY ACCESS) USART (UNIVERSAL SYNCHRONOUS/ASYNCHRONOUS RECEIVER/TRANSMITTER) Taxa de Transmissão Paridade Controle de Fluxo Periférico USART Estilo de Programação TEMPORIZADORES (TIMERS) Geração de Interrupções Canais de Captura de Entrada e Comparação de Saída CONVERSOR A/D Clock do Conversor A/D Tempo de Conversão Acionamento Externo AMBIENTE DE DESENVOLVIMENTO BIBLIOTECA DE FIRMWARE PARA A FAMÍLIA STM32 FORNECIDA PELA ST MICROELECTRONICS O PROGRAMADOR JTAG OLIMEX ARM-USB-TINY DESENVOLVIMENTO PRÁTICO GERADORES DE SINAIS DE FREQÜÊNCIA E RAZÃO CÍCLICA VARIÁVEIS GERADOR DE FUNÇÕES UTILIZANDO O CIRCUITO INTEGRADO XR CIRCUITO ATENUADOR UTILIZANDO AMP OP O KIT DE DESENVOLVIMENTO OLIMEX STM32-P Programação do Microcontrolador para Cálculo da Freqüência Programação do Microcontrolador para Cálculo da Razão Cíclica Programação do Microcontrolador para Cálculo da Amplitude Programação dos GPIOs para o Funcionamento do Display RESULTADOS E DISCUSSÃO CIRCUITO GERADOR DE SINAIS UTILIZANDO AMP OP CIRCUITO GERADOR DE SINAIS UTILIZANDO O CI XR CIRCUITO ATENUADOR UTILIZANDO AMP OP ANÁLISE E LEITURA DOS RESULTADOS DE FREQÜÊNCIA ANÁLISE E LEITURA DOS RESULTADOS DE RAZÃO CÍCLICA xi

13 4.6 CIRCUITO DETECTOR DE PICO UTILIZANDO AMP OP ANÁLISE E LEITURA DOS RESULTADOS DE AMPLITUDE CONCLUSÃO TRABALHOS FUTUROS REFERÊNCIAS ANEXOS xii

14 1 1 INTRODUÇÃO O projeto de sistemas microprocessados ganha, a cada dia, um espaço maior na área de Microeletrônica. Um sistema eletrônico embarcado consiste em um sistema microprocessado no qual o computador é completamente encapsulado ou dedicado ao dispositivo que ele controla e realiza um conjunto de tarefas predefinidas, geralmente com propósitos específicos. Além disso, o sistema embarcado encontra-se no limiar entre o projeto de sistemas eletrônicos e computacionais. Dessa forma, pode-se dizer que o projeto de sistemas eletrônicos embarcados é uma combinação de ambos, ou seja, de um lado projeta-se o circuito eletrônico no qual o microprocessador está inserido, e do outro se escreve um software que interfaceia com este hardware por meio de periféricos do microcontrolador. Como o sistema é dedicado a tarefas específicas, pode-se otimizar o projeto reduzindo tamanho, recursos computacionais, custo do produto, dentre outros. O uso de microprocessadores justifica-se pela facilitação que pode trazer no desenvolvimento de um projeto, uma vez que o projeto de sistemas analógicos de alto desempenho pode tornar-se uma tarefa bastante complexa, enquanto o desenvolvimento da parte analógica de um sistema de sinal misto é bem mais simples e atinge um melhor desempenho. A evolução dos processos de fabricação dos semicondutores e a queda de custo de um componente eletrônico também são fatores extremamente importantes que favoreceram o maior uso de microcontroladores. O primeiro permitiu integrar grandes quantidades de transistores em uma pequena pastilha de silício e o segundo decorre de os fatores que determinam o preço de um componente eletrônico (desenvolvimento, encapsulamento, transporte, marketing, etc.) não evoluírem da mesma maneira. Assim, circuitos digitais usando portas lógicas não conseguem competir, exceto nas aplicações mais simples (5 10 portas lógicas). Por fim, deve-se acrescentar o fato de que o uso de microprocessadores permite expansão e reprogramação do sistema, oferecendo maior flexibilidade ao projetista. O objetivo geral do trabalho é a implementação de um circuito analógico que fornece ondas quadradas e outras (basicamente um gerador de

15 2 funções), em que o sinal pode ser variado pelo usuário em função da freqüência, razão cíclica e amplitude. Posteriormente, será utilizado um microprocessador da família STM32, mais especificamente o STM32F103RB, que fará o cálculo da freqüência, razão cíclica e amplitude do sinal e, em seguida, tais valores serão amostrados em quatro displays de sete segmentos. Esta monografia contém além da introdução, mais 4 capítulos que podem ser assim resumidos. No segundo capítulo são descritas as principais características do microcontrolador utilizado, bem como seus principais periféricos, dando destaque para os GPIOs, Timer e Conversor A/D. Além disso, é apresentado o software utilizado para a programação do sistema implementado. O terceiro capítulo é dividido em três partes. A primeira delas descreve o circuito analógico, composto pelo circuito gerador de sinais elétricos, atenuador e detector de pico. A segunda descreve a programação do microcontrolador para processamento do sinal. A terceira e última descreve a programação do microcontrolador para a amostragem de valores no display. Já no quarto capítulo, é apresentado o problema e os resultados que validam o funcionamento do sistema implementado. No quinto e último capítulo é apresentado um resumo da conclusão do trabalho e também as perspectivas para novos projetos.

16 3 2 FUNDAMENTAÇÃO TEÓRICA O microprocessador utilizado no desenvolvimento prático do projeto pertence à família STM32, da ST Microelectronics, cujo núcleo, o Cortex-M3, foi projetado pela ARM. O conjunto de instruções utilizadas denomina-se Thumb-2, que alia desempenho de um processador de 32 bits com tamanho de código próximo ao de microcontroladores de 8 bits. Existem duas séries disponíveis, e uma delas, a STM32F1xx foi a primeira a ser lançada no mercado e atinge freqüências de clock de até 72MHz. A linha que será usada denomina-se Performance line (STM32F103xx). O kit de desenvolvimento (Olimex STM32-P103) disponível no laboratório é baseado nessa linha, mais especificamente, o STM32F103RB, que possui encapsulamento de 64 pinos, memória flash de 128KB e 20KB de memória RAM. Os periféricos do microcontrolador realizam diferentes tarefas e é por meio deles que o firmware interfaceia com o circuito eletrônico. A seguir, serão abordados os principais periféricos desse microcontrolador e os principais conceitos que contribuíram para o desenvolvimento do projeto. 2.1 GPIOS (GENERAL PURPOSE INPUT/OUTPUT) São os pinos do microcontrolador responsáveis pela sua interação com o circuito no qual está inserido. Podem ser programados como pinos de saída, ou seja, podem gerar sinais por meio de programação em software, ou podem ler sinais digitais presentes nos pinos. No caso do trabalho desenvolvido, um pino disponível será programado como entrada, uma vez que o sinal será fornecido por um circuito elétrico externo. Alguns deles não estão disponíveis, pois são de uso exclusivo do microcontrolador como, por exemplo, alimentação, conexão de cristais para geração de clock, dentre outras funções específicas (ROAD, 2008). Os pinos estão dispostos em 7 portas diferentes (GPIOA, GPIOB,..., GPIOG), sendo que cada uma destas possuem no máximo 16 pinos. Tais pinos são declarados por uma notação especificada pelo fabricante com formato Pxy, em que x indica qual porta (A até G) e y o número do pino correspondente que varia de 0 a 15. Porém, tal notação especifica apenas o nome lógico do pino para efeito de programação, sendo que o pino físico correspondente do encapsulamento pode

17 4 ser outro e varia dependendo do encapsulamento. Mesmo assim, se o projetista migrar de um encapsulamento de 64 pinos para um de 100 pinos e mantiver o sinal conectado à porta lógica de mesma denominação do anterior, o firmware provavelmente funcionará da mesma forma. Cada porta (de A a G) corresponde a um periférico diferente. Devido a esse fato, elas devem ser inicializadas independentemente das outras. Por exemplo, a habilitação de clock de uma porta não habilita as demais. Com isso, é possível reduzir o consumo de energia pelo microcontrolador, uma vez que o programador habilita apenas as portas das quais fará uso. A estrutura básica de uma porta de GPIO é mostrada na Figura 2.1. Figura 2.1 Estrutura básica de uma porta de GPIO. Observando-se o circuito, pode-se notar a presença de dois diodos na entrada do periférico. Eles servem de proteção contra sub e sobre-tensão. As portas podem ser configuradas como entrada (analógica ou digital com ou sem pull-up / pull-down) ou saída (tipo push-pull, dreno aberto ou alternate function, para uso com outros periféricos). Assim como nos demais periféricos do STM32, as configurações dos GPIOs são feitas por meio de registradores (ST Microelectronics, 2011): GPIOx_CRL: Port Configuration Register Low;

18 5 GPIOx_CRH: Port Configuration Register High; GPIOx_IDR: Port Input Data Register; GPIOx_ODR: Port Output Data Register; GPIOx_BSRR: Port Bit Set/Reset Register; GPIOx_BRR: Port Bit Reset Register; GPIOx_LCKR: Port Configuration Lock Register. As Tabelas 2.1 e 2.2 indicam como configurar os GPIOs. Tabela 2.1 Configuração dos GPIOs. Modos de configuração Configuração 1 Configuração 0 Modo 1 Modo 0 Registrador PxODR Entrada Push-pull 0 0 ou 1 de Dreno 0 propósito aberto ou 1 geral Entrada Push-pull X Alternate Function Dreno aberto 1 1 X Analógica 0 0 X Floating 1 00 X Entrada Pull-down Pull-up 1 Tabela 2.2 Configuração da velocidade máxima dos GPIOs. Modo [1:0] Significado 00 Reservado 01 Máx. velocidade de saída igual a 10MHz 10 Máx. velocidade de saída igual a 2MHz 11 Máx. velocidade de saída igual a 50MHz 2.2 INTERRUPÇÕES Existe um estilo de programação conhecido como polling em que o programador deve verificar a ocorrência de uma mudança num sinal do pino de entrada do microprocessador. Para isso, o programador deve verificar a ocorrência

19 6 destes eventos num ponto de sua escolha do fluxo de execução. Porém, esse estilo nem sempre é eficiente no tratamento de eventos. Ao invés do microcontrolador estar sempre verificando a ocorrência de um evento, é preferível que a ocorrência do evento cause a chamada de uma função pelo hardware para o seu tratamento. Esse conceito denomina-se interrupção, que interrompe o fluxo normal de execução de um programa, para tratamento de um evento assíncrono. Este pode ser a mudança do status de um pino, o término de uma transferência de dados (por DMA ou por um periférico de comunicação), o término da contagem de um temporizador, etc. Caso o programador opte por não usar interrupção, o laço principal deverá conter dezenas ou centenas de verificações de eventos, que gastam tempo de processamento e energia. Pelo exposto conclui-se que o uso de interrupção é uma forma viável para o tratamento de eventos assíncronos. Entretanto, o programador deve atentar para o fato de que a execução do código pode ser interrompida a qualquer momento, quando ela é desviada para a função de tratamento de interrupção, e isso pode acarretar em alguns problemas de sincronização. Outra questão que merece destaque está relacionada à temporização. Quando ocorre uma interrupção, a função de tratamento é chamada e bloqueia a chamada de outras interrupções (a menos que se implemente um esquema de prioridade) até que se complete o tratamento. Muitas vezes as interrupções são sensíveis ao tempo de tratamento (sistemas dessa classe são chamados de tempo real). Assim, é importante minimizar a quantidade de processamento realizada dentro de uma interrupção. No STM32, o uso de interrupções tem dois componentes: um genérico e um específico por periférico. O componente genérico corresponde ao registro de uma função de tratamento de uma interrupção e a habilitação desta interrupção. Para isso, usam-se as funções da biblioteca com prefixo NVIC para esta função. O componente específico varia de um periférico para outro, exigindo a configuração dos registradores específicos daquele periférico para habilitar a geração de interrupções. No periférico GPIO, por exemplo, a geração de interrupções é feita por meio de outro periférico, chamado EXTI.

20 7 2.3 DMA (DIRECT MEMORY ACCESS) É um periférico do microcontrolador usado para a transferência de grandes quantidades de dados em alta velocidade e de maneira eficiente. Tal função é realizada por um hardware dedicado, pois o gerenciamento de transferências desta velocidade tomaria um tempo considerável do microprocessador. Assim, o microprocessador delega as tarefas de transferência de dados para este hardware, ficando livre para tarefas mais complexas. Conversão de dados (A/D e D/A), caso sejam realizadas em altas freqüências, podem ser consideravelmente beneficiadas por um dispositivo DMA. Os microcontroladores da família STM32 possuem dois controladores de DMA independentes, DMA1 (7canais) e DMA2 (5 canais), num total de 12 canais de DMA independentes. Então, é possível configurar até 12 transferências distintas de DMA que podem ser acionadas por eventos de hardware, ou iniciadas por software (para transferência de memória para memória) (ST Microelectronics, 2011). Dentro de um mesmo controlador de DMA (DMA1 ou DMA2), há quatro níveis de prioridade configurados em software. Se houver mais de uma transferência com o mesmo nível de prioridade, há uma resolução por níveis prédeterminados em hardware (são priorizados os canais de índice mais baixo). Antes da transferência, é necessário configurar entre fonte e destino, o tamanho da transferência em si. Esta pode ocorrer de 8 em 8, 16 em 16 ou 32 em 32 bits. Além disso, é preciso configurar a fonte e o destino. A transferência pode ocorrer de periférico para memória, memória para periférico, periférico para periférico e memória para memória. A memória flash, SRAM, e os periféricos dos barramentos APB1, APB2 e AHB podem ser configurados como fonte ou destino. O diagrama de blocos mostrado na Figura 2.2 apresenta mais claramente o periférico DMA.

21 8 Figura 2.2 Diagrama de blocos do periférico DMA. Nos Anexos A e B é mostrada a distribuição de periféricos pelos canais de DMA. Por último, é importante descrever de forma genérica, a seqüência de inicialização do DMA (ST Microelectronics, 2011): 1. Habilitar o clock do controlador de DMA; 2. Configurar o endereço do periférico que aciona a transferência (registrador DMA_CPAR; também pode ser um endereço de memória comum); 3. Configurar o endereço da memória (registrador DMA_CMAR; também pode ser um endereço de periférico); 4. Configurar a quantidade de transferências a executar (registrador DMA_CNDTR);

22 9 5. Configurar a prioridade de transferência (bits PL[1:0] do registrador DMA_CCR); 6. Configurar a direção de transferência, modo buffer circular, incremento de endereço, tamanhos de dados e interrupções no registrador DMA CCR; 7. Habilitar o canal do DMA (bit ENABLE do registrador DMA_CCR). 2.4 USART (UNIVERSAL SYNCHRONOUS/ASYNCHRONOUS RECEIVER/TRANSMITTER) É um periférico utilizado para comunicação com PCs. O protocolo que será utilizado e que se mostra bastante simples é o padrão RS-232, utilizado em portas seriais. Mesmo que as portas seriais não sejam mais o padrão nos novos computadores, existem placas de expansão com portas seriais e paralelas, além de adaptadores de USB ou Ethernet para serial, na forma de aparelhos prontos ou CIs que podem ser incorporados a um projeto eletrônico. No RS-232, a comunicação é simplesmente um fluxo de bytes. Tal padrão especifica, basicamente, questões mecânicas (conectores, pinagem, etc.) e de sinalização elétrica, mas nada é dito sobre como estruturar os dados que trafegam pela linha. Dessa forma, o usuário pode definir o formato de comunicação, e a programação se torna bastante simples. Porém, alguns recursos como detecção de erros de transmissão, reenvio de pacotes, etc. devem ser implementados pelo usuário. Como a transmissão de dados no padrão RS-232 é feita de maneira serial, apenas um bit é transferido por vez. Entretanto, existem linhas separadas para transmissão e recepção de dados, tornando possível a comunicação fullduplex, em que um dispositivo pode transmitir e receber dados ao mesmo tempo. Os sinais transmitidos são digitais, onde um nível lógico 0 é representado por uma tensão positiva de +3 a +15V, enquanto um nível lógico 1 é representado por uma tensão negativa de -3 a -15V. Atualmente tais níveis de tensão, e o uso de tensões negativas caíram em desuso. Como solução, usa-se conversores de níveis de tensão como o MAX232, que internamente possuem charge pumps para gerar os níveis de tensão especificados pelo padrão (por exemplo, ±12V).

23 10 Outra questão que deve ser levada em conta é o fato de o padrão RS-232 é assíncrono, ou seja, não há um sinal de clock para a sincronização entre as duas pontas da comunicação. Por isso, são utilizados bits de início e de parada (start e stop bits). O conjunto de bits de início, parada e dados propriamente ditos é conhecido como frame (quadro). O bit de início é sempre 0, e o bit de parada é sempre 1. Assim sempre ocorrerá uma transição de 1 para 0 entre um frame e outro. Porém, além disso, é necessário especificar a mesma taxa de transmissão nas duas pontas que irão se comunicar Taxa de Transmissão Para comunicação entre dispositivos locais, a taxa de bps é bastante utilizada, pois é fácil de ser atingida mesmo por cabos mais longos ou de baixa qualidade. Porém, taxas de , e até bps não são difíceis de ser encontradas. Deve-se observar que esta taxa de transmissão inclui os bits de início e de parada. Na configuração mais simples possível, cada quadro contém um bit de início, um bit de parada e 8 bits de dados. Sendo assim, para cada 8 bits de dados que se deseja transmitir, é necessário enviar um total de 10 bits. A taxa de transmissão em bytes por segundo é dado então por 1/10 da taxa em bps, mas esta relação pode variar em função do número de bits de dados e bits de parada, além da questão da paridade Paridade O bit de paridade é uma forma de implementar a detecção de erros de transmissão. A paridade pode ser par ou ímpar. Para a sua implementação, um bit é adicionado ao quadro transmitido, de forma que o XOR de todos os bits do quadro seja igual a 1 (paridade ímpar) ou 0 (paridade par). Na outra ponta da comunicação, deve-se verificar se foi obtida a paridade esperada, descartando-se o quadro recebido em caso negativo (TOCCI, 2000).

24 11 muito longos. Este recurso mostra-se útil para altas taxas de transmissão ou cabos Controle de Fluxo Em muitos casos, o buffer de recepção é de um único byte. Isso significa que há um curto espaço de tempo para que o dado seja descarregado do buffer, antes que outro seja recebido. Para evitar a perda de dados são utilizados interrupções ou DMA. Existem CIs de comunicação serial mais avançados que possuem buffer do tipo FIFO (First In, First Out) de 16, 32, 64 ou até mais bytes. Contudo, para taxas de transmissão muito altas, os buffers podem não ser esvaziados a tempo de evitar a perda de bytes. Como solução para o problema descrito, pinos extras de sinalização são utilizados para controle de fluxo. No padrão RS-232, o controle de fluxo é implementado por meio de duas linhas, que são chamadas CTS (Clear To Send) e RTS (Request To Send). A linha CTS indica que o dispositivo está preparado para receber dados (buffers livres), enquanto a linha RTS indica que o dispositivo deseja transmitir dados. A transmissão só ocorrerá se ambas as linhas estiver em nível lógico 0, indicando que tanto o dispositivo que realiza a transmissão quanto o que realiza a recepção estão prontos para transmitir e receber, respectivamente. Caso o dispositivo que está recebendo estiver sobrecarregado, com buffers quase cheios, ele pode indicar (subindo o estado da linha CTS) que a transmissão deve ser interrompida, pois os dados poderão ser perdidos Periférico USART É um tipo de CI usado para interface com portas seriais e que suporta comunicação síncrona (com o pino de clock) e assíncrona. O STM32 possui até 3 USARTs. É este o periférico que permite implementar o padrão RS-232. Nele podem ser configurados a taxa de transmissão, número de bits de dados, bits de parada e a presença do bit de paridade.

25 12 A integração com o sistema de DMA, presente no periférico, é praticamente essencial para operação em altas taxas de transmissão. Outra questão importante são as interrupções, que podem ser geradas para diversos eventos desse periférico como: fim da transmissão de um byte, recepção de um byte, mudança na linha CTS, além de uma série de erros. A operação por polling pode ser utilizada para a amostragem dos registradores de status. No Anexo C é mostrado o diagrama de blocos do periférico USART. Quanto à programação do periférico, deve-se chamar a atenção para quatro classes de registradores (ST Microelectronics, 2011): Status (USART_SR): permite verificar (geralmente em modo polling) uma série de flags; Dados (USART_DR): onde é passado o bit a ser transmitido, ou onde se encontra o bit recebido; Taxa de transmissão (USART_BRR): para configuração da taxa de transmissão; Configuração (USART_CRx): para outras configurações como interrupções, número de bits de parada e dados, paridade, controle de fluxo, etc Estilo de Programação Existem três estilos de programação que podem ser usados com este periférico: polling, interrupção e DMA. No estilo polling, o firmware deve realizar uma amostragem periódica do registrador de status da USART para decidir quando enviar um novo caractere, quando ler o caractere recebido, verificar condições de erro, etc. Porém, ele se mostra pouco eficiente em termos de consumo de energia e tempo de processamento. Além disso, para altas taxas de transmissão, pode ocorrer a perda de dados. Nesse caso, é aconselhável o uso de interrupções, já que o processador pode dar atenção aos eventos assim que ocorrem. O uso do estilo polling é aconselhável em aplicações que recebem pequenas quantidades de dados, já que as freqüentes interrupções podem

26 13 prejudicar outras tarefas que também exigem um controle preciso do tempo. Vale lembrar que um congestionamento de interrupções ocasiona jitter. Para aplicações em que a comunicação ocorre de forma contínua, justifica-se a complexidade do uso do controlador de DMA. Através dele, simula-se um buffer maior para o periférico da USART, que é de apenas um byte. Com isso, o hardware gerencia a transferência da USART para o buffer, garantindo que ocorrerão em tempo, e sem interromper o processador. Pode-se então usar uma técnica de polling ou interrupção para monitoramento do buffer-alvo do DMA, com a vantagem que não será necessário acessá-lo com tanta freqüência. 2.5 TEMPORIZADORES (TIMERS) A utilização de temporizadores surge da necessidade de medir períodos de tempo em aplicações que exigem um controle preciso de tempo ou com certa exatidão. Um exemplo típico é a conversão A/D e D/A de sinais, em que variações na temporização podem degradar consideravelmente a qualidade do sinal. A geração de sinais numa freqüência especificada também exige uma contagem precisa de tempo. Em fontes chaveadas e controle de motores, pode ser necessário também especificar a razão cíclica da onda com precisão. Para que fossem alcançados os resultados esperados no desenvolvimento do projeto proposto, o temporizador foi um dos periféricos de maior utilidade, pois era necessário medir a freqüência e a razão cíclica do sinal quadrado gerado pelo circuito externo. Apesar das variações de recursos de um periférico para outro, o coração de um temporizador é um contador. Como já foi dito anteriormente, o microcontrolador utilizado possui uma freqüência de clock de 72 MHz, contudo, através de divisores programáveis de tempo, conhecidos também como prescalers, a freqüência interna pode ser variada dependendo da necessidade da aplicação. Segundo notas de aula da disciplina de Microprocessadores (2011), o estouro (overflow) da contagem do temporizador pode gerar eventos, como interrupções, que permitem o tratamento de eventos em instantes de tempo prédeterminados. Para aplicações que tolerem um pouco de jitter, é possível fazer polling do contador aguardando seu estouro.

27 14 Vale lembrar também que os microprocessadores da família STM32 possuem recursos de captura de entrada (input capture) que permite a medição de freqüência e largura de pulso (razão cíclica de sinais), e comparação de saída (output capture), em que o próprio microcontrolador gera sinais com freqüências e razão cíclica (sinais PWM) programados (ST Microelectronics, 2011). Os microcontroladores da família STM32 podem ser configurados com até 14 temporizadores diferentes. Existem três tipos diferentes de temporizadores (ST Microelectronics, 2011): Temporizador de controle avançado (TIM1/TIM8); Temporizador básico (TIM6/TIM7); Temporizador de propósito geral (os demais); Porém, nem todos os modelos dessa família dispõem de todos estes temporizadores. Destacam-se no decorrer do desenvolvimento do projeto os temporizadores de propósitos geral. Eles possuem quatro canais de captura de entrada e comparação de saída. Como permitem o uso de clocks externos, os temporizadores funcionam como contadores, ou triggers internos, o que permite o cascateamento de temporizadores. Interrupções e triggers de DMA também podem ser gerados pelos recursos de captura de entrada e comparação de saída. Para um melhor entendimento do princípio de funcionamento do temporizador são necessários os seguintes esclarecimentos: o bloco básico é a unidade de base de tempo que é composta pelo contador em si, o temporizador e o registrador de auto-recarga. Primeiramente, deve-se programar a freqüência de contagem. O clock interno se trata da linha TIMxCLK presente na árvore de clock do microcontrolador e, supondo a configuração padrão, o clock do temporizador terá a mesma freqüência do clock do microcontrolador. Mas conforme dito anteriormente, pode-se programar o prescaler do temporizador para se chegar à freqüência de contagem desejada. O prescaler é um registrador de 16 bits, onde um valor n corresponde a uma divisão do clock por n+1. Por exemplo, se o prescaler for igual a 71, significa que a freqüência interna de 72MHz será divida por 72 (71+1), que

28 15 equivale a uma freqüência de saída de 1MHz. Assim, é possível gerar sinais de saída com diferentes valores de freqüência através de programação em software. As Figuras 2.3 e 2.4 mostram o efeito da mudança do prescaler sobre a freqüência de contagem. Nota-se que a atualização do prescaler tem efeito no próximo evento de atualização (ST Microelectronics, 2011). Figura 2.3 Diagrama de temporização do contador com mudança de divisão do prescaler de 1 para 2.

29 16 Figura 2.4 Diagrama de temporização do contador com mudança de divisão do prescaler de 1 para 4. O contador pode contar para cima (incremento), para baixo (decremento) ou alternar entre os dois modos. No primeiro caso, o contador inicia a contagem em 0 e conta até o valor de auto-recarga. Quando este valor é atingido, o contador é zerado, e gera-se um evento de estouro de contagem (ST Microelectronics, 2011), conforme é mostrado na Figura 2.5.

30 17 Figura 2.5 Diagrama de temporização do contador para cima, clock interno dividido por 1. No segundo caso, o contador parte do valor de auto-recarga e conta até zero, quando o valor de auto-recarga é recarregado no contador, e um evento de estouro de contagem é gerado (ST Microelectronics, 2011), conforme pode ser observado na Figura 2.6. Figura 2.6 Diagrama de temporização do contador para baixo, clock interno dividido por 1. No terceiro e último caso, conhecido com modo Center-aligned, a contagem é alternada para cima e para baixo. Neste modo, o contador conta de zero até o valor de auto-recarga, quando gera um evento de estouro. Em seguida,

31 18 começa a contar para baixo até zero, gerando outro evento de estouro, e começa novamente (ST Microelectronics, 2011). A Figura 2.7 ilustra o que foi explicado. Figura 2.7 Diagrama de temporização do contador (modo center-aligned), clock interno dividido por 1, TIMxARR = 0x Geração de Interrupções A geração de interrupções acontece quando ocorre um evento de estouro de contagem e pode ser de extrema utilidade para a execução de eventos de sinais periódicos e para a geração de sinais de baixa ou até média freqüência (algumas dezenas de khz). Para freqüências maiores, haverá um gasto de tempo excessivo no tratamento da interrupção, além da possibilidade de haver jitter. Este fenômeno ocorre quando um evento é detectado, enquanto outro ainda está sendo tratado na rotina de interrupção. Isto pode atribuir falsos valores às variáveis que serão utilizadas no cálculo de freqüência e razão cíclica, ou seja, parâmetros que necessitam de um controle preciso de tempo. Portanto, para a geração ou leitura de sinais de freqüências maiores é necessário utilizar os recursos de comparação de saída, explicados na seção abaixo.

32 Canais de Captura de Entrada e Comparação de Saída São úteis tanto para geração quanto para leitura de sinais elétricos em termos de freqüência e razão cíclica (ou largura de pulso). Ao se utilizar apenas funções básicas do temporizador, é possível sinalizar ao processador (por exemplo através de uma interrupção) que ocorreu um evento no temporizador (por exemplo estouro de contagem). A partir disso, o processador interrompe o que está executando para ler ou gerar sinais. Porém, além da possibilidade de ocorrência do jitter, esta abordagem mostra-se um tanto quanto ineficiente se comparada ao uso dos canais de captura/comparação do timer. Através dos canais de captura e comparação é possível ler ou gerar sinais elétricos diretamente no periférico, independentemente do processador. Isso porque esses canais fornecem uma interface direta entre o temporizador e certas portas do GPIO. O Anexo D mostra como o canal de captura / comparação está inserido no periférico temporizador. No diagrama, os pontos TIMx_CH1, TIMx_CH2, TIMx_CH3 e TIMx_CH4 são pinos do GPIO que podem ser programados para serem usados em aplicações que utilizam o temporizador (ST Microelectronics, 2011). Para melhor visualização, as Figuras 2.8, 2.9 e 2.10 mostram de maneira mais detalhada um canal de captura e comparação (ST Microelectronics, 2011). Figura 2.8 Estágio de entrada do temporizador.

33 20 Figura 2.9 Circuito principal do temporizador. Figura 2.10 Estágio de saída do temporizador Captura de entrada O princípio de funcionamento do estágio de captura de entrada baseia-se no congelamento do valor do contador quando for detectada uma transição nos GPIOs. A ocorrência da transição também pode gerar uma interrupção ou uma transferência de DMA. No projeto desenvolvido, era necessário medir a freqüência de um sinal presente em um dos GPIOs TIMx_CHy. Portanto, programando-se a unidade de base de tempo para contar numa freqüência coerente com a freqüência a ser medida, é possível calcular a freqüência de um sinal digital que é capturado por um

34 21 pino específico do GPIO destinado para tal fim. Para isso, é necessária a ocorrência de um evento, que pode ser uma borda de subida. Dessa forma, a cada borda de subida do sinal, uma interrupção é gerada, e na rotina de tratamento da interrupção o valor do contador é lido. Quando ocorre a segunda borda de subida, outro valor de contagem é identificado. É feita então a diferença entre estes dois números. Como a freqüência de contagem é conhecida pelo programador, pode-se estimar o tempo que o contador leva para realizar cada contagem e, conseqüentemente, o período do sinal. De posse desse período, encontra-se a freqüência do sinal. Os registradores que devem ser programados para habilitar o temporizador implicam na (ST Microelectronics, 2011): Seleção do sinal de entrada; Programação do filtro de entrada; Seleção da borda de subida ou descida; Programação do prescaler; Habilitação da interrupção e/ou DMA. Usando o procedimento descrito, é possível também medir a largura de pulso (ou, equivalentemente, razão cíclica) do sinal. Nestas situações, geralmente ondas do tipo PWM (Pulse-Width Modulated) estão envolvidas. Como o projeto desenvolvido necessitava de leitura da razão cíclica, foi necessária também a utilização do canal de captura de entrada para esse fim. Isso é possível pois cada um dos GPIOs TIMx_CHy pode ser usado como entrada de dois canais de captura de entrada (canal 1 e 2, ou canal 3 e 4). Assim, a leitura da razão cíclica pode ser feita paralelamente à leitura de freqüência por um segundo canal que congele o número da contagem correspondente à borda de descida do sinal. Com isso, sabendo-se o período do sinal (tomando como referência as duas bordas de subida) e o intervalo de tempo entre a primeira borda de subida e a borda de descida seguinte é calculado o Duty Cycle (ou razão cíclica) do sinal. A Figura 2.11 mostra o comportamento do temporizador nesse modo.

35 22 Figura 2.11 Contagem do timer para cálculo da razão cíclica Comparação de saída Segundo notas de aula da disciplina de Microprocessadores (2011), assim como o periférico de captura/comparação pode ser sensível a eventos ocorrendo num pino de entrada, ele pode controlar um pino de saída. Este modo é chamado de comparação de saída. Neste modo, o periférico compara o valor do contador do temporizador com o registrador de captura/comparação (TIMx_CCRy). Quando os dois coincidem, o periférico gera um sinal para o circuito de controle de saída. Além disso, podem ser geradas interrupções e/ou requisições de DMA. O controle de saída pode ter os seguintes comportamentos: Manter o nível lógico do pino (útil na geração de interrupção ou requisição de DMA); Ativar o pino (levá-lo a nível lógico 0 ou 1, conforme a configuração de polaridade de saída); Inverter o nível lógico do pino. A configuração dos registradores para comparação de saída terá com finalidade (ST Microelectronics, 2011): Selecionar o clock do contador; Programar os registradores TIMx_ARR e TIMx_CCRy;

36 23 Habilitar, caso necessário, a geração de interrupções e requisições de DMA; Selecionar o comportamento do controle de saída; Habilitar o contador. A Figura 2.12 ilustra o modo de comparação de saída, em que ocorre a inversão do nível de saída quando o registrador coincide com o contador. Figura 2.12 Modo de comparação de saída do temporizador. O método descrito permite a geração de sinais de freqüência determinada, porém com razão cíclica fixa em 50%. Para a aplicação do temporizador, em que o microcontrolador fará a leitura de um sinal analógico PWM cuja razão cíclica será variada, torna-se indispensável a configuração do periférico de comparação de saída em um dos modos PWM. Nestes modos, o registrador TIMx_ARR determina a freqüência do sinal, enquanto o registrador TIMx_CCRy determina a razão cíclica. Em ambos os modos, o contador conta até TIMx_ARR e retorna para 0 (admitindo a contagem crescente). No primeiro modo PWM, enquanto TIMx_CNT < TIMx_CCRy, o canal fica ativado, e caso contrário, fica desativado. No segundo modo PWM, enquanto TIMx_CNT < TIMx_CCRy, o canal fica desativado, e caso contrário, fica ativado.

37 24 O mapeamento entre ativado/desativado e nível lógico 0/1 é determinado pela configuração de polaridade. A Figura 2.13 ilustra a operação do primeiro modo PWM, em modo de contagem crescente, admitindo que o registrador TIMx_ARR contenha o valor 8. Figura 2.13 Operação do periférico de comparação de saída em modo PWM. 2.6 CONVERSOR A/D Os conversores A/D possibilitam basicamente a interação de um sistema embarcado real com grandezas físicas, que se manifestam na natureza com uma representação analógica. Assim, o princípio de funcionamento de um conversor A/D baseia-se na conversão dessas grandezas físicas (representadas por sinais analógicos) para um formato digital antes de usá-las. Esse processo é conhecido como conversão analógica/digital, ou simplesmente conversão A/D e consiste em: Amostrar o sinal em intervalos periódicos de tempo; Para cada amostra, quantizar o resultado (essencialmente, fixar o número de casas decimais na sua representação). A resolução que está relacionada à quantização pode ser determinada intuitivamente. Por exemplo, um sinal que tem uma amplitude mínima de 0V e máxima de 900mV, pode ser representado como um valor inteiro de 0 a 900.

38 25 Para isso, bastam 10 bits (uma vez que 2 10 = 1024) para representar valores nesta faixa. Porém, com relação à variação de amplitude, uma limitação prática é imposta pela quantidade de ruído presente no sistema, como por exemplo, o ruído térmico de um resistor. Dessa forma, deve-se considerar variações superiores ao nível de tensão introduzido pelo ruído, pois, caso contrário, o cálculo de amplitude poderia ser afetado. A freqüência de amostragem pode ser determinada de forma mais sistemática pelo teorema de amostragem de Nyquist-Shannon que afirma o seguinte: se uma função contém componentes de freqüência limitadas a B Hz, a amostragem com freqüência de pelo menos 2B Hz captura fielmente o sinal, sem perda de informação. Todos os membros da família STM32 possuem conversores A/D, com resolução de 12 bits e taxa de amostragem de até 1MHz. Dependendo do modelo, há até 3 conversores A/D distintos (que podem ser operados simultaneamente), e por meio de multiplexação, pode haver até 21 pinos externos para sinais analógicos (ST Microelectronics, 2011). O conversor possui um procedimento de auto-calibração para melhorar a precisão do sinal. Há também um mecanismo de acionamento externo de conversões que pode ser por pinos externos, eventos do temporizador, etc. Além dos canais externos (ligados a pinos do chip), há dois canais internos, um conectado a uma tensão de referência e outro a um sensor de temperatura. Outros recursos presentes no conversor são: geração de interrupções e requisições de DMA, um modo de varredura para aquisição de diversos canais em seqüência, tempo de aquisição programável por canal, e um watchdog analógico para monitorar se um sinal não foge de uma faixa prédeterminada. Para melhor visualização do diagrama de blocos do conversor A/D consulte o Anexo E. Nele pode-se perceber a presença de pinos de alimentação analógica e referência de tensão. Isso é feito para evitar poluir circuitos analógicos de precisão com ruído de chaveamento digital.

39 Clock do Conversor A/D O conversor A/D possui um sinal de clock específico chamado ADCCLK cuja freqüência máxima é de 14MHz. A freqüência é relativamente mais baixa se comparada à dos demais periféricos. Isso porque há a presença de circuitos analógicos. Este clock é derivado do clock do barramento APB2 e um prescaler dedicado Tempo de Conversão O tempo de conversão é programável e especificado em termos do número de ciclos de clock do conversor A/D. Os valores aceitáveis são 1.5, 7.5, 13.5, 28.5, 41.5, 55.5, 71.5 e ciclos. Depois de escolhido o valor, este deve ser somado a 12.5 ciclos que é o tempo fixo de conversão. Dessa forma, o tempo mínimo de conversão é de = 14 ciclos, e como o clock máximo do conversor é de 14MHz, chega-se ao tempo mínimo de conversão de 1µs. Apesar da limitação da taxa de aquisição, dependendo da aplicação é necessário usar um tempo de conversão maior, pois assim, a impedância de saída do sinal conectado ao conversor A/D poderá ser maior também. Isso porque o bloco de entrada do conversor A/D pode ser modelado como um filtro RC que se associa com a impedância de saída do sinal, conforme ilustra a Figura Portanto, quanto mais tempo for dado para o capacitor do conversor se carregar (desde que o sinal não varie dentro deste período), mais precisa será a leitura. A Tabela 2.3 mostra os valores do número de ciclos e tempo de conversão em função da resistência de entrada externa (ST Microelectronics, 2011).

40 27 Tabela 2.3 Resistência de entrada externa máxima para freqüência do conversor igual a 14MHz. T S (Ciclos) T S (µs) R AIN max (kω) 1,5 0,11 0,4 7,5 0,54 5,9 13,5 0,96 11,4 28,5 2,04 25,2 41,5 2,96 37,2 55,5 3, ,5 5,11 NA 239,5 17,1 NA Figura 2.14 Bloco de entrada do conversor A/D Acionamento Externo O acionamento externo é utilizado para efetuar aquisições com uma dada freqüência de amostragem. A conversão A/D pode ser feita manualmente, setando um bit num registrador específico, ou através de uma interrupção gerada pelo hardware de captura/comparação do temporizador. Nessa interrupção, pode-se iniciar uma conversão. Contudo, a utilização desse método pode gerar jitter, pois a interrupção pode ocorrer no momento em que outra interrupção já esteja sendo executada. Como a precisão do processo de conversão depende de um controle preciso da freqüência de amostragem, os projetistas do STM32 criaram uma maneira de iniciar a conversão sem a intervenção do software. Isso é feito utilizando alguns canais de captura/comparação dos temporizadores TIM1, TIM2 e TIM4 que podem acionar o bloco de canais regulares do conversor. Essa interface direta entre

41 28 o temporizador e o conversor A/D elimina estas variações inerentes ao compartilhamento de tempo entre os diversos trechos do software que buscam atenção imediata do processador (ST Microelectronics, 2011). Depois da conversão, é necessário fazer algum tipo de processamento, ou mesmo uma simples cópia do dado convertido. Pode-se usar para isso os recursos de geração de interrupção ou requisição de DMA do conversor. Assim, a interrupção só é gerada após o fim da conversão, e a precisão dos dados não é perdida se a interrupção for tratada com atraso. 2.7 AMBIENTE DE DESENVOLVIMENTO A interface entre o programador e o hardware é feita por um software chamado de IDE (Integrated Development Environment). Este software serve como um ambiente de desenvolvimento de projeto, edição, compilação, simulação e depuração do firmware embarcado no microcontrolador. Dentre as diversas alternativas de software para esta função foi escolhido o Rowley Crossworks devido ao seu suporte ao programador Olimex ARM-USB-TINY, que é um dos programadores mais baratos disponíveis no mercado. A Figura 2.15 mostra a tela inicial do Rowley Crossworks.

42 29 Figura 2.15 Tela inicial do Rowley Crossworks. O fluxo de trabalho no Rowley Crossworks pode ser resumido da seguinte forma: 1. Criar um projeto, ou abrir um projeto já existente; 2. Realizar configurações específicas à placa e ao firmware nas opções do ambiente; 3. Escrever o código em linguagem C ou C++; 4. Compilar o código e corrigir eventuais erros; 5. Programar o binário (resultado da compilação do código) na memória do microcontrolador; 6. Depurar o código para eliminação de eventuais erros. 2.8 BIBLIOTECA DE FIRMWARE PARA A FAMÍLIA STM32 FORNECIDA PELA ST MICROELECTRONICS Em baixo nível, a programação de periféricos em microcontroladores geralmente consiste em modificar valores em registradores mapeados na memória,

43 30 seja para configuração ou transferência de dados. Porém, esta tarefa mostra-se trabalhos e propensa a erros. Como alternativa, a ST Microelectronics fornece uma bibliotecapadrão para acesso aos periféricos, que fornece funções direcionadas a tarefas de alto nível (como por exemplo configurar e habilitar um periférico). O uso desta biblioteca aumenta consideravelmente a produtividade do programador, permitindo que o mesmo se concentre na sua aplicação, e não em detalhes de baixo nível do hardware. 2.9 O PROGRAMADOR JTAG OLIMEX ARM-USB-TINY Nos microcontroladores ARM há um conector de programação dedicado para In-Circuit Programming, ou seja, programação do microcontrolador diretamente na sua placa, ou no kit de desenvolvimento nesse caso, sem necessidade de remoção do microcontrolador da placa para programação como acontecia no passado. O padrão que será utilizado no microcontrolador nesse ambiente de desenvolvimento é o JTAG (Joint Test Action Group), mostrado na Figura Figura 2.16 O programador JTAG Olimex ARM-USB-TINY. Este programador é conectado ao computador por meio de uma porta USB, e a conexão à placa é feita por um flat cable de 2 x 10 pinos que pode ser visto na figura. Após a conexão, é possível realizar, além da programação do microcontrolador, a depuração in-circuit, ou seja, na própria placa.

44 31 3 DESENVOLVIMENTO PRÁTICO Primeiramente foram implementados dois circuitos geradores de sinais elétricos, que posteriormente serão amostrados, além de calculados a freqüência, razão cíclica e amplitude da onda quadrada, que serão mostradas em quatro displays de sete segmentos. Para isso, será utilizado um microcontrolador da família STM GERADORES DE SINAIS DE FREQÜÊNCIA E RAZÃO CÍCLICA VARIÁVEIS A Figura 3.1 mostra um circuito gerador de ondas quadrada e triangular, construído a partir do amplificador operacional LM324. Uma ampla variedade de faixas de freqüências de saída podem ser obtidas dependendo da escolha do capacitor C1, conforme mostra a Tabela 3.1. Tabela 3.1 Faixa de freqüência versus capacitor C1. Faixa de freqüência Capacitor C1 0.5Hz 5Hz 100µF 5Hz 50Hz 10µF 50Hz 500Hz 1µF 500Hz 5kHz 5kHz 50kHz Acima de 50kHz 0.1µF 0.01µF 0.001µF Para maiores freqüências deve-se utilizar menores capacitâncias, além de selecionar um amp op que tenha alto slew rate. O potenciômetro de 25kΩ (R1) é um controle fino de freqüência e o de 50kΩ (R2) é um controle de simetria que permite variar a razão do tempo de cada alternância positiva para o tempo de cada alternância negativa das formas de onda V 0 (onda quadrada) e V 0 (onda triangular).

45 32 Figura 3.1 Gerador de ondas quadrada e triangular com Amp Op LM324. Assim, a saída V 0 pode ser alterada de uma onda triangular para uma onda dente de serra pelo controle de simetria feito pelo potenciômetro R2. O capacitor C2 determina a amplitude de V 0. Geralmente, o capacitor C2 deve ser maior com freqüências de saída menores. Se C2 for muito pequeno, a saída V 0 torna-se cortada porque a saída do Amp Op satura em cada alternância. Se C2 é muito grande, a amplitude de V 0 torna-se pequena, especialmente em altas freqüências. A Figura 3.2 mostra as saídas V 0 e V 0 correspondentes ao circuito da Figura 3.1, resultado da simulação no software OrCAD.

46 33 20V 10V 0V -10V -20V 100ms 120ms 140ms 160ms 180ms 200ms 220ms 240ms 260ms 280ms 300ms V(D4:1) V(U1D:OUT) Time Figura 3.2 Saídas V 0 e V 0 do circuito gerador de funções que correspondem às ondas quadradas e triangular, respectivamente. 3.2 GERADOR DE FUNÇÕES UTILIZANDO O CIRCUITO INTEGRADO XR-2206 O circuito integrado XR-2206 da EXAR é um gerador de funções monolítico capaz de produzir sinal senoidal de alta qualidade, quadrado, triangular, rampa, pulso e formas de onda de alta estabilidade e precisão. As formas de onda de saída podem ser moduladas em amplitude e freqüência por uma tensão externa. A freqüência de operação pode ser selecionada externamente em uma faixa de 0,01Hz a mais de 1MHz. O circuito é idealmente adequado para comunicações, instrumentação e aplicações de gerador de função que exigem tom senoidal, AM, FM, ou geração FSK. Ele tem uma especificação de deriva de 200ppm/ºC. O oscilador de freqüência pode ser varrido por uma faixa de freqüência acima de 2000:1 com uma tensão de controle externa, mantendo baixa distorção. Segue abaixo algumas características importantes que tal circuito apresenta: Baixa distorção da onda seno, 0,5%, típica; Excelente estabilidade de temperatura 20ppm/ C, típica; Ampla faixa de varredura, 2000:1, típica; Baixa sensibilidade de alimentação, 0,01V%, típica; Modulação de amplitude linear; Controles FSK compatíveis com TTL; Ampla faixa de alimentação, 10V a 26V;

47 34 Razão cíclica ajustável, 1% a 99%. Uma das formas de montagem do gerador de funções é sugerida no datasheet e pode ser observada na Figura 3.3. Figura 3.3 Circuito gerador de ondas utilizando CI XR A faixa de freqüência de saída dos sinais é uma função do capacitor colocado entre os pinos 5 e 6, enquanto o valor da freqüência é ajustado pelo resistor R1 que na verdade é um potenciômetro de 2MΩ, e o resistor de 1kΩ (juntos fornecem a resistência R). O valor recomendado de R para uma dada faixa de freqüência pode ser escolhido através da Figura 3.4. Para a estabilidade de temperatura é ideal que 4kΩ<R<200kΩ. Valores recomendados de C são de 1000pF a 100µF.

48 35 Figura 3.4 R versus freqüência de oscilação. A amplitude do sinal triangular ou senoidal de saída é ajustada pelo potenciômetro de 50kΩ (R 3 ) colocado no pino 3. A amplitude é inversamente proporcional ao resistor R 3, conforme pode ser observado na Figura 3.5. Para a saída de onda senoidal, a amplitude de pico é de cerca de 60mV por kω de R 3 ; para triangular, a amplitude de pico é de aproximadamente 160mV por kω de R 3. Assim, por exemplo, R 3 = 50kΩ produziria 3V de amplitude senoidal de saída. Já para a onda quadrada, pode-se observar que o controle da amplitude é feito diretamente pela tensão de entrada. Figura 3.5 Tensão de saída como uma função do resistor R 3 colocado no pino 3. O potenciômetro R A entre os pinos 15 e 16 faz o ajuste externo da simetria. O conteúdo harmônico da saída senoidal pode ser reduzido para -0,5%. O

49 36 potenciômetro R A ajusta o resistor de formação do seno e R B fornece o ajuste fino para a simetria da forma de onda. O procedimento de ajuste é o seguinte: Coloque o potenciômetro R B no meio e ajuste R A para que se tenha uma distorção mínima; Com R A definido como acima, ajuste R B para reduzir ainda mais a distorção. O circuito da Figura 3.3 pode ser convertido em um gerador de ondas triangulares simplesmente abrindo-se a chave S 1 colocada entre os pinos 13 e 14. A amplitude do sinal triangular é aproximadamente duas vezes maior que a amplitude do sinal senoidal. Pode-se observar nas Figuras 3.6 e 3.7 o diagrama de blocos CI XR e o circuito integrado, respectivamente. A Tabela 3.2 caracteriza cada pino do CI. Figura 3.6 Diagrama de blocos do CI XR-2206.

50 37 Figura 3.7 CI XR Tabela 3.2 Descrição dos pinos do CI XR Pinos Símbolo Tipo Descrição 1 AMSI I Entrada de sinal de modulação de amplitude. 2 STO O Saída de onda senoidal ou triangular. 3 MO O Saída do multiplicador. 4 V CC Fonte de alimentação positiva. 5 TC1 I Entrada do capacitor de temporização. 6 TC2 I Entrada do capacitor de temporização. 7 TR1 O Saída do resistor 1 de temporização. 8 TR2 O Saída do resistor 2 de temporização. 9 FSKI I Entrada para mudança da freqüência de chaveamento. 10 BIAS O Referência de tensão interna. 11 SYNCO O Saída de sincronização. Esta saída é um coletor aberto e precisa de um resistor pull-up para V CC. 12 GND Pino terra. 13 WAVEA1 I Entrada 1 de ajuste de forma de onda. 14 WAVEA2 I Entrada 2 de ajuste de forma de onda. 15 SYMA1 I Ajuste 1 de simetria da onda. 16 SYMA2 I Ajuste 2 de simetria da onda.

51 CIRCUITO ATENUADOR UTILIZANDO AMP OP A implementação do circuito atenuador é necessária para limitar a tensão do sinal de entrada, pois os GPIOs suportam uma tensão de no máximo 3,3V e tensões superiores, como a amplitude dos sinais elétricos fornecidos pelos circuitos geradores, poderiam danificar o microcontrolador. Assim, para ambos os circuitos, a amplitude da onda quadrada é controlada através da implementação de um circuito atenuador, utilizando o amp op LM324 na condição de atenuação, conforme mostra a Figura 3.8. Figura 3.8 Circuito atenuador utilizando o CI LM324 com realimentação negativa. Para a configuração de circuito atenuador é necessário que RF seja menor que Ri. Tal conclusão resulta da expressão de ganho do amp op (SEDRA, 2000): v v 0 i = RF Ri Como RF é menor que Ri, a razão v 0 /v i torna-se menor que um. Assim, a amplitude do sinal de saída será menor se comparada ao sinal de entrada. Na implementação, foi utilizado um resistor de 10kΩ para RF e um de 100kΩ para Ri, resultando, teoricamente, em uma atenuação do sinal de entrada de 10 vezes. 3.4 O KIT DE DESENVOLVIMENTO OLIMEX STM32-P103 Depois de montado os dois circuitos geradores de sinais elétricos analógicos, bem como o circuito atenuador, deve-se programar o microcontrolador

52 39 para calcular a freqüência, razão cíclica e amplitude dos sinais elétricos quadrados gerados por eles. Em seguida, tais valores serão mostrados em quatro displays de sete segmentos. O kit de desenvolvimento Olimex STM32-P103 pode ser visto na Figura 3.9. Figura 3.9 Kit de desenvolvimento Olimex STM32-P Programação do Microcontrolador para Cálculo da Freqüência Para o cálculo da freqüência e da razão cíclica do sinal quadrado será necessária a utilização do timer, GPIO, além do uso de interrupções. Como a biblioteca-padrão fornece funções para acesso aos periféricos, seu uso possibilita as configurações dos mesmos para a aplicação desejada. Através da consulta à biblioteca-padrão, pode-se encontrar as funções que serão usadas para calcular a freqüência e razão cíclica de um sinal em um pino de entrada do GPIO, utilizando interrupções. Primeiramente, precisa-se habilitar o periférico que será usado, ou seja, o timer, para o modo de captura de entrada. Isto é feito através da seguinte linha de código: TIM_ICInitTypeDef_ICInitStructure;

53 40 Depois, deve-se habilitar o clock do timer da seguinte forma: RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1, ENABLE); Nota-se que o TIM1 foi habilitado. Este se encontra conectado no barramento interno APB2 do processador. O mesmo é feito para os GPIOs. O pino escolhido para a entrada do sinal quadrado fornecido pelo circuito analógico foi o pino 8 (GPIOA). Este foi configurado como pino de entrada e velocidade de 50MHz. O próximo passo é a inicialização do periférico. Para o timer, cinco parâmetros devem ser configurados: 1. Canal: especifica o canal do timer. Foram escolhidos os canais 1 e 2; 2. Polaridade: especifica a borda ativa para o canal de entrada. O Canal 1 captura o valor do contador quando ocorre uma borda de subida, e o canal 2 captura o valor do contador quando ocorre uma borda de descida; 3. Seleção: especifica a entrada. O TIM1 está selecionado para ser conectado a IC1 (Captura de Entrada 1) diretamente e IC2 (Captura de Entrada 2) indiretamente; 4. Divisor programável do clock do microcontrolador (Prescalers): especifica a captura em função das bordas de subida ou descida. Foi escolhida a opção DIV1 tanto para a borda de subida quanto para a borda de descida. Isso significa que a captura é realizada cada vez que uma borda é detectada na captura de entrada (IC); 5. Filtro: especifica o filtro de captura de entrada. Este parâmetro pode ser um valor numérico entre 0x0 e 0xF. Foi adotado o número 0x0. A inicialização do timer deve terminar com a seguinte linha de código: TIM_ICInit(TIM1, &TIM_ICInitStructure; Por fim, é necessário habilitar o contador do timer com a instrução seguinte: TIM_Cmd(TIM1, ENABLE); Quanto à interrupção do timer, ela é habilitada quando for detectada uma borda de subida ou descida, conforme programação mostrada abaixo:

54 41 TIM_ITConfig(TIM1, TIM_IT_CC1, ENABLE); Como haverá interrupção, é necessário habilitar a função NVIC através da linha de código seguinte: NVIC_EnableIRQ(TIM1_CC_IRQn); void TIM1_CC_IRQHandler(void); No arquivo stm32f10x_it.h deve ser acrescentada a função: Esta função indica que haverá uma interrupção gerada por um evento no timer no programa principal. Porém, a interrupção será tratada no arquivo stm32f10x_it.c. Quando a execução do programa é desviada para a função de interrupção, deve-se fazer algumas verificações. A primeira delas consiste em confirmar se tem ocorrido ou não uma interrupção no TIM1. Em seguida, limpa-se os bits pendentes da interrupção do canal de captura e comparação (CC1) do TIM1. Quando a variável responsável por guardar o valor capturado (CaptureNumber) estiver vazia, obtém-se o valor do primeiro IC1 (borda de subida) do TIM1, guardando-o em IC3ReadValue1, como mostrado abaixo: IC3ReadValue1 = TIM_GetCapture1(TIM1); A variável CaptureNumber passa a ter valor 1. Pode-se então obter os valores que se referem à borda de descida e à borda de subida seguinte. A variável IC3ReadValue2 obtém o valor do segundo IC1 (borda de subida seguinte do TIM1), e a variável IC3ReadValue3 recebe o valor de IC2 (borda de descida entre as duas bordas de subida seqüenciais do TIM1). Dessa forma, a diferença IC3ReadValue2 IC3ReadValue1 fornece o número de ciclos correspondente ao período do sinal. Com o intuito de aumentar a precisão da freqüência do sinal, uma quantidade de 1000 números de ciclos referentes a um período são adicionados e acumulados na variável soma. Para isso, foi criado um contador na rotina de interrupção. Quando este contador estourar, ou seja, atingir o valor 1000, o programa principal faz o cálculo da freqüência. Para obtê-la, faz-se a divisão do resultado da variável soma por O valor resultante foi colocado na variável media. Em seguida dividi-se a freqüência de clock do microcontrolador (72MHz) pela variável media (que corresponde a um valor mais exato do número de ciclos de um período). Tal divisão fornece o valor da freqüência do sinal de entrada. A freqüência é guardada na variável frequencia.

55 Programação do Microcontrolador para Cálculo da Razão Cíclica Em relação à razão cíclica, esta também é calculada quando ocorre o estouro do contador, no mesmo programa de cálculo de freqüência. A função de interrupção passa para o programa principal a subtração IC3ReadValue3 IC3ReadValue1 (diferença do número referente à borda de descida do número correspondente à borda de subida anterior, ou seja, a duração do pulso) na variável x: x = IC3ReadValue3 IC3ReadValue1; A variável y recebe a diferença entre a primeira e a segunda borda de subida, isto é, o período: y = IC3ReadValue2 IC3ReadValue1; No programa principal, tais valores são passados para as variáveis x1 e y1, e a divisão de x1 por y1 fornece o valor da razão cíclica, que é guardado na variável banda. O fluxograma da Figura 3.10 resume os cálculos realizados na rotina de interrupção do programa que calcula a freqüência e a razão cíclica do sinal quadrado/retangular:

56 43 Figura 3.10 Fluxograma descrevendo metodologia para o cálculo de freqüência e razão cíclica. O programa completo que realiza o cálculo da freqüência e da razão cíclica do sinal pode ser consultado no Anexo F Programação do Microcontrolador para Cálculo da Amplitude Antes da programação do microcontrolador para o cálculo da amplitude, foi necessário implementar um circuito analógico detector de pico, já que os sinais fornecidos pelos circuitos geradores são alternados. Assim, foi montado um detector de pico conforme mostrado na Figura 3.10.

57 44 Figura 3.11 Detector de pico. O detector de pico tem seu princípio de funcionamento semelhante ao do retificador de precisão de meia onda. A única diferença é que o resistor é substituído por um capacitor. Para V entrada positiva, o diodo conduz e pode ser considerado com um curto circuito para fins de análise do circuito. O amp op fornece a tensão necessária à polarização do diodo e funciona como amplificador de ganho unitário, isto é, V entrada = V saída. Para V entrada negativa, o diodo corta e pode ser considerado como um circuito aberto. O amp op satura em uma tensão negativa que é insuficiente para polarização reversa do diodo. Como não há corrente, V saída = 0 (SEDRA, 2000). O diodo utilizado é o do tipo rápido (1N4148) e o capacitor é de 10µF. Devido à entrada do conversor A/D ser modelada por um filtro RC, o sinal de saída do circuito retificador de pico passa por um buffer para isolar eletricamente os circuitos e melhorar a qualidade do sinal. Depois de montado o detector de pico e o buffer foi escrita a rotina de programação para o cálculo da amplitude. Inicialmente deve-se configurar o GPIO associado ao pino que será convertido. Usa-se o modo GPIO_Mode_AIN para o pino em questão. Em seguida, configura-se o clock do conversor A/D, garantindo um clock máximo de 14MHz, conforme o código abaixo: RCC_ADCCLKConfig(RCC_PCLK2_Div6);

58 45 Também é preciso habilitar o clock do periférico, por meio do seguinte código: RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1, ENABLE); Depois, inicializa-se o conversor A/D através de parâmetros fornecidos pela biblioteca-padrão e que podem ser vistos no Anexo G. É importante acrescentar que o conversor A/D pode ser usado em conjunto com o periférico de captura/comparação de um temporizador que funciona como trigger externo, ou seja, o timer gera uma onda em certa freqüência, que determina o instante que se inicia a conversão. Geralmente, com o uso do trigger externo, é necessário fazer polling sobre a flag de término da conversão, isto é, um loop ou laço verifica continuadamente a ocorrência de um evento, o que dispensa o uso de interrupções. Porém, este estilo de programação despende um tempo de processamento maior pelo microcontrolador. Para habilitar o conversor A/D, usa-se o código abaixo: ADC_Cmd(ADC1, ENABLE); Como o valor convertido está na base binária é necessário calcular o valor decimal correspondente antes de amostrar o valor de amplitude no display. A função ADC_GetConversionValue(ADC1) obtém o valor convertido. O fluxograma da Figura 3.12 resume as tarefas realizadas no programa para a aquisição do valor da tensão de pico do sinal de entrada: Figura 3.12 Configurações do microcontrolador para o cálculo da amplitude do sinal.

59 46 visto no Anexo G. O código completo do programa para cálculo de amplitude pode ser Programação dos GPIOs para o Funcionamento do Display A metodologia abordada para que se amostrassem valores de freqüência, razão cíclica e amplitude em um arranjo de 4 displays de 7 segmentos foi elaborada seguindo critérios que contemplassem as características mostradas na Figura H.2 do Anexo H, onde é detalhado o princípio de funcionamento do display. As etapas para esta amostragem são descritas a seguir: Seleção individual do display: programa-se o microcontrolador para que este forneça um nível lógico alto ( 1 ) à uma das entradas de seleção do display, que o tornará ativo enquanto o processador executa uma determinada seqüência de códigos. O trecho de código abaixo exemplifica a seleção do display A0, que deverá informar o valor do último dígito do valor do parâmetro amostrado. GPIO_SetBits(GPIOC, GPIO_Pin_0); GPIO_ResetBits(GPIOC, GPIO_Pin_1); GPIO_ResetBits(GPIOC, GPIO_Pin_2); GPIO_ResetBits(GPIOC, GPIO_Pin_3); Nota-se que é preciso configurar quatro pinos do microcontrolador para selecionar o display desejado. Da mesma forma deve ser feito para se ativar os demais displays, fornecendo um sinal lógico alto às portas A1, A2 ou A3. Valor do dígito a ser amostrado: Os parâmetros analisados poderão ser amostrados em 4 dígitos. O resto da divisão do parâmetro por 10 corresponde ao valor que deverá ser visto no display A0, e este valor deverá ser enviado através de 4 bits pelas GPIOs de forma paralela. O trecho de código que converte os dados binários de serial para paralelo é mostrado abaixo (HENNEFELD, 1998). if (((frequencia%10) & 1) == 1)

60 47 GPIO_SetBits(GPIOC, GPIO_Pin_4); else GPIO_ResetBits(GPIOC, GPIO_Pin_4); if (((frequencia%10) & 2) == 2) GPIO_SetBits(GPIOC, GPIO_Pin_5); else GPIO_ResetBits(GPIOC, GPIO_Pin_5); if (((frequencia%10) & 4) == 4) GPIO_SetBits(GPIOC, GPIO_Pin_6); else GPIO_ResetBits(GPIOC, GPIO_Pin_6); if (((frequencia%10) & 8) == 8) GPIO_SetBits(GPIOC, GPIO_Pin_7); else GPIO_ResetBits(GPIOC, GPIO_Pin_7); Desta forma é possível enviar um bit por cada pino das GPIOs, que fornecerão o valor binário que o CI 7447 necessita para ativar os segmentos necessários do display para compor o dígito correspondente. O código completo para amostrar o valor do parâmetro nos quatro displays de sete segmentos é mostrado no Anexo I.

61 48 4 RESULTADOS E DISCUSSÃO Primeiramente, serão mostrados e discutidos os resultados referentes aos circuitos analógicos, que correspondem às Figuras 3.1 e 3.3, respectivamente. Estes fornecerão os sinais de entrada do microcontrolador. Em seguida, serão apresentados os resultados obtidos do microcontrolador. 4.1 CIRCUITO GERADOR DE SINAIS UTILIZANDO AMP OP Diferentemente do circuito simulado da Figura 3.1, o circuito real montado em laboratório teve o capacitor C2 de 200nF substituído por uma associação de dois capacitores em paralelo, um de 0,47µF, e outro de 1,8nF, resultando em uma capacitância equivalente de 471,8nF. Esta alteração foi necessária, pois C2 determina a amplitude de V 0 e, dependendo da faixa de freqüência estabelecida por C1, a saída V 0 pode ser cortada se C2 for muito pequeno, conforme pode ser visto na Figura 3.2. Ou, se C2 for muito grande a amplitude de V 0 torna-se pequena, especialmente em altas freqüências. Por isso, por tentativas, chegou-se a um valor adequado de C2. Além disso, os potenciômetros de 25kΩ e 50kΩ foram substituídos pelos valores comerciais que correspondem a 22kΩ e 47kΩ, respectivamente. Pelo mesmo motivo, o resistor de 80kΩ, foi substituído por um de 82kΩ. A Figura 4.1 mostra os sinais de saída V 0 (sinal quadrado) e V 0 (sinal triangular). Para a onda quadrada, obteve-se uma freqüência mínima de 30Hz (com um pouco de distorção), e uma máxima de 550Hz. A amplitude medida foi de 33,8 V pico a pico. Em relação à onda triangular, a freqüência mínima foi de 110Hz e a máxima atingiu 530Hz. Já a amplitude da onda triangular alcançou 17,8V pico a pico. Pode-se observar na Figura 4.1 que, naquele instante, a freqüência da onda quadrada era de 537,4Hz e a tensão de pico a pico era de 33,4V.

62 49 Figura 4.1 Sinais de saída V 0 (onda quadrada) e V 0 (onda triangular) referentes ao circuito da Figura 3.1. Pode-se notar na Figura 4.2 que quando a amplitude da onda quadrada for de 33,4V, a amplitude da onda triangular chega a 3,76V.

63 50 Figura 4.2 Tensão pico a pico do sinal triangular. Conforme dito anteriormente, o potenciômetro R2 regula a razão cíclica da onda quadrada, o que pode ser visto na Figura 4.3, onde enquanto a largura de pulso positiva é de 1,172ms, a largura de pulso negativa é de 731,7µs.

64 51 Figura 4.3 Variação da razão cíclica da onda quadrada. O circuito da Figura 3.1 apresentou facilidade de montagem, pois utiliza componentes comuns. A fonte de alimentação simétrica fornece a tensão necessária para a alimentação do Amp Op cuja faixa de tensão varia de ±16 até 32V. O circuito oferece dois tipos de controle, um controle fino de freqüência feito pelo potenciômetro R1 e um controle da razão cíclica feito pelo potenciômetro R2. Além disso, devido ao fato da utilização de um número reduzido de componentes, o circuito mostrou-se relativamente pequeno. A variação de temperatura é de 0ºC a +70ºC. Levando em conta as funcionalidades do circuito, pode-se dizer que o custo foi bastante apropriado e apresentou grande facilidade de uso. 4.2 CIRCUITO GERADOR DE SINAIS UTILIZANDO O CI XR-2206 Já em relação o circuito da Figura 3.3, também foi necessário realizar algumas alterações, devido a não existência de determinados valores comercialmente. Os potenciômetros de 2MΩ (R1), 500Ω (R A ) e 25kΩ (R B ) foram substituídos por outros de 2,2MΩ, 470Ω e 22kΩ, respectivamente. Além disso, ambos os resistores de 5,1kΩ foram trocados por dois resistores em série, um de

65 52 4,7kΩ, e um de 390Ω, o que constitui uma resistência equivalente de 5,09kΩ. Para a alimentação do CI XR-2206, foi utilizada uma fonte simétrica de ±18V. Entre os pinos 5 e 6 do CI deve ser colocado um capacitor que irá determinar a faixa de freqüência de trabalho, juntamente com a resistência equivalente fornecida pelo potenciômetro de 2,2MΩ e o resistor de 1kΩ, ambos em série na porta 7. Por essa razão, foi feito inicialmente um estudo da freqüência mínima dos sinais de saída para quatro valores de capacitâncias diferentes: 470pF, 1nF, 1,5nF e 4,7nF. A fórmula utilizada é mostrada abaixo: f = 1 mín R 2 C Para se obter a freqüência mínima, o valor de R2 deve ser máximo, ou seja, 2,2MΩ. Os resultados são apresentados na Tabela 4.1. Tabela 4.1 Capacitor de temporização versus freqüência mínima. Capacitor f mín 470pF 1nF 1,5nF 4,7nF 966,68Hz 454,34Hz 302,89Hz 96,68Hz Em seguida, com o uso do osciloscópio, foram observadas as freqüências máximas e mínimas para cada um dos quatro valores de capacitância. Pode-se observar os resultados na Tabela 4.2.

66 53 Tabela 4.2 Faixas de freqüências em função do capacitor de temporização. Tipo de sinal Capacitor f mín f máx Quadrada 470pF 1,235kHz 5,5kHz 1nF 590Hz 10,25kHz 1,5nF 400Hz 10kHz 4,7nF 140Hz 8kHz Triangular 470pF 1,235kHz 367kHz 1nF 590Hz 150kHz 1,5nF 400Hz 110kHz 4,7nF 140Hz 100kHz Senoidal 470pF 1,235kHz 1,248MHz 1nF 590Hz 1,145MHz 1,5nF 400Hz 488,3kHz 4,7nF 140Hz 203,7kHz Vale observar que os valores registrados na Tabela 4.2 correspondem às freqüências onde não era observado nenhum tipo de distorção do sinal. Por último, as formas de onda do circuito foram observadas no osciloscópio e adotou-se o valor de 1nF para o capacitor colocado entre os pinos 5 e 6. A Figura 4.4 mostra a onda quadrada (pino 11 do CI) num determinado instante de tempo. Nela, observa-se uma freqüência de 589,6 Hz (freqüência mínima) e uma tensão de pico a pico de 17V (amplitude aproximadamente máxima para uma tensão de alimentação de 18V).

67 54 Figura 4.4 Sinal de saída quadrado em baixa freqüência. Variando-se o potenciômetro de 2,2MΩ, pode-se alcançar freqüências maiores, conforme pode ser visto na Figura 4.5, onde a freqüência é de 3,795kHz.

68 55 Figura 4.5 Sinal de saída quadrado em freqüência maior. Para os demais sinais, além da variação de freqüência, é possível também modular a amplitude através do potenciômetro de 50kΩ (R3). Observando as formas de onda no osciloscópio, foram obtidos os valores de amplitude máximos e mínimos tanto para o sinal senoidal, quanto para o sinal triangular, mostrados na Tabela 4.3. Tabela 4.3 Amplitude dos sinais senoidal e triangular. Sinal Tensão mínima (V pp ) Tensão máxima (V pp ) Senoidal 0,018 9 Triangular 0, O sinal senoidal corresponde ao pino 2 do CI, e a Figura 4.6 mostra tal sinal. Nota-se uma freqüência de 722,5Hz e uma tensão de pico a pico de 516mV.

69 56 Figura 4.6 Sinal de saída senoidal com freqüência e amplitude pequenas. Variando-se o potenciômetro de 2,2MΩ e o de 50kΩ, altera-se o valor da freqüência e da amplitude do sinal senoidal, respectivamente, conforme pode ser comprovado na Figura 4.7, onde o valor de freqüência chega a 9,086kHz e o valor de amplitude alcança 3,36V pico a pico.

70 57 Figura 4.7 Sinal de saída senoidal com freqüência e amplitude maiores. Abrindo-se a chave S1, colocada entre os pinos 13 e 14 do CI, obtém-se no pino 2 uma onda triangular. Assim como a onda senoidal, a onda triangular pode ser modulada em amplitude e freqüência. As Figuras 4.8 e 4.9 mostram a onda triangular em dois instantes diferentes. No primeiro deles, a freqüência é de 589,6Hz e a amplitude é de 864mV. No seguinte (Figura 4.9), a freqüência aumentou para 4,596kHz e a amplitude para 2,60V pico a pico.

71 58 Figura 4.8 Sinal de saída triangular com freqüência e amplitude baixas. Figura 4.9 Sinal de saída triangular com freqüência e amplitude maiores. O circuito da Figura 3.3 mostrou-se relativamente mais complexo do que o circuito da Figura 3.1, tanto em relação à montagem quanto em relação à

72 59 aquisição dos componentes necessários. Porém, os sinais elétricos gerados foram bem mais estáveis e precisos, caracterizando um fato importante, já que o microprocessador necessita de sinais bem definidos. Diferente do circuito da Figura 3.1, o CI XR-2206 é alimentado por uma fonte de tensão contínua cuja faixa de tensão é menor, variando de 10V a 26V. O circuito oferece cinco tipos de controle, uma chave S1 que permite a escolha entre um sinal de saída senoidal ou um sinal de saída triangular, um controle de freqüência feito pelo potenciômetro R1, um controle de amplitude das ondas triangular e senoidal feito pelo potenciômetro R3, R A ajusta o resistor de formação do seno (simetria do sinal) e R B fornece o ajuste fino para a simetria da forma de onda. O circuito utilizou um número maior de componentes, porém também se mostrou relativamente pequeno. A variação de temperatura é a mesma que a do circuito da Figura 3.1 (0ºC a +70ºC). Observou-se também uma grande facilidade de uso, mas o custo final foi bem maior. 4.3 CIRCUITO ATENUADOR UTILIZANDO AMP OP Como o sinal quadrado de ambos os circuitos serão processados pelo microcontrolador para o cálculo da freqüência, razão cíclica e amplitude, é necessário limitar a amplitude do sinal para que os GPIOs não sejam queimados, pois suportam uma tensão máxima de apenas 3,3V. Por esse motivo, foi implementado um circuito atenuador. Sua eficiência pode ser comprovada na Figura Nota-se que a amplitude de 17,4V pp foi reduzida para 2,8V pp.

73 60 Figura 4.10 Sinal de saída do circuito atenuador comparado ao sinal de entrada. 4.4 ANÁLISE E LEITURA DOS RESULTADOS DE FREQÜÊNCIA Depois de implementados os circuitos geradores de sinais quadrados, basta aplicar o sinal desejado no pino do microcontrolador que foi programado como entrada, para que sejam calculadas a freqüência e a razão cíclica. No código de programação, além do pino de captura do sinal, são programados outros dez pinos como saída, para que os valores correspondentes de freqüência e razão cíclica sejam mostrados nos quatros displays de sete segmentos. O sinal quadrado atenuado de 2,8V pp exibido na Figura 4.10 foi utilizado como sinal de entrada do pino 8, GPIO A, ou seja, pino PA8. A freqüência do sinal foi variada para 5,5kHz com o auxílio do osciloscópio. Depois de calculada a freqüência pelo microprocessador, esta foi mostrada no display com o valor igual a 5445Hz, como pode ser confirmado na Figura 4.11.

74 61 Figura 4.11 Valor de freqüência calculado pelo microcontrolador. Depois, a freqüência foi ajustada para 9,8kHz e novamente o microcontrolador calculou o valor de freqüência e o mostrou no display, conforme pode ser visto na Figura 4.12.

75 62 Figura 4.12 Outro valor de freqüência calculado pelo microcontrolador. No desenvolvimento do trabalho, o display foi inicialmente alimentado por um GPIO que fornece uma tensão de 3,3V. Porém, para esta tensão a luminosidade do display era baixa. Assim, foi necessário alimentá-lo através de uma fonte de tensão contínua que fornecia 5V (com o mesmo ponto de terra do microcontrolador). Além disso, foi criado um atraso na rotina de amostragem dos valores em cada display, pois uma multiplexagem rápida impossibilitaria a visualização dos quatro dígitos simultaneamente. 4.5 ANÁLISE E LEITURA DOS RESULTADOS DE RAZÃO CÍCLICA Na mesma rotina de cálculo de freqüência, é calculada também a razão cíclica. Dessa forma, foram feitos pequenos ajustes no código para que fosse mostrada a razão cíclica ao invés da freqüência. Para aumentar a precisão do valor, foram utilizados os quatro displays. Mas, como o segmento do display correspondente ao ponto decimal não está ativo, deve-se considerar apenas os dois primeiros dígitos como a parte inteira do valor, enquanto os dois outros correspondem à parte decimal. Por exemplo, se o display mostrar o valor 5578, a razão cíclica correspondente será 55,78%.

76 63 As Figuras 4.13 e 4.14 ilustram o funcionamento do microcontrolador para o cálculo da razão cíclica em duas situações diferentes. Figura 4.13 Razão Cíclica de 50,39%. Figura 4.14 Razão Cíclica de 70,07%.

77 64 O sinal quadrado utilizado no pino de entrada do microcontrolador para o cálculo da razão cíclica foi fornecido pelo circuito da Figura 3.1 e atenuado pelo circuito da Figura CIRCUITO DETECTOR DE PICO UTILIZANDO AMP OP Para a leitura de amplitude do sinal, foi implementado o circuito detector de pico da Figura 3.10, para que o microcontrolador pudesse calcular a amplitude dos sinais quadrado, triangular e senoidal dos circuitos geradores de sinais. Como o microcontrolador suporta uma tensão na faixa de 0 a 3,3V, novamente o circuito atenuador deverá ser usado para os sinais que não possuem controle de amplitude, e a leitura desta ficará limitada àquela faixa. A Figura 4.15 valida a eficiência do detector de pico para a onda quadrada fornecida pelo circuito da Figura 3.1. Figura 4.15 Detecção de pico do sinal quadrado gerado pelo circuito da Fig O mesmo ocorre para os sinais gerados pelo circuito da Figura 3.3. As Figuras 4.16, 4.17 e 4.18 mostram a tensão de pico dos sinais quadrado, senoidal e triangular, respectivamente.

78 65 Figura 4.16 Tensão de pico do sinal quadrado. Figura 4.17 Tensão de pico do sinal senoidal.

79 66 Figura 4.18 Tensão de pico do sinal triangular. Observa-se a presença de um nível DC de tensão tanto para a onda senoidal, quanto para a onda triangular. Por essa razão, foi implementado um filtro passa baixas (FPB) para eliminar essa tensão. 4.7 ANÁLISE E LEITURA DOS RESULTADOS DE AMPLITUDE Então, a tensão de pico do sinal senoidal, livre do nível de tensão DC, foi aplicada no pino 0, GPIOB (PB0). A rotina para cálculo da amplitude do sinal foi testada para os seguintes valores de tensão de pico: 0,09V, 1,4V e 2,7V, obtendo-se os resultados apresentados nas Figuras 4.19, 4.20 e 4.21, respectivamente. Novamente, como o ponto decimal não está ativo nos displays de sete segmentos, é necessário assumir valor inteiro para o primeiro display.

80 67 Figura 4.19 Amplitude da onda senoidal de 0,087V. Figura 4.20 Amplitude da onda senoidal de 1,443V.

81 68 Figura 4.21 Amplitude da onda senoidal de 2,627V. demais. Observa-se que assim como a freqüência, a precisão é de 3 casas

82 69 5 CONCLUSÃO Inicialmente encontrou-se grandes dificuldades para implementar um circuito analógico que gerasse ondas quadradas que pudessem ser moduladas em amplitude. O circuito gerador de sinais construído com o CI XR-2206 permite o controle de amplitude apenas para as ondas senoidal e triangular. A tensão de pico a pico da onda quadrada assume valor próximo à tensão de alimentação do CI. O mesmo ocorre para o circuito gerador de sinais construído com o CI LM324 que não possui controle de amplitude para as ondas geradas. Como alternativa, foi implementado um circuito atenuador com Amp Op, para que a tensão de pico a pico fosse reduzida para uma faixa de tensão aceitável para o GPIO do microcontrolador. No decorrer do desenvolvimento do trabalho, surgiu também um problema na amostragem dos valores nos displays de sete segmentos. Como eles são multiplexados, ou seja, são ativados um por vez, foi preciso gerar um atraso na função de amostragem, de forma que o algarismo mostrado no display permanecesse aceso por um tempo suficiente para que fosse identificado pelos olhos do usuário. Os circuitos analógicos geradores de sinais mostraram-se eficientes, pois permitiram um controle preciso de frequência, amplitude e razão cíclica pelo usuário. Além disso, proporcionavam uma ampla faixa numérica para a variação dos parâmetros. Os sinais mostraram-se estáveis, precisos e livres de ruídos, o que caracterizou uma boa leitura pelo microcontrolador. A utilização do microcontrolador adotado pode ser considerada bastante satisfatória, uma vez que forneceu inúmeras ferramentas que auxiliaram no tratamento e análise dos sinais, tornando possível a mensuração dos parâmetros observados de forma clara e coerente. Isto facilitou tanto a interface com o usuário, quanto com os demais circuitos implementados. Também é importante salientar que as necessidades do projeto foram atendidas, fornecendo dados com três dígitos de precisão, sobretudo no que se refere ao cálculo de freqüência efetuado por algoritmos executados de forma clara, devido ao uso de bibliotecas-padrão.

83 TRABALHOS FUTUROS Como trabalhos futuros são propostos: Implementação de uma única rotina de programação que faça todos os cálculos dos parâmetros dos sinais simultaneamente, além de otimizá-la. Programação de um display alfa-numérico para que os valores sejam mostrados simultaneamente, aumentando também o número de dígitos mostrados. Com isso, a leitura poderá ser mais precisa. Implementação de circuitos que gerem sinais com maiores faixas de freqüência e amplitude.

84 71 REFERÊNCIAS 1. HENNEFELD, J. O.; BURCHARD, C. Using C++: An Introduction to Programming. PWS Publishing Company, ST MICROELECTRONICS. Reference Manual of STM32F103RB. Revisão 14, Maio, ROAD, W. L. The Insider s Guide To The STM32 ARM Based Microcontroller. University Of Warwick Science Park, United Kingdon, SEDRA, A. S.; SMITH, K. C. Microeletrônica. 4ª ed. São Paulo: Makron Books, TOCCI, R. J.; WIDMER, N.S. Sistemas Digitais: Princípios e Aplicações. 7ª ed. Rio de Janeiro: JC Editora, 2000.

85 ANEXOS 72

86 73 ANEXO A Distribuição dos periféricos pelos canais do DMA1 Figura A.1 Distribuição dos periféricos pelos canais do DMA1.

87 74 ANEXO B Distribuição dos periféricos pelos canais do DMA2 Figura B.1 Distribuição dos periféricos pelos canais do DMA2.

88 75 ANEXO C Diagrama de blocos do periférico USART Figura C.1 Diagrama de blocos do periférico USART.

89 76 ANEXO D Canal de captura/comparação do periférico temporizador Figura D.1 Canal de captura / comparação do periférico temporizador.

90 77 ANEXO E Diagrama de blocos do conversor A/D Figura E.1 Diagrama de blocos do conversor A/D.

91 78 ANEXO F Programa para cálculo da freqüência e razão cíclica main.c #include "stm32f10x.h" #include <cross_studio_io.h> #include <math.h> TIM_ICInitTypeDef TIM_ICInitStructure; void RCC_Configuration(void); void GPIO_Configuration(void); void NVIC_Configuration(void); int contador=0; int soma=0; int x=0; int y=0; int banda; int main(void) { int teste; int frequencia; float media; float x1,y1; RCC_Configuration(); NVIC_Configuration(); GPIO_Configuration(); TIM_ICInitStructure.TIM_Channel = TIM_Channel_1; TIM_ICInitStructure.TIM_ICPolarity = TIM_ICPolarity_Rising; TIM_ICInitStructure.TIM_ICSelection = TIM_ICSelection_DirectTI; TIM_ICInitStructure.TIM_ICPrescaler = TIM_ICPSC_DIV1; TIM_ICInitStructure.TIM_ICFilter = 0x0; TIM_ICInit(TIM1, &TIM_ICInitStructure); TIM_ICInitStructure.TIM_Channel = TIM_Channel_2; TIM_ICInitStructure.TIM_ICPolarity = TIM_ICPolarity_Falling; TIM_ICInitStructure.TIM_ICSelection = TIM_ICSelection_IndirectTI; TIM_ICInitStructure.TIM_ICPrescaler = TIM_ICPSC_DIV1; TIM_ICInitStructure.TIM_ICFilter = 0x0; TIM_ICInit(TIM1, &TIM_ICInitStructure); TIM_Cmd(TIM1, ENABLE); TIM_ITConfig(TIM1, TIM_IT_CC1, ENABLE); while (1) { while(contador<1000)

92 79 { /* Rotina para amostragem dos valores de freqüência, razão cíclica e amplitude no display */ } media = soma/1000.0; frequencia = / media; y1=y; x1=x; banda = x1/y1; debug_printf("frequencia = %d\n banda = %f\n ", frequencia, banda); soma=0; contador=0; } } void RCC_Configuration(void) { /* TIM1 clock enable */ RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1, ENABLE); /* GPIOA clock enable */ RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); } void GPIO_Configuration(void) { GPIO_InitTypeDef GPIO_InitStructure; /* TIM1 channel 1 pin (PA.08) configuration */ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOA, &GPIO_InitStructure); /* Configuração dos GPIOs de saída para o display */ } void NVIC_Configuration(void) { NVIC_EnableIRQ(TIM1_CC_IRQn); } stm32f10x_it.h #ifndef STM32F10x_IT_H #define STM32F10x_IT_H #include "stm32f10x.h" void TIM1_CC_IRQHandler(void); stm32f10x_it.c

93 80 #include "stm32f10x_it.h" IO uint16_t IC3ReadValue1 = 0, IC3ReadValue2 = 0; IO uint16_t IC3ReadValue3 = 0; IO uint16_t CaptureNumber = 0; IO uint32_t Capture = 0; extern int contador; extern int soma; extern float banda; extern int x,y; void TIM1_CC_IRQHandler(void) { } if(tim_getitstatus(tim1, TIM_IT_CC1) == SET) { TIM_ClearITPendingBit(TIM1, TIM_IT_CC1); if(capturenumber == 0) { IC3ReadValue1 = TIM_GetCapture1(TIM1); CaptureNumber = 1; } else if(capturenumber == 1) { IC3ReadValue2 = TIM_GetCapture1(TIM1); IC3ReadValue3 = TIM_GetCapture2(TIM1); if (IC3ReadValue2 > IC3ReadValue1) { Capture = (IC3ReadValue2 - IC3ReadValue1); } else { Capture = ((0xFFFF - IC3ReadValue1) + IC3ReadValue2); } if(contador!=1000) { soma=soma+capture; contador=contador+1; if (IC3ReadValue2 > IC3ReadValue1) { x=ic3readvalue3-ic3readvalue1; y=ic3readvalue2-ic3readvalue1; } CaptureNumber = 0; } } }

94 81 ANEXO G Programa para o cálculo da amplitude Como o código não necessitava de interrupções para efetuar o cálculo da amplitude, o ambiente de programação restringe-se apenas ao arquivo main.c. O código completo para o cálculo da amplitude do sinal é mostrado abaixo: #include "stm32f10x.h" #include <cross_studio_io.h> int main() { /* Habilitar clock do timer */ RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE); /* Habilitar e inicializar timer */ TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; TIM_TimeBaseStructure.TIM_Period = 9; TIM_TimeBaseStructure.TIM_Prescaler = 7199; TIM_TimeBaseStructure.TIM_ClockDivision = 0; TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure); TIM_OCInitTypeDef TIM_OCInitStructure; TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1; TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; TIM_OCInitStructure.TIM_Pulse = 5; TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High; TIM_OC2Init(TIM2, &TIM_OCInitStructure); TIM_Cmd(TIM2, ENABLE); /* Habilitar clock do GPIO */ RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE); /* Habilitar e Inicializar GPIO */ GPIO_InitTypeDef GPIO_InitStructure; GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN; GPIO_Init(GPIOB, &GPIO_InitStructure); /* Habilitar clock do ADC */ RCC_ADCCLKConfig(RCC_PCLK2_Div6); RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1, ENABLE);

95 82 /* Habilitar e Inicializar ADC */ ADC_InitTypeDef ADC_InitStructure; ADC_InitStructure.ADC_Mode = ADC_Mode_Independent; ADC_InitStructure.ADC_ScanConvMode = DISABLE; ADC_InitStructure.ADC_ContinuousConvMode = DISABLE; ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None; ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right; ADC_InitStructure.ADC_NbrOfChannel = 1; ADC_Init(ADC1, &ADC_InitStructure); /* Para uso de trigger externo */ ADC_ExternalTrigConvCmd(ADC1, ENABLE); ADC_Cmd(ADC1, ENABLE); ADC_RegularChannelConfig(ADC1, ADC_Channel_8, 1, ADC_SampleTime_239Cycles5); int inf, contador=0; int tensao; while(1) { ADC_SoftwareStartConvCmd(ADC1, ENABLE); while(adc_getflagstatus(adc1, ADC_FLAG_EOC) == RESET) { } inf= ADC_GetConversionValue(ADC1); tensao=((((float)inf)/4095.0)*3.3)*1000; while(contador < 1000) { /* Código para mostrar os valores de amplitude no display */ contador=contador+1; } contador = 0; } return 0; }

96 83 ANEXO H Princípio de funcionamento do display Uma forma popular de saída de dados em sistemas microcontrolados são os displays de sete segmentos. A Figura H.1 mostra uma montagem contendo 4 displays de sete segmentos. Figura H.1 Exemplo de montagem com 4 displays de sete segmentos. Nota-se na figura que o display é composto por sete LEDs, indicados pelas letras de a a g. Assim, são necessários 7 sinais elétricos para o acendimento de todos os dígitos decimais possíveis em cada display, totalizando 27 sinais elétricos para os 4 displays. Porém, essa configuração de montagem é ineficiente, pois ocuparia 27 pinos do microcontrolador. Partindo da idéia de que se precisa gerar em cada display apenas os padrões correspondentes aos 10 dígitos decimais, são necessários 4 bits para codificar cada um desses padrões em binário. Então, pode ser usado o CI 4774 que determina quais dos sete segmentos serão acesos a partir da representação do dígito decimal em binário (TOCCI, 2000). Com isso, ao invés de ocupar 27 pinos do microcontrolador, passa-se a usar 16 pinos. Mas ainda é um número grande de pinos ocupados. Como o olho humano retém as imagens vistas por um curto período de tempo (cerca de 40ms), uma solução para reduzir ainda mais o número de pinos ocupados seria multiplexar os 4 displays de sete segmentos. A idéia é que, num primeiro instante de tempo, somente o primeiro display permaneça aceso. Num instante seguinte (alguns milissegundos depois), o primeiro display é apagado e o segundo display acende. O mesmo ocorre com o terceiro e depois o quarto display,

97 84 e o processo começa novamente. Se esse chaveamento ocorrer de forma rápida o suficiente, a representação da imagem no olho humano dá a impressão que todos os displays estão acesos ao mesmo tempo. Dessa forma, basta que um display esteja aceso por vez, sendo necessários 4 pinos que, conectados ao 7447, geram os 7 sinais do display de sete segmentos. Todos os pinos a de cada um dos quatro displays são ligados simultaneamente ao O mesmo vale para o pinos de b a g. Porém, é necessário controlar o apagamentos dos displays que não se encontram ativos num dado momento. Para isso, pode-se usar transistores operando como chave, para abrir ou fechar a conexão entre a alimentação e o anodo comum dos displays de sete segmentos. Resumindo, serão necessários 4 pinos para selecionar o display, 4 pinos para o 7447 que irá compor o dígito decimal no display a partir de 4 bits, um pino para a alimentação do circuito e um pino para a terra. A Figura H.2 mostra um esquemático do circuito. Figura H.2 Diagrama da placa de multiplexação de 4 displays de 7 segmentos.

Entrada e Saída e Dispositivos

Entrada e Saída e Dispositivos Entrada e Saída e Dispositivos Uma das funções do Sistema Operacional é: - Gerência de dispositivos de E/S. Operações: - Tratamento de interrupções - Tratamento erros - Interfaceamento entre os dispositivos

Leia mais

INTRODUÇÃO: MICROCONTROLADORES

INTRODUÇÃO: MICROCONTROLADORES INTRODUÇÃO: MICROCONTROLADORES MICROCONTROLADOR X MICROPROCESSADOR Baixa capacidade de processamento Freq. Operação em MHz Custo de R$ 7,00 a 30,00 Aplicações mais restrita Alta capacidade de processamento

Leia mais

Barramento. Prof. Leonardo Barreto Campos 1

Barramento. Prof. Leonardo Barreto Campos 1 Barramento Prof. Leonardo Barreto Campos 1 Sumário Introdução; Componentes do Computador; Funções dos Computadores; Estrutura de Interconexão; Interconexão de Barramentos Elementos de projeto de barramento;

Leia mais

PCS-2529 Introdução aos Processadores. Prof. Dr. Paulo Sérgio Cugnasca

PCS-2529 Introdução aos Processadores. Prof. Dr. Paulo Sérgio Cugnasca PCS-2529 Introdução aos Processadores Prof. Dr. Paulo Sérgio Cugnasca 1 2 Existem 4 esquemas diferentes de E/S possíveis, cada um se aplicando em uma determinada situação. E/S Programada. E/S Acionada

Leia mais

EXPERIÊNCIA 4: IMPLEMENTAÇÃO DE UM CRONÔMETRO

EXPERIÊNCIA 4: IMPLEMENTAÇÃO DE UM CRONÔMETRO EXPERIÊNCIA 4: IMPLEMENTAÇÃO DE UM CRONÔMETRO Autores: Prof. Dr. André Riyuiti Hirakawa, Prof. Dr. Carlos Eduardo Cugnasca e Prof. Dr. Paulo Sérgio Cugnasca Versão 1.0-05/2005 1. OBJETIVO Esta experiência

Leia mais

Organização e Arquitetura de Computadores I

Organização e Arquitetura de Computadores I Organização e Arquitetura de Computadores I Entrada e Saída Slide 1 Entrada e Saída Dispositivos Externos E/S Programada Organização e Arquitetura de Computadores I Sumário E/S Dirigida por Interrupção

Leia mais

UNIVERSIDADE CATÓLICA DE PELOTAS CENTRO POLITÉCNICO CURSO DE ENGENHARIA ELETRÔNICA DISCIPLINA DE INSTRUMENTAÇÃO ELETRÔNICA

UNIVERSIDADE CATÓLICA DE PELOTAS CENTRO POLITÉCNICO CURSO DE ENGENHARIA ELETRÔNICA DISCIPLINA DE INSTRUMENTAÇÃO ELETRÔNICA UNIVERSIDADE CATÓLICA DE PELOTAS CENTRO POLITÉCNICO CURSO DE ENGENHARIA ELETRÔNICA DISCIPLINA DE INSTRUMENTAÇÃO ELETRÔNICA MONITOR DE MOVIMENTOS COM ACELERÔMETRO Desenvolvido por Maurício Fiss Rodrigues

Leia mais

Acetatos de apoio às aulas teóricas

Acetatos de apoio às aulas teóricas Microprocessadores e Aplicações Acetatos de apoio às aulas teóricas Ana Cristina Lopes Dep. Engenharia Electrotécnica http://orion.ipt.pt anacris@ipt.pt Ana Cristina Lopes, 22 de Novembro de 2004 Microprocessadores

Leia mais

HARDWARE DOS RELÉS NUMÉRICOS

HARDWARE DOS RELÉS NUMÉRICOS HARDWARE DOS RELÉS NUMÉRICOS 1. CONSIDERAÇÕES INICIAIS Objetivos idênticos ao hardware dos relés convencionais, ou seja, recebem sinais analógicos de tensão, corrente e outros, sinais digitais de contatos

Leia mais

APRESENTAÇÃO DO KIT CPLD_EE01

APRESENTAÇÃO DO KIT CPLD_EE01 APRESENTAÇÃO DO KIT CPLD_EE01 O kit CPLD_EE01 foi desenvolvido para alunos de cursos técnicos, engenharia e desenvolvedores na área de circuitos digitais, o mesmo conta com alguns módulos que podem ser

Leia mais

Capítulo 14. Expandindo as portas de comunicação 8031 com a PPI Interface PPI 8255

Capítulo 14. Expandindo as portas de comunicação 8031 com a PPI Interface PPI 8255 Capítulo 14 Expandindo as portas de comunicação 8031 com a PPI 8255 Como discutido ao longo do livro, o 8031 deixa 8 bits para controle genérico de dispositivos. Em situações nas quais se necessita um

Leia mais

Mapeamento de memória e conexões do Controlador CP-WSMIO2DI2DO

Mapeamento de memória e conexões do Controlador CP-WSMIO2DI2DO Comércio e Manutenção de Produtos Eletrônicos Manual CP-WS1 Mapeamento de memória e conexões do Controlador CP-WSMIO2DI2DO PROXSYS Versão 1.3 Abril -2015 Controlador Industrial CP-WS1 1- Configurações

Leia mais

14/3/2016. Prof. Evandro L. L. Rodrigues

14/3/2016. Prof. Evandro L. L. Rodrigues SEL 433 APLICAÇÕES DE MICROPROCESSADORES I SEL-433 APLICAÇÕES DE MICROPROCESSADORES I Prof. Evandro L. L. Rodrigues Tópicos do curso Conceitos básicos - Aplicações e utilizações dos microcontroladores

Leia mais

Notas da Aula 14 - Fundamentos de Sistemas Operacionais

Notas da Aula 14 - Fundamentos de Sistemas Operacionais Notas da Aula 14 - Fundamentos de Sistemas Operacionais 1. Dispositivos de E/S Uma operação de entrada e saída é aquela que envolve a leitura ou escrita de dados a partir de dispositivos que estão fora

Leia mais

Família de Microcontroladores AVR

Família de Microcontroladores AVR www.iesa.com.br 1 AVR é o nome dado a uma linha ou família de microcontroladores fabricada pela empresa Atmel nos Estados Unidos. A sigla AVR é em homenagem a dois estudantes de doutorado de uma universidade

Leia mais

KIT DIDÁTICO PIC-2377

KIT DIDÁTICO PIC-2377 KIT DIDÁTICO PIC-77... Módulo PIC-77 Recursos internos da MCU Encapsulamento DIP40. 5 instruções (RISC). pinos de I/O configuráveis. 56 bytes de EEPROM para dados de 8 bits. 8k de memória flash para o

Leia mais

Microcontrolador 8051

Microcontrolador 8051 Microcontrolador 8051 Inicialmente fabricado pela INTEL, atualmente fabricado por várias empresas; Possui uma grande variedade de dispositivos, com diversas características, porém compatíveis em software;

Leia mais

INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DE SERGIPE COORDENADORIA DE ELETRÔNICA CIRCUITOS OSCILADORES. Experimentos de Osciladores

INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DE SERGIPE COORDENADORIA DE ELETRÔNICA CIRCUITOS OSCILADORES. Experimentos de Osciladores INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DE SERGIPE COORDENADORIA DE ELETRÔNICA CIRCUITOS OSCILADORES Experimentos de Osciladores Relatório requisito Técnico parcial apresentado para como obtenção

Leia mais

OHMÍMETRO DIGITAL. 1 O Projeto. 1.1 Sensor. 1.2 Conversor A/D

OHMÍMETRO DIGITAL. 1 O Projeto. 1.1 Sensor. 1.2 Conversor A/D Universidade Federal do Rio Grande do Norte Departamento de Engenharia Elétrica Disciplina: Instrumentação Eletrônica Professor: Luciano Fontes Cavalcanti Aluno: Raphael Dantas Ciríaco OHMÍMETRO DIGITAL

Leia mais

UNIVERSIDADE CATÓLICA DE PELOTAS CENTRO POLITÉCNICO CURSO DE ENGENHARIA ELETRÔNICA DISCIPLINA DE INSTRUMENTAÇÃO ELETRÔNICA. Trena Ultrassônica

UNIVERSIDADE CATÓLICA DE PELOTAS CENTRO POLITÉCNICO CURSO DE ENGENHARIA ELETRÔNICA DISCIPLINA DE INSTRUMENTAÇÃO ELETRÔNICA. Trena Ultrassônica UNIVERSIDADE CATÓLICA DE PELOTAS CENTRO POLITÉCNICO CURSO DE ENGENHARIA ELETRÔNICA DISCIPLINA DE INSTRUMENTAÇÃO ELETRÔNICA Trena Ultrassônica Desenvolvido por Thiago Ferreira Pontes Relatório Final da

Leia mais

Prof. Adilson Gonzaga

Prof. Adilson Gonzaga Prof. Adilson Gonzaga Outras características importantes em Microprocessadores/Microcontroladores Redução de Potência de Operação As versões CHMOS (89C51, 89S52, etc ) da família MCS-51 possuem dois modos

Leia mais

Osciloscópio Digital. Diagrama em blocos:

Osciloscópio Digital. Diagrama em blocos: Osciloscópio Digital Neste tipo de osciloscópio, o sinal analógico de entrada é inicialmente convertido para o domínio digital através de um conversor A/D rápido, sendo em seguida armazenado em uma memória

Leia mais

Organização de Computadores

Organização de Computadores Organização de Computadores Aula 19 Barramentos: Estruturas de Interconexão Rodrigo Hausen 14 de outubro de 2011 http://cuco.pro.br/ach2034 1/40 Apresentação 1. Bases Teóricas 2. Organização de computadores

Leia mais

Técnicas de Interface: conversor A/D e D/A

Técnicas de Interface: conversor A/D e D/A Técnicas de Interface: conversor A/D e D/A Prof. Adilson Gonzaga Interface com Conversores A/D e D/A Conversor A/D ADC Converte um Valor Analógico para Digital Conversor D/A DAC Converte um Valor Digital

Leia mais

Arquitetura do Microcontrolador Atmega 328

Arquitetura do Microcontrolador Atmega 328 Governo do Estado de Pernambuco Secretaria de Educação Secretaria Executiva de Educação Profissional Escola Técnica Estadual Professor Agamemnon Magalhães ETEPAM Arquitetura do Microcontrolador Atmega

Leia mais

SSC510 Arquitetura de Computadores 1ª AULA

SSC510 Arquitetura de Computadores 1ª AULA SSC510 Arquitetura de Computadores 1ª AULA REVISÃO DE ORGANIZAÇÃO DE COMPUTADORES Arquitetura X Organização Arquitetura - Atributos de um Sistema Computacional como visto pelo programador, isto é a estrutura

Leia mais

controle em instrumentação

controle em instrumentação Circuitos digitais para aquisição de dados e controle em instrumentação O objetivo primordial da conversão de sinais (de ou para sinais elétricos) realizada pelos transdutores, é o de transferir informação

Leia mais

William Stallings Arquitetura e Organização de Computadores 8 a Edição

William Stallings Arquitetura e Organização de Computadores 8 a Edição William Stallings Arquitetura e Organização de Computadores 8 a Edição Capítulo 3 Visão de alto nível da função e interconexão do computador slide 1 Conceito de programa Sistemas hardwired são inflexíveis.

Leia mais

Experiência 5: Circuitos osciladores e conversores digital-analógicos

Experiência 5: Circuitos osciladores e conversores digital-analógicos Experiência 5: Circuitos osciladores e conversores digital-analógicos Esta experiência analisa circuitos osciladores e conversores digital-analógicos. Circuitos osciladores são fundamentais em eletrônica,

Leia mais

UNIVERSIDADE FEDERAL DO PARANÁ SETOR DE CIÊNCIA E TECNOLOGIA ENGENHARIA ELÉTRICA

UNIVERSIDADE FEDERAL DO PARANÁ SETOR DE CIÊNCIA E TECNOLOGIA ENGENHARIA ELÉTRICA UNIVERSIDADE FEDERAL DO PARANÁ SETOR DE CIÊNCIA E TECNOLOGIA ENGENHARIA ELÉTRICA RELATÓRIO CONTADOR DE 6 BITS PROGRAMÁVEL Trabalho apresentado à disciplina de Projeto de Circuitos Integrados Digitais,

Leia mais

SISTEMAS OPERACIONAIS ABERTOS Prof. Ricardo Rodrigues Barcelar

SISTEMAS OPERACIONAIS ABERTOS Prof. Ricardo Rodrigues Barcelar - Aula 1-1. ENTRADAS E SAIDAS Uma das principais funções dos sistemas operacionais é controlar os dispositivos de entrada e saída (E/S ou I/O). O Sistema Operacional (SO) deve ser capaz de enviar comando

Leia mais

Porta Série SÉRIE x PARALELO PORTA SÉRIE. Comunicação série SÉRIE PARALELA

Porta Série SÉRIE x PARALELO PORTA SÉRIE. Comunicação série SÉRIE PARALELA Porta Série 8051 Aplicações de Microprocessadores 2006/2007 SÉRIE x PARALELO SÉRIE EMISSOR RECEPTOR PARALELA EMISSOR RECEPTOR 2 2 PORTA SÉRIE Comunicação série Síncrona Existe um sinal de relógio entre

Leia mais

EPUSP PCS 2011/2305/2355 Laboratório Digital. Frequencímetro

EPUSP PCS 2011/2305/2355 Laboratório Digital. Frequencímetro Frequencímetro Versão 2012 RESUMO Esta experiência tem como objetivo a familiarização com duas classes de componentes: os contadores e os registradores. Para isto, serão apresentados alguns exemplos de

Leia mais

Redes de Computadores

Redes de Computadores Redes de Computadores Prof. Macêdo Firmino Camada Física Macêdo Firmino (IFRN) Redes de Computadores Setembro de 2011 1 / 32 Pilha TCP/IP A B M 1 Aplicação Aplicação M 1 Cab M T 1 Transporte Transporte

Leia mais

Faculdade de Tecnologia SENAI Pernambuco - Unidade Santo Amaro Curso de Tecnologia em Mecatrônica Industrial

Faculdade de Tecnologia SENAI Pernambuco - Unidade Santo Amaro Curso de Tecnologia em Mecatrônica Industrial Serviço Nacional de Aprendizagem Industrial Departamento Regional de Pernambuco Faculdade de Tecnologia SENAI Pernambuco - Unidade Santo Amaro Curso de Tecnologia em Mecatrônica Industrial Disciplina:

Leia mais

Aula 12: Memória: Barramentos e Registradores

Aula 12: Memória: Barramentos e Registradores Aula 12: Memória: Barramentos e Registradores Diego Passos Universidade Federal Fluminense Fundamentos de Arquiteturas de Computadores Diego Passos (UFF) Memória: Barramentos e Registradores FAC 1 / 34

Leia mais

Redes de Computadores I

Redes de Computadores I Redes de Computadores I Prof.ª Inara Santana Ortiz Aula 4 Camada Física Camada Física - Sinais Funções Características físicas (mecânicas e elétricas) das interfaces e dos meios. Define quais os tipos

Leia mais

Painel Luminoso com LEDs

Painel Luminoso com LEDs Painel Luminoso com LEDs Edson T. Midorikawa/2006 RESUMO Esta experiência consiste no projeto e na implementação do circuito de controle de um painel luminoso composto por LEDs (diodos emissores de luz).

Leia mais

Capítulo 8 Interface com o mundo analógico

Capítulo 8 Interface com o mundo analógico Capítulo 8 Interface com o mundo analógico.0 Introdução A maioria das grandezas físicas é analógica por natureza e pode assumir qualquer valor dentro de uma faixa de valores contínuos. Podemos citar: temperatura,

Leia mais

Montagem do Robô. Especificações. domingo, 28 de agosto de 11

Montagem do Robô. Especificações. domingo, 28 de agosto de 11 Montagem do Robô Especificações Componentes São necessários para o robô funcionar alguns componentes básicos: Bateria 9V Regulador L7805 Motor DC 1 4 Diodos 1N4004 Motor DC 2 4 Diodos 1N4004 Ponte H L298N

Leia mais

Multímetro Digital. Principais medidas: Instrumento para medidas de grandezas elétricas em DC e AC (baixas frequências)

Multímetro Digital. Principais medidas: Instrumento para medidas de grandezas elétricas em DC e AC (baixas frequências) Multímetro Digital Instrumento para medidas de grandezas elétricas em DC e AC (baixas frequências) Principais medidas: Tensão e corrente Resistência e continuidade Diodos e transistores Capacitância e

Leia mais

Projeto de Sistemas Eletrônicos

Projeto de Sistemas Eletrônicos Curso de Formação Profissional Técnico em Eletroeletrônica Módulo II Senai Arcos-MG Projeto de Sistemas Eletrônicos Raphael Roberto Ribeiro Silva Técnico em eletroeletrônica pelo INPA Arcos Estudante de

Leia mais

ENTRADAS ANALÓGICAS CONVERSOR A/D

ENTRADAS ANALÓGICAS CONVERSOR A/D PRINCÍPIOS DE AUTOMAÇÃO INDUSTRIAL ENTRADAS ANALÓGICAS CONVERSOR A/D Prof. Valmir PAI 2014.1 1 Sinais Analógicos O CLP: ENTRADAS E SAÍDAS Um valor analógico é continuo, não discreto, como visto na figura.

Leia mais

Conceitos básicos de comunicação. Prof. Marciano dos Santos Dionizio

Conceitos básicos de comunicação. Prof. Marciano dos Santos Dionizio Conceitos básicos de comunicação Prof. Marciano dos Santos Dionizio Conceitos básicos de comunicação A comunicação é um processo de transferência e processamento de informações entre dois pontos por meio

Leia mais

2 Objetivos Verificação e análise das diversas características de amplificadores operacionais reais.

2 Objetivos Verificação e análise das diversas características de amplificadores operacionais reais. Universidade Federal de Juiz de Fora Laboratório de Eletrônica CEL 037 Página 1 de 6 1 Título Prática 11 Características dos Amplificadores Operacionais 2 Objetivos Verificação e análise das diversas características

Leia mais

Sistema de entrada e saída (E/S)- Módulos de E/S; tipos de operações de E/S

Sistema de entrada e saída (E/S)- Módulos de E/S; tipos de operações de E/S Sistema de entrada e saída (E/S)- Módulos de E/S; tipos de operações de E/S Explicitar aos alunos os modelos de entrada e saída em um computador e quais barramentos se aplicam a cada componente: memória,

Leia mais

HardFlex 4VFI e 2 VFO

HardFlex 4VFI e 2 VFO Cód. Doc.: CT0902 Descrição do Produto O módulo HardFlex é uma função de software que configura o hardware dos mircrocontroladores GR350, GR35, GR370 e GR37 da Série Grano, para implementar 4 entradas

Leia mais

10.0 Conversores DA. Conceitos básicos:

10.0 Conversores DA. Conceitos básicos: 100 Conversores DA Monitorar grandezas físicas, coletar dados e armazena-los para possíveis tomadas de decisão é grande interesse da indústria A precisão dos sinais coletados é de extrema importância,

Leia mais

Universidade Federal do Rio Grande do Sul Escola de Engenharia Departamento de Sistemas Elétricos de Automação e Energia ENG10032 Microcontroladores

Universidade Federal do Rio Grande do Sul Escola de Engenharia Departamento de Sistemas Elétricos de Automação e Energia ENG10032 Microcontroladores Universidade Federal do Rio Grande do Sul Escola de Engenharia Departamento de Sistemas Elétricos de Automação e Energia ENG10032 Microcontroladores 1 Objetivo Roteiro de Laboratório 6 Pulse-Width-Modulation

Leia mais

UNIVERSIDADE ESTADUAL PAULISTA. Campus de Guaratinguetá Colégio Técnico Industrial de Guaratinguetá Professor Carlos Augusto Patrício Amorim

UNIVERSIDADE ESTADUAL PAULISTA. Campus de Guaratinguetá Colégio Técnico Industrial de Guaratinguetá Professor Carlos Augusto Patrício Amorim unesp UNIVERSIDADE ESTADUAL PAULISTA Campus de Guaratinguetá Colégio Técnico Industrial de Guaratinguetá Professor Carlos Augusto Patrício Amorim 1 Atividades de Recuperação Final Sistemas Digitais II

Leia mais

9.0 Conversores DA. Um conversor digital analógico simples com saída em tensão

9.0 Conversores DA. Um conversor digital analógico simples com saída em tensão 9.0 Conversores DA Um DAC (Digital-to-Analog Converter) é um conversor digital analógico, comumente usado em situações onde há necessidade de converter um sinal um sinal que se apresenta na forma digital

Leia mais

4.3 - DMA & Chipset. CEFET-RS Curso de Eletrônica. Profs. Roberta Nobre & Sandro Silva. e

4.3 - DMA & Chipset. CEFET-RS Curso de Eletrônica. Profs. Roberta Nobre & Sandro Silva. e CEFET-RS Curso de Eletrônica 4.3 - DMA & Chipset Profs. Roberta Nobre & Sandro Silva robertacnobre@gmail.com e sandro@cefetrs.tche.br Unidade 04.3.1 DMA Dados podem ser transferidos entre dispositivos

Leia mais

Sistemas Embarcados:

Sistemas Embarcados: Universidade Federal do Rio Grande do Norte Departamento de Engenharia de Computação e Automação Sistemas Embarcados: Microcontroladores DCA0119 Sistemas Digitais Heitor Medeiros Florencio Sistemas Embarcados

Leia mais

Microcontrolador 8051:

Microcontrolador 8051: Microcontrolador 8051: Fonte: CORRADI 2009 O Microcontrolador 8051: Começou a ser produzido no início da década de 80, pela Intel; Hoje é fabricado por várias empresas e com muitas variações; Atualmente,

Leia mais

Painel Luminoso com LEDs

Painel Luminoso com LEDs Painel Luminoso com LEDs Versão 2007 RESUMO Esta experiência consiste no projeto e na implementação do circuito de controle de um painel luminoso composto por LEDs (diodos emissores de luz). Através da

Leia mais

ezap 900 Controlador Lógico Programável ezap900/901 Diagrama esquemático Apresentação Módulo ZMB900 - Características Gerais Dados Técnicos

ezap 900 Controlador Lógico Programável ezap900/901 Diagrama esquemático Apresentação Módulo ZMB900 - Características Gerais Dados Técnicos Caixa Aço carbono zincado Grau de proteção IP20 Dimensões 98 (L) x 98 (A) x 125 (P) mm Diagrama esquemático Apresentação A família de controladores lógicos programáveis ZAP900 foi desenvolvida para atender

Leia mais

2. INSTRUMENTOS, PADRÕES E ACESSÓRIOS UTILIZADOS NA CALIBRAÇÃO

2. INSTRUMENTOS, PADRÕES E ACESSÓRIOS UTILIZADOS NA CALIBRAÇÃO 2. INSTRUMENTOS, PADRÕES E ACESSÓRIOS UTILIZADOS NA CALIBRAÇÃO Neste capítulo, estão descritos todos os instrumentos, padrões e acessórios utilizados no procedimento de calibração do multímetro da dissertação

Leia mais

Arduino Lab 06 Leitura de um sensor de temperatura do tipo NTC com o Arduino

Arduino Lab 06 Leitura de um sensor de temperatura do tipo NTC com o Arduino Arduino Lab 06 Leitura de um sensor de temperatura do tipo NTC com o Arduino Imagem montagem Resumo Neste Lab trataremos da leitura de temperatura utilizando um sensor do tipo NTC (Negative Temperature

Leia mais

Eletrônica Digital II (Memórias) Prof. Eng. Antonio Carlos Lemos Júnior

Eletrônica Digital II (Memórias) Prof. Eng. Antonio Carlos Lemos Júnior Eletrônica Digital II (Memórias) Prof. Eng. Antonio Carlos Lemos Júnior Termos Básicos Célula de memória dispositivo ou circuito capaz de armazenar um bit. Ex.: um flip-flop, um capacitor, etc. Palavra

Leia mais

KIT DIDÁTICO PARA MICROCONTROLADORES ARM7 - FAMÍLIA LPC 214X

KIT DIDÁTICO PARA MICROCONTROLADORES ARM7 - FAMÍLIA LPC 214X KIT DIDÁTICO PARA MICROCONTROLADORES ARM7 - FAMÍLIA LPC 214X Bruno Roussenq Bichels; Ghybson Gregh Martins Instituto Federal de Educação, Ciência e Tecnologia de Santa Catarina - IF-SC Av. Mauro Ramos,

Leia mais

Instrumentação Eletrônica

Instrumentação Eletrônica Instrumentação Eletrônica Introdução Descrição geral do projeto Componentes utilizados Implementação do software Simulação Resultados Referências O objetivo deste trabalho é a implementação de um ohmímetro

Leia mais

Faculdade Integrada do Ceará FIC Graduação em Redes de Computadores

Faculdade Integrada do Ceará FIC Graduação em Redes de Computadores Faculdade Integrada do Ceará FIC Graduação em Redes de Computadores Disciplina Redes de Banda Larga Prof. Andrey Halysson Lima Barbosa Aula 1 Conceitos básicos de comunicação Sumário Técnicas de transmissão

Leia mais

Entrada e Saída (E/S)

Entrada e Saída (E/S) Organização e Arquitetura de Computadores Entrada e Saída (E/S) Givanaldo Rocha de Souza http://docente.ifrn.edu.br/givanaldorocha givanaldo.rocha@ifrn.edu.br Baseado no material do prof. Sílvio Fernandes

Leia mais

ENCONTRO 4 AMPLIFICADOR DE INSTRUMENTAÇÃO

ENCONTRO 4 AMPLIFICADOR DE INSTRUMENTAÇÃO CURSO DE ENGENHARIA ELÉTRICA DISCIPLINA: ELETRÔNICA II PROFESSOR: VLADEMIR DE J. S. OLIVEIRA ENCONTRO 4 AMPLIFICADOR DE INSTRUMENTAÇÃO 1. COMPONENTES DA EQUIPE Alunos Nota: Data: 2. OBJETIVOS - Implementação

Leia mais

Família 8051 (introdução) 2011/1

Família 8051 (introdução) 2011/1 Família 8051 (introdução) 2011/1 Refresh Microprocessador vs. microcontrolador. Periféricos built-in. Single-chip computer 2 Objetivos Histórico Modelos da família original Principais características Diagrama

Leia mais

LÓGICA DIGITAL CONCEITOS DE CLOCK RELÓGIOS (CLOCK) Prof. Celso Candido ADS / REDES / ENGENHARIA

LÓGICA DIGITAL CONCEITOS DE CLOCK RELÓGIOS (CLOCK) Prof. Celso Candido ADS / REDES / ENGENHARIA RELÓGIOS (CLOCK) 1 Em muitos circuitos digitais, a ordem em que os eventos ocorrem é crítica. Às vezes um evento deve preceder outro, ou então dois eventos deverão ocorrer simultaneamente, para as relações

Leia mais

CAPÍTULO 5. Interfaces I 2 C e SPI. Interface I 2 C. Interfaces e Periféricos 37

CAPÍTULO 5. Interfaces I 2 C e SPI. Interface I 2 C. Interfaces e Periféricos 37 Interfaces e Periféricos 37 CAPÍTULO 5 Interfaces I 2 C e SPI Interface I 2 C Nos anos 80 a Philips desenvolveu um novo padrão de barramento chamado I²C, cujo objetivo era facilitar a comunicação entre

Leia mais

CONVERSORES D/A e A/D

CONVERSORES D/A e A/D CONVERSORES D/A e A/D Conversores A/D Analógico/Digital e D/A - Digital/Analógico são circuitos responsáveis pela conversão de sinais analógicos para digitais, e de sinais digitais para sinais analógicos.

Leia mais

SEL 0412 Tecnologia Digital Teoria

SEL 0412 Tecnologia Digital Teoria SEL 0412 Tecnologia Digital Teoria Aquisição de Dados Profa. Tania Regina Tronco Conceito É a coleta de informações para fins de análise dos dados e consequente controle e monitoramento de um processo;

Leia mais

PCS 2304 PROJETO LÓGICO DIGITAL 19/05/2006 Gabarito Preliminar 6 a Lista de Exercícios Contadores

PCS 2304 PROJETO LÓGICO DIGITAL 19/05/2006 Gabarito Preliminar 6 a Lista de Exercícios Contadores PCS 24 PROJETO LÓGICO DIGITAL 9/5/26 Gabarito Preliminar 6 a Lista de Exercícios Contadores ) Contador em anel. A Figura apresenta um contador em anel torcido semelhante aos vistos anteriormente em aula,

Leia mais

Temporizadores e Contadores

Temporizadores e Contadores Temporizadores e Contadores Temporizadores e Contadores (Timer/Counter) O 8051 possui 2 T/C internos de 16 Bits programáveis e com capacidade de operação independente da CPU. Contadores crescentes (up-counter)

Leia mais

Periféricos do PIC - Comparadores e UART

Periféricos do PIC - Comparadores e UART Periféricos do PIC - Comparadores e Guilherme Luiz Moritz 1 1 DAELT - Universidade Tecnológica Federal do Paraná 03 de 2013 Periféricos do PIC - Comparadores e Objetivos Aprender a utilizar o comparador

Leia mais

FACULDADE LEÃO SAMPAIO

FACULDADE LEÃO SAMPAIO FACULDADE LEÃO SAMPAIO Microcontroladores Curso de Análise e Desenvolvimento de Sistemas 1 Componentes CPU Memórias Dispositivos de Entrada/Saída (E/S) Input/Output (I/O) 2 CPU A CPU busca informações

Leia mais

Conversores Digital/Analógico (D/A) e Analógico/Digital (A/D)

Conversores Digital/Analógico (D/A) e Analógico/Digital (A/D) Conversores Digital/Analógico (D/A) e Analógico/Digital (A/D) Conversores A/D e D/A são a base de todo o interfaceamento eletrônico entre o mundo analógico e o mundo digital. Estão presentes na grande

Leia mais

INFORMÁTICA BÁSICA HARDWARE: COMPONENTES BÁSICOS E FUNCIONAMENTO.

INFORMÁTICA BÁSICA HARDWARE: COMPONENTES BÁSICOS E FUNCIONAMENTO. INFORMÁTICA BÁSICA HARDWARE: COMPONENTES BÁSICOS E FUNCIONAMENTO isabeladamke@hotmail.com Componentes de um Sistema de Computador HARDWARE: unidade responsável pelo processamento dos dados, ou seja, o

Leia mais

Arduino Lab 02 Sensor de luminosidade e display de LCD 16 2

Arduino Lab 02 Sensor de luminosidade e display de LCD 16 2 Arduino Lab 02 Sensor de luminosidade e display de LCD 16 2 Display de LCD 16 2 Neste Lab, iremos descrever como conectar o sensor BH1750FVI, já citado no Lab 01, ao Arduino Micro e à um display. A indicação

Leia mais

Os textos nestas caixas foram adicionados pelo Prof. Joubert

Os textos nestas caixas foram adicionados pelo Prof. Joubert William Stallings Arquitetura e Organização de Computadores 8 a Edição Capítulo 3 Visão de alto nível da função e interconexão do computador Os textos nestas caixas foram adicionados pelo Prof. Joubert

Leia mais

3 a Lista de Exercícios

3 a Lista de Exercícios Universidade Federal de Santa Catarina Departamento de Informática e Estatística Bacharelado em Ciências da Computação INE 5406 - Sistemas Digitais - semestre 2010/2 Prof. José Luís Güntzel guntzel@inf.ufsc.br

Leia mais

Barramentos. Tópicos

Barramentos. Tópicos Barramentos Prof. Alexandre Beletti Cap. 2 Tanenbaum Cap. 2 -Stallings Tópicos Estrutura de Barramento Tipos de Barramento Controladora de Barramento Largura de Barramento Transmissão Síncrona e Assíncrona

Leia mais

Lista de Exercícios 1

Lista de Exercícios 1 Conceitos envolvidos: a) Memória de Dados (interna e externa) b) Memória de Programa (interna e externa) c) Operações aritméticas e lógicas d) Portas e) Endereçamento a Bit f) Contadores e Temporizadores

Leia mais

MICROCONTROLADORES NO RADIOAMADORISMO

MICROCONTROLADORES NO RADIOAMADORISMO MICROCONTROLADORES NO RADIOAMADORISMO CT2KAV CARLOS SOUSA Almeirim, 17 de Setembro de 2016 Único circuito com O MICROCONTROLADOR Processador Memória Ram, E2Prom, Flash Periféricos ADC, USART, USB Comparadores,

Leia mais

Proposta de uma plataforma de monitoramento e acionamento remoto voltada para sistemas de hardware industriais utilizando LabVIEW

Proposta de uma plataforma de monitoramento e acionamento remoto voltada para sistemas de hardware industriais utilizando LabVIEW Proposta de uma plataforma de monitoramento e acionamento remoto voltada para sistemas de hardware industriais utilizando LabVIEW "Este artigo tem como proposta apresentar uma plataforma para monitoramento

Leia mais

Circuito Eletrônico. Entendendo o circuito eletrônico na robótica. domingo, 28 de agosto de 11

Circuito Eletrônico. Entendendo o circuito eletrônico na robótica. domingo, 28 de agosto de 11 Circuito Eletrônico Entendendo o circuito eletrônico na robótica Circuito Integrado Um circuito integrado híbrido é um circuito eletrônico miniaturizado constituído de dispositivos semicondutores individuais,

Leia mais

Totem Pole, Coletor Aberto e Tristate

Totem Pole, Coletor Aberto e Tristate Departamento de Engenharia Elétrica e de Computação - EESC-USP SEL-415 Introdução à Organização dos Computadores Totem Pole, Coletor Aberto e Tristate Aula 2 Profa. Luiza Maria Romeiro Codá Autor: Dr.

Leia mais

Redes Industriais. Carlos Roberto da Silva Filho, M. Eng.

Redes Industriais. Carlos Roberto da Silva Filho, M. Eng. Redes Industriais Carlos Roberto da Silva Filho, M. Eng. Criado na década de 1970 pela Modicon. É um dos mais antigos protocolos utilizados em redes de CLPs para aquisição de sinais de instrumentos e comandar

Leia mais

HD disco rígido CD drive de compact disc Cache memória cache RAM - memória principal UCP unidade central de processamento

HD disco rígido CD drive de compact disc Cache memória cache RAM - memória principal UCP unidade central de processamento CONHECMENTOS ESPECÍFCOS CONSDERE AS CONVENÇÕES UTLZADAS NA ELABORAÇÃO DAS QUESTÕES HD disco rígido CD drive de compact disc Cache memória cache RAM - memória principal UCP unidade central de processamento

Leia mais

Lógica Matemática e Elementos de Lógica Digital (Representação analógica e digital)

Lógica Matemática e Elementos de Lógica Digital (Representação analógica e digital) Lógica Matemática e Elementos de Lógica Digital (Representação analógica e digital) Curso: Ciência da Computação Lívia Lopes Azevedo livia@ufmt.br Lógica Matemática e Elementos de Lógica Digital Circuitos

Leia mais

MINISTÉRIO DA EDUCAÇÃO CEFET/SC - Unidade de São José. Curso Técnico em Telecomunicações REGISTRADORES. Marcos Moecke. São José - SC,

MINISTÉRIO DA EDUCAÇÃO CEFET/SC - Unidade de São José. Curso Técnico em Telecomunicações REGISTRADORES. Marcos Moecke. São José - SC, MINISTÉRIO DA EDUCAÇÃO - Unidade de São José Curso Técnico em Telecomunicações REGISTRADORES Marcos Moecke São José - SC, 24-2 SUMÁRIO 6. REGISTRADORES... 1 6.1 REGISTRADORES DO TIPO PORTA PARALELA...1

Leia mais

Analisador de Espectros

Analisador de Espectros Analisador de Espectros O analisador de espectros é um instrumento utilizado para a análise de sinais alternados no domínio da freqüência. Possui certa semelhança com um osciloscópio, uma vez que o resultado

Leia mais

Periféricos possuem características diferentes. Periféricos são mais lentos que UCP e Memória Necessita-se de módulos de Entrada/Saída

Periféricos possuem características diferentes. Periféricos são mais lentos que UCP e Memória Necessita-se de módulos de Entrada/Saída Periféricos possuem características diferentes Geram diferentes quantidades de dados Em velocidades diferentes Em formatos diferentes Periféricos são mais lentos que UCP e Memória Necessita-se de módulos

Leia mais

Processador: Conceitos Básicos e Componentes

Processador: Conceitos Básicos e Componentes Processador: Conceitos Básicos e Componentes Cristina Boeres Instituto de Computação (UFF) Fundamentos de Arquiteturas de Computadores Material baseado nos slides de Fernanda Passos Cristina Boeres (IC/UFF)

Leia mais

Conversor A/D por aproximações sucessivas

Conversor A/D por aproximações sucessivas Conversor A/D por aproximações sucessivas É baseado no mesmo princípio do A/D de rampa digital, onde o sinal analógico de entrada i é comparado sucessivamente com a saída analógica do conversor D/A acoplado

Leia mais

Eletrônica e Circuitos Digitais Aula 14 Contadores e Registradores. Daniel S Batista

Eletrônica e Circuitos Digitais Aula 14 Contadores e Registradores. Daniel S Batista Eletrônica e Circuitos Digitais Aula 14 Contadores e Registradores Daniel S Batista Daniel.Strufaldi@gmail.com Organização Contadores assíncronos Contadores de módulo < 2 N. Circuitos integrados de contadores

Leia mais

Gerência de Dispositivos. Adão de Melo Neto

Gerência de Dispositivos. Adão de Melo Neto Gerência de Dispositivos Adão de Melo Neto 1 Gerência de Dispositivos Gerência de Dispositivos Dispositivos de E/S Device Drivers Controladores Subsistema de E/S 2 Gerência de Dispositivos A gerência de

Leia mais

2 DESENVOLVIMENTO FUNCIONAL DO ACIONAMENTO

2 DESENVOLVIMENTO FUNCIONAL DO ACIONAMENTO 2 DESENVOLVIMENTO FUNCIONAL DO ACIONAMENTO 2.1 Acionamento em Meio-passo No presente trabalho, o funcionamento do motor em meio-passo será implementado energizando as fases segundo o diagrama mostrado

Leia mais

Problemas com Entrada e Saída

Problemas com Entrada e Saída Problemas com Entrada e Saída Periféricos possuem características diferentes Geram diferentes quantidades de dados Em velocidades diferentes Em formatos diferentes Periféricos são mais lentos que UCP e

Leia mais

ESTRUTURA E FUNCIONAMENTO DO COMPUTADOR

ESTRUTURA E FUNCIONAMENTO DO COMPUTADOR ESTRUTURA E FUNCIONAMENTO DO COMPUTADOR Prof. Filippo Valiante Filho http://prof.valiante.info Estrutura do Computador Computador CPU (Central Processing Unit) Sistema de Armazenamento (Memórias) Sistema

Leia mais

BARRAMENTO DO SISTEMA. Adão de Melo Neto

BARRAMENTO DO SISTEMA. Adão de Melo Neto BARRAMENTO DO SISTEMA Adão de Melo Neto 1 BARRAMENTOS DO SISTEMA O mecanismo mais comum de interconexão dos componentes de um computador (processador, memória principal e módulos de E/S) usa um barramento

Leia mais