LusoRobótica - Robótica em Português
Sistemas específicos => Arduino / AVR => Tópico iniciado por: nadabro em 03 de Agosto de 2011, 00:14
-
Boas..
Preciso de um ADC (Analog to Digital) até 24bits no minimo com 3 canais. 24bits era o ideal, mas se obtesse algo como 16bit ou 18bit era suficiente.. no minimo preciso de 20SPS.
Como os meus conhecimentos em programação são algo limitados, procurava um ADC em que o código já fosse conhecido..
Tinha pensado no ADS1256 - Arduino sketch --> http://arduino.cc/forum/index.php/topic,7229.0.html (http://arduino.cc/forum/index.php/topic,7229.0.html)
Ou então 3 ADCs de 1 canal como o LTC2400 (http://interface.khm.de/index.php/lab/experiments/connect-a-ltc2400-high-precision-24-bit-analog-to-digital-converter/) ou o ADS1252.
O sketch do LTC2400 é conhecido no Arduino link (http://interface.khm.de/index.php/lab/experiments/connect-a-ltc2400-high-precision-24-bit-analog-to-digital-converter/), a versão com 4 canais é o LTC2404. Acham que alterar o sketch do LTC2400 e do LTC2404 será muito complicado?
Tem alguma sugestão de outro ADC ou como poderei fazer isto?
Obrigado.
-
Tens a certeza que necessitas de tantos bits?
-
Concordo com o senso.
-
A sugestão veio do sujeito que vendeu-me os sensores (geológicos), ele disse que se conseguisse obter os 24bits o mais provável era não necessitar de amplificação, como os A/D que se tem usado em Arduino vão (teoricamente) até 24bits não custava em tentar. Questionei-lhe sobre a resolução de 10bits do Arduino, ele disse que essa resolução não é sensível o suficiente para obter bons resultados do sensor..no mínimo 16bits (as boards que ele vende A/D para estes sensores são de 16bits).
-
E condicionamento do sinal para isso?
Imunidade a ruido?
Desenho de uma fonte de alimentação e de uma fonte de referência com sinal suficientemente limpo para tirar partido até de 16bits?
Cada count num ADC de 24 bits são 0.298nV, sim são mesmo nano volts, se simplesmente chapas com o adc numa bread board com meia duzia de fios pendurados, se conseguires utilizar 16bits com dados reais e sem muito ruido é uma sorte.
-
A minha ideia era mesmo "chapar numa breadboard com meia dúzia de fios" eheh Todos os dias vai-se aprendendo alguma coisa..
Os 24bits são hipotéticos pois os A/D permitem na teoria. Esquecendo os 24bits e descendo a fasquia para 16bits..recomendas algum A/D em que o sketch seja conhecido?
Vende-se A/D completos já com 16bits ou 24bits..
-http://www.futekinst.com/futek/dataacquisitionsystem.asp ..mas com taxas alfandegárias vai para os 130€
-http://www.dataq.com/products/startkit/di145.html ..10bits 4 canais por 20€
-
O que já usei com mais resolução até agora foi um adc de 12 bits da Microchip de 8 canais.
Isso do sketch ser conhecido é porque?
Regra geral o interface de um adc é spi ou parecido, coisa que é super facil de usar e implementar.
Não sei que sample rate queres/precisas nem que amplitudes de voltagem nem nada que se pareça, mas podes começar por aqui:
http://www.analog.com/en/analog-to-digital-converters/products/index.html (http://www.analog.com/en/analog-to-digital-converters/products/index.html)
-
Boas..
Depois de pensar muito sobre isto, virei-me para o ADS1282.. vou começar primeiro com uma protoboard e depois hei-de fazer em PCB. Até conseguir bons resultados ainda tenho que aprender muito..
Vou fazer este circuito:
(https://lusorobotica.com/proxy.php?request=http%3A%2F%2Fimg193.imageshack.us%2Fimg193%2F9192%2F88097893.png&hash=d9786b7095f4caa218215e531a04cfa3261726ad) (http://imageshack.us/photo/my-images/193/88097893.png/)
Mas tenho algumas dúvidas..
-O circuito tem +2.5V e -2.5V, como posso obter essas voltagens a partir dos 5V do Arduino?
-O regulador de tensão será o REF5050 (5V mas precisa >5.2V) ou o REF5045 (4.5V, precisa 5V), se usar o REF5045 posso usar +2.5V (ao contrário dos +2.8V para o REF5050 e +6.5V para o REF02?
-Para ligar a um microcontrolador preciso de um "clock 4.096Mhz"..posso usar o "clock" interno do Arduino (16Mhz)? Se sim, que diferenças terá?
Agradeço qualquer tipo de ajuda :)
-
Isso é um sinal de relógio que tens mesmo de fornecer sempre ao chip ou é a velocidade máxima com que comunicas com o chip?
É que são coisas muito diferentes e se for a velocidade de comunicação, o SPI pode bem funcionar a 4Mhz.
Esses reguladores não são bem reguladores, são referências de tensão e não podem ser usados como fontes de alimentação porque simplesmente são de baixa corrente.
Podes usar um charge pump para gerar a tensão negativa, mas o melhor é usar uma fonte externa bem regulada.
-
Obrigado pela resposta..
Acho que tenho mesmo que fornecer o relógio 4.096Mhz ao pin CLK, no datasheet diz:
Clock input - MAX 4.096 MHz
"MASTER CLOCK INPUT (CLK)
The ADS1282 requires a clock input for operation. The data conversion rate scales directly with the CLK frequency."
No exemplo que dão para ligar o ADS1282 a um FPGA
(https://lusorobotica.com/proxy.php?request=http%3A%2F%2Fimg696.imageshack.us%2Fimg696%2F1197%2Fadspx.jpg&hash=e75f67cd9bb6428ca340cfd7b4c5bbd73c1e65c1) (http://imageshack.us/photo/my-images/696/adspx.jpg/)
O ADS1282 tb funciona com apenas +5V, mas não sei o que tinha que mudar no circuito para fornecer apenas +5V. Onde posso adquirir uma fonte externa -2.5V +2.5V?
Tb já pensei fazer algo assim
http://masteringelectronicsdesign.com/design-a-unipolar-to-bipolar-converter-for-a-unipolar-voltage-output-dac/ (http://masteringelectronicsdesign.com/design-a-unipolar-to-bipolar-converter-for-a-unipolar-voltage-output-dac/)
-
Eu se fosse a ti ia para um chip mais simples de usar..
É que 31 bits é muito bit, e a lógica só funciona até 3.3v.
-
Mais simples o chip, muito mais trabalho nos restantes componentes.. não escolhi este apenas por ser 31bits.
Agradeço a ajuda, mas hei-de desenrrascar-me.
-
Não me leves a mal, mas acho que esse circuito é "areia demais para a tua camioneta". Esse projecto é complexo e só alguém com muito conhecimento te ia conseguir ajudar, só que isso exige muito tempo e portanto ninguém te vai fazer o acompanhamento necessário. Acho que já percebeste que há aí muito detalhe. Até podes montar esse circuito todo certinho mas não funcionar porque está numa breadboard; podes ver coisas como aproximares a mão da breadboard e a leitura do ADC começar a variar. Até pode ser que estejas sempre a ver uma sinusóide nas leituras (50Hz da rede eléctrica) só proque tens um fio um pouco mais comprido. As variáveis e as possilidades de problemas são quase infinitas.
Ia dizer-te para procurares um ADC mais simples, de 12 a 16 bits e começares por tentar com esse, mesmo que não haja já código para Arduino (não há-de ser dificil), mas também ainda nem colocaste a datasheet do sensor e portanto tá toda a gente às escuras.
-
Um simples MCP da microchip de 12 bits já dá para muita coisa, é super simples de se usar, para testes penso que chega bem, e existem chips bem fáceis de usar até 16bits.
-
Boas..
Sei que o projecto com o ADS1282 é "demasiada areia para o meu camião", mas é o melhor ADC para o que quero..mas rendi-me, e vou começar por algo muito mais simples:
-O ADC será o do Arduino (10bits) para começar, depois com o tempo hei-de adicionar outro adc.
Podem verificar se o esquema está correcto?
http://geoquake.info/ard.gif (http://geoquake.info/ard.gif)
O geophone é um geofono de 395ohm, tem dois pins (não tem datasheet). Primeiro o sinal vindo do geofono é amplificado, depois filtrado e por fim liga ao arduino. Se o esquema estiver correcto, resta-me apenas uma dúvida sobre como obter 2.5V de 5V, meti um "voltage divider" mas não sei se é a melhor forma de fazer isto.
Agradeço opiniões e sugestões..
-
Bem estive a ver este tópico do inicio ao fim, e isto tudo para mim é xines...
mas para reduzir a voltagem para 2.5v podes usar um conversor ou diodos penso eu...
Cumprimentos,
André Carvalho.
-
Se é só para referência um divisor resistivo chega perfeitamente, mas se queres alta precisão usa um regulador LDO linear que funciona bem com 5v.
-
ha samples de integrados só para tensão de referencia, a maxim tem muitos.
-
Obrigado pelas respostas..
Aconselham algum da Maxim?
O filtro que preciso tb é da Maxim, assim aproveitava e pedia samples do mesmo sitio..
-
Não sei se o esquema está certo, mas basta um divisor de tensão para obter os 2.5V de referência. Por exemplo 2 resistências de 10K a 100K e um condensador de 1uF a 10uF em paralelo com a resistência inferior do divisor, para ajudar a estabilizar ainda mais a referência.
-
Não sei se o esquema está certo, mas basta um divisor de tensão para obter os 2.5V de referência. Por exemplo 2 resistências de 10K a 100K e um condensador de 1uF a 10uF em paralelo com a resistência inferior do divisor, para ajudar a estabilizar ainda mais a referência.
Experimentei à umas semanas com duas resistencias de igual valor em paralelo e consegui obter os 2.5V, mas realmente não estava muito estável, o condensador é capaz de ajudar.
Voltando à minha lenga lenga dos 24bits..
Lá montei numa breadboard um ADC até 24bits com 4 canais, está directamente ligado ao Arduino por SPI (sem filtros, amplificadores), os resultados...eh, ruído e mais ruído...mas lá consigo medir alguma coisa.
circuito que segui
http://imageshack.us/photo/my-images/189/ads1211.png/ (http://imageshack.us/photo/my-images/189/ads1211.png/)
Alguns resultados
idle
-3856
-5832
-5112
-1353
-804
-1964
948
1507
-2652
-1913
-972
-1128
-3744
-4141
-7297
mexendo no sensor
-3025
-13529
-195597
-396208
185875
657732
428532
-145712
-802364
-463412
428772
364247
-253573
-111948
383495
Agora de forma a reduzir o ruído queria fazer um circuito em PCB (provavelmente vou mandar fazer), pois mesmo não tendo nada ligado nos Inputs, o valor do ruído é sempre o mesmo, já descartei:
-Inputs (nos diversos canais)
-Clock, experimentei com um externo (a 4Mhz) e com um clock "simulado" pelo Arduino no pin digital 3..o ruído é o mesmo
Sabendo que o grande problema vem da breadboard, será que a ligação ao Arduino por fios descarnados tambem contribui? (5V, GND, 3 para comunicação SPI nos pins digitais)
Com jumpers irá melhorar ou melhor mesmo será incluir no PCB um "arduino" e/ou usar uma fonte de 5V externa?
-
Posta umas fotos da montagem.
-
http://imageshack.us/photo/my-images/834/sisfi.jpg/ (http://imageshack.us/photo/my-images/834/sisfi.jpg/)
Confusão de fios, mas funciona...alguns resultados ao mexer no sensor num gráfico:
http://imageshack.us/f/202/15536806.jpg/ (http://imageshack.us/f/202/15536806.jpg/)
Mas o problema é mesmo o ruído "de fundo"..