Você está na página 1de 27

Seu primeiro projeto com um microcontrolador!

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 New project

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

Marque essa opo e ento clique em Finish

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 (breve continuao)


Pra quem j leu os artigos anteriores, deixo agora o datashetet do nosso microcontrolador: o PIC16F876A. com ele que irei ensinar vcs a programar. importante ler sobre os mdulos (Timer0, Timer1, AD Converter e etc). Isso extremamente til e necessrio! Leia aqui. Boa leitura.
Postado por Nemweb s 15:22 Nenhum comentrio: Marcadores: Cursos, Microcontroladores, tutoriais
QUARTA-FEIRA, 16 DE NOVEMBRO DE 2011

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

Inovaes no blog: Microcontroladores 1 parte


Fala galera. No me esqueci de vocs! Demorei mas agora trago coisa boa. Para aqueles que curtem microcontroladores (MCU), agora meu blog vai passar a trazer vrios circuitos com eles. Para aqueles que no sabem mexer e querem aprender, vou ensinar a usar e criar seus prpios circuitos, da forma que aprendi: sozinho em casa. E para aqueles que no sabem e no tem pacincia para aprender, vou continuar com os circuitos normais, mas sempre de qualidade, at porque eu sei o que ver um site s sobre MCU e no saber nada ><

Microcontroladores 1 parte: A comida deles.


No s em circuitos microcontrolados mas em circuitos sem eles, at os de um resistor e um LED, precisam de algo que com certeza indispensvel e em comum: a alimentao. Os MCUs so muito "chatos" quanto alimentao: no deve haver ripples, oscilaes grandes e uma tenso o mais estvel o possvel. Onde se consegue uma alimentao assim? Seguem dicas: -1: Pilhas Vantagem: baratas e extremamente seguras em relao ripples, oscilaes grandes e tenso estvel. Desvantagens: Podem vazar, nem todos os MCUs podem ser alimentados por elas (ou a coisa complica pra fazer funcionar) e dependendo do circuito, elas secaro rpido. -2: Adaptar uma fonte comum: Vantagem: Pode suprir circuitos de at 1 Ampre, extremamente estvel, possui proteo contra curto-circuitos e super-aquecimento e pode ser montada em qualquer PCI ou at mesmo na protoboard. Desvantagens: Se for usar mais que 300 mA (aprox.) dever se usar um radiador de calor e uma boa pasta trmica, e se for mais do que 700 mA (aprox.) dever se acoplar um cooler (ventoinha), se precisar de mais de 900mA ficar muito prximo do limite de segurana e poder reduzir a vida til dela, e se for mais de 1A, os circuitos complicam.

-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).

O adaptador montado e conectado na protoboard e o conector da fonte.

A fonte montada na minha bancada com cantoneiras (2) e cola quente XD

Mais detalhes das cantoneiras (e da cola quente)

Caractersticas da fonte

A fonte sem o interruptor

Caractersticas eltricas

Conectores diversos e os do HD ou CD-ROM/DVD-ROM que ser o usado

A fonte montada

A fonte com o interruptor e as marcaes

Display de LCD 16x2 funcionado na protoboard

isso galera. Na prxima postagem espero j comear as aulas. Abraos.


Postado por Nemweb s 16:12 Nenhum comentrio: Marcadores: Cursos, Microcontroladores
DOMINGO, 18 DE ABRIL DE 2010

Medidas analgicas com o PIC16F628A


Fala galera. To aqui com algo bem til: medidas anlgicas com o PIC16F628A. Mas diferente, pois no usa CI's externos (em um dos exemplos), usa apenas quem? ELE MESMO!!!!!!!!!!!!!!!!!!!! COMO? POSSVEL? SAI CARO? No sai caro, pois no usa nenhum componente a mais (no princpio PWM)!!!!! 1 exemplo: Princpio do PWM. Como funciona o PWM? Simples. uma pulsao com determinado tempo, produz uma tenso mdia. Se vc aumentar essa pulsao, o que acontee? AUMENTA A TENSO MDIA!!!! Esse exemplo usado em medidas de RPM's e outra medidas pulsantes. Se a frequncia x produz uma tenso mdia de y Volts, se vc

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!

Qualquer dvida, me add no msn: stephen_web@hotmail.com ou me manda um e-mail! Ateh mais!


Postado por Nemweb s 19:52 2 comentrios: Marcadores: Microcontroladores
TERA-FEIRA, 24 DE NOVEMBRO DE 2009

Primeiros passos com PIC's


Bem galera, estou aqui novamente depois de muito tempo. Hoje vou postar sobre um circuito bem bsico e muito legal com o famoso PIC16F628A. O circuito um simples circuitinho com 8 LED's que fazem um efeito muito interessante. segue o esquema:

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

Bem s isso. Ateh a prxima postagem e ateh mais!


Postado por Nemweb s 18:04 Nenhum comentrio: Marcadores: Microcontroladores