Ir ao conteúdo
  • Cadastre-se

Iniciando com os Microcontroladores (Ajuda para escolher um modelo)


Posts recomendados

Olá, pessoal!
Eu sou estudante de engenharia de computação e comecei a estudar sobre microcontroladores por conta mesmo.

Soube que só iria aprender sobre o assunto no final do curso e não aguentei esperar.

A verdade é que eu busco algum modelo de microcontrolador para começar a desenvolver alguns projetos.

Andei lendo sobre as diversas famílias do Pic e Atmega. Ouvi sobre Attiny também.
Estou muito em dúvida sobre qual escolher. Só consigo programar o Arduíno mesmo...

Mas quero reduzir o tamanho dos meus circuitos, deixar mais portátil sabe...

 

Bom, as minhas exigências são:

*Quero poder programar em uma linguagem fácil... nada de Assembly, acho que C seria uma boa.

*Preciso que tenha um preço acessível, pretendo comprar vários e não seria legal gastar muito com isso.

*A memória não precisa ser grande, acho que com 8Kb já daria para realizar muitas coisas.

*A quantidade de portas analógicas ou digitais precisa ser usável... Gostaria por exemplo de poder

colocar uns 8 componentes ao menos sob o comando do microcontrolador.

*Que a gravação do código fosse fácil, vi que alguns podem ser gravados através do próprio Arduíno

utilizando SPI... ou algo assim
*Se existisse uma IDE para a programação que aceitasse esse tipo de microcontrolador também seria muito bom.

 

Se alguém puder me dar dicas sobre qual escolher...
Sobre quais são utilizados no mercado atualmente...

Bom, agradeço desde já! 

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

Andei lendo sobre as diversas famílias do Pic e Atmega. Ouvi sobre Attiny também.

Estou muito em dúvida sobre qual escolher. Só consigo programar o Arduíno mesmo...

Você já iniciou, e bem, com microcontroladores. O arduino nada mais é que uma placa com um microcontrolador da família AVR da atmel. Trata-se do ATmega328, no caso do UNO, ou ATmega2560, no caso do MEGA.

O attiny também é AVR, com a mesma capacidade de processamento dos atmegas, porém com menos memória e menos pinos ou periféricos.

Um attiny28, 45 ou 85 as vezes é mais poderoso e tem mais periféricos que algum  ATmega. A diferença é que não dá pra usar todos num único programa devido  ao número de pinos limitado.

Ex: Não dá pra usar ao mesmo tempo os 3 ADCs, os 3 PWMs mais a interface USI (Universal Serial Interface). Seriam necessários 9 pinos e o "coitadinho" só tem 6 "perninhas" + 2 de alimentação.

Por falar em ADCs, não são só os 3 disponíveis nos pinos. Tem um quarto que pouca gente sabe que é um sensor de temperatura interno.

Bom, se eu fosse escrever tudo sobre ele, o post ficaria maior que o DATASHEET.

Minha opinião: Siga com AVR, apenas compre um gravador ICSP barato ou monte você mesmo. Tem vários circuitos na net. Procure por USBASP e PROGISP.

 

Só o ADC:

QI7qde.png

XxD1Yy.png

  • Curtir 2
Link para o comentário
Compartilhar em outros sites

@_xyko_

Estou em duvida entre 2 modelos.

 

Modelo          | Memória | I/O Pinos | Frequência

ATtiny84          8Kb          14              20 Mhz;

ATmega328    32KB         23             20 Mhz
 

Estou pensando em usar o Attiny para aplicações pequenas e o ATmega para

algo mais elaborado, afinal 32Kb de memória é muita coisa ^^

Dei uma olhada sobre o USBASP e PROGISP.
Pelo que entendi o USBASP é um gravador, ele é o responsável por inserir a

programação no microcontrolador. Já o PROGISP é uma IDE. É isso mesmo?

A minha dúvida é: Esse gravador é universal? Por exemplo: qualquer microcontrolador

pode ser gravado com ele, ou é necessário 1 para cada modelo?

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

@_xyko_

Estou em duvida entre 2 modelos.

 

Modelo          | Memória | I/O Pinos | Frequência

ATtiny84          8Kb          14              20 Mhz;

ATmega328    32KB         23             20 Mhz

 

Estou pensando em usar o Attiny para aplicações pequenas e o ATmega para

algo mais elaborado, afinal 32Kb de memória é muita coisa ^^

Dei uma olhada sobre o USBASP e PROGISP.

Pelo que entendi o USBASP é um gravador, ele é o responsável por inserir a

programação no microcontrolador. Já o PROGISP é uma IDE. É isso mesmo?

A minha dúvida é: Esse gravador é universal? Por exemplo: qualquer microcontrolador

pode ser gravado com ele, ou é necessário 1 para cada modelo?

Qualquer micro destes é bom. Se você já programa o arduino, pode continuar usando o 328 mesmo. Ele está barato.

Observe que dentre os attiny somente o 2313 e 4313 têm USART. Já todos os ATMEGAs tem.

 

"Pelo que entendi o USBASP é um gravador, ele é o responsável por inserir a

programação no microcontrolador. Já o PROGISP é uma IDE. É isso mesmo?"

 

Isso mesmo. Eu uso os 2 para gravar toda linha AVR, e olha que não são poucos uCs.

Tem pra todo gosto. Desde 1K de memória de programa (FLASH) até 256Kbytes.

Quanto a RAM interna, desde 64bytes até 8Kbytes, e se precisar pode adicionar RAMs Estáticas paralelas, tipo 62256 de 32KB em uCs que as suportam.

Um ATmega162 , 8515, 128, 2560, etc. suportam até 64K de RAM externa.

 

Voltando ao gravador, até compensa comprar pronto.

http://lista.mercadolivre.com.br/gravador-avr-usbasp-atmel

 

Quando fizer um projeto, basta deixar um conector disponível para gravação diretamente na placa, assim como tem o arduino, cujo próprio eu gravo com o USBASP.

O legal é que você grava e já vê funcionando imediatamente.

 

Qualquer dúvida, eu e o amigo Paulo  @aphawk , que estamos há mais tempo trabalhando com a linha, estamos dispostos a ajudar. Desculpa aí, Paulo, te comprometer sem vossa permissão.

  • Curtir 2
Link para o comentário
Compartilhar em outros sites

@_xyko_,

 

Opa, sem problemas, estamos aqui para isto !!!

 

 

@densyy,

 

Eu uso o Bascom para tudo que eu preciso, linguagem muito simples, baseada no Basic, mas muito poderosa por já ter os comando para trabalhar com todo o hardware interno  dos Avr's.  Aliás, a grande maioria do pessoal do Fórum do Bascom são engenheiros, o que mostra a seriedade com que é tratado o desenvolvimento dela. O motivo : extrema facilidade e rápidos resultados.

 

Aqui mesmo, nos tópicos destacados acima, tem um tutorial, e várias páginas com exemplos de projetinhos. Dá uma lida, no mínimo voce vai ver alguns usos interessantes dos Avrs.

 

Paulo

  • Curtir 2
Link para o comentário
Compartilhar em outros sites

@_xyko_
Cara, acho que vou utilizar o ATmega328 mesmo. Gostei muito dele!
O gravador não é caro, acho que é melhor comprar mesmo ^^
Só tenho a te agradecer, muito obrigado por tudo _xyko_!

@aphawk
Cara, quando você falou em programação Basic eu fiquei muito feliz.

Pensei que só C ou Assembly pudessem trabalhar com os microcontroladores

Eu já programei em Vb6 a muito tempo, depois passei para o Vb.net e agora

voltando ao Basic. A verdade é que sempre fui apaixonado por essa linguagem!

Baixei a sua apostila. Comecei a ler e agora não consigo parar de sorrir ^^
Muito felicidade pra uma pessoa só hahaha. Uso o Isis a um tempo já e não

sabia que eu poderia programar os microcontroladores por lá. 

Acho que vou tentar conciliar o ATmega328 e o BASCOM então.

Quando eu voltar de noite continuo com os estudos...

Muito obrigado mesmo pessoal!

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

@densyy,

Hehehe é meu amigo, agora que aprendí como usar o assembly dentro do Bascom ( práticamente idêntico ao que o pessoal do C faz... ), consigo extrair tudo que o processador pode oferecer, mesmo as temporizações mais críticas, aquelas em que tenho de contar ciclo de máquina !

Sugiro que compre um Arduíno Uno R3, com um Atmega328 mesmo, voce pode programar ele diretamente do Bascom, igual a IDE do Arduíno, e interagir com ele via teclado e comunicação USB. Muito barato e fácil demais, nem vale a pena ficar montando plaquinha ....

Essa apostila logo vai ter um pequeno complemento, vai se divertindo com ela, mas não esqueça que nesse tópico tem também muita informação, alguns projetos mais legais também...

Paulo

  • Curtir 2
Link para o comentário
Compartilhar em outros sites

  • Membro VIP

Permita-me opinar...

Eu iria de C mesmo. Motivo: facilmente migrável pra qualquer mc, literalmente milhões de programadores, fontes, libs, etc. Caso algum dia queira se desvincular dos avr creio ser menos traumático. Embora eu não saiba se há compiladores basic pra TODOS os mc's, que eu saiba C tem pra todos. Alguns mc da microchip p.ex. tem o hw otimizado pra linguagem c

 

wellcome

  • Curtir 2
Link para o comentário
Compartilhar em outros sites

  • Membro VIP

Cara, quando você falou em programação Basic ...

 

O bascom indica erros, simula, etc, além de tudo ainda suporta o USBASP e grava imediatamente o chip na placa já montada após compilar (opcional)

Faz praticamente tudo no chip, até calcula os fuse-bits.

 

PrtScr da tela.

6jefaN.png

 

6p8VQo.png

Uma coisa interessante: Veja no final deste arquivo M4812P-DMX-HEXINVERTIDO.HEX

Isto mesmo. Ele inverte cada word do HEX. Repare que no início está 19C0.

Está na forma correta, mas no arquivo gerado fica C019.

Mesmo código aberto pelo PROGISP

post-387879-0-15226700-1434243493.png

 

É pra complicar a vida de quem quer mudar alguma string ou mesmo tentar depurar o HEX.

@Isadora Ferraz

E porque não as 2 linguagens?

Eu mesmo só programava os 8051 em ASM.

Passei para o basic porque foi minha primeira ling. de programação na época dos CP200, CP500, TKxxx, Etc.

Atualmente estudo um pouco mais de C, não para programar, mas para transformar os programas de C para basic do BASCOM.

Fico impressionado com o número reduzido de linhas após a "tradução" do C para o B.

 

Pra ter uma ideia do forte retorno do basic, veja as novas IDEs que estão surgindo para programar o PC.

Eu precisava ter acesso a porta USB mas não sabia como.

Achei o PUREBASIC e só com os SAMPLES consegui fazer o que queria.

Fácil acesso as portas, criação de DLLs, forum, baixo custo, etc.

http://www.purebasic.com/index.php

http://www.purebasic.com/screenshots.php

  • Curtir 3
Link para o comentário
Compartilhar em outros sites

  • Membro VIP

boa chico! Falar vários idiomas é um conhecimento sempre bem vindo. Também comecei com basic nos 1980's num apple. Depois asm do 8049! sério. Se eu te falar que não tinha d.s. foi só intuição vendo os mnemônicos mostrados num simulador bem furreco você acredita? E olha que fiz um programinha funcional e útil pra um jiga de testes! Depois asm do 8051, asm pic, asm z80. Um pouco de Turbo Pascal, Borland C, VB, Delphi, Finalmente o C onde empaquei.

Bom acesso às funções da dll sabemos que não é exclusivo de um linguagem mas uma linguagem bacaninha é a do labView que é 100% gráfica e dá acesso ao hw do pc além dos hw's de aquisição de dados legais da NI além de você poder criar seus própios. Mais de um cliente usa ela para teste go-no-go lá no trampo. Pra você ter uma ideia é tão fácil que até EU consegui fazer um pisca led na serial com ela!

 

Agradeço por ler..

  • Curtir 2
Link para o comentário
Compartilhar em outros sites

Para quem esta estudando engenharia de computação,você esta muito modesto com o Soft/Hardware.

Ué.... O que que tem a ver uma coisa com a outra ?

Por acaso voce está esperando que o nosso amigo desenvolva um sistema operacional real time com ARM9 enquanto esteja estudando ???

Ou um super-computador de processamento paralelo com criptografia quântica ?

Ele está começando, Vtrx, poxa, é aprendizado, é experimentar, é consolidar os conhecimentos !

O Engenheiro que consegue fazer uma coisa funcionar da maneira mais simples e barata é um Engenheiro muito melhor do que aquele que insiste em usar um canhão para matar uma formiguinha ! Isto é a Arte da Engenharia.

Empresas querem produtos bons e baratos. Ninguém vai usar um ARM se não for estritamente necessário.

Vamos analisar a realidade brasileira pelo que vemos aqui no Fórum ?

Toda hora aparece gente aqui querendo ajuda com os Pics, pois é o que 90% das escolas ensinam..., tem até escola que o professor "proibe usar Arduino" no TCC !!!!!!! E não ví ninguém aqui comentar que "o hardware/software é muito modesto" nesses posts !

Olhe os tópicos, vai ver que a coisa mais comum aqui é PIC16F, e muito raramente aparece um PIC18F...

Quem começa hoje aprendendo AVR já está no mínimo 5 anos à frente dos outros aqui no Brasil !

E basta olhar o que está aconteçendo na Europa e nos USA, veja as principais revistas de eletrônica, a arquitetura AVR predomina em todos eles.

Já disse aqui neste Fórum, que um Engenheiro militar inglês fez um hardware com AVR e programado com Bascom, e cada submarino inglês tem um desses !

Esse cara é o tipo de Engenheiro que eu admiro. Solucionou um problema de maneira muito simples, barata, e o que é melhor, muito rápidamente !

Ou será que um Engenheiro para ser bom tem de programar em C ou linguagens de maior nível, usar os microcontroladores Top do mercado ? Bom, se ele trabalhar na NASA, quem sabe..... Kkkkkk

Paulo

  • Curtir 3
Link para o comentário
Compartilhar em outros sites

 

Eu iria de C mesmo. Motivo: facilmente migrável pra qualquer mc

Não mesmo,ainda mais para Microcontroladores.

Ja portou um código em C MPLABX para CCS?

@aphawk

Todo "curso" técnico em eletrônica tem estas matérias...

Não falei nada sobre a linguagem citada e nem sobre o tipo de microcontrolador,só achei que o denssy citou que queria tudo do mais fácil possível.

Link para o comentário
Compartilhar em outros sites

@aphawk

Estou com algumas dúvidas cara,

Se puder me dar uma força...

 

1) 

 

Portc = &B11111111
"Inicializa os ports assim o hardware começa corretamente"

 

Como assim começa corretamente? Não entendi muito bem...
 

2)Testei diversos modelos de microcontroladores ATmega no Proteus e percebi

que nenhum tem o pino GND e VCC... Estou usando o Ground e o Power que o Isis

fornece, mas queria saber se tem alguma alternativa para testar pelo próprio chip.

 

3)Tomando como base o próprio ATmega48 que você usou na apostila...
Sabe me dizer quantos volts é fornecido em cada pino digital?

 

Agradeço desde já!

Link para o comentário
Compartilhar em outros sites

Como aperitivo olhem isto aqui :

Um cara fez um Arduino emular um Apple ][ !

http://dpeckett.com/turning-the-arduino-uno-into-an-apple

Esse sim é um projeto digno de um excelente Engenheiro de Computação !

Outro cara fez um Arduino emular um Gameboy :

http://hackaday.com/2014/02/27/gamebuino-a-handheld-arduino-gaming-console-ready-for-prime-time/

Nada mal para uma plataforma simples e barata como os AVRs !

Como já disse, fora do Brasil os AVR's dominam os projetos mais interessantes, e até são lançados em satélites.

@densyy,

1 - Quando é energizado, não sabemos como as portas estão configuradas. A primeira coisa é definir as portas, isto é, definir quais os pinos são entradas, e quais os pinos são saídas. No Bascom voce pode configurar apenas um pino de cada vez, ou todos os 8 pinos de uma mesma porta podem ser configurados como entrada ou como saída em um único comando.

2 - O Isis e o Proteus ocultam os pinos de alimentação e de terra. Isso é um saco.... A alimentação é o Vcc, e o terra é o GND. Eu sempre defino uma alimentação de 5 V para o Vcc, usando uma bateria no Isis.

3 - As saídas digitais tem a tensão de alimentação Vcc ou terra. Porisso é importante definir a tensão, ok ? Lembre-se que se quiser rodar o Atmega328 a 20Mhz terá de usar 5Volts.

Paulo

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Calma lá, então preciso alimentar o microcontrolador, certo?

Vamos supor que tenho uma fonte de 5V

Os polos da fonte devem ir no GND e VCC do ATmega né? 

 

Os componentes são ligados assim mesmo?

http://i.imgur.com/TRe1akv.jpg

 

Achei diferente a ligação do botão... Com o Arduíno, além de ligar o pino,

precisava também ligar os 5V nele para que funcionasse...

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

Calma lá, então preciso alimentar o microcontrolador, certo?

Vamos supor que tenho uma fonte de 5V

Os polos da fonte devem ir no GND e VCC do ATmega né? 

 

Os componentes são ligados assim mesmo?

http://i.imgur.com/TRe1akv.jpg

 

Achei diferente a ligação do botão... Com o Arduíno, além de ligar o pino,

precisava também ligar os 5V nele para que funcionasse...

No ISIS, não se preocupe. os pinos de alimentação já estão no VCC (p7) , GND (p8) e AGND (p22), estes 2 últimos já estão conectados internamente. Acabei de medir e dá 0.0 ohm entre o p8 e p22. O  AVCC (p20) é a alimentação do ADC e só é necessário alimentar se for usar o ADC, mas o datasheet informa que é aconselhável ligar ao VCC.

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Hahahaha, as coisas estão começando a dar certo agora ^^
 

Mas ainda me restam 2 dúvidas para hoje

Variáveis do tipo Boolean dão erro quando se atribui um valor...

 

Não sei o motivo, mas o código dá erro...

Dim Minhavariavel As BooleanMinhavariavel = False

E a outra é saber se existe algum jeito de ESPERAR sem travar o sistema

Por exemplo: Se você faz um botão piscar um led, ao utilizar o comando waitms

o seu botão fica inutilizado... Existe um comando no Arduino chamado millis()

Ele te retorna o tempo que o seu sistema está funcionando... existe algo assim 

no BASCOM?

Link para o comentário
Compartilhar em outros sites

@densyy,

Eu uso diferente :

Dim Minhavariavel as Flag

Minhavariavel=1

Os valores podem ser 0 ou 1.

Quanto ao comando millis() , sim, se voce usar o CONFIG CLOCK, porém ele incrementa o sistema de tempo a cada 1 segundo.

Se quiser algo do tipo millis(), sugiro usar um dos Timers e criar uma interrupção a cada milisegundo, e incrementar uma variåvel nela, assim voce evita ficar com o sistema totalmente parado esperando o waitms() .

Paulo

Link para o comentário
Compartilhar em outros sites

Nem acredito que terminei Hahahaha
Bom, pra quem quiser ver...

 

Em resumo é uma aplicação para estacionamentos que precisam controlar o fluxo de carros...

Acabei nem usando Timer... Ele trabalha com um contador de carros.

 

Usei 2 Leds verdes e 2 vermelhos para simbolizar as luzes que ficariam na entrada e na

saída do estacionamento dizendo aos carros se podem ou não entrar/sair.

 

2 botões para simbolizar os Sensores infra-vermelho responsáveis por detectar os carros

PS: Não achei nenhum sensor no Proteus kkkk

 

Note que ao pressionar um botão, o contador entende que 1 carro passou pelo sensor e

deixa o Led oposto vermelho, impedindo a passagem de carros no sentido contrário.
Se você pressionar o mesmo botão diversas vezes ele entenderá que muitos carros passaram

e só vai voltar a liberar a passagem do sentido oposto quando o mesmo número de carros

passar pelo outro sensor, terminando assim o percurso. 

 

Código em BASCOM: http://pastebin.com/FuK3BtNz

Circuito no Proteus: http://s000.tinyupload.com/?file_id=71543650829592893711
Imagem Representativa: http://i.imgur.com/WxceXCj.png

 

Obrigado a todos pessoal!!

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

@densyy,

 

Opa, legal, já está programando heheheh !

 

Agora, tem de corrigir o programa, pelo seguinte :  O botão do Proteus é perfeito, ele não tem ruídos mecânicos ( bounces ) , então nao mundo real esse programa não  funcionaria, pois uma apertadinha ( ou un pequeno ru;ido do sensor ) pode fazer o programa entender dezenas de carros! Temos de dar um jeito de "filtrar" esses pequenos ruídos para o uso do dia a dia.

 

O Bascom possui uma função prontinha para isso, veja a  função DEBOUNCE, é muito poderosa, e não interrompe o programa !

 

Mas o mais importante : em pouco tempo voce já fez o seu primeiro projeto, essa é a principal vantagem do Bascom.

 

Paulo

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

@densyy

Parabéns... pegou rapidinho.

Aos poucos vai economizar, além do tempo, também o teclado.

Ex:

Quantidade_carros_entrada = Quantidade_carros_entrada + 1

 

pode ser:

incr Quantidade_carros_entrada

 

e para subtrair 1:

decr Quantidade_carros_entrada

 

Aqui:

Config Portb.0 = Output
Config Portb.1 = Output
Config Portb.2 = Output
Config Portb.3 = Output
Config Pinb.4 = Input
Config Pinb.5 = Input
 
pode ser:
config portb = &b00001111  '6 linhas em uma.
 
ou
 
ddrb = &b00001111
 
 
Obs: desmarquei o resolvido porque você marcou a melhor resposta como sendo a sua...kkk
Sugiro marcar uma do Paulo...OK.
  • Curtir 1
Link para o comentário
Compartilhar em outros sites

  • Membro VIP

@_xyko_

Que bom que desmarcou pois queria registrar isso...

 


Ja portou um código em C MPLABX para CCS?

 

Nem tente. Pra começar não considero ccs como c. Mas tente p.ex. portar do mplab x para mikroc, hitech-c, ou até mesmo sdcc e etc e terás pouca ou nenhuma dificuldade.

Também não tão difícil é portar do pic para 51's arm's , avr's e etc e outros compiladors iar, keyl e etc. Sim estas tarefas no mundo real existem!

 

Tem até ums maluquinhos que estão traduzindo do C pro basic. Falando nisso, @_xyko_ uma comparação curiosa que você poderia fazer é ver se uma mesma função basic ocupa o mesmo ou menor espaço de flash de uma C bem como quantos ciclos de máquina usa pra computar.

tipo este...

float pi;

for(i=1; i<=50000; i+=2){
pi += 4/i;
i += 2;
pi -= 4/i;
}

printf(pi);

bom nem se sei se serve para comparar. Faça no basic. Qualquer dia faço em c pra ver...

abç

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

  • Membro VIP

@Isadora Ferraz

beleza... faça função em C , compile e poste o fonte e HEX. Daí eu faço em bascom e também posto os 2 pra gente comparar... Que tal?

Só peço que comente rapidamente cada linha que vou acompanhar uma a uma no simulador do bascom e já ver o resultado.

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...