Académique Documents
Professionnel Documents
Culture Documents
Nesse post vou ensinar a fazer um led temporizado com o PIC16F876A, nosso companheiro at o fim do curso. 1: Preparando o projeto. Para criar o cdigo-fonte, abra o MikroBasic e siga a sequncia de imagens a seguir
Clique em next
Em Project Name, voc vai digitar o nome do projeto, aqui no caso, Projeto_1. No use espao ao digitar o nome! Em Project Folder, voc vai escolher a pasta onde o projeto, o cdigo-fonte e o arquivo .hex ser salvo. Device Name voc vai escolher o MCU utilizado, aqui como j falei, o PIC16F876A (tem que ter o A no final) e por ltimo em Device Clock voc ir colocar a frequncia de clock do MCU (se vc leu as apostilas das aulas
anteriores sabe o que isso), que aqui ser de 4.096 MHz e ento clique em Next
Clique em Next
Verifique se a opo Include All est marcada. A opo Include None far com que voc escolha as bibliotecas utilizadas no projeto, o que far a compilao ser mais rapida, mas como ela demora apenas segundos, no temos porque usar essa opo (o que tambm deixaria vocs confusos e a coisa seria mais complicada). Clique em Next
Essa janela ir aparecer: onde os Fusveis sero configurados (novamente, se vc no leu as apostilas passadas, voc no far a mnima idia do que isso). Aqui a coisa vai ser longa: -Oscillator Selection: voc selecionar o tipo de oscilador para o clock. Esse trabalho feito automaticamente em caso do uso de cristais: LS: Cristais com menos de 2MHz de frequncia (se no me engano); XT: Cristais at 4MHz; HS: Cristais maiores que 4MHz e; RC: Oscilador feito com um resistor e um capacitor. Usado quando nao se nescessrio uma preciso no tempo do programa. Por padro, usaremos at o fim do curso um cristal de 4.096 MHz, que no caso fica configurado em HS; -WatchDog Timer: reseta o PIC caso ele trave. No ser usado nos nossos projetos; -Power-Up Timer: Temporizador que proteje o PIC em caso de oscilaes na alimentao. Complementa o trabalho do BrownOut Reset. Fica desabilitado; -Brown-Out Reset: Desliga o PIC quando a tenso cai para um certo nvel, protegendo o PIC quando for desligado o circuito (queda de tenso devido ao capacitor de filtro que descarrega lentamente quando deligada a fonte). Fica habilitado!; -LVP: Low Voltage Programmer (programador de baixa
tenso): Ser usado apenas com gravadores USB. Como o nosso serial, deve ficar DESABILITADO, caso contrrio, voc no conseguir gravar o PIC; -Data EEPROM Memory Code protection: Protege o cdigo da memria EEPROM contra leitura/cpia. Fica desabilitada!; -Flash Program Memory Write: Permite ao cdigo se automodificar. Fica desabilitado; -In-Circuit Debugger Mode: Usado apenas em programadores com a funo Debugger. Fica desabilitado e; -Flash Program Memory Code Protection: Protege a memria Flash (onde fica o programa) de ser lida/copiada. Fica desabilitada! Se por acaso voc habilitar a proteo das memrias, quando o IC-Prog for verificar erros na gravao, ele sempre ir acusar o cdigo 0000h, que indica que o PIC no pode ser lido/programado. Confira o modelo do PIC e a frequncia do clock e pronto! Clique em OK. 2-Escrevendo o cdigo-fonte. Aqui comea o legal: escrever, gravar e ver o resultado. Quando voc acabar de configurar os fusveis, ver essa tela:
a que voc ir digitar seu cdigo (a sua tela vai ter algumas coisas que na minha no aparece, mas no se preocupe!) Veja que o programa est assim:
Em Declaration Sections, voc ir declarar as variveis, configurao de algumas bibliotecas, sub procedimentos e etc. (tudo ser explicado mais a frente) e em Main Program, o programa principal, que ser esse:
Comeamos em Program Projeto_1. Aqui declarado o nome do programa, que automaticamento escrito quando se cria o projeto. Seguimos com main:, que define onde comea o programa principal. Passamos para TRISB, que o nome do registrador que
configura os pinos do PORTB como entrada (1) ou sada (0). Veja que usei TRISB=%. Esse % usado para configurar o registrador em modo binrio (o que fcil se voc no tiver prtical com Hexadecimais), onde a configurao fica assim: TRISx=%(PORTx.7)(PORTx.6)(PORTx.5)...(PORTx.0) Onde x o nome do PORT, no caso do PIC16F876A vai de PORTA at PORTC. __________________________________________________ _________________________________ Como escrever em hexadecimal? Voc pode usar calculadoras online ou treinar vc mesmo. Faa assim: Divida seu byte em dois nibbles (meio byte ou 4 bits) vai ficar algo assim: Byte: 01011001 Em Nibbles: 0101 1001 Agora Converta cada nibble usando a seguinte tabela 0000=0 0001=1 0010=2 0011=3 0100=4 0101=5 0110=6 0111=7 1000=8 1001=9 1010=A 1011=B 1100=C 1101=D 1110=E 1111=F no nosso caso, o byte ficaria 59. Para ser escrito no programa ficaria como por exemplo PORTA=$59 ou PORTA=0x59. Viu?
fcil. Mas se for preguioso, use esse link, clique em binrio e digite seu byte. __________________________________________________ _________________________________ O While um statement (voc pode ler mais sobre os statements no manual do mikrobasic, que possui uma grande referencia sobre a linguagem dele) que fechado pelo Wend. Esse Whileexecuta um determinaod comando (ou srie deles) enquanto uma afirmao for verdadeira. No nosso caso, ao lado do While coloquei o TRUE, que faz com que o while vire um loop infinito, ou seja, o programa executa eternamente. Em seguida temos o statement IF, que executa um comando (ou srie deles) caso uma afirmao seja verdadeira. O IF escrito da seguinte forma IF (afirmao) THEN ... ELSE ... END IF e o while WHILE (afirmao) ... wend Ento, traduzindo o cdigo dentro do IF: SE PORTB.0 for igual a 0 ENTO Pe o PORTB.1 em 1 espera 1 segundo (1000 milisegundos) SENO Pe o PROTB.1 em 0 FIM DO IF A funo delay_ms faz que o programa espere x milisegundos, ou no delay_us, x microsegundos.
Aps o END IF, que encerra o statement IF, temos o wend pra fechar o While e o end., que define o fim do programa. OBRIGATRIO ESSE END. COM O PONTO FINAL. Quando terminarem de digitar, apertem control+s para salvar e control+F9 para compilar, que o que ir gerar o hex. Se tudo estiver certo, voc ver algo assim:
Se tiver algum erro, ele vai te levar at o erro e dizer o que est errado. reveja o cdigo. O circuito simples e pode ser montado em uma protoboard:
S1 e R1 formam o circuito de reset manual, que pode ser usado em caso do programa travar (o que no vai acontecer em programas simples), mas j bom vcs se acustumarem. Se quiser omitir, ligue direto o pino 1 no Vdd (que deve ser de +5Vdc). R3 um resistor de pull-up (se tivesse ligado no negativo, seria pull-down), para evitar que o valor no pino do PIC fique "flutuando". Liguei o negativo do LED no PIC pra fazer diferente mas nada impede que o positivo fosse ligado no PIC, apenas teria de haver mudanas no cdigo onde define o valor do pino do PORTB que sada (que est DENTRO do IF. Onde e 0 vira 1 e vice-versa).
Abra o IC-Prog, v em file --> open file e procure a pasta do programa e clique no arquivo que termina em .hex (Projeto_1.hex), conecte o programador na porta serial, aperte F3 e em programmer clique em JDM programmer e em ports, selecione a porta serial que vc est usando. CLique em OK, selecione o modelo do seu PIC e aperte F5 e em yes e espere terminar. Se tudo ocorrer direito, aparecer uma mensagem dizendo "Device was sucefully verified!", se no, verifique as conexes, se o PIC est inserido corretamente, e caso tudo esteja certo, seu PIC est queimado. Se vc por ele errado no gravador/circuito, vc ir queim-lo!!!.
3: Usando os resistores de pull-up internos. Alguns modelos de PIC contam com resistores de pull-up internos, como o nosso PIC. Caso sejam ativados, o resistor de pull-up que est ligado no boto seria omitido, liberando assim espao no circuito. Para isso, devemos acion-los atravs do registrador OPTION_REG (mais informaes olhe no datasheet do PIC). O bit responsvel o bit 7, ou RBUP, como pode se ver na figura seguinte:
Aqui vai mais uma coisa no cdigo: quando se quer definir o valor de poucos bits de um registrador, para no configurar toodo o registrador, podemos acessar apenas um determinado Bit, como por exemplo: queremos configurar o 7 bit do OPTION_REG, ento o cdigo fica OPTION_REG.7=0. Perceba que colocamos o nome do registrador, um ponto e o bit e ento definimos seu valor, no caso aqui o 0, que arma os resistores de pull-up. "AH!, Mas apenas um pino entrada e o resto sada. Como todas os pinos do PORTB tem resistor um de pull-up, no vai ter problemas se eu armar eles?" No, pois quando vc arma,
ele detecta quais pinos so entrada pela configurao do TRISB e arma os resistores s nos pinos de entrada. Se voc prestou ateno, esse modo de selecinar apenas um bit do registrador foi a mesma coisa que eu fiz no codigo pra ligar e desligar um pino do PIC: PORTB.1=0 ou 1. PORTB o registrador da porta, que define ligado (1) ou desligado (0)! Se for usar resistores de pull-up, o cdigo fica assim:
Veja que no muda nada! Apenas acrescentamos o OPTION_REG.7=0! O circuito o mesmo, apenas deve-se tirar o R3. isso. Espero que funcione, que vocs gostem e se impolguem com esse 1 de muitos circuitos. Esse foi simples, mas vai ficando cada vez mais implementado. Dvidas ou problemas falem ai. ATENO! QUEM ENVIAR VIDEOS/FOTOS DAS MONTAGENS E DO CIRCUITO FUNCIONANDO, VAI GANHAR BRINDES DURANTE A SRIE!!! At a prxima...
Postado por Nemweb s 19:32 Nenhum comentrio: Marcadores: Cursos, Microcontroladores, tutoriais
SEXTA-FEIRA, 6 DE JANEIRO DE 2012
Microcontroladores 2 parte
Se vocs pensaram que eu iria abandonar a serie, s enganaro. Aqui est a segunda parte da srie sobre MCUs
Microcontroladores 2 parte
Voc sabe o que um microcontrolador? No? Ento, voc comea por aqui. Para mexer com MCUs, voc presia saber o que so, como funcionam (e porque funcionam) e etc. Para os leigos at os "nerds", recomendo a leitura dessa apostila e dessa pgina da nossa (querida?) wikipedia. A leitura dessas duas pginas fundamental para quando voc for configurar o
programa, que o que vai "rodar" dentro do MCU. Tudo bem. Agora vc j leu, j sabe o que so e pra que servem os PICs. OK. Mas eu sei que voc ta ancioso pra comear a escrever seus programas fazer seus projetos, mas calma, uma coisa de cada vez. Antes de voc comear a programar, voc precisa de trs coisas bsicas: o programador, o compilador e o software de gravao. Vamos l: -Programador: a placa que voc vai usar pra programar seus PICs. Eu uso um excelente, que voc pode construir e que est nessa pgina.
-Compilador: diferente de muitos tutoriais, vou ensinar vocs a programar em BASIC, uma linguagem muito simples. No compilador voc escreve o programa, compila ele - o que gera um arquivo .hex, que o que o "roda" dentro do MCU - e a o arquivo gerado voc vai por no software gravador que vai gravar o PIC atravs da sua placa gravadora. Voc pode baixar o compilador, no nosso caso, que DEVE ser o mikrobasic, na pgina http://www.mikroe.com/eng/products/view/9/mikrobasicpro-for-pic/ Esse um programa "demo" e o completo DEVE ser comprado, e no pirateado. -Software gravador: No nosso caso, o IC-PROG, quem enviar o arquivo .hex para o PIC Ficamos por aqui e at a prxima.
Postado por Nemweb s 16:08 Nenhum comentrio: Marcadores: Cursos, Microcontroladores, tutoriais
QUARTA-FEIRA, 26 DE OUTUBRO DE 2011
-3: Fonte ATX: Sim, essa a fonte de PC mesmo. Fornecem altas correntes, so extremamente confiveis e seguras, possuem proteo contra curto-circuitos, sobrecarga e super-aquecimento. Podem variar de preos de R$30,00 at mais de R$300,00. Depende muito da potncia e marca. A desvantagem o tamanho e o rudo dependendo da sua (a minha nem a ventoinha se ouve!) Vou exemplificar os circuitos de uma por uma:
Pilhas: Se seu MCU e o circuito for alimentado por 3V, duas pilhas serviro, e poder se usar um suporte para duas pilhas facilmente encontrado em lojas de eletrnica. Se precisar de 5V, use quatro pilhas e no positivo, coloque um diodo comum, como o 1N4148. A queda de tenso da juno far a tenso cair de 6V para aprox. 5,3V ou menos, mas isso no to seguro assim. Adaptar uma fonte comum: Nesse caso, voc pode usar uma fonte qualquer, de tenso entre 9V e 15V, com sada de no mximo 1A, e na sada da fonte, dever ser montado o seguinte circuito:
Usei esse circuito por muito tempo, at a minha fonte estragar. Os capacitores C3 e C4 devem ser montados o mais perto o possvel do CI1, o 7805. A montagem deve ser feita em uma PCI e recomendo o uso de blindagem na placa.
Fonte ATX: Essa a forma de alimentao que uso. Paguei R$35,00 na minha de 230W que tima e silenciooosa! Nem a ventoinha se ouve! O uso muito simples: para ligar a fonte, preciso que seja colocado um resistor de uns 100 ohms entre o fio verde e um fio preto qualquer do conector da placa-me e a s usar =) Sugiro dobra a perna do resistor pra ele entrar mais "justo" no pino do conector, deixando a perna em um formato tipo um "U" e depois coloc-lo sob a trava do conector pra ficar firme. Depois, s ser feliz XD Eu, por segurana, uso apenas os 12V da fonte e, para obter os 5V, uso o circuito de cima, at porque nunca uso mais do
que 500mA nos 5V. Para conectar na protoboard, eu usei um cabo de alimentao SATA, que tem um macho pra conector MOLEX padro e tinha dois SATAs, removi os SATAs, estanhei a ponta e usei na protoboard. Para usar em PCIs, use um conector compatvel com o da fonte para PCI. Seguem abaixo algumas fotos pra ajudar.
O Conector usado como adaptador com os conectores SATAs que devem ser retirados (os pretos) e o pra conectar na fonte (branco).
Caractersticas da fonte
Caractersticas eltricas
A fonte montada
aumentar a freuqncia x a tenso y aumenta tambm! Usando diviso no programa e o Timer do PIC, vc consegue medir tenses mdias, apenas provenientes de pulsaes. 2 exemplo: O fantstico 555!!!!!!!!!!! O QUE???? O QUE O CI 555 PODE AJUDAR EM MEDIDAS ANALGICAS?????? Simples! Como a pulsao depende da tenso nos pinos 6 ou 7, voc vai mudar a pulsao dependendo da tenso, Perceba que vamos usar o 1 exemplo!!!!!! E s montar um oscilador comum com o ci 555, e no pino 7, ligar a entrada da tenso. Esse exemplo vale pra qualquer medida analgica no pulsante! E ainda serve pra sensores capacitivos! e so substituir o Capacitor do esquema do oscilador pelo sensor! O ci 555 muito barato, cerca de R$ 0,50!!!!!!!!! Viu como usando os antigos circuitos vc consegue fazer coisas impressionantes com o PIC16F628A? Na revista eletrnica total n106, tem um esquema com 555 para o 1 exemplo! Eu j testei! E funciona bem!
e segue a placa:
quem quiser segue o endereo do download dos arquivos do projeto: http://www.4shared.com/file/159015626/cb809d63/efects.html acredito que no deve ser de grande dificuldade o confeco da placa, apenas deve-se ter muito cuidado na hora de
desenhar as trilhas embaixo do PIC. Para facilitar o desenho e evitar erros e problemas, aconselho fazer a transferncia pelo mtodo trmico de transferncia (se no sabe como funciona, olhe o outro post que eu fiz ensinado a fazer isso), pois evita problemas ao desenhar as trilhas embaixo do PIC. Quem no tem um programador, pode fazer o do seguinte link: http://www.circuit-projects.com/microcontroller/pic-and-eepromprogrammer.html