collapse

* Posts Recentes

Amplificador - Rockboard HA 1 In-Ear por almamater
[Ontem às 19:13]


O que é isto ? por KammutierSpule
[26 de Março de 2024, 19:35]


Bateria - Portátil por almamater
[25 de Março de 2024, 22:14]


Emulador NES em ESP32 por dropes
[13 de Março de 2024, 21:19]


Escolher Osciloscópio por jm_araujo
[06 de Fevereiro de 2024, 23:07]


TP4056 - Dúvida por dropes
[31 de Janeiro de 2024, 14:13]


Leitura de dados por Porta Serie por jm_araujo
[22 de Janeiro de 2024, 14:00]


Distancia Cabo por jm_araujo
[08 de Janeiro de 2024, 16:30]


Meu novo robô por josecarlos
[06 de Janeiro de 2024, 16:46]


Laser Engraver - Alguém tem? por almamater
[16 de Dezembro de 2023, 14:23]

Autor Tópico: Internal reference dos atmega168 e 368  (Lida 10856 vezes)

0 Membros e 1 Visitante estão a ver este tópico.

Offline dropes

  • Mini Robot
  • *
  • Mensagens: 2.189
Re: Internal reference dos atmega168 e 368
« Responder #15 em: 13 de Outubro de 2012, 13:42 »
Tens grandes variações, coloca um condensador do Vref ao GND de 1uF e um bom condensador na alimentação do micro 1000uF para cima, sem nenhum até custa a creditar que varie tão pouco.

O normal que obtenho de variação num atmega8 é de 1 a 3 valores, ADC 10bits, máximo de 1023 decimais.
« Última modificação: 13 de Outubro de 2012, 13:45 por dropes »

Offline Njay

  • Mini Robot
  • *
  • Mensagens: 3.598
    • Tróniquices
Re: Internal reference dos atmega168 e 368
« Responder #16 em: 13 de Outubro de 2012, 14:29 »
Esquema tão pequenino... tavas com medo que se conseguisse ler alguma coisa :P! De onde vêm os 3V3? Não consigo ler. E o conversor DC-DC? Que conversor é? Não está no esquema.
Não tens condensadores de desacopolamento no AVR, mas isso é capaz de não ter essa influência dos 300mV. 300 mV (+/-150mV) não é um valor muito "estranho" para tensão de ripple dum conversor DC-DC. Vai fazendo médias das leituras que a leitura estabiliza. Esta variação de +/-150mV na alimentação do AVR só por si não é um problema.

Offline kast

  • Mini Robot
  • *
  • Mensagens: 868
Re: Internal reference dos atmega168 e 368
« Responder #17 em: 13 de Outubro de 2012, 15:10 »
Não percebi se estavas a brincar com o "esquema pequenino", mas se clicares na imagem podes um pouco maior. No entanto mostro a última versão do kastduino:

Tentei colocar esta maior mas não consigo, parece que o imageshack não deixa, mas se seguires o link da imagem podes ver a imagem bem grande.

Não estou a tentar esconder nada ... tenho postado tudo noutro tópico.
Se quiserem alguma coisa disto (ficheiro do eagle, etc) é só pedirem ... eu não escondo nada.

Quanto ao esquema do DC boost não tenho porque foi comprado assim mesmo. Sempre tive problemas em fazer um dc boost que funcionasse como deve de ser.

Quanto aos 3v3 não são bem 3v3, são tirados directamente da bateria uma 18650, logo varia entre 4.2v e 3v. É esta tensão que está a "entrar" no A0, para ser medida pelo ADC do atmega.
« Última modificação: 13 de Outubro de 2012, 15:16 por kast »
Os electrões são nossos amigos !!! :D

Offline Njay

  • Mini Robot
  • *
  • Mensagens: 3.598
    • Tróniquices
Re: Internal reference dos atmega168 e 368
« Responder #18 em: 13 de Outubro de 2012, 16:02 »
Eu cliquei e continuava pequenino e desfocado (anti-alising da redução de tamanho). As imagens do imageshack funcionam em quando inserimos do post o "direct link". De outra forma ele tenta ser inteligente mas na minha opinião só faz mééééé.

Não é preciso o esquema do boost, mas specs ajudavam... normalmente dizem qual é a amplitude da tensão de ripple, qual é a corrente máxima, etc etc, essas coisas que usamos para saber se o produto serve para a nossa aplicação ;).

Ahh, então estás a usar uma bat de lítio que alimenta directamente o módulo RF (por acaso ele dá-se bem com muito mais do que 3.3V? E funciona bem com menos de 3.3V? Hummm...) e que alimenta o boost para alimentar o AVR. Nada disso está no esquema :o. É que depois as únicas respostas que recebes são baseadas em especulação.

Tens o esquema um bocadinho amontoado. Passar fios por cima de componentes é má prática, reduz a legibilidade (como por exemplo corta por cima de texto). Também tens pelo menos um texto em cima de outro (qq-coisa.SHIELD). Se não queres ter muitos fios a passar de um lado para o outro da folha, dá um nome ao nó e usa apenas esse nome.
Outra coisa que não fica bem é ligar mais do que um fio directamente a um pino de componente. Especialmente quando te esqueces de meter lá uma "junção" como no caso do LED; o eagle se calhar nem considera que os fios estão ligados e dá-te erro ou no PCB não se apercebe que é para ligar tudo. Ainda outra coisa é o GND. É boa prática, porque facilita imenso a leitura de um esquema, ter a GND "em baixo" e as tensões positivas "em cima". Tens ali um GND "em cima". E tensões positivas para os lados. A corrente flui do potencial mais alto para o potencial mais baixo; se o esquema "espelhar" isso, torna-se muito mais fácil de ler e interpretar.
E valores e referências e outros em texto deitado?? Nós temos a cabeça a 90 graus e não a 0 nem a 180... daí que é muito mais fácil ler o que está "direito", certo? Legibilidade e facilidade de leitura e interpretação é uma das regras universais de quem quer transmitir alguma coisa com sucesso.
Tens aí muito espaço para melhoria... continua a dar-lhe :D!
« Última modificação: 13 de Outubro de 2012, 16:04 por Njay »

Offline dropes

  • Mini Robot
  • *
  • Mensagens: 2.189
Re: Internal reference dos atmega168 e 368
« Responder #19 em: 13 de Outubro de 2012, 16:24 »
O fórum reduz as imagens para 640 de largura
http://img4.imageshack.us/img4/5704/kastduino303sch.png

Offline kast

  • Mini Robot
  • *
  • Mensagens: 868
Re: Internal reference dos atmega168 e 368
« Responder #20 em: 13 de Outubro de 2012, 16:30 »
@NJay

Tens de seguir o link 2 vezes, ou seja clicas uma vez na minha imagem, esperas que a página carregue e depois clicas outra vez.

Quanto ao DC boost comprei no ebay e não tinham especificações, apenas que Imax=500mA. Estou à espera de uma encomenda do Hugu para fazer um DC boost melhorzito, mas a encomenda está "emperrada".

O NRF24L01 creio que funciona com tensão entre 1.9v e 3.7v, por isso pareceu-me adequado. Para além disto há muito pessoal a utilizar com 5v, dizem que funciona ...

Obrigado pelas dicas para fazer os esquemas.
Lembra-te que sou principiante nisto e ainda estou no nível "super-básico" no eagle.
Vou tentar melhorar essa parte.

Sabes de algum livro, site ou ebook sobre boas práticas de esquemas ?
Os electrões são nossos amigos !!! :D

Offline Njay

  • Mini Robot
  • *
  • Mensagens: 3.598
    • Tróniquices
Re: Internal reference dos atmega168 e 368
« Responder #21 em: 13 de Outubro de 2012, 16:57 »
Se eu seguir o link 2 vezes vou dar à página principal da imageshack (talvez por eu ter conta lá e estar sempre logado, não sei). E porque é que é preciso seguir seguir 2 links para ver bem 1 imagem que já aparece no post? Não faz sentido. É desperdício de tempo e recursos.

Quanto ao DC boost comprei no ebay e não tinham especificações, apenas que Imax=500mA.
Não comprar nada que não se saiba o que faz...

Citar
O NRF24L01 creio que funciona com tensão entre 1.9v e 3.7v, por isso pareceu-me adequado. Para além disto há muito pessoal a utilizar com 5v, dizem que funciona ...
:o :o
Onde estão as specs do módulo que estás a utilizar? É que além de não teres a certeza sobre o intervalo de allimentação do chip, tu na verdade estás a usar um módulo, e o módulo pode estar lá dentro a "fazer coisas" que alteram esse intervalo. Por exemplo, o módulo da Sparkfun, tem que ser alimentado entre 3V3 e 7V.
(P.S.: A página do fabricante do chip diz "1.9 to 3.6V supply range" :o)

Citar
Obrigado pelas dicas para fazer os esquemas.
Lembra-te que sou principiante nisto e ainda estou no nível "super-básico" no eagle.
Vou tentar melhorar essa parte.
Força. Ainda mais importante que saber, é querer saber ;)

Citar
Sabes de algum livro, site ou ebook sobre boas práticas de esquemas ?
Não sei. Mas a melhor fonte de bom conhecimento é ver os esquemas desenhados pelos pros, por exemplo, esquemas de "application notes" e datasheets dos fabricantes.

Offline kast

  • Mini Robot
  • *
  • Mensagens: 868
Re: Internal reference dos atmega168 e 368
« Responder #22 em: 13 de Outubro de 2012, 18:00 »
O módulo da Sparkfun creio q tem um regulador, é diferente deste.
Os electrões são nossos amigos !!! :D

Offline senso

  • Global Moderator
  • Mini Robot
  • *****
  • Mensagens: 9.733
  • Helpdesk do sitio
Re: Internal reference dos atmega168 e 368
« Responder #23 em: 13 de Outubro de 2012, 22:26 »
Portanto, decoupling decoupling decoupling como já tinha dito.

Pensava que esse regulador dc, tinha como saida 3.3v, e tudo funcionava a 3.3v...
Avr fanboy

Offline Njay

  • Mini Robot
  • *
  • Mensagens: 3.598
    • Tróniquices
Re: Internal reference dos atmega168 e 368
« Responder #24 em: 14 de Outubro de 2012, 00:05 »
O módulo da Sparkfun creio q tem um regulador, é diferente deste.

Eu sei, mas a mensagem que quis passar é que se o teu módulo não tem regulador, então vai pifar no teu projecto porque a tensão da bateria de lítio excede os 3.6V.

Calma com o decoupling... o AVR deve ter, agora quanto ao ripple do conversor, se é ou não um problema já depende da aplicação. Além disso, o ripple do conversor está mais dependente da ESR do condensador do que propriamente do seu valor.

Se usares o Vref interno não deverias ver as oscilações, ou pelo menos não tão pronunciadas. Já a medir a bateria com Vref = AVCC (5V) sim, deverias vê-las. Para confirmar só com osciloscópio. Podes configurar o AVR para expôr a Vref interna no pino AREF e fazer decoupling aí (o senso já falou nisso). Mas o condensador que lá metes deve ser pequeno, tipo 100nF. Se meteres um grande, o arranque e as mudanças de referência podem durar muito tempo, porque esse condensador tem que ser carregado/descarregado através de uma resistência de valor alto (interna ao AVR).

Offline kast

  • Mini Robot
  • *
  • Mensagens: 868
Re: Internal reference dos atmega168 e 368
« Responder #25 em: 14 de Outubro de 2012, 00:11 »
Obrigado pela ajuda Njay.

O meu problema é que quando mudo para a referência interna (1.1v), nada acontece, a referência continua a 5v na mesma. Experimentei isto com megas novinhos e acontece a mesma coisa, com ou sem o condensador de 100nF.

Mas isto até nem é um problema muito importante. Porque apesar de ter as variações que vos falei está a funcionar.

Neste momento estou a modificar a parte do servidor para poder escrever os dados num microSD, e também enviá-los através de um módulo ethernet.

Vamos ver como é que isto corre
Os electrões são nossos amigos !!! :D

Offline Njay

  • Mini Robot
  • *
  • Mensagens: 3.598
    • Tróniquices
Re: Internal reference dos atmega168 e 368
« Responder #26 em: 14 de Outubro de 2012, 00:21 »
O meu problema é que quando mudo para a referência interna (1.1v), nada acontece, a referência continua a 5v na mesma. Experimentei isto com megas novinhos e acontece a mesma coisa, com ou sem o condensador de 100nF.
O condensador só ajuda a manter a tensão "mesmo" fixa todo o tempo, tê-lo lá ou não não altera a tensão que lá medes (por exemplo no AREF).
Se continua a 5V (e estou a assumir que tens boas razões para concluir isso), é porque não estás a mudá-la bem. Como estás a fazê-lo? Show us the code.

Offline kast

  • Mini Robot
  • *
  • Mensagens: 868
Re: Internal reference dos atmega168 e 368
« Responder #27 em: 14 de Outubro de 2012, 00:31 »
Como vos tinha dito já alterei fisicamente o hardware, mas tinha um divisor de tensão que baixava a tensão para menos de 1.1v ligada ao pino analógico 0.

Código: [Seleccione]
* NO DE DOMOTICA v0.01
 
 */

#include <SPI.h>
#include "nRF24L01.h"
#include "RF24.h"
#include "printf.h"

//
// Configuração do NRF24L01
//

 
RF24 radio(10,9); // Define o RF24L01 radio em bus SPI bus mais os pinos 10 (CE) & 9 (CSN)

unsigned int payload[2];
unsigned int no_id=4;   //alterar o numero do no aqui
unsigned int carga_media;

void setup(void)
{
  Serial.begin(57600);
  analogReference(INTERNAL);
  printf_begin();
  //printf("\n\rRF24/examples/GettingStarted/\n\r");
  printf("DOMOTICA SERVER v0.01\n\r");
  printf("\n\r");
 
  radio.begin(); 
  radio.setChannel(101);   
  radio.setAutoAck(true);
  radio.setDataRate(RF24_250KBPS);
 
  radio.setPayloadSize(16); // define tamanho máximo da var a transmitir
  radio.setRetries(15,15); //define n de tentativas e tempo entre elas
 
//falta definir a potência de emissão

 
  const uint64_t pipes[2] = { 0xF0F0F0F0E1LL, 0xF0F0F0F0D2LL }; // Radio pipe addresses for the 2 nodes to communicate.
  radio.openReadingPipe(1,pipes[0]); // abre o pipe para receber
  radio.openWritingPipe(pipes[1]);  // abre o pipe para enviar
 
  radio.printDetails(); //Mostra os detalhes do radio
  printf("ID do nó\n\r", no_id);
  printf("\n\r");
 
  radio.startListening(); // inicia a escuta
  radio.stopListening();  // Necessario para comecar a enviar dados
 
  printf("\n\rA escuta ...\n\r");
  printf("\n\r");
  pinMode(8, OUTPUT);
  digitalWrite(8, LOW);
}


void loop(void)
{
  // Faz 20 leituras a bateria
  carga_media=0;
 
  for(int i=1;i<21;i++){
      carga_media=carga_media+analogRead(A0);
   }
   
  delay(20);
  radio.powerUp(); //necessario devido ao power down no fim do loop
 
  payload[1]=no_id;
  payload[2]=carga_media/20;
 
  Serial.print("Enviando... ");
  bool ok = radio.write( payload , sizeof(payload));
  if (ok)
  {
     Serial.print("ok ");
     digitalWrite(8, HIGH);
     delay(1);
     digitalWrite(8, LOW);
     Serial.print("ID ");
     Serial.print(payload[1]);
     Serial.print(" Bateria ");
     Serial.println(payload[2]);   
  }
  else
  {
     Serial.println("Erro na transmissão !!!");
  }


radio.powerDown(); // coloca o radio em stand-by
delay(5000);       // espera 5 segundos
}

No serial aparecia para a bateria um valor entre 170 e 230, o que era consistente com estar a utilizar os 5v como Aref, porque medindo com o multimetro no pino analógico 0 tinha sempre menos de 1.04v. Se estivesse a utilizar a referência interna (1.1v) deveria ter um número próximo de 1000.

Os electrões são nossos amigos !!! :D

Offline Njay

  • Mini Robot
  • *
  • Mensagens: 3.598
    • Tróniquices
Re: Internal reference dos atmega168 e 368
« Responder #28 em: 14 de Outubro de 2012, 00:58 »
Bom, não há mto que enganar, é arduino, basta invocar a analogReference.
Não tens nada ligado ao pino AREF, certo? Com a referência interna não podes ter lá nada ligado sem ser um condensador de decoupling (nã é bem assim mas para esta conversa, é).

Faz assim... experimenta mudar a chamada para o fim da setup().
Depois experimenta imprimir da porta série o valor de ADMUX (deve ser Serial.println(ADMUX)).

p.s.: testes num chip que ainda não tenha levado com 5V no AREF s.f.f. :)

Offline kast

  • Mini Robot
  • *
  • Mensagens: 868
Re: Internal reference dos atmega168 e 368
« Responder #29 em: 14 de Outubro de 2012, 01:01 »
Já percebi .. queres ver se tem mesmo a referência interna ligada ...

ok

amanhã faço isso.

Muito obrigado pela ajuda NJay
Os electrões são nossos amigos !!! :D