ADS1115
ADS1115
Dobří lidé, máte někdo zkušenosti s AD převodníkem ADS1115? Je to super brouček a funguje na 100% Ale neumím jej obsluhovat,
když chci číst více vstupů. Pokud čtu jen jednu hodnotu - je jedno jestli vůči zemi, nebo diferenciálně, je vše OK.
Ale když chci do PICAXE číst např.
1. vstup A0 + A3 - diferenciálně - do registru w0
2. vstup A1 + A3 - diferenciálně - do registru w1
3. vstup A2 + GND - single - do registru w2
tak se nějak ovlivňují, nebo se čtou jinam než zadám příkaz. Jak se mají příkay oddělovat, aby se nepletly?
Když je zaremuju, tak každý samostatně funguje, ale dohromady né. Kde dělám chybu?
Luděk
když chci číst více vstupů. Pokud čtu jen jednu hodnotu - je jedno jestli vůči zemi, nebo diferenciálně, je vše OK.
Ale když chci do PICAXE číst např.
1. vstup A0 + A3 - diferenciálně - do registru w0
2. vstup A1 + A3 - diferenciálně - do registru w1
3. vstup A2 + GND - single - do registru w2
tak se nějak ovlivňují, nebo se čtou jinam než zadám příkaz. Jak se mají příkay oddělovat, aby se nepletly?
Když je zaremuju, tak každý samostatně funguje, ale dohromady né. Kde dělám chybu?
Luděk
Re: ADS1115
Vetsinou je potreba dat multiplexeru a vnitrni logice cipu cas na prepnuti a ustaleni.
Sice jsem v datasheetu ADS1115 narychlo nenasel nejakou specifikaci, ale dobra praxe je:
- Nastavim multiplexex a rezim (single end / differetial)
- POCKAM (bud podle specifikace v datasheetu nebo odexperimentovat, vetsinou nejaka milisekunda)
- Provedu A/D konverzi
- Prectu vysledek
- Nastavim multiplexex a rezim (single end / differetial)
- POCKAM (bud podle specifikace v datasheetu nebo odexperimentovat, vetsinou nejaka milisekunda)
- Provedu A/D konverzi
- Prectu vysledek
atd. stale dokola
Sice jsem v datasheetu ADS1115 narychlo nenasel nejakou specifikaci, ale dobra praxe je:
- Nastavim multiplexex a rezim (single end / differetial)
- POCKAM (bud podle specifikace v datasheetu nebo odexperimentovat, vetsinou nejaka milisekunda)
- Provedu A/D konverzi
- Prectu vysledek
- Nastavim multiplexex a rezim (single end / differetial)
- POCKAM (bud podle specifikace v datasheetu nebo odexperimentovat, vetsinou nejaka milisekunda)
- Provedu A/D konverzi
- Prectu vysledek
atd. stale dokola
Soldering fumes make you stronger!
Re: ADS1115
Tak díky... pomohlo to. Při opakovaném čtení to není nutné, to jde okamžitě,
ale jakmile se mění typ vstupu, je třeba malé pauzy, anebo testovat bit15 OS v Config registru.
Už to šlape a zase jsem o něco chytřejší. Díky Pirxi.
ale jakmile se mění typ vstupu, je třeba malé pauzy, anebo testovat bit15 OS v Config registru.
Už to šlape a zase jsem o něco chytřejší. Díky Pirxi.
Re: ADS1115
Samozřejmě testovat, co o sobě ten převodník sám říká, je nejlepší
V datasheeteu nepíšou o změně nastavení multiplexeru ani startovacích časech nic, ale ono myslím nebude ani tím ustálením, jako přímo vlastní rychlostí převodníku. Default je 128 SPS, tj. 7.8 ms na jednu konverzi a to je pro kontrolér na 8 nebo 16 MHz hódně času i když se to ptá relativně pomalým i2c. A nemá smysl ptát se častěji, stejně by se přečtl předchozí výsledek.
(nevím samozřejmě, jak to je konkrétně nastavené, default je 128SPS ale má možnost 8-860 SPS, jenže i pro těch 860 je jedna konverze cca 1.2ms a to je pořád docela dlouho, teda pokud to i2c není nastavené na dostatečně pomalou komunikaci, že by přenos dotazu a odpovědi trval déle)
V datasheeteu nepíšou o změně nastavení multiplexeru ani startovacích časech nic, ale ono myslím nebude ani tím ustálením, jako přímo vlastní rychlostí převodníku. Default je 128 SPS, tj. 7.8 ms na jednu konverzi a to je pro kontrolér na 8 nebo 16 MHz hódně času i když se to ptá relativně pomalým i2c. A nemá smysl ptát se častěji, stejně by se přečtl předchozí výsledek.
(nevím samozřejmě, jak to je konkrétně nastavené, default je 128SPS ale má možnost 8-860 SPS, jenže i pro těch 860 je jedna konverze cca 1.2ms a to je pořád docela dlouho, teda pokud to i2c není nastavené na dostatečně pomalou komunikaci, že by přenos dotazu a odpovědi trval déle)
Nikoho plánovaně neurážím. Jestli se Vám nelíbí co píšu, tak to nečtěte. A ostatně, třeba za to nemůžu - Researchers believe that dark humor can be a significant symptom of dementia.
Re: ADS1115
Tak to jsme rádi, ale byli bychom ještě radši, kdyby ses s námi podělil o ten kousek kódu, kterým převodník ADS 1115 z PICAXE ovládáš. Díky předem!Luděk píše:Už to šlape a zase jsem o něco chytřejší.
jrt
Re: ADS1115
Jasne, netestovani konce prevodu je dalsi z klasickych opomenuti (z vlastni zkusenosti), takze misto tupeho cekani je tam potreba dat dotaz na ukonceni prevodu a teprve potom manipulovat s nastavenim.DavidO píše:... jako přímo vlastní rychlostí převodníku ...
Ale stejne bych po prepnuti kanalu / rezimu "par" milisekund (tedy 2) pockal na odezneni prechodovych deju. Pri 128 sps se to uz ztrati.
Soldering fumes make you stronger!
Re: ADS1115
Tak tedy posílám, co jsem vypotil
Kód: Vybrat vše
TEST- ADS1115 - 20X2
;
;
;Testovací program pro čtení dvou differenciálních vstupů - příklad napětí a proud
;1....vstup = IN0 + IN3 ..... Gain=4 --> 1,024V ..... hodnote je v reg w1
;2....vstup = IN1 + IN3 ..... Gani=8 --> 0,512V ..... hodnota je v reg w2
;
;
#picaxe 20X2 ;funguje to na všech typech PICAXE
#no_table
setfreq M16
INIT: pause 2000
hi2csetup i2cmaster, %10010000, i2cfast_16, i2cbyte
START: pause 1000
call RDUI
goto START
;--------------------------------------------------------------------------------------------------
RDUI: hi2cout (%00000001,%10010111,%10000011) ;Config reg
RU: hi2cin (b1,b0) ;přečte stav Config registru
if bit15=0 then RU ;pokud probíhá konverze - znovu
hi2cout (%00000000,%00000000) ;point register=0
hi2cin (b3,b2) ;přečte data
;..................................................................................................
hi2cout (%00000001,%10101001,%10000011) ;Config reg - In1+In3=Diff + Gain8=0,512V
RI: hi2cin (b1,b0) ;přečte stav Config registru
if bit15=0 then RI ;pokud probíhá konverze - znovu
hi2cout (%00000000,%00000000) ;point register=0
hi2cin (b5,b4) ;přečte data
return
;--------------------------------------------------------------------------------------------------
Re: ADS1115
Můžu se zeptat, proč? Mě se to zdá zbytečné - to by o tom snad něco napsali v datasheetu, myslím (zrovna tenhle je jinak dost podrobný).Pirx píše:Ale stejne bych po prepnuti kanalu / rezimu "par" milisekund (tedy 2) pockal na odezneni prechodovych deju.
Nikoho plánovaně neurážím. Jestli se Vám nelíbí co píšu, tak to nečtěte. A ostatně, třeba za to nemůžu - Researchers believe that dark humor can be a significant symptom of dementia.
Re: ADS1115
To vypadá docela dobře.Luděk píše:Tak tedy posílám, co jsem vypotil
...
Ze zvědavosti by mě zajímalo, jakým způsobem to na začátku nefungovalo, takže se zeptám: prve se to lišilo jen v tom, že tam nebylo to čtení Config registru a test OS, nebo ještě v něčem jiném?
Nikoho plánovaně neurážím. Jestli se Vám nelíbí co píšu, tak to nečtěte. A ostatně, třeba za to nemůžu - Researchers believe that dark humor can be a significant symptom of dementia.
Re: ADS1115
Pro Davida,
časová prodleva a ani testování bitu Ready není třeba, funguje to šíleně rychle, dle DataSheetu asi 10x rychleji než instrukce Picaxe na 16MHz.
Takže vše OK. Ale po čase jsem potřeboval číst 1 vstup vůči GND a dva diferenciální vstupy. A tak jsem přečetl jeden vstup dal do třeba w10,
pak změnil parametry a dal do w11 a pak ještě jednou změna a do w12. A ono to strkalo výsledky úplně jinak, prostě to nesouhlasilo a já nechápal.
Teprve po radě, abych udělal pauzu to fungovalo, ale pauza to moc zpožďovala. Teprve testování toho bitu to vyřešilo.
Pauza navíc teď není třeba, ani při změně na 32Mhz, protože I2C si stejně samo řídí frekvenci.
Luděk
časová prodleva a ani testování bitu Ready není třeba, funguje to šíleně rychle, dle DataSheetu asi 10x rychleji než instrukce Picaxe na 16MHz.
Takže vše OK. Ale po čase jsem potřeboval číst 1 vstup vůči GND a dva diferenciální vstupy. A tak jsem přečetl jeden vstup dal do třeba w10,
pak změnil parametry a dal do w11 a pak ještě jednou změna a do w12. A ono to strkalo výsledky úplně jinak, prostě to nesouhlasilo a já nechápal.
Teprve po radě, abych udělal pauzu to fungovalo, ale pauza to moc zpožďovala. Teprve testování toho bitu to vyřešilo.
Pauza navíc teď není třeba, ani při změně na 32Mhz, protože I2C si stejně samo řídí frekvenci.
Luděk