ENCICLOPÉDIA DE RÁDIO ELETRÔNICA E ENGENHARIA ELÉTRICA Como conectar um microcontrolador e um computador via RS-232. Enciclopédia de rádio eletrônica e engenharia elétrica Enciclopédia de eletrônica de rádio e engenharia elétrica / Microcontroladores Este artigo pretende ser um exemplo de implementação do desenvolvimento de um dispositivo microcontrolador controlado por um computador pessoal através de um canal serial. Destina-se a quem ainda não tem experiência em tais desenvolvimentos. Depois de entender como o PC controla o microcontrolador, exibe, processa e armazena as informações dele recebidas, você pode aplicar esse conhecimento em seus próprios desenvolvimentos. Além disso, o dispositivo descrito também possui valor independente: é um voltímetro digital controlado, cujos resultados de medição, antes de serem exibidos, podem ser processados por um computador de acordo com um algoritmo pré-determinado, e também salvos em um arquivo no disco rígido do seu PC, visualizado e impresso. Tudo isso faz do dispositivo descrito a base para um sistema simples de coleta, processamento e documentação de dados, útil para engenheiros eletrônicos que não possuem um nível de conhecimento da tecnologia de microcontroladores para desenvolvimento independente. Introdução O objetivo deste trabalho foi desenvolver e criar um dispositivo de medição simples baseado em um microcontrolador, ainda hoje o mais comum, da família x51, que pudesse trocar informações com um computador pessoal. O dispositivo deveria implementar um medidor de tensão, que mais tarde poderia ser complementado com vários acessórios que convertem outras grandezas físicas medidas diretamente em tensão. Tal dispositivo permitiria realizar facilmente uma série de medições, sendo controladas por um computador, bem como acumular os resultados e realizar o seu processamento informático. Sujeito a alterações não fundamentais, poderia facilmente transformar-se num sistema de monitorização e controlo remoto de equipamentos ou outros instrumentos e dispositivos. Descrição geral do dispositivo. Parte elétrica do aparelho O aparelho (Fig. 1), na verdade, é um voltímetro digital. Na entrada do voltímetro existe um amplificador operacional (DA1), que possui alta impedância de entrada. O amplificador operacional é seguido por um ADC (DD2), que permite digitalizar a tensão de interesse para posterior transmissão ao microcontrolador. O microcontrolador DD3 é o principal elemento de controle do dispositivo, pois lê informações do ADC e se comunica com um computador pessoal através de um canal serial. O dispositivo também inclui conversores de potência para gerar +5 V para a parte digital e para gerar +/-10 V para o amplificador operacional, além de um chip de conversão de nível (lógico <0> e <1> para -15: +15 V e vice-versa) para troca de informações através de um canal serial como RS232.
O valor enviado ao computador está na faixa 0...4095 (que corresponde à profundidade de bits do ADC), 0 corresponde ao nível de entrada 0V, 4095 - nível 5V, a dependência é linear. A taxa de troca de informações pode ser selecionada abaixo de 9600 bauds ou superior - até 115 bauds. Em computadores bastante antigos, como 200 e anteriores, o limite superior é muito menor - 386 bauds. Isso ocorre porque os chips de porta serial encontrados nesses computadores não foram projetados para velocidades mais altas. Descrição das fichas Conversor de Fonte de Alimentação MAX680 Os amplificadores operacionais normalmente requerem uma alimentação bipolar (por exemplo, +10 V e -10 V em relação ao terra). Os radioamadores pouco familiarizados com a moderna base de elementos costumam utilizar um transformador com dois enrolamentos secundários (ou um, mas com derivação do meio), dois capacitores de filtro, dois estabilizadores, etc. tenha à sua disposição a tensão estabilizada é de 5V, e o amplificador operacional utilizado, que necessita de alimentação bipolar, pode custar apenas +7:10 V, consumindo 1:2 mA, então os mencionados dois enrolamentos e dois estabilizadores não serão necessários . Basta usar o microcircuito MAX680 da Maxim (observe que microcircuitos semelhantes são produzidos pela Linear Technology e por várias outras empresas conhecidas). Na entrada do microcircuito é aplicada uma tensão Uin de 3:5 a 6:10 V (dependendo do tipo); em suas saídas são geradas tensões iguais a aproximadamente +2Uin. O notável é que, em primeiro lugar, para gerar essas tensões, além do MAX8 ou LT680 de 1026 pinos, são necessários apenas 4 pequenos capacitores eletrolíticos (ver Fig. 1), e em segundo lugar, quando a tensão de entrada muda, duplicar as saídas mudança de fase, que praticamente não tem efeito no sinal de saída do amplificador operacional. Para obter informações mais detalhadas sobre tais microcircuitos, o autor recomenda consultar as descrições proprietárias correspondentes. ADC MAX1241 Nos últimos anos, os microcircuitos controlados através de um canal serial receberam amplo desenvolvimento na tecnologia de microcontroladores. Um desses microcircuitos é o ADC MAX12 de 1241 bits. Como no caso do MAX680, o MAX1241 possui muitos análogos exatos e aproximados (MAX187 da Maxim, LTC1286, LTC1298 da Linear Technology, AD7894 da Analog Devices e vários outros). O MAX1241 é embalado em um pacote de 8 pinos, é alimentado por uma tensão de 2,7 a 5 V e consome uma corrente de cerca de 5 mA. Requer a utilização de uma fonte externa de tensão de referência (neste caso é utilizado um diodo zener de precisão KR142EN19, gerando uma tensão de 2,50 V) e utiliza apenas 3 linhas para comunicação com o microcontrolador. A operação do MAX1241 é ilustrada pelos diagramas de temporização mostrados na Fig. 2. Antes do início da conversão e troca, a entrada CS# MAX1241 deve ser mantida pelo microcontrolador em um único estado. Para iniciar a conversão, um nível lógico zero deve ser aplicado a esta entrada. O processo de conversão para MAX1241 leva pouco menos de 8 µs. Durante todo o tempo de conversão, MAX1241 mantém um nível lógico de 0 em sua saída DOUT. Após a conclusão da conversão, MAX1241 muda a saída DOUT para um estado único.
Antes de iniciar a conversão, o microcontrolador na entrada SCLK do MAX1241 deve definir o nível lógico zero. Quando o processo de conversão dentro do ADC for concluído, o microcontrolador deve gerar uma sequência de pelo menos 12 pulsos positivos na entrada SCLK (Fig. 2). A borda do primeiro pulso prepara o MAX1241 para transmissão de dados. À medida que o pulso cai em DOUT, o 12º bit mais significativo aparece como um zero ou um lógico. O microcontrolador lê esse bit, forma a borda do segundo pulso no SCLK e depois de um tempo - sua queda. À medida que o segundo pulso cai, o 11º bit aparece no DOUT, que é então lido pelo microcontrolador, etc. No declínio do 12º pulso, o primeiro bit menos significativo é definido na saída DOUT. A queda do 1º pulso leva DOUT ao estado zero, que é onde estava antes da entrada CS# ser definida como 13. Ao transferir o CS# para o estado único, o microcontrolador informa ao MAX1 que o processo de leitura do resultado da conversão foi concluído. O MAX1241 pode realizar a próxima conversão aproximadamente 1241 µs após definir CS# como 1. Os algoritmos operacionais do LTC1286, LTC1298 da Linear Technology e AD7894 da Analog Devices diferem ligeiramente daqueles descritos para o MAX1241. Você pode conhecê-los com mais detalhes consultando as descrições correspondentes da empresa. Conversor de nível MAX202E É um segredo para poucos que na lógica padrão um é representado por um nível de tensão de 2,4 a 5 V e zero - de 0 a 0,8 V. No entanto, os iniciantes podem não saber que ao transmitir através de um canal RS-232, zero e um é codificado com sinais do mesmo valor (de 5 a 12 V), mas com sinais diferentes. No âmbito deste artigo, não se pretende explicar porque é que é habitual fazer isto e não de outra forma - limitar-nos-emos a apenas afirmar este facto. Como os sinais lógicos padrão devem ser convertidos em sinais de outro nível para transmissão via RS-232, é necessário fornecer meios de conversão apropriados no circuito. Cerca de 10 anos atrás, cascatas especialmente projetadas de três ou quatro transistores, um par de diodos e quase uma dúzia de resistores foram usadas para essa finalidade. Agora a situação mudou significativamente: os principais fabricantes de chips produzem conversores totalmente completos que requerem um número mínimo de elementos adicionais. Estes incluem o MAX202E da MAXIM e o AD232 da Analog Devices, que é completamente idêntico a ele, até na pinagem. No interior, ambos os microcircuitos contêm um conversor de tensão de +5 V a +10 V, idêntico ao MAX680 descrito acima, e cascatas que convertem sinais lógicos de nível padrão em sinais de nível de acordo com o padrão RS-232. Cada um dos microcircuitos mencionados contém conversores de nível lógico para dois receptores e dois transmissores. Usaremos apenas um canal transceptor. Modo de operação do MK com canal serial Como se sabe (ver, por exemplo, os números 10 e 11 da revista Radio de 1994), os microcontroladores da família x51 possuem quatro modos de operação do transceptor. Estaremos interessados no modo 1 como o mais simples e aceitável. O modo 1 é caracterizado pelos seguintes parâmetros:
Este é um modo conveniente para programação: muito pouco código de programação é necessário para configurar e operar o transceptor. Embora você possa usar outros modos de operação, se desejar. O objetivo deste artigo é descrever um determinado dispositivo que tem a capacidade de se comunicar com um computador pessoal. Não descreveremos aqui exatamente como funciona o transceptor. Esta informação pode ser obtida nas revistas de rádio mencionadas ou em outra literatura. Rotinas básicas para MK As principais rotinas do microcontrolador serão: leitura de dados do ADC, inicialização do UART, recebimento de byte e envio de byte. Lendo dados do ADC Configurando um PC para trocar informações através de um link serial. Para configurar seu PC para trocar informações através de um canal serial, você deve fazer o seguinte:
Um exemplo de código projetado para uma taxa de câmbio de 9600 bps para um ressonador de quartzo com frequência de ressonância de 11,059 MHz:
GET_VOLT: SETB DOUT ; ENTRADA DE DADOS PERMITIDA DO ADC SETB CS ; DEFINIR ESTADO INICIAL ADC CLR SCLK ; DEFINIR ESTADO INICIAL ADC CLR CS; REPORTADO PARA LER DADOS DE MUL AB; 4 MKS A 12 MHZ\ MUL AB ; 4 ISS | MULAB ; 4ISS} AGUARDE O FIM; | DIGITAÇÕES MUL AB ; 4 MKS/MOV R0,#12 ; READ 12 BIT GET_VC: SETB SCLK ; \NOP ; | PON; | CLR SCLK ; } GEROU UM PULSO PARA LEITURA DO BIT NOP ; | PON; /MOV C, DOUT ; LER BIT MOV A, R2 ; \ RLC A ; | MOV R2,A ; | MOV A, R3; } PUSH BIT IN WORD ; |RESULTADO - R3R2 RLC A; | MOV R3,A ; / DJNZ R0, GET_VC ; LOOP ANL A,#0FH MOV R3,A ; BITS ALTOS LIMPADOS R3R2 SETB CS ; NÃO QUERO LER; (BITS RESTANTES = 0) MUL AB ; 4 MKS AT 12 MHZ \ MUL AB ; 4 ISS | MULAB ; 4 ISS | MULAB ; 4 µs }MIN DELAY ; | ANTES DO PRÓXIMO MULAB ; 4 ISS | MULAB ; 4 ISS/RET Esta sub-rotina é chamada de primeira no programa principal do microcomputador. Em princípio, nem pode ser concebido como uma sub-rotina. Recebendo e enviando um byte As rotinas para receber e enviar um byte através de um link serial são muito simples.
SERINIT: MOV IE, #0 ; Desabilita todas as interrupções MOV TMOD, #20H ; Definir o modo 2 para o temporizador 1 MOV TH1, #REL96 ; Valor do contador de autorecarregamento MOV TL1, #REL96 ; Valor inicial do contador para 9600 bps; com SMOD = 0 ANL PCON, #7FH ; SMOD MOV SCON limpo, #50H ; Modo para 8 bits de dados e baud rate, ; dependente do temporizador SETB TR1 ; Iniciar temporizador/definidor 1 RET onde REL96 é uma constante igual a 0FDh Você pode ler um byte da porta de E/S SBUF somente quando o bit RI do registro de controle/status SCON estiver definido, indicando a presença de um byte no buffer de recebimento. Após a leitura deste byte, o bit RI deve ser reinicializado. Após escrever um byte na porta de E/S, é necessário aguardar até que o bit TI seja setado, o que sinalizará o fim do envio do byte para a linha. Então o bit TI também precisará ser redefinido. Sub-rotina para receber um byte no acumulador:
GETCH: JNB RI, GETCH MOV A, SBUF CLR RI RET Sub-rotina para enviar um byte do acumulador:
PUTCH: MOV SBUF, A SEND: JNB TI, SEND CLR TI RET Deve-se notar também que o microcomputador não possui nenhum meio de detecção de erros de entrada/saída. Para organizar a verificação de forma software e hardware, é possível ampliar o número de linhas de entrada/saída através das quais serão transmitidos sinais adicionais, e a partir delas será possível determinar os estados em que se encontram os participantes do diálogo, bem como identificar erros. Você pode aumentar a confiabilidade da recepção/transmissão de informações de outra maneira: transmita outro bit com oito bits de dados - o bit de paridade, calculado de forma semelhante ao sinalizador de paridade na palavra de status do programa (bit 0 PSW). Só deve ser calculado para um byte transmitido ou recebido. Depois de receber o byte e o bit de paridade, você precisa compará-los para ver se correspondem. Se não corresponderem, ocorreu um erro de E/S. Para transmitir o 9º bit de informação adicional, você precisa usar o modo 2 ou 3 do temporizador/contador. Programa geral para MK. Diagrama de estado do dispositivo O programa geral do microcomputador é baseado no algoritmo descrito abaixo. O algoritmo é bastante complicado, porque... Ainda assim, você precisa de alguma forma, pelo menos programaticamente, identificar erros de entrada/saída e responder à sua ocorrência. Para maior clareza, é anexado um desenho ao algoritmo descrito em palavras comuns - o chamado diagrama de estado do dispositivo (Fig. 3), que mostra os quatro estados principais do dispositivo do ponto de vista da troca de informações com o computador.
Estipulemos antecipadamente o fato de que nosso microcomputador é o escravo e o computador pessoal é o mestre na troca de dados. Ou seja, o aparelho por si só, sem ordens do PC, não deve fazer nada. Está totalmente subordinado ao computador de controle. Um computador pessoal foi escolhido como host pela simples razão de ter mais potência e ser capaz de controlar o dispositivo sem problemas. Além disso, pode oferecer ao usuário mais funções de serviço. Estado um - Espere O dispositivo fica neste estado imediatamente após ligar a tensão de alimentação. Aqui ele aguarda uma solicitação de inicialização do computador, que é expressa pelo computador enviando o caractere NUL. O dispositivo, por sua vez, deve, em resposta à solicitação recebida, habilitar e configurar, se necessário, módulos e recursos adicionais e, a seguir, se tudo correr bem, enviar o símbolo ACK ao computador. Em caso de erro, deverá enviar um NAK. Assim, ocorre a primeira “comunicação” de dois “interlocutores”. Se quiserem, eles devem “trocar cumprimentos” ou “apertar as mãos”. Se o dispositivo for inicializado com sucesso e depois enviar o caractere ACK, ele fará a transição automaticamente para o próximo estado. Esta transição é indicada pela seta 1 no diagrama. estado pronto Neste estado, nosso microcomputador aguarda uma solicitação do PC para enviar o valor medido lido do ADC. A solicitação é um caractere XON. Ao aceitar este símbolo, o dispositivo entra em um novo estado - Enviando. A seta 2 corresponde à transição. Enviando estado Chegando aqui, o microcontrolador lê um número binário de doze bits do ADC usando o método especificado anteriormente e o envia em partes para o computador. Esta implementação converte o número binário em um equivalente hexadecimal de três caracteres, como <1FF> para o número decimal 511. <1> é enviado primeiro e depois Depois que o valor é transferido para o computador, o microcomputador passa para o próximo estado ao longo da seta 4. Estado enviado Este estado é o último e, por assim dizer, fecha o círculo de um único ato de comunicação entre o dispositivo e o computador. Aqui espera-se que o computador confirme que aceitou corretamente o valor que lhe foi endereçado. Existem várias opções possíveis para a resposta do PC ao número enviado: pode responder com uma recepção bem-sucedida com o símbolo XOFF, o que significa que não são necessários mais outros valores por enquanto, ou pode responder com o símbolo XON, o que significa que mais um valor é necessário. Se XOFF for aceito, o dispositivo retorna ao estado Ready (transição 7 no diagrama). Se o símbolo XON for recebido, o dispositivo volta ao estado de Envio (transição 5) e repete a leitura do ADC com posterior transmissão do número para a linha. O único caso não considerado foi quando o PC não gostou do que recebeu: por exemplo, em vez de caracteres no intervalo <0>...<9>, ... As transições indicadas pelas setas 3 e 8 no diagrama permaneceram não descritas. Se o computador encontrar um erro grave de E/S ou precisar interromper a comunicação com o dispositivo, ele simplesmente enviará um NUL de inicialização, que inicializará o dispositivo e o colocará no estado Pronto. Aqueles. Qualquer que seja o estado em que nosso dispositivo esteja, ele deve responder à solicitação de inicialização da mesma maneira que durante a inicialização (consulte Estado de espera do item). Se o microcomputador receber algum símbolo ou solicitação inesperada ou incorreta, ele deverá sempre responder com o símbolo NAK. Essa estratégia é vantajosa, pois tal organização do programa do aparelho facilita a execução de diversas tarefas ao mesmo tempo: o microcomputador e o PC não vão brincar com um telefone quebrado, em primeiro lugar, e, em segundo lugar, poderão de forma simples e eficaz “comunicar-se” entre si com um amigo. Vamos passar para o PC. Programa geral para PC. Diagrama de estado do PC Fundamentalmente, o programa geral de um computador não será diferente daquele usado em um microcontrolador. O algoritmo será semelhante e o diagrama de estado será semelhante. Inicialização do primeiro estado É aqui que o computador chega quando o usuário pressiona uma tecla do teclado que corresponde à aceitação de um único valor. Neste estado, o computador envia um caractere de inicialização NUL ao dispositivo e aguarda uma resposta com um caractere ACK ou NAK. Se um ACK foi recebido, a inicialização ocorreu normalmente e você pode continuar trabalhando - vá para o próximo estado ao longo da seta 2 no diagrama. Se um NAK for recebido, a operação deverá parar e o computador deverá entrar no estado final Concluído na seta 1. estado pronto Neste estado, o computador se prepara para receber os caracteres que irão compor o valor solicitado ao microcomputador. Existem duas solicitações para enviar um valor. A primeira é uma solicitação de valor normal; corresponde ao caractere XON. A segunda solicitação é uma solicitação para reenviar o último valor. Isto é necessário se o valor não for totalmente aceito dentro de algum tempo objetivo ou se forem aceitos caracteres incorretos que não estejam dentro dos intervalos de <0> a <9> e de a Em seguida, após se preparar para receber símbolos de valor, ocorre uma das duas solicitações acima para nosso dispositivo, então o computador se move ao longo da seta 4 para o estado de recebimento de valor. Recebendo estado Aqui o PC simplesmente lê três caracteres do valor medido e convertido pelo ADC. Conforme afirmado anteriormente, há um tempo objetivo que o computador espera por um personagem. Se o caractere não foi lido durante esse período, essa situação será interpretada como errônea, ou seja, ocorreu um erro de E/S. A propósito, em velocidades de troca de informações bastante altas (mais de 19200 bps) ou ao trabalhar no sistema operacional MS-Windows (qualquer versão), muitas vezes acontece que o computador recebe apenas dois dos três caracteres enviados para ele, e às vezes até menos - um. Para evitar que o computador "trave" - aguardando indefinidamente por um caractere ausente ou ignorado - é introduzido algum tempo para limitar essa espera. Infelizmente, essas omissões não são detectadas pelo hardware. Esta implementação define dois tipos de timeouts que podem ser especificados pelo usuário através do teclado. O primeiro tipo é o tempo limite para o primeiro de 1 caracteres. Permite ao aparelho com calma, sem pressa, medir, digitalizar o número que necessitamos e convertê-lo em um equivalente simbólico. E o segundo tipo é um limite de tempo para envio do segundo e terceiro caracteres. Agora vamos passar para possíveis transições do estado de recebimento para outros estados. Se todos os 3 caracteres do valor não foram recebidos dentro do tempo estipulado, o computador deverá solicitar ao nosso dispositivo que envie o valor novamente. Esta situação corresponde à transição ao longo da seta 5, ou seja, o computador faz uma solicitação com o símbolo NAK e volta ao estado Pronto. Se durante o processo de recepção o computador detectou um erro de entrada/saída (e o PC tem a capacidade de simplesmente analisar o registro de status da porta serial), então é melhor restaurar o computador e o microcomputador ao seu estado original, ou seja, repita a inicialização. Portanto, a seta 3 também está presente no diagrama. E, finalmente, se o computador recebeu todos os três caracteres do dispositivo, ele entra no estado de análise do valor recebido - no estado Recebido ao longo da seta 8. Publicação: cxem.net Veja outros artigos seção Microcontroladores. Leia e escreva útil comentários sobre este artigo. Últimas notícias de ciência e tecnologia, nova eletrônica: Máquina para desbastar flores em jardins
02.05.2024 Microscópio infravermelho avançado
02.05.2024 Armadilha de ar para insetos
01.05.2024
Outras notícias interessantes: ▪ Cultivo de cogumelos dentro de turbinas eólicas ▪ Microcontroladores Texas Instruments MSP432 ▪ Estação de identificação biométrica Printrak LiveScan Station Portable ▪ Garrafa de vinho em um acelerador de prótons Feed de notícias de ciência e tecnologia, nova eletrônica
Materiais interessantes da Biblioteca Técnica Gratuita: ▪ seção do site Aforismos de pessoas famosas. Seleção de artigos ▪ artigo O nervo de todo negócio. expressão popular ▪ artigo Como as relíquias de São Marcos passaram pelos costumes muçulmanos? Resposta detalhada ▪ Artigo Glomerulonefrite. Assistência médica ▪ artigo Sintetizador de música no chip UM66T. Enciclopédia de rádio eletrônica e engenharia elétrica
Deixe seu comentário neste artigo: Todos os idiomas desta página Página principal | Biblioteca | Artigos | Mapa do Site | Revisões do site www.diagrama.com.ua |