Oke, ik word helemaal wild na 2 dagen puzzelen en proberen. Wie heeft het (waarschijnlijk buitengewoon eenvoudige) antwoord op mijn probleem:
Ik heb een raspberryPi 4b. Via i2c: Pi>cais3020s>tca9548>cais3020s>ads1115
De ca-is3020 isoleert verschillende delen van de bus en beschermt tegen akelige pieken op een lange (tijdelijke) kabel.
De TCA9548 multiplext de i2c bus zodat ik meerdere modules op hetzelfde adres kan gebruiken (beperkt aantal adressen per module beschikbaar)
Een ADS1115 met:
5V vcc
Single channel
gain op +-6.144v (heb ook andere geprobeerd zie tabel verderop)
Single mode
128SPS (heb ook 8SPS geprobeerd. Maakt geen enkel verschil)
van 0 tot ~1.1V werkt alles perfect en kan ik ongeacht welke gain ingesteld is de gemeten waarde omrekenen naar de spanning welke dan vrijwel exact overeen komt met wat de multimeter beweert. Daar boven gaat de waarde ineens gekke dingen doen. De waarde gaat ineens weer naar beneden, soms een beetje, soms bijna terug naar nul.
Mijn eerste gedachte was dat ik bijvoorbeeld maar 12 bits lees. Zodra bit 13 hoog word gaan die 12 weer terug naar 0 en beginnen opnieuw te tellen. Maar dat is niet het geval. Dan zou het na die grens wel weer linear oplopen, en dat is het bij lange na niet.
Optie twee: impedantie van de bron. er zit een lowpass filter tussen de echte ingang (potmeter voor het moment) en de ads. 1k met 100nF. Tenopzichte van de 10pF cap in de ads zou dat dus geen noemenswaardige spannignsval moeten verzoorzaken. 100nF voor de grap weg gehaald. Dit had (voorspelbaar) geen effect.
Optie drie: de 5v1 zener diode om de ingang te beschermen is kaduuk. Verwijderd>zelfde effect.
Optie vier: vanwege de lange kabe en twee isolators in de i2c missen er bitjes... Andere modules communiceren wel correct. Daarbij werkt het tot 1,1v prima en bij andere gains krijg ik de meetwaarde prima door.
Ik ben even door mn ideeën heen. Ik heb zelfs chat gpt geprobeerd.... laten we zeggen dat die ook niks zinnigs te melden had...
De grens is echt ~1,1V. De gain heeft daar geen invloed op. De gemeten waarde komt alleen hoger. Dit is de gainsetting, de maximale waarde die ik er uit heb kunnen krijgen met een vrijwel perfect lineare reactie en de werkelijke spanning op de pin van de ads1115 (met multimeter gemeten)
6,144 5800 1,1v
4,096 8800 1,1v
2,048 14800 0,935v (geen idee waarom deze afwijkt...)
1,024 30100 1,1v
0,512 32767 Alles boven 0,512v. Logisch. Dit klopt
0,256 32767 Alles boven 0,256v. Logisch. Dit klopt
Het lijkt dus echt met de ingangsspanning te maken te hebben. Maar wat dit zou kunnen veroorzaken.... Ik heb geen idee. Het enige wat ik nog niet geprobeerd heb is de ads1115 te vervangen. Niet de eerste keer dat ik 0.6 pitch moet solderen. Maar dit is een splinternieuwe chip. Dus ik kan me bijna niet voorstellen dat die kaduuk is...
Wie o wie heeft tijd en zin even mee te denken 
Dank alvast!
Arco
Special Member
Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com
Op zondag 11 januari 2026 15:25:56 schreef Arco:
Simpelste: testen of het zonder isolators wel goed werkt?
Dat is makkelijker gezegd dan gedaan... 1 isolator zat er eerst niet tussen. Daar heb ik de nodige traces voor moeten doornsijden om die er tussen te krijgen (dat heeft me een geroosterde tca gekost). Maar dat is wat mij betreft ook de minst waarschijnlijke. Als de communicatie het probleem zou zijn zou ik continue "willekeurige" waardes verwachten. Of als het specifiek die hoge bitjes zijn: dat ik die óók niet zou krijgen als ik de gain omlaag zet. maar dan gaat de meetwaarde gewoon netjes naar 32767 zoals het hoort.
Ik ben er redelijk van dat dit een analoog probleem is. Maar daar heb ik te weinig kaas van gegeten om er echt wat zinnigs over te zeggen...
- Wat is de exacte waarde van je config register (dus als je hem met I2C terugleest?)
- Wat is de voedingsspanning die op de chip zelf meet?
- Hoe zijn alle andere analoge ingangen aangesloten?
- Wat is de daadwerkelijke spanning die je daar meet?
Oh, en nog een leuke vraag:
- Waar heb je hem gekocht?
[Bericht gewijzigd door blurp op (11%)]
Arco
Special Member
Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com
Printje om te testen kost nog geen 2 euro... : https://nl.aliexpress.com/item/1005006267207843.html
Op zondag 11 januari 2026 15:50:44 schreef Arco:
Printje om te testen kost nog geen 2 euro... : https://nl.aliexpress.com/item/1005006267207843.html
Tja, en dan gaan er bij mij gelijk alarmbellen rinkelen. Dat chippie kost bij de fabrikant $1,80 bij afname van 1000 stuks. Natuurlijk is korting bij grotere aantallen mogelijk, maar dit klinkt onbetrouwbaar.
Op zondag 11 januari 2026 15:48:55 schreef blurp:
- Wat is de exacte waarde van je config register (dus als je hem met I2C terugleest?)
- Wat is de voedingsspanning die op de chip zelf meet?
- Hoe zijn alle andere analoge ingangen aangesloten?
- Wat is de daadwerkelijke spanning die je daar meet?Oh, en nog een leuke vraag:
- Waar heb je hem gekocht?
config (terug gelezen) = 49539d (1100000110000011b) wat overeenkomt met wat ik stuur.
1b : Device is not currently performing a conversion. (hij was dus klaar op het moment dat ik de waarde lees)
100b : AINP = AIN0 and AINN = GND
000b : FSR = ±6.144V
1b : Single-shot mode or power-down state
100b : 128SPS
0b : Traditional comparator (comperator mode)
0b : Active low (comperator polarity)
0b : Nonlatching comparator. The ALERT/RDY pin does not latch when asserted
11b : Disable comparator and set ALERT/RDY pin to high-impedance (default) (comperator queue and disable)
Vcc op de chip is 5.07
Hoe is alles aangesloten: zie afbeelding (de 0-20mA en 0-10V jumpers zijn momenteel niet aanwezig).
De spanningen die ik in dat tabelletje heb staan is de spanning direct op de chip.
Het is een (smd) geassambleerde pcb van jlcpcb. Dus ik zou verwachten dat die wel legetime chips gebruiken... Maar 100% zeker ben ik natuurlijk niet
Op zondag 11 januari 2026 15:50:44 schreef Arco:
Printje om te testen kost nog geen 2 euro... : https://nl.aliexpress.com/item/1005006267207843.html
Die kosten zijn het probleem niet, maar wat moet ik daarmee testen? Het is een complete pcb. daar kan ik die module van alie niet opzetten? Volgensmij heb ik dat printje zelfs liggen van alie. Maar dan nog, kan ik niks mee hier? (hooguit de chip er af halen en die op mijn print zetten. Maar of alie nou de meest betrouwbare chips gebruikt vraag ik me toch altijd af. Ookal heb ik inmiddels meerdere alie chips in gebruik).
EDIT: oh of wil je die module even los aan de rpi knopen om te checken of het dan wel werkt? Dát kan ik natuurlijk wel doen. Even kijken hoe ik dat ga fixen (pi zit niet in de buurt van mn pc. Maar dit valt wel te regelen)
[Bericht gewijzigd door DaanSteeman op (15%)]
Arco
Special Member
Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com
Op zondag 11 januari 2026 16:06:26 schreef DaanSteeman:
[...]
EDIT: oh of wil je die module even los aan de rpi knopen om te checken of het dan wel werkt? Dát kan ik natuurlijk wel doen. Even kijken hoe ik dat ga fixen (pi zit niet in de buurt van mn pc. Maar dit valt wel te regelen)
Precies...
Reageren alle inputs op dezelfde manier fout?
Je weet dat het ingangssignaal nooit meer mag zijn dan VCC+0.3V, in jouw geval dus 5.3V.?
(en als je daarboven hebt gezeten mag hij stuk zijn)
Je weet zeker dat het geen gerelabelde ADS1015 is die maar 3.6V voedingsspanning mag is?
Ohja, je zegt dat je 1.1V meet. Maar dat is een (met software) berekende waarde, de chip geeft gewoon een 16 bit waarde, in jouw geval tussen 0x000 en 0x7FFF. Heb je al gekeken wat die waarde is?
(m.a.w. kan er een fout in de software zitten?)
[Bericht gewijzigd door blurp op (84%)]
Op zondag 11 januari 2026 16:15:10 schreef Arco:
[...]
Precies...
Hhmm oke. In de print die nu aan de pi gekoppeld is zit zo'n module mét een ca-is3020s er tussen. (die hele print word vervangen door met wat ik nu bezig ben). Als ik die via de adafruit library uitlees werkt hij perfect. Als ik die via mijn class aanroep krijg ik er een (min of meer) vaste waarde uit. Dus dat zal aan mijn code liggen. Maar als het originele probleem aan mijn code ligt zal die lagere range toch ook gewoon niet werken...
Maar ook met de adafruit library zit die cais3020 er tussen. Dus dat is het probleem niet zou ik zeggen. (Ik ben nog even bezig om te kijken of ik mijn code op die op de bestaande print aan de gang krijg).
Op zondag 11 januari 2026 16:54:18 schreef blurp:
Reageren alle inputs op dezelfde manier fout?
Jep, 4 kanalen, 4 keer het zelfde verhaal.
Je weet dat het ingangssignaal nooit meer mag zijn dan VCC+0.3V, in jouw geval dus 5.3V.?
(en als je daarboven hebt gezeten mag hij stuk zijn)
Jep, vandaar ook de 5v1 zener. tot nu toe heeft er alleen een potmeter aan gezeten die gevoed word van dezelfde 5v als waar de chip ook mee gevoed word.
Je weet zeker dat het geen gerelabelde ADS1015 is die maar 3.6V voedingsspanning mag is?
Zeker? Nee. Maar zoals ik zei, het is een print die ik ontworpen en besteld heb bij jlcpcb. Ik neem aan dat zij echte onderdelen gebruiken... Plus, als het een ads1015 zou zijn en ik zou er 5v op zetten zou ik verwachten dat de chip helemaal niet reageert.
Ohja, je zegt dat je 1.1V meet. Maar dat is een (met software) berekende waarde, de chip geeft gewoon een 16 bit waarde, in jouw geval tussen 0x000 en 0x7FFF. Heb je al gekeken wat die waarde is?
(m.a.w. kan er een fout in de software zitten?)
Nee, die 1,1V is met een multimeter gemeten. Die 16 (eigenlijk signed 15 bit) waarde is de tweede "kolom" in het tabelletje wat ik stuurde. de 5800, 8800, 14800, etc. Dat is de decimale representatie ervan. Als ik de gain zo hoog zet dat 0.512v de maximale waarde oplevert word die ook netjes 32767 (0x7FFF dus) als ik boven de 0.512v zit (zoals verwacht).
Er kan zéker een fout in de software zitten. Maar dat verwacht ik op dit punt niet. Als ik bytes geswapt zou hebben zou die range onderin ook van geen kanten kloppen. Plus, ik heb de twee bytes los uitgelezen en dan zie je 1 netjes 0-255 lopen terwijl de ander heel langzaam optelt (tot de waarde die in dat tabelletje staat als je de twee combineert tot een woord uiteraard). Het feit dat de 16 bits output veranderd zoals ik verwacht lijkt het me ook stug dat ik de bytes in de config verkeerdom heb oid.
In essentie werkt het hele kunstje perfect tot die ~1,1V. Zolang ik daar onder blijf gebruik ik de verwachte schaling en kom ik netjes uit op de spanning die de multimeter ook aangeeft. Zodra ik daar boven ga slaat het nergens meer op.
benleentje
Golden Member
Als je nu eens via een regelbare voeding je nu eens direct spanning op de ingang van de ADS zet dan weet je in ieder geval dat wat er uit de voeding komt goed is.
En als het een defecte ADS is die op zijn ingang aan het zeneren is dan gaat die in rook op en dat weet je ook waar het aan lag.
Jep, 4 kanalen, 4 keer het zelfde verhaal.
Maar er zit maar 1 ADC in dus als het daar fout gaat dan gaat het op alle kanalen fout.
Maar dat kom je dan ook achter als je via een regelbare voeding spanning op de ingang zet.
er alleen een potmeter aan gezeten die gevoed word van dezelfde 5v als waar de chip ook mee gevoed word.
En die potmeter is ook al gecontroleerd?
ADS1115 verzadigd boven de ~1.1V
Dat vind ik een te snelle conclusie. Het kan alles zijn vanaf de voeding naar die potmeter tot aan de ADS.
Ook al gemeten wat de voeding op de potmeter doet?
Als je nu eens via een regelbare voeding je nu eens direct spanning op de ingang van de ADS zet dan weet je in ieder geval dat wat er uit de voeding komt goed is.
En als het een defecte ADS is die op zijn ingang aan het zeneren is dan gaat die in rook op en dat weet je ook waar het aan lag.
Hhmm, ivm locatie is dat makkelijker gezegd dan gedaan. Maar dat sluit idd wel de zener in de ads uit. Hoewel de impedantie van het filter en pot geen effect zou mogen hebben gaat dat natuurlijk wel een rol spelen als de zener onterecht gaat geleiden. Zou de 100nF die zener ook niet op een zeker moment frituren? Momenteel krijg ik helemaal geen zinnig antwoord van het ding meer. Dus ik vermoed dat de chip momenteel gewoon gefrituurd is. Ik ga hem na het eten even vervangen. Kijken wat er dan gebeurt. Dat sluit ook meteen een kapotte zener uit.
En die potmeter is ook al gecontroleerd?
Als ik de pot draai komt er netjes 0-5v op de pin van de ads. Dus daar lijkt niks mis mee te zijn.
Dat vind ik een te snelle conclusie. Het kan alles zijn vanaf de voeding naar die potmeter tot aan de ADS.
Ook al gemeten wat de voeding op de potmeter doet?
Het verzadigen is puur wat ik observeer. Tot 1,1v loopt de gemeten waarde netjes op. Daarna ineens niet meer. Hence: verzadiging. Waar dat aan ligt is de volgende kwestie natuurlijk.
De voeding van de pot is dezelfde voeding als die van de ads. Dat is ook het enige wat er aan hangt momenteel, 5.10V op het moment
[Bericht gewijzigd door DaanSteeman op (19%)]
benleentje
Golden Member
Als ik de pot draai komt er netjes 0-5v op de pin van de ads. Dus daar lijkt niks mis mee te zijn.
Dat mag je dan even wat beter uitleggen want je zegt ook dat je maar 1,1V op de ingang van de ADS gemeten hebt.
Op zondag 11 januari 2026 17:50:41 schreef DaanSteeman:
Ik neem aan dat zij echte onderdelen gebruiken... Plus, als het een ads1015 zou zijn en ik zou er 5v op zetten zou ik verwachten dat de chip helemaal niet reageert.
Ik zou niets aannemen. Als je zou aannemen zou het gewoon moeten werken 
Enne, als het een ADS1105 zou zijn zou die het zomaar een tijdje kunnen doen op 5V. Zou ook zomaar stuk kunnen gaan. Of gek kunnen doen.
Enige manier waarop je het verschil kunt zien is dat bij de ADS1105 de 4 minst significante bits altijd 0 zijn.
Nog een vraag (gewoon voor de zekerheid): Heb je meer dan 1.1V gemeten op de ADS1115 ingangspin? Of kan die zenerdiode ook stiekum op 1.1V staan zeneren?
Nog een vraag: Wat is de weerstand van je potmeter?
Op zondag 11 januari 2026 18:49:24 schreef benleentje:
[...]Dat mag je dan even wat beter uitleggen want je zegt ook dat je maar 1,1V op de ingang van de ADS gemeten hebt.
Nee de pot werkt goed. Op de ingang van de ads meet ik met een multimeter netjes 0-5V als ik met de pot draai.
Het is de waardes die de ads zelf geeft als meetwaarde. Tot ~1,1v gaat het goed. Daarna is het onzin. Soms wat omhoog of omlaag, soms ineens vrijwel 0. Het gaat alle kanten op. Ik heb een afbeelding bijgevoegd. De meeste waardes zijn berekend in excel. Maar ik hoop dat het wat duidelijker maakt waar het probleem precies zit.
Ik zou niets aannemen. Als je zou aannemen zou het gewoon moeten werken
Haha fair... nouja, een grote internationale fabrikant mag ik toch van hopen dat het origineel spul is...
.
Enige manier waarop je het verschil kunt zien is dat bij de ADS1105 de 4 minst significante bits altijd 0 zijn.
Dan is het zeker geen ads1105. Ik dacht eerst dat ik in mn software bitjes kwijt raakte. Dus ik heb de hele 16bit return eens geprint terwil ik de pot langzaam opdraaide. En dan zie ik gewoon netjes alle bits veranderen. De enige uitzondering zijn de bovenste bits die op een zeker moment dus niet om springen waardoor de waarde blijft hangen. (kijk even in het tabelletje dat ik net in een reactie gezet heb. Ik denk dat dat in elk geval duidelijk laat zien wat er gebeurt..
Nog een vraag (gewoon voor de zekerheid): Heb je meer dan 1.1V gemeten op de ADS1115 ingangspin? Of kan die zenerdiode ook stiekum op 1.1V staan zeneren?
Ja, alle spanningen die ik noem zijn met een multimeter gemeten op de ingang. De spanning op de ingang volgt netjes wat ik van een 0-5v pot zou verwachten. Dus de zener die ik geplaatst heb is niet de schuldige. En de zener in de ads zelf zou ik verwachten dat die genoeg doet om de pin aan de buitenkant van de chip ook onderuit te trekken. Wat dus neit gebeurt...
Nog een vraag: Wat is de weerstand van je potmeter?
pot is 250ohm.
benleentje
Golden Member
En de zener in de ads zelf zou ik verwachten dat die genoeg doet om de pin aan de buitenkant van de chip ook onderuit te trekken. Wat dus neit gebeurt...
Er zit geen zener in zo chip. Als er iets aan bescherming inzit dan zijn het diodes direct op de ingang van pin.
Nee de pot werkt goed. Op de ingang van de ads meet ik met een multimeter netjes 0-5V als ik met de pot draai.
Het is de waardes die de ads zelf geeft als meetwaarde. Tot ~1,1v gaat het goed. Daarna is het onzin.
Dan is het wel duidelijk De chip is defect.
Als het een Chip zou zijn dit maar tot 1,1V kan meten dan zou ik daar geen harde grens verwachten en ook zouden dan alle bits op die waarde op 1 moeten staan. Dus als het een 10 bit ADC voor 1,1V zou zijn dan komt daar B11 1111 1111 uit.
Ik geloof ook niet Dat JLCPCB bewust foute IC levert maar tegenwoordig is die handel zo schimmig en ondoorzichting dat het iedereen wel kan overkomen.
Maar 1 Chip die raar doet zegt ook niets dat weet je pas als je een hele batch van die chips met hetzelfde probleem zou hebben. Deze chip gewoon vervangen en dan hopen dat het probleem opgelost is.
Er zit geen zener in zo chip. Als er iets aan bescherming inzit dan zijn het diodes direct op de ingang van pin.
Ah, ja klopt. Ik zag diodes zitten en dacht dat dat zeners waren. Maar helaas.
Dan is het wel duidelijk De chip is defect.
Dat moet eigenlijk wel... Ik vind het alleen zo vreemd dat tot 1,1v alles dan wel gewoon klopt. Dat het i2c deel nog heel is en dus reageert terwijl de mux/adc gaar is kan ik me nog wat bij voorstellen. Maar dat de adc voor 4/5e kapot is maar verder perfect functioneert blijf ik raar vinden...
Afijn, ik ga de chip maar eens vervangen. Kijken wat er dan gebeurt. Ik meld me nog even als ik meer weet!
Niet per ongeluk spanning op de ADC inputs gezet terwijl de voeding van de ADC nog afwezig was?
Daar kunnen ze niet altijd even goed tegen, zeker met weinig serieweerstand op de ADC input.
Op zondag 11 januari 2026 20:07:29 schreef Elinon:
Niet per ongeluk spanning op de ADC inputs gezet terwijl de voeding van de ADC nog afwezig was?
Daar kunnen ze niet altijd even goed tegen, zeker met weinig serieweerstand op de ADC input.
Good to know. Maar in de huidge fase onmogelijk. De enige spanning die ik er op zet is de spanning die de ads ook voed.
Update:
De ads reageert helemaal niet meer. Ook na vervangen krijg ik constant dezelfde onzinwaarde binnen. (hetzelfde als wanneer ik de ads geen vcc geef).
Een andere chip waar ik tot nu toe wel communicatie mee had geeft nu óók geen antwoord meer.
Met een scope er aan blijkt dat de SCL niet boven de ~3v komt ondanks de pullup weerstand. Dus er lijkt weer iets mis te zijn met de tca9548 (hoewel deze wel netjes terug meld dat hij op het juiste kanaal staat en ook omschakelt als ik dat zeg). Na verhuisd te zijn naar een ander kanaal welke wel netjes 5v had is die óók gezakt naar 3v.
Ik geef het voor nu even op. Het is al de hele dag 1 microscopisch stapje vooruit en 18 grote terug. Ik vind het goed geweest.
Dank iedereen voor de hulp. Als ik significante vooruitgang boek en nog iets zinnigs met de ADS vind meld ik me weer.
benleentje
Golden Member
I2C is officieel ook nooit bedoelt geweest voor lange kabel en dat kan behoorlijk inductie zijn.
Een pull-up weerstand van 10k is dan ook nog eens aan de hoge kant en dat mag gerust 3,3k worden