LusoRobótica - Robótica em Português
Sistemas específicos => Arduino / AVR => Tópico iniciado por: Kristey em 29 de Outubro de 2014, 04:37
-
Boas.
Estou a tenta iniciar a minha pesquisa sobre o funcionamento dos modulos nRF905
E estou com um problema.
Para fazer ping (exemplo da libraria http://blog.zakkemble.co.uk/nrf905-avrarduino-librarydriver/ (http://blog.zakkemble.co.uk/nrf905-avrarduino-librarydriver/) ) faço as ligações e faço o ping.
Tentei com um UNO e DueMillinove. Funcionou impecavel.
Estou a tentar agora com dois PRO MINI, e o ping da-me sempre time out no cliente, e Waiting for ping no segundo.
Existe alguma diferença entre o UNO e o PRO que possa provocar isto? que eu saiba não, porque o atemega é o mesmo, o PRO tem bootloader de 5V 16 Ghz... Não entendo...
Alguem teve este problema?
PS: Experimentei mais do que um PRO MINI. Bem como refiz as ligações todas varias vezes.
-
Existe alguma diferença entre o UNO e o PRO que possa provocar isto? que eu saiba não, porque o atemega é o mesmo, o PRO tem bootloader de 5V 16 Ghz... Não entendo...
O PRO que tens é muito potente!! 16 Ghz :p
A unica diferença que vejo é mesmo na alimentação, estás a alimentar esse integrado com a mesma tensão em ambos os casos?
-
A velocidade de relogio eh a mesma entre os Arduinos?
Parece-me coisa de temporizacoes.
-
Existe alguma diferença entre o UNO e o PRO que possa provocar isto? que eu saiba não, porque o atemega é o mesmo, o PRO tem bootloader de 5V 16 Ghz... Não entendo...
Segundo a própria Arduino o Pro Mini (http://arduino.cc/en/Main/ArduinoBoardProMini) tem um ATmega168 (com 1k de RAM), e o Uno (http://arduino.cc/en/Main/arduinoBoardUno) tem um ATmega328 (2k de RAM) :
Esses módulos por causa dos buffers não são gulosos de RAM? Pode ser por aí o problema.
-
Ou stack overflow, ou devido á corrente que o módulo usa brown-out da parte do regulador e/ou do micro.
-
Boas,
Típico sintoma de problema de QPA.
Abraços,
PA
-
Os PRO's que eu tenho estao alimentados a 5V
E ambos têm atmega328.
O clock é 16mhz
Bem mudei de breadboard e passou a dar...
--'
Lol
Agora tenho outro problema.
Segundo os módulos que uso. Deveria alimentar a 3.3V e alguns dos sinais também deveriam estar ligados a conversores lógicos (ou divisor de tensão, ou fixador de tensão)
Foi este ultimo que escolhi.
Uma resistência um zener de 3.3 e pensei eu que o problema estava resolvido.
O problema é que pelos vistos a resistência 4.7K, indicada pelo circuito recomendado não dá para o meu tipo de zener.
Isto porque a tenção com que fico no meio do fixador de tensão é de 2.4V e não 3.3V
Por tentativa e erro fui tentando e cheguei a 3.4V com uma resistência de 330 ohm.
Alguém me pode explicar as contas que tenho de fazer para não falhar na próxima vez?
É que quandon for comprar os zebres definitivos para soldar quero saber que características pedir.
-
É preferivel usar um IC lógico dedicado para isso, dado que por 50 ou 60 centimos garantes que o sinal é digital, e que não precisas de inventar uma duzia de componentes.
Já usei divisores de tensão para casos em cima do joelho com sucesso, agora zeners nunca.
-
Os PRO's que eu tenho estao alimentados a 5V
E ambos têm atmega328.
O clock é 16mhz
Bem mudei de breadboard e passou a dar...
--'
Lol
Agora tenho outro problema.
Segundo os módulos que uso. Deveria alimentar a 3.3V e alguns dos sinais também deveriam estar ligados a conversores lógicos (ou divisor de tensão, ou fixador de tensão)
Foi este ultimo que escolhi.
Uma resistência um zener de 3.3 e pensei eu que o problema estava resolvido.
O problema é que pelos vistos a resistência 4.7K, indicada pelo circuito recomendado não dá para o meu tipo de zener.
Isto porque a tenção com que fico no meio do fixador de tensão é de 2.4V e não 3.3V
Por tentativa e erro fui tentando e cheguei a 3.4V com uma resistência de 330 ohm.
Alguém me pode explicar as contas que tenho de fazer para não falhar na próxima vez?
É que quandon for comprar os zebres definitivos para soldar quero saber que características pedir.
Sugiro um pouco de estudo resumido sobre o funcionamento basico de diodos Zener. Sao simples de usar e bastante uteis em alguns casos :: WIKI (http://en.wikipedia.org/wiki/Zener_diode)
Sendo assim, ha algumas coisas a considerar ::
- a quantidade de corrente que o teu circuito alimentado necessita
- a corrente minima para a manutencao do breakdown do Zener
Assumimos que :
- tensao de alimentacao: 5V
- o Zener para manter os 3.3V consome: ~3mA
- consumo do circuito a alimentar: ~20mA
Entao, a resistencia que fica em serie tem q permitir a corrente para 20+3=23mA
Pela lei de Ohm, chegamos a :
(5V-3.3V) / 23m = ~73.9Ohm -> mais proximo ha 68 Ohm e 82 Ohm
Usar 82Ohm para limiter a corrente, assim teremos ~20.7mA disponiveis.
Quando o circuito alimentado nao estiver a consumir so ~20mA, vai ser o Zener a ter que conduzir extra e disspar mais potencia para poder manter os 3.3V estaveis.
E vice-versa, quando o circuito alimentado necessitar mais de ~20mA, vai roubar dos 3mA que o Zener necessita. Eh claro que se a corrente for superior ao valor para q a resistencia foi calculada, a tensao de saida vai diminuir.
Este circuito eh minimamente eficiente pois desperdica energia no Zener. Eh usado com Zeners de precisao gerar uma Tensao de Referencia com baixo custo, eliminando o uso de chips mais caros. Um bom Zener para isto eh o famoso TL431.
Para quem quer fazer uma "fonte de alimentacao" linear, barata e que permite o consumo de mais corrente sem o desperdicio de dissipacao no Zener, tem :: este exemplo (http://www.jugandi.com/eXe_Projects/Power_Supplies/image020.jpg)
Neste caso, a corrente desperdicada eh apenas a dissipada no Zener para fazer a manutencao dos 3.3V, pois a corrente de Base do Transistor eh muito baixa, assumindo que o mesmo tem um HFE de 100 ::
A corrente de Base eh calculada HFE = ic / ib, 100 = 20m / ib, ib = 200uA -> a resistencia tera de permiter apenas 3mA + 200uA
A resistencia entao serah de (5V-3.3V) / 3.2m = ~531 Ohm -> mais perto serah 470 Ohm ou 560 Ohm. Mas para permitir que mais corrente passe pelo Transistor, para cargas maiores, podemos usar 470 Ohm. Quanto maior for o HFE do transistor, maior poderah ser o valor desta resistencia.
Mais uma vez este circuito eh optimo quando necessitamos de uma estabilizacao de tensao barata e que nao tenhamos problemas de consumo de corrente.
Espero q a explicacao tenha sido util.
-
Para logic level converters podes usar 2 resistências e 1 mosfet: http://www.hobbytronics.co.uk/image/data/tutorial/mosfet_level_converter.jpg (http://www.hobbytronics.co.uk/image/data/tutorial/mosfet_level_converter.jpg)
-
Boas,
Vocês gostam de complicar ;D
Um simples SN74LVC3G17DCTR (40 cêntimos) resolve a questão ... ou um MAX3378 que é um pouco mais
caro mas estupidamente versátil para converter níveis lógicos.
No fim, fica MUITO mais barato um IC dedicado, ocupa MUITO menos espaço na PCB, e dá MUITO menos
trabalho soldar.
Just my 2 cents.
Abraços,
PA
-
No fim, fica MUITO mais barato um IC dedicado, ocupa MUITO menos espaço na PCB, e dá MUITO menos
trabalho soldar.
Depende da quantidade de produtos a fabricar.
A quantidade de solucoes discretas q frequentemente uso para nao ter que usar chips dedicados... Os savings que temos por usar uma solucao em vez de outra, sao gigantes.
Claro... cada aplicacao eh uma aplicacao e ha algumas q tem mm q se usar chip dedicado.
-
No fim, fica MUITO mais barato um IC dedicado, ocupa MUITO menos espaço na PCB, e dá MUITO menos
trabalho soldar.
Depende da quantidade de produtos a fabricar.
A quantidade de solucoes discretas q frequentemente uso para nao ter que usar chips dedicados... Os savings que temos por usar uma solucao em vez de outra, sao gigantes.
Claro... cada aplicacao eh uma aplicacao e ha algumas q tem mm q se usar chip dedicado.
Boas,
Sim concordo, e neste caso em que penso se o Kristey está usar uma breadboard a opção por um IC SMD
não dá muito jeito.
Por outro lado, ainda recentemente comprei 100 unidades do SN74LVC3G17DCTR que ficou a 20 cêntimos
cada um... e sendo um conversor Schmitt-trigger triplo, mas como faço uso somente de 2 buffers, fica a
10 cêntimos por canal de conversão. Como sou preguiçoso para mim a grande vantagem, nesta caso,
é mesmo o espaço que poupei na PCB :)
Abraços,
PA
Abraços,
PA
-
Aqui tens uma boa página sobre o assunto, bi-direccional level shifter.
http://playground.arduino.cc/Main/I2CBi-directionalLevelShifter (http://playground.arduino.cc/Main/I2CBi-directionalLevelShifter)
Andei ultimamente com o mesmo dilema, para já vou esperimentar como solução temporária, o ficheiro em anexo.
-
Aqui tens uma boa página sobre o assunto, bi-direccional level shifter.
http://playground.arduino.cc/Main/I2CBi-directionalLevelShifter (http://playground.arduino.cc/Main/I2CBi-directionalLevelShifter)
Andei ultimamente com o mesmo dilema, para já vou esperimentar como solução temporária, o ficheiro em anexo.
Ola
Esse esquematico tem algumas inconsistencias ::
- nao especifica quem eh o Master e o Slave
- as portas MOSI e MISO estao em choque
- eh preferivel seguir o exemplo com os dois transistores, ou melhor ainda o exemplo da Philips no manual do Standard de I2C
-
Boas,
Eu penso que o da esquerda é o Master a julgar pela utilização do díodo, se assim for a
porta MOSI (Master Out) -> MOSI (Server In) está bem, mas já o MISO (Master In) da
esquerda vai levar com o 5 Volts do MISO (Server Out) da direita ... e pufff, sem duvida
se não for uma porta 5V tolerante.
Por outro lado, se o o server é efectivamente o da esquerda, está todo mal, pois o único
cuidado devia ser mesmo no MISO, não percebo a função do díodo nem das resistências
sem ser a do CS que serve de pull-up.
Se o server é o da direita ... isso nunca vai funcionar, o díodo é um zener de 3V volts?
Abraços,
PA
De qualquer modo, é sem duvida um
-
Pois nem reparei no lado direito que devia de ser um Micro, está marcado mal o MISO e o MOSI, mas ainda assim se repararem o diodo será um simples 4148, do lado do micro(direita) quando o micro está a 5v a linha do lado mais do diodo fica a 3.3V por causa do pull-upp, mas quando o micro fica a gnd, então a linha toda fica a gnd porque a corrente já passa pelo micro metendo a linha no nivel lógico 0.
Espero que me tenha feito perceber.
Portanto do lado direito está um despositivo a 3.3V em que a linha que sai direto para o outro dispositivoé o TX, a linha com o diodo e pull-up é o RX o resto das linhas é irrelevante, no teu caso só precisas de RX e TX.
É preciso tambem ter em conta um pequeno/grande pormenor, o dispositivo de 5V precisa de aceitar 3.3v ou menos como nivel lógico 0.
-
Boas.
Sobre a mudança de níveis lógicos ja vi aqui varias soluções.
Eu na altura em que soube, ainda ponderei usar uns Logic converters que existem no ebay,
Mas não encontrei nenhum de 6 canais (o mínimo que eu preciso para cada modulo)
E depois de procurar no ebay sao bem caros que a solução (divisor de tensao 6 cêntimos para duas resistências) / fixador (10 cêntimos para um zener e uma resistência. Logo optei por usar este esquema com um zener para obter os 3.3v
Vou analisar esses circuitos integrados que me falam.
Ja agora alguém tem alguns disponíveis que me possa emprestar/vender para eu experimentar?
Agradeço tambem a explicação sobre o funcionamento dos zeners, vai ajudar certamente.
-
http://www.ti.com/product/sn74lvc245a (http://www.ti.com/product/sn74lvc245a)
Podes mandar vir samples, chegam num instante!
-
Não ha nenhum DIP em sample para poder testar. :( ja agora se fosse mesmo necessario usar um chip que não ha em versão dip como é que se "testa"?
E esses (SN74LVC245A) ate me interessaram.
Mas ainda não percebi porque é que acham que ter um chip é complicar menos do que meter 6 resistências e 6 zeners (Isto não é eficiente)?
Ou para testar aconselham-me usar este sistema e depois quando for fazer no final a pcb opto por usar o:
SN74LVC245A (8 canais, preciso de 6)
ou
2 x SN74LVC3G17DCTR (3 canais, preciso de 6)
Assumimos que :
- tensao de alimentacao: 5V
- o Zener para manter os 3.3V consome: ~3mA
- consumo do circuito a alimentar: ~20mA
Entao, a resistencia que fica em serie tem q permitir a corrente para 20+3=23mA
Pela lei de Ohm, chegamos a :
(5V-3.3V) / 23m = ~73.9Ohm -> mais proximo ha 68 Ohm e 82 Ohm
Usar 82Ohm para limiter a corrente, assim teremos ~20.7mA disponiveis.
Asena
Eu não sei quanto é que o modulo consome (precisa para transmissão de sinal), mas o meu zener é um BZX55C
Sendo que testei fiz o seguinte:
GND - Zener - x - 340ohm - 5V
E me deu 3.4V posso assumir que qualquer resistência a baixo de 340 ohm serve?
-
Compras breakouts no ebay, só as placas, tipo isto:
http://www.ebay.com/sch/i.html?_from=R40&_trksid=p2050601.m570.l1313.TR0.TRC0.H0.Xsmd+to+dip+breakout&_nkw=smd+to+dip+breakout&_sacat=0 (http://www.ebay.com/sch/i.html?_from=R40&_trksid=p2050601.m570.l1313.TR0.TRC0.H0.Xsmd+to+dip+breakout&_nkw=smd+to+dip+breakout&_sacat=0)
Se não, meia duzia de fios e dead-bug, um ou outro para prototipagem serve bem.
Mas porque é que não corres tudo a 3.3v e evitas voltagens diferentes?
-
Asena
Eu não sei quanto é que o modulo consome (precisa para transmissão de sinal), mas o meu zener é um BZX55C
Sendo que testei fiz o seguinte:
GND - Zener - x - 340ohm - 5V
E me deu 3.4V posso assumir que qualquer resistência a baixo de 340 ohm serve?
Nao eh bem assim, ha q ter cuidado com a potencia maxima q o Zener pode suportar. Esse 55 suporta maximo continuo de 500mW, ou seja ~150mA.
Pelo datasheet, a resistencia termica eh de 300°C/W... se estiver no maximo de corrente, estah a 150°C... eh tudo muito por alto, mas as contas sao +- estas.
O melhor eh sempre usar o Zener na mnor dissipacao possivel, logo tem q regular o menos possivel.
Eh calcular a resistencia apenas p a corrente necessaria e nao mais do q isso pq senao o Zener vai estar a queimar energia p regular a tensao extra q tem q ser mantida.
-
Compras breakouts no ebay, só as placas, tipo isto:
http://www.ebay.com/sch/i.html?_from=R40&_trksid=p2050601.m570.l1313.TR0.TRC0.H0.Xsmd+to+dip+breakout&_nkw=smd+to+dip+breakout&_sacat=0 (http://www.ebay.com/sch/i.html?_from=R40&_trksid=p2050601.m570.l1313.TR0.TRC0.H0.Xsmd+to+dip+breakout&_nkw=smd+to+dip+breakout&_sacat=0)
Obrigado, não conhecia isto!
Mas porque é que não corres tudo a 3.3v e evitas voltagens diferentes?
Realmente posso meter o bootloader de 3.3V. JA tinha pensado nisso mas acho que tinha um handicap qualquer no meu circuito/objectivo. Vou ver se me lembro porque eu perdi o meu bloco de notas onde tinha estas coisas apontadas :/
Contudo agora fiquei com curiosidade para ver como funciona esta questao dos Zenners
asena pelo que vejo nesta Imagem (https://www.dropbox.com/s/sbsj8zsopchq4uc/Captura%20de%20tela%202014-11-04%2000.20.48.png?dl=0)
A corrente maxima que o modulo usa é 30mA Mas eu não sei se é em todos os pinos ou não. Na datasheet não consegui encontrar mais informação de corrente: datasheet (http://cl.ly/1A1n012s3l36)
O maximo de corrente que tenho na posta do uC penso que seja 150mA que dá o atmega.
-
Realmente posso meter o bootloader de 3.3V. JA tinha pensado nisso mas acho que tinha um handicap qualquer no meu circuito/objectivo. Vou ver se me lembro porque eu perdi o meu bloco de notas onde tinha estas coisas apontadas :/
Deves, eh sempre a melhor opcao usar a mesma tensao p todo o circuito quando tal eh possivel.
Contudo agora fiquei com curiosidade para ver como funciona esta questao dos Zenners
asena pelo que vejo nesta Imagem (https://www.dropbox.com/s/sbsj8zsopchq4uc/Captura%20de%20tela%202014-11-04%2000.20.48.png?dl=0)
A corrente maxima que o modulo usa é 30mA Mas eu não sei se é em todos os pinos ou não. Na datasheet não consegui encontrar mais informação de corrente: datasheet (http://cl.ly/1A1n012s3l36)
O maximo de corrente que tenho na posta do uC penso que seja 150mA que dá o atmega.
O ATmega nao te consome 150mA, mas sim permite q o total das portas possam consumir no maximo esse valor. A corrente de operacao deve andar entre os 1..5mA. Veh o datasheet for operating current ah frequencia q tu estahs a usar. Provavelmente 1mA ou menos @ 1MHz.
Soh tens q calcular a resistencia para a corrente total q vais necessitar 30m+1m+1m(zener),
(5V-3.3V)/32m = ~53 Ohm, usar 62 Ohm
A essa corrente maxima, a resistencia vai dissipar ~60mW.
Sao tudo contas muito simples e redondas. Adapta p os teus usos.
Ha um livro muito bom de fontes de alimentacao lineares do Eng. Joao Caninas (https://35fub4.s.cld.pt).
-
Mas porque é que estamos a falar de 20 ou 30mA numa entrada lógica CMOS?
O consumo máximo do módulo é definido pelo amplificador RF basicamente, e pela lógica de controlo, não são 30mA que ele consome nas entradas digitais para saber se é um 0 ou 1, acho que nem ECL é assim tão power hungry..
-
Mas porque é que estamos a falar de 20 ou 30mA numa entrada lógica CMOS?
O consumo máximo do módulo é definido pelo amplificador RF basicamente, e pela lógica de controlo, não são 30mA que ele consome nas entradas digitais para saber se é um 0 ou 1, acho que nem ECL é assim tão power hungry..
Ele vai alimentar um modulo de radio com consumo de picos 30mA ......
-
E vai alimentar o módulo pelos pinos do SPI?
Ou me escapou algum post, ou não se continua só a falar de usar zeners como conversores de nivel, ou agora estamos a falar em usar zeners para gerar os 3.3v?
A meu ver não sei se é a melhor opção, um 1117 em SOT-23 chega bem para isso e terá melhor regulação e PSRR que um zener.
-
E vai alimentar o módulo pelos pinos do SPI?
Ou me escapou algum post, ou não se continua só a falar de usar zeners como conversores de nivel, ou agora estamos a falar em usar zeners para gerar os 3.3v?
A meu ver não sei se é a melhor opção, um 1117 em SOT-23 chega bem para isso e terá melhor regulação e PSRR que um zener.
Eu continuei a falar do Zener pois me parece q ele poderah querer alimentar o circuito com isso.
E sim, o 1117 eh o minimo a usar: cheap-good-enough for the job :)
-
senso, eu perguntei pelos zenners porque as soluções que vi aqui e que eu pesquisei são:
-SN74LVC245A (8 canais, preciso de 6)
-2 x SN74LVC3G17DCTR (3 canais, preciso de 6)
e agora o
-1117 (SOT-23)
E a minha questão foi a regulação para os 3.3V. Sei que nos logical converters que se sompram no ebay tens que alimentar 5V de um lado e 3.3V de outro, nestes é necessário?
Acrescentando que os CI's ainda tinha de esperar por eles e os zeners e resistências é o que não falta ali na loja de electrónica da esquina :D
Dai a minha pergunta, é mesmo necessario e relevante usar um conversor logico em CI?
Se sim, estaria mais inclinado para o SN74LVC245A visto que é so um componente (embora sobrem 2 portas), mas ao ler a datasheet fiquei na duvida se a comunicação era bidirecional.
Sobre a utilização de zeners
O que é para alimentar é isto: nRF905, e eu falei dos zeners porque é o exemplo que vi a ser usado aqui:
http://blog.zakkemble.co.uk/nrf905-avrarduino-librarydriver/ (http://blog.zakkemble.co.uk/nrf905-avrarduino-librarydriver/)
As correntes que meti aqui para o asena foi o que eu vi no datasheet como corrente maxima que o modulo precisa (meti la o link para poderem conferir se estava a dizer alguma babuzeira)
Posso tentar investigar a corrente de cada porta de comunicação e VCC (VCC, TXE, CE, PWR, SI, SCK e CSN ) e faço as contas individuais. Ou vejo a máxima e uso o mesmo valor de resistências para todos os pinos.
Agora tenho de decidir se uso os CI's ou os ZENERS, e se forem os zeners tenho de ver como fazer o calculo da resistencia a inserir com o zener. Visto que no datasheet so tem a corrent maxima e não a corrente por porta:
Datasheet (http://www.nordicsemi.com/eng/content/download/2452/29528/file/Product_Specification_nRF905_v1.5.pdf)
Isto é claro que se puder meter o bootloager de 3.3V, fica resolvido (como disse, ja não me lembro qual o motivo que me levou a não faze-lo do inicio, e sei que havia um)
Mas mesmo assim gostei da explicação do asena para a questao dos zeners e desenvolvi mais essa solução. Mesmo que não a use, aprendi algo :D
-
Pelo que leio na datasheet do SN74LVC245A não dá para o que preciso.
Uma vez que é desenhado para comunicações assicronas, e eu quero usar isto com um nRF905
E também porque tenho de seleccionar um pino em função da direcção de comunicação
Encontrei isto, acho que serve para o que eu quero.
http://www.ti.com/product/TXB0108/description (http://www.ti.com/product/TXB0108/description)
-
Os automáticos nem sempre corre muito bem se tiveres pull ups de um lado ou do outro, ele troca-se todo.