Hi,

Voor het meetinstrumentje dat ik aan het ontwikkelen ben, wil ik een schakeling hebben waarmee ik 2x een ADS1115 ADC van een stabiele spanning kan voorzien en dit dan voor acht kanalen.
En ook kan experimenteren met de Pull Up weerstand voor de NTC weerstanden waarmee ik de temperatuur ga meten van een aantal meetinstrument behuizingen en nog wat andere toepassingen.

Precisie gevoeligheid
Aan de hand van een aantal post hier op CO heb ik gemerkt dat er een aantal lezers zijn die niet goed om kunnen gaan met precisie elektronica, dus misschien is dit topic niets voor jullie...
Je kan ook mee lezen en er misschien nog iets van opsteken. :-)

Afwegingen/ Error budget
Ik had al wat berekeningen gedaan om een idee te krijgen wat nodig is om de ADC1115 een zo groot mogelijk dynamisch bereik te geven met een 50K NTC, dus met deze waarde van de NTC ga ik de eerste testen doen.
Ik kwam uit op een gain instelling voor de ADS1115 van +-2,048V met een externe referentie spanning van 5V, dit dan met een Pull Up weerstand van 150K.

De grootste fout treed op in de koude toestand, zeg maar beneden de 15°C geeft zo rond de 1% extra fout door de Ri van de ADS1115 ADC, daar heb ik in principe vrede mee.
Als de meetinstrument behuizingen die ik wil gaan meten op mijn werkbank beneden de 20°C zijn, dan moeten ze toch eerst echt goed opwarmen.
Bij de meetinstrumenten die ik interessant vind om het eens te loggen, is de behuizing meestal boven de 30C als ze lang genoeg zijn ingeschakeld.
Hang ik een NTC binnen in het kastje dan is 40C geen uitzondering, dit alles bij normale temperaturen van rond de 22°C
In de zomer gaat dat zo 10°C hoger worden.

De acht kanalen temperatuur meter gaat geen precisie instrument worden, dat heeft niet zoveel zin als je behuizingen gaat meten.
Waar ga je de sensor plakken? b.v. midden op de kast bovenop of aan de zijkant, bij een LAB voeding op het koelelement en waar dan.
Daar helpt voor een deel mijn IR camera mee, om een punt te vinden dat ik gunstig vind en dat kunnen ook meerdere plekken tegelijk zijn bij een apparaat dat ik test.

De meeste meetinstrument staat gestapeld op planken, dus ik kan niet alles goed in de gaten houden met die IR camera, voor een goed resultaat eerst de IR camera gebruiken en dan de NTC plakken op de kast.

De test setup
Dit is een test setup, onder meer dus om te kijken of ik een 50K bij 25° toepasbaar is, deze NTC waarde zorgt er voor dat bedrading weerstand en zelfopwarming geen punt meer is.
Maar je hebt dan wel last van de belasting door de ADS1115 ingang impedantie, het zijn allemaal afwegingen en door het te meten met mijn testprintje hoop ik wat inzicht te krijgen.
Als de belasting te hoog blijkt te zijn, dan kan ik overgaan naar 10K NTC weerstanden die ik vorige week ook heb binnen gekregen.

Ik probeer d.m.v een aantal simpele stappen en met niet echt speciale onderdelen een redelijk nauwkeurige bron te maken waarmee ik de ADS1115 kan testen.
Ik laat hieronder een aantal plaatjes zien hoe ik de stappen heb gedaan om een 5V en een 2,5V referentie spanning te maken en hierachter met een weerstand verzwakker nog drie spanningen die ik aan de ADS1115 ingangen kan toevoeren, zodat iedere ingang bij het testen van één ADC printje een andere waarde aan geeft die redelijk precies is.

Ik ben gisteren in de Referentie bak gedoken en het zakje met de AD584 er uit gevist, voor een aantal van jullie is deze spanning referentie wel bekend,
deze zit in het doorzichtige plastic doosje en geeft 2,5, 5, 7,5 en een 10V spanning af.
Ik gebruik dit IC in een variatie van een weergegeven applicatie in de datasheet.
De referentiespanning is bij mij d.m.v. een paar jumpers om te schakelen tussen dus 5V en 2,5V, met opzet heb ik jumpers gekozen en geen MOSFets zoals in de China referentie,
zoals het nu is weergegeven is het simpel genoeg omschakelbaar als nodig.

Het eerste plaatje.
Lekker dan... ben ik doordat ik verkeerd klikte weer een stuk van mijn tekst kwijt...

Daar gaan we weer, tweede poging!
DE AD584 is als een kleine mini voeding geschakeld, ik heb een BC547c als buffer toegevoegd, hierdoor ziet het IC geen belasting en dit komt de stabiliteit ten goede.
De belasting variaties die er nu nog kunnen optreden komen vooral door niet optimale bedrading van de gene die het bouwt.

Er is voor beide uitgang spanningen een trimpot toegevoegd zodat d.m.v jumpers de uitgang spanning en de trimpot kan worden omgezet.
Het uiteindelijke schema is een beetje uitgebreider, mar dat laat ik later zien, ik wil graag laten zien en uitleggen, hoe ik tot het uiteindelijke schema kom.

Links is een spanningsdeler te zien, die in de versie op dit plaatje volledig uit Philips 1K 1% weerstanden bestaat.
In het kader er boven wordt aangegeven wat de impedantie is van de aftak punten, dit zodat ik bij metingen aan de ingangen van de ADC kan zien hoeveel belasting er is.
In principe zou de ingang impedantie van de ADS1115 als je een bepaald bereik gekozen hebt, deze ingang impedantie stabiel moeten zijn, door dit lijstje is als nodig het een en ander makkelijker uit te rekenen.
https://www.bramcam.nl/NA/ADS1115-Tester/ADS1115-tester-03.png

.
Dit is één van de doosjes met 1K weerstanden die ik heb en deze is dus van Philips.
Daar heb ik de 1K weerstanden uit geselecteerd en dan niet met een van mijn DMM's met hele hoge resolutie maar met mijn Philips PM6303 RCL meter.
Zou het beter gaan met één van mijn DMM's ja zeker, maar ik wou ook laten zien wat mogelijk is met een meter die geen hoge resolutie heeft.
Het doosje met de 1K weerstanden.
https://www.bramcam.nl/NA/ADS1115-Tester/ADS1115-tester-01.png

.
En op deze manier heb ik de weerstanden gemeten/geselecteerd.
Eerst een paar weerstanden snel even gemeten om een indruk te krijgen of b.v. de ronde waarde 1000Ω wel voldoende voorkomt,
dit omdat het dan makkelijker af te lezen is., gelukkig was dit zo.
Iedere weerstand is op deze manier gemonteerd geweest, en ik heb er 18 gekozen die op deze meter precies 1.000K aangaf als ik hem met rust had gelaten.
Het ingang klemmetje dat in de meter zit maakt zeer goed contact met de weerstand, de overgang weerstand is ruim beneden de 1Ω

Moet het precies 1K zijn voor deze toepassing, natuurlijk niet weerstanden van 825Ω, 931Ω, 1500Ω mag allemaal.
De afwegingen zijn b.v. de dissipatie in de weerstanden, en de impedantie van de aftakkingen, voor mij is die 1K OK voor deze test schakeling.
https://www.bramcam.nl/NA/ADS1115-Tester/ADS1115-tester-02.png

.
Dit is de andere zijde van het eerste schema, waar de eerste krabbels op staan hoe ik met de ingangen van de ADS1115 wil gaan omgaan,
de uiteindelijke versie heb ik nog niet getekend, eerst nog wat denkwerk doen.
Het leuke is het lijstje dat er boven staat, bovenaan is zichtbaar dat de referentie op precies 5V is getrimd.
Daarna heb ik de tabs die ik heb gemaakt gemeten met de KeySight 34465A meter, dit omdat deze al opgewarmd was.
Aan het einde van iedere gemeten waarde staat de afwijking die de spanningsdeler heeft als deze onbelast is, nou ja de Giga Ω van de DMM dan.
Alle waarden bevinden zich binnen de 0,02%, dus je kan met en simpele selectie van je weerstanden een vrij nauwkeurige spanning deler bouwen.
Het uitgangpunt is natuurlijk wel dat je in de basis, wel goede weerstanden gebruikt, dat zijn hier de 1% van Philips, maar ik heb b.v. ook zo'n doosje van Vitrom 1K 1%.
https://www.bramcam.nl/NA/ADS1115-Tester/ADS1115-tester-04.png

.
Dit is het stukje print waar de spanning deler op gebouw is, de draden aan de onderzijde zijn expres niet afgeknipt, dit is voor mij makkelijk om aan te meten of de spanningsdeler goed op waarde was.
Ben ik daar klaar mee, dan kunnen de draden worden afgeknipt voor ik ga testen met de ADC.
https://www.bramcam.nl/NA/ADS1115-Tester/ADS1115-tester-05.png

.
Dit zijn de 14 weerstanden die de basis vormen van de spanning deler, één stukje schakeling is hier nog niet zichtbaar, dit omdat ik die straks ga monteren.
https://www.bramcam.nl/NA/ADS1115-Tester/ADS1115-tester-06.png

.
Dit is de Referentie schakeling die ook op het printje komt, een flink deel heb ik al besproken, als extra is een condensator C3 die de ruis een beetje beperkt die uit de Referentie komt.
Daar ik wel de uitgangspanningen in twee verschillende waarden naar de ADC wil sturen maar niet de Referentie spanning wil aanpassen, heb ik een tweede mogelijkheid aangebracht om de waarde op de spanning tabs de kunnen halveren.
Dit is op twee manieren te doen, dat is de waarde van het bovenste deel van deze spanningsdeler vergroten en de tweede mogelijkheid is na de 3K weerstand een parallel weerstand op te nemen.
Dat is waar ik voor gekozen heb omdat dit de uitgang impedantie van de spanningsdeler verlaagt.
Er is een weerstand die bijna goed op waarde is gebruikt en met een trim circuit wordt de deler dan goed op waarde gebracht.
Morgen of zo, hoop ik te laten zien hoe dit is uitgevoerd, ook nu weer is wat op het schema staat voorlopig, dit omdat het een en ander nog volop in ontwikkeling is.
https://www.bramcam.nl/NA/ADS1115-Tester/ADS1115-tester-10.png

.
Als deze schakeling gaat werken zoals ik het bedoel heb, dan zal de eerste ADS1115 ingang aan 2V worden aangesloten, de tweede ingang op 1V, de derde ingang op 0,5V en de vierde op 0,25V.
De tweede ADS1115 printje wordt op de zelfde manier aangesloten, zodat ik op het display voorde acht sensor ingangen de waarden op een rijtje kan aflezen en ook dat ik dan kan zien hoeveel ruis er op zit enz, enz.

Wat er ook nog op het printje komt zijn de acht stuks Pull up weerstanden die aan de 5V referentie spanning wordt verbonden.
Ik hoop dat het allemaal past op het printje anders komt er voor de twee ADS1115 printjes een dochter printje.

Ik zie graag weer jullie opmerkingen en vragen tegemoet,

Groet,
Bram

Op 20 maart 2023 20:59:28 schreef blackdog:
Aan de hand van een aantal post hier op CO heb ik gemerkt dat er een aantal lezers zijn die niet goed om kunnen gaan met precisie elektronica, dus misschien is dit topic niets voor jullie...
Je kan ook mee lezen en er misschien nog iets van opsteken. :-)

Serieus? Ga je nu echt in de openingspost, voordat er ook maar één reactie is, al zo arrogant lopen doen? Meester Bram vertelt kindertjes, dus let maar goed op!

Vervolgens ga je een 16 bit ADC gebruiken voor een meting waarvan je zelf zegt dat het 1% gaat afwijken?!?

Een STM32F407 heeft een input leakage current van maximaal +/-1uA, dat is 10x kleiner dan die ADS1115, dus het zou zomaar kunnen dat je met de 12 bit ADC van de STM netto nauwkeuriger bent.

Ik ga dit topic zeker volgen, ik lig nu al dubbel!

[Bericht gewijzigd door SparkyGSX op (12%)]

Op 20 maart 2023 22:19:02 schreef SparkyGSX:

Op 20 maart 2023 20:59:28 schreef blackdog:
Aan de hand van een aantal post hier op CO heb ik gemerkt dat er een aantal lezers zijn die niet goed om kunnen gaan met precisie elektronica, dus misschien is dit topic niets voor jullie...
Je kan ook mee lezen en er misschien nog iets van opsteken. :-)

Serieus? Ga je nu echt in de openingspost, voordat er ook maar één reactie is, al zo arrogant lopen doen? Meester Bram vertelt kindertjes, dus let maar goed op!

Zo vat ik het niet op. Ik ga sowieso niet goed om met precisie electronica. Als de nauwkeurigheid binnen de 5% zit vind ik het helemaal prima. Ik vind het wel interessant hoe Bram kijkt naar de electronicatechniek hoewel ik er niks mee doe.

Hi SparkyGSX,

Hap, hap hap... het werkt, ja je bent uit de tent gelokt, koekie van eigen deeg.

Ik hoop echt dat je er wat van leerd, alleen betwijfel ik het wel, want je blijft nog steeds op de zelfde manier reageren.
Begrijpend lezen is nog steeds er moeilijk voor je, merk ik.

Weet je eigenlijk wel wat een error budget is? het lijkt er op dat dit niet zo is, ik ben bezig de gene die het willen weten te laten zien hoe je het een en ander kan aanpakken.
Andere electronica ontwikkelaars doen het weer op hun eigen manier, maar ik laat mijn manier zien, als je daar moeite mee hebt, boeie.

Heb je ook gelezen dat ik de spullen wil gebruiken die ik hier beschikbaar heb, en voor jouw info ik heb wat Blue en Black pills hier liggen.
Maar ik heb gekozen voor de Teensy's die ik hier ook heb, ik hoop dat dit allemaal mag van je, want je bent nogal dwingend dat ik een STM32F407 zou moeten gaan gebruiken, jouw arrogantie?

Probeer te begrijpen wat ik uitleg, en dat heeft niets met arrogantie te maken en nogmaals, projecteer jouw negatieve gedachten niet op mij, dat is een beetje een ziekelijk gedrag.

Trouwens een ander puntje, ik zie van jouw hier eigenlijk nooit een project voorbij komen, met uitleg zodat andere er goed van kunnen leren, maar je hebt wel veel commentaar, wil je daar soms over praten?

Zullen we verder gaan met het topic, nee ik ga geen STM32F407 gebruiken voor dit project, ik laat zien in dit project hoe je met de spullen die beschikbaar zijn bepaalde afwegingen kan maken, wat begrijp je daar niet van?
Als je moeite hebt met uitleg waarom ik een afwijking van zeg 1% bij lage temperaturen geen probleem vind, kan ik voor jou het nog wel een keer proberen als het nodig is.
Heb je ook gelezen dat ik nog een versie wil maken met andere specificaties? zal wel niet...

Stop met die rare gedachten van je, maar jij mag van alles denken, maar projecteer jouw bagger niet op mij, het zijn jouw negatieve gedachten, doe daar wat aan, dat is echt niet gezond!

ohm pi
Ik vind het best dat anderen, zeg buizenversterkers bouwen met 10% geperste kool weerstanden om maar eens een voorbeeldje te noemen, als zij er plezier aan beleven dan is het helemaal goed wat mij betreft.
Ook al zou ik het niets vinden, wie ben ik dan?

Ik leg veel uit en geef regelmatig tips aan gebruikers hier op Co om het kennis niveau te vergroten en inzichten te delen, dit zo goed mogelijk als ik dit kan.
Wat ik meestal laat zien zijn schakelingen met een hogere precisie en leg veel uit over het hoe en waarom, tenminste ik doe daar zo goed mogelijk een poging toe.

Ik zal een buizen versterker bouwer geen 0,1% weerstanden aanraden voor Annode weerstanden, maar ik zal wel voorstellen, vooral bij buizentrapjes waar de ruis een gevoelig punt is, 1-Watt metaal film weerstanden te gebruiken,
dit niet om de 1% nauwkeurigheid die ze vaak zijn, maar omdat deze weerstanden gewoon minder ruis produceren, dit heb ik uitgebreid getest en er is ook voldoende over te vinden op het I-net.
Als CO gebruikers het niet intressant vinden, ik vind het allemaal best, maar je negatief naar mij uitlaten, omdat ik vaak met een grotere precisie werk,
dit omdat dit mijn intresse heeft, dat zegt dan een hoop over die gene die dat soort uitspraken doen.

Groet,
Bram

Hi Bram,
bedenk wel dat de maximale analoge input van deze AD convertertjes niet boven de voedingsspanning mag komen (zie abs,max ratings), ze zijn dan echt meteen stuk (Bin d'Aire-Dunndad). In jouw setup zou dat bij een slecht contact van een NTC al kunnen gebeuren...

toevoeging (edit, zo je wilt)
Schetige printjes zijn dat: je kunt zo je breadboard "ontwerp" 1:1 overzetten naar een meer definitieve versie. Waar heb je die vandaan?

Ander vraagje: wat is de reden dat je twee jumpers parallel hebt gezet? Kon ik niet zo gauw vinden in je uitleg...

[Bericht gewijzigd door fatbeard op (35%)]

@SparkyGSX, Ik lees dat zinnetje net iets anders. "Aan de hand van een aantal post hier op CO heb ik gemerkt dat er een aantal lezers zijn die geen interesse hebben in precisie elektronica, ..." Ik weet niet wat Blackdog precies bedoeld had, maar ik vermoed dat dit dichter in de buurt komt dan wat hij daadwerkelijk schreef. Ik geloof niet dat het zijn bedoeling was om mensen te beledigen.

Goed, dan nu nog een paar inhoudelijke vragen:

Waarom kies je ervoor om de oplossing te maken rondom een NTC en ADC? Zelf zou ik eerder naar een digitale sensor pakken zoals de DS18B20. Dat maakt alles een stuk eenvoudiger, je hebt geen referentie spanning nodig. Geen last van ruis en invloed door belasting ect. Ik kon nog even niet vinden wat het temperatuur bereik is wat je wilt kunnen meten. Afhankelijk daarvan is de DS18B20 misschien niet geschikt.

De tweede vraag, ingang van de ADC beïnvloed de meting, dat lijkt me redelijk vanzelf sprekend. Is het niet mogelijk om hier rekening mee te houden? Als je bijvoorbeeld weet wat de impedantie is van de ADC kan je corrigeren in de software.
Een andere mogelijkheid, veel ADC's werken met een sample and hold circuit. Als je een condensator pakt die een paar ordes groter is als de capaciteit van de sample and hold capacitijt dan is het een kwestie van langzaam sampelen. Je laat dan eigenlijk die condensator op. Als hij vol is pak je een sample met de ADC.
Als ik het goed zie werkt de ADS1115 net iets anders. Je hebt er zelf geen invloed wanneer samples genomen worden. Wellicht dat dit met een andere ADC wel kan?

Ha Blackdog,

Leuk dat je met een thermometer met ADS1115 bezig bent!

Dat ben ik aan deze kant ook, maar dan voor LM35 etc.
Een prototype draait, op breadboard, met een aangepaste software versie van m'n DS18B20 thermometers.
Maar dat project ligt nu even aan de kant, andere projectjes drongen voor :-)

Wat bij mij nog vraagtekens zijn is of ik het frontend (ADS1115 plus LM35) galvanisch ga scheiden, en hoe mooi de voeding voor die 2 moet zijn.
Dit o.a. omdat ik deze meter ook wil gebruiken om de LM35's in mijn referentieweerstanden te loggen.

Waar ik me qua nauwkeurigheid het meeste zorgen over maak is de ADS1115 zelf....
Een losse chip is niet te koop (jaar levertijd?). Maar op AliExpress koop je zonder probleem complete printjes voor de helft van de prijs van die losse chip. :o

Natuurlijk heb ik dat ook gedaan. Maar de ADS1115 op die printjes moet wel een Chinese kloon zijn. Met dus vraagtekens over z'n referentie etc.

Dat wordt dus het printje dat je gebruikt goed nameten, en ook dat zelfde exemplaar gebruiken in de uiteindelijk meter. (Met evt. een correctie in software...)

groet! Gertjan.

Morge Heren, :-)

Kijk zinnige vragen en opmerkingen!

fatbeard
Als je nog een blik werp op het eerste schema waar die ingang configuratie van de ADS1115 op staat, dan zie je wat extra onderdelen ter bescherming van deze ADC.
En ja het staat er echt in, in die datasheet, dat je regelmatige piekstromen van 100mA aan de ingang! mag hebben en dan zeggen ze 10mA continu, die jongens van TI weten wat goede beveiligen van de ingangen betekend.

Stukje uit de datasheet van de ADS1115.
https://www.bramcam.nl/NA/ADS1115-Tester/ADS1115-tester-11.png

.
Dan de twee jumpers, de impedantie op dat punt is een beetje laag, dus daarom heb ik er ook voor gekozen geen schakelaar te gebruiken maar twee goede jumpers op dat punt.
Ik wil zo min mogelijk aan de trimpots draaien bij het overschakelen van 5 naar 2,5V of andersom, mijn aandacht moet zoveel mogelijk naar de metingen gaan.
Dus ik wil wat meer zekerheid dat de overgang weerstand zo stabiel mogelijk is, dit samen met de hoeveelheid tijd enz, enz. dus dubbele jumper
Nogmaals geen MOSFets, ik heb in kleine behuizing geen type op voorraad, die ik toe zou kunnen passen, zeg in TO92.

Alleen voor fatbeard :-) ja ik heb al het een en ander onderzocht op je print, ik mis het instelpunt collector + eerste opamp, ik mail je er wel even over.

hardbass
Een van mijn eerste gedachten was een setup met de DS18B20, er ligt hier ook nog een Raspberry Pi met zes van deze sensoren er op. :-)
Ik vind ze zondermeer leuk, maar het is ook wat traag met het uitlezen en ook dat is natuurlijk een afweging, de versie waar ik nu mee bezig ben, zijn de meetobjecten ook traag, dus dat is even geen afweging.

De DS18B20 kan je twee draads gebruiken dat klopt, bedrading weerstand, niet intressant, maar de thermische massa en dat de bedrading de meting aardig kan beïnvloeden,
de chip zelf zit aan de middenpoot vast(middenpen is het gevoeligste punt van deze sensor), wat mij met andere afwegingen heeft doen besluiten, toch voor NTC weerstanden te gaan.
Dit ook omdat ik als ik alles goed werkend krijg(vooral de code), ook nog een vier kanaals nauwkeuriger versie ga maken.

De tweede afweging in het begin, was een setup met de Smartec SMT172, dat type had op verschillende manieren ook aardig wat voeten in de aarde, maar heel nauwkeurig en snel.
Misschien ga ik die alsnog toepassen in de nauwkeurige versie, maar dan heb ik waarschijnlijk kennis van jou en/of deKees nodig dit i.v.m. de voor mij vreemde configuratie van timers.
Ook deze sensor heeft een TO92 behuizing(anderen behuizingen zijn ook beschikbaar) maar ware het niet, dat Smartec is verkocht, prijs omhoog geschoten en ook slecht verkrijgbaar is geworden.
En ik heb niet meer 4 stuks voor de nauwkeurige versie van dit meetinstrumentje op voorraad, maar zit met dit model ondanks dat hij zeer precies is, wel met bedrading problemen en een ontkoppel condensator vlak bij de chip, dus tja... komt later wel, ik heb nu nog genoeg te doen

Ik heb hier wat de aansluitkabel betreft dunne symmetrische bekabeling, ik weet nog niet of ik deze direct aan de NTC aansluit, ik wil de thermische lek van of naar de NTC zo goed mogelijk beperken, dat wordt nog een goed aandachtspunt.
Dat is een van de vele afwegingen voor het totale error budget.

En dan de ADC ingang
De meting kan relatief langzaam worden uitgevoerd en ik denk dat de traagste instelling hiervoor goed genoeg is bij deze versie die ik nu aan het bouwen ben.
Dus de PGA setting wordt "2" en dan 8 of 16 SPS en aan de ingang van de ADC komt dan b.v. 0,1µF condensator naar massa,
dat is dan de lage impedantie die de sample condensatoren graag willen zien aan de ingang.

Wat er op het schema te zien is, mijn krabbels niet die van TI, is dat ik een lage impedantie voor de sample condensator wil hebben, een serie weerstand die de piekstroom in of uit de ingang een beetje beperkt.
Extra beveiliging dioden en HF ontkoppeling, dat zal een ferriet kraal worden en een Cer. Condensator direct aan de 15 polige D-Sub connector voor iedere van de vier ingangen.

Gertjan
Wat betreft de ADS1115 die ik hier heb, zijn tussen de drie en 5 jaar oud geen idee of dit gekloonde versies zijn, ik kon bij TI ze in ieder geal niet samplen ondanks dat ze op voorraad waren...
Dat de prijs van deze chips hoger is dan de printjes uit China kan natuurlijk komen door het klonen maar ook dat veel van het spul waar wij ons blauw voor betalen bij de grote leveranciers daar gewoon veel goedkoper is.
Een voorbeeldje van gisteren, ik zoek naar een redelijke kwaliteit 15 polig D-Sub connector paartje, daar kan je voor een "redelijk" product rond de 1€ ex klaar zijn.
Wil je wat beters hebben, dan wordt het met gedraaide contacten meestal tussen de 3 a 4€.
Een goede D-SUB connector heeft voldoende "Mating Cycles" liefst class1 wat 500x is, maar class 2 met 200x is voor mij ook goed genoeg en minder dan 10mΩ overgangweerstands en gedraaide contacten.

Nu heb je ook D-SUB connectoren in de 15 polige uitvoering die tussen de 16 en 25€ ex kosten, dit dus omdat iedere pin een condensator heeft, die prijs is natuurlijk totale Bullshit.
Ook als je probeert iets van een zinnige datasheet van die producten te vinden, hoeveel dempt die ingebouwde condensator per pennetje zou de eerste vraag zijn.
Je mag blij zijn dat ze vermelden hoe groot de waarde van de ingebouwde condensator is, die prijs is normaal gesproken niet te rechtvaardigen en ja ik weet natuurlijk van uitzonderingen. :-)

Terug naar de ADS1115, deze heeft een connector of ik bedoel eigenlijk IC pennetjes aan het printje gekregen met gedraaide contacten, dus de meegeleverde pennen stripje is niet gebruikt.
Dit zodat ik het printje in mooie van goede kwaliteit IC voetje kan drukken, zodat ik een aantal printjes kan uitwisselen.

Ik heb het nog niet aangetipt, dit omdat het toch al veel is wat ik hier laat zien en uitleg.
De ADS1115 en de alles wat er aan hangt komt op een tweede voeding, de i2c bus wordt gescheiden door een speciaal IC van TI wat hiervoor bedoeld is.

Algemeen
De hele setup is dus bedoeld voor een aantal verschillende testen aan NTC's en de ADS1115, gewoon om ook kennis op de doen, wat ik het leukste vind. :-)
Niets is in steen gebeiteld, voor bijna al mijn projectjes bouw ik eerst test schakelingen en dan pas het gene wat in een kastje komt.
En dat doe ik op een andere manier dan in de industrie, ik heb geen verkoper die in mijn nek staat te hijgen,
als ik vind dat er een 80 Euro spanning referentie in moet komen, dan doe ik dat als ik het zinnig vind.
Kieis ik voor mooie Vishay weerstanden die normaal 40€ kosten, dan doe ik dat omdat ik ze b.v. hier heb liggen.
Mijn topics zijn eigenlijk nooit bouw het zo maar na projecten, maar meer om andere te stimuleren.
Maar hou wel rekening er mee als ik iets heb uitgezocht, b.v. met mijn LAB voeding, dat je niet gaat sampelen in het schema(mag van mij hoor, het is jouw project),
maar het gaat bij precisie schakelingen vaak om het geheel, dat wordt vaak vergeten, en ja dan werkt het niet als het zou moeten, gek he... :-)
Deze vragen komen vaak via EEVblog binnen en dan moet ik vaak zeggen of ze verwachten dat dan, dat ik vind dat ze het goed gedaan hebben ,rare jongens die Romeinen. ?

Dus om nou te zorgen dat mijn opzet binnen het error budget blijft dat ik heb gesteld, bouw ik een testomgeving voor de onderdelen die ik er voor uitgekozen heb, gaan daar veranderingen in komen, ik denk het wel.
Voor de liefhebbers hieronder de datasheet van de Mitsubishi 50K NTC, zoek zelf even naar de 10K versie, welke wat NTC betreft de tweede optie is als de Ri van de NTC en de Pull Up weerstand toch te hoog blijkt om goed te samplen door de ADC.

https://www.bramcam.nl/NA/ADS1115-Tester/50K-NTC-CH25-3U503F-1.pdf

fatbeard-2
Ik zal de link naar die leuke experimenteerr printjes voor je opzoeken, maar nu wacht een flinke afwas op mij, ik ben toch zo gezegend in dit leven! :+

Dank voor alle vragen en opmerkingen,
Bram

Stukje uit de datasheet van de ADS1115.

De Absolute Maximum Ratings mag je nooit gebruiken of bij die waardes in de buurt komen.
(dat zijn de waardes waarop de chip zegt 'ik ben bijna kapot'... ;) )

Hooguit bruikbaar als waarschuwing, niet als operationele parameters...

Aha, de SMT172 kende ik nog niet, net even snel de features and highlights bekeken in de datasheet. Dat ziet er wel mooi uit, jammer van de prijs inderdaad, al is het nog wel te doen als je er zomaar 2 wilt kopen.

Ik heb wel eens een idee voor een soortgelijk project gehad met de DS18B20. Dat was toen om de temperatuur, spanning en stroom loggen van een elektrolysecel.

Nu ik dit topic lees, krijg ik wel zin om dat project weer op te pakken. Normaal gesproken maak ik mijn projecten op het platform van de fabrikant. Dat is meestal iets complexer op te zetten, maar geeft wel meer mogelijkheden. Misschien dat ik dit wel in Arduino maak, dan is het voor anderen wel makkelijker na te bouwen. Als het werkt met de DS18B20 dan is de code ook wel aanpasbaar voor gebruik met andere sensoren.
- Oplossing met NTC / ADC.
- Thermokoppel en een MAX6675.
- SMT172 of andere digitale sensoren.

Ik ben benieuwd wat je uiteindelijke meetbereik / resolutie en nauwkeurigheid gaat worden door NTC's te gebruiken. Ik denk dat het lastig wordt om de specs van de SMT172 te halen.

Hi Arco,

Je denk toch niet dat ik met die piekwaarden in mijn hoofd ga ontwerpen he...
Ik breng dit onder de aandacht, omdat ingangen van MOS IC vaak maar 5 of 10mA zijn als max stroom en deze ADC niet direct stuk gaat van 100mA piekje en dat is opvallend.

Nog vast als aanvulling, maar komt later uitgebreider aan bod.
Als de NTC onderbroken wordt, wordt de desbetreffende ingang opgelift door de 150K Pull Up weerstand dat beschadigt de ADS1115 niet omdat ik ruim binnen de continu stroom blijf.
De Pull Up wordt uit de 5V referentie gevoed, de ADC uit even simpel 3V, de verschilspanning is dan 2V bij 150K is erg weinig stroom en de ADC kan daar goed tegen.

Laten we nu eens aannemen dat die 50K NTC niet goed genoeg bruikbaar is, dan ga ik over naar de 10K NTC, de Pull Up weerstand zal dan 30K worden,
dit dan weer met de 2V verschil is nog steeds een stroom die de ADC goed kan hebben.
En er staat in het voorlopige schema ook nog een serie weerstand getekend voor extra bescherming en HF ontstoring.

In de software zullen marges worden ingesteld, dus open of kortgesloten zal worden gededecteerd van de NTC aansluiting,
en ook als de waarde voorbij de hoog en laag limit komt zal dit worden aangegeven op het display en met een zoemer.
Op het display was al te zien deze ERROR tekst in het rood zal worden weergegeven:

ERROR O, de o van over, wat een temperatuur is die hoger is dan waar het meetinstrumentje voor bedoeld is.
ERROR U, de u van under, dat is een temperatuur die beneden een waarde is dat normaal is voor het meetinstrument.
ERROR W, de w van wire, dus er is een bedradings probleem met dat kanaal, open of kortgesloten.

Eerst wou ik harde waarden nemen, maar later dacht ik dat het misschien handig is de kleur van de temperatuur weergave te veranderen,
of aan het einde van de regel een blokje op het display te plaatsen als de temperatuur niet in het optimale gebied zit.
Het optimale gebied is ongeveer tussen de 20 en 70 graden, met verder nog een harde limit in de code: kleiner dan 10°C en rond de 100°C. waardoor de rode ERROR melding in beeld komt.

Ook hierbij geld weer, veel is afhankelijk van de testen die ik ga doen, het is een echte ontdekkings reis. ;)

Groet,
Bram

PS
hardbass, :-)
Ik ga nooit de specs van de SMT172 halen, maar is ook niet de bedoeling voor deze versie.
Een van de stappen die de nauwkeurigheid bepalen is ondermeer de formule om uit de ADC waarde , de NTC waarde bij 25°C en de Pull Up weerstand en de NTC eigenschappen, uiteindelijk de temperatuur te berekenen.
De naam van de man ben ik even kwijt, komt later wel, maar er zijn meerdere nauwkeurigheids versies van deze formule, ik heb nog geen idee wat er standaard in de basis NTC library wordt gebruikt voor de NTC.
Ik heb een documentje beschikbaar waar het een en ander in wordt uitgelegd, zal ik later vandaag even plaatsen en zal als de tijd er voor is ook wat verschillende NTC library's doornemen.

Ik zou dit anders doen:
`
ERROR O, de o van over, wat een temperatuur is die hoger is dan waar het meetinstrumentje voor bedoeld is.
ERROR U, de u van under, dat is een temperatuur die beneden een waarde is dat normaal is voor het meetinstrument.
ERROR W, de w van wire, dus er is een bedradings probleem met dat kanaal, open of kortgesloten.
`

Ik zou gewoon "OVER", "UNDER" en "WIRE" in het rood weergeven. Het is al duidelijk dat het om een error gaat aangezien er geen temperatuur staat, de tekst rood is en het in hoofdletters is geschreven. Waar OUW voor staan is niet direct duidelijk. Niet heel boeiend voor een hobby project, maar ik zou het zelf vergeten als hij een paar jaar in de kast zou liggen.

Hi hardbass,

Dat is een goede tip, ik zal als ik weer even tijd heb die tekst even als test op het display laden, kijken hoe het er uit ziet, ik denk goed.

Dank en groet,
Bram

Hi,

Ik plak het hier maar even, maar eigenlijk zou het in het andere topic moeten...

hardbass,
Ik heb voor de test de tekst aangepast zoals je het aangaf, nu alleen nog Over, Wire en Under als fout situatie tekst zoals op dit plaatje te zien is.
Ook staan bij de sensor waarde 2, 4 en 7 een blokje aangegeven aan het einde van de regel, als de aangegeven waarde buiten het bereik komt dat als nauwkeurig wordt beschouwd verschijn dit blokje.

Wat moet er nog meer gebeuren aan de scherm opbouw, onder meer dit:
De Celsius eenheid moet worden verwijderd als er een Error tekst verschijnt, ik vind het zo niet netjes.
Ook zal het kleine blokje aan het einde van de regel niet mogen verschijnen bij een error situatie

Ook zou ik het netter vinden als de tekst voor de temperatuur onder de komma wordt uitgelijnd.
Dit kan ik oplossen door te kijken of een waarde gelijk of groter is dan 10 en kleiner dan 100, en met de uitkomst dan de positie van de tekst bepalen.
Waarschijnlijk zal ik bij het overgaan van 9,9 naar zeg 10.3 eerst een zwart kadertje moeten plaatsen om wat ghosting te onderdrukken, net als andersom.
Hier moet ik nog even over nadenken hoe ik het aan ga pakken.

https://www.bramcam.nl/NA/ADS1115-Tester/ADS1115-tester-12.png

.
Wat ik waarschijnlijk nog niet verteld had is dit, de LAB temperatuur ga ik gebruiken om het verschil aan te geven tussen de sensoren en de LAB Temperatuur,
dit gaat met een toetsje omgeschakeld worden.

Temperatuur berekening
De naam waar ik eerder vandaag niet op kon komen is deze: The Steinhart Hart model
De wiskunde er achter gaat ver boven mijn pet, maar ik begrijp natuurlijk wel dat je op verschillende manieren berekeningen kan doen die een hogere nauwkeurigheid oplevert.
De processorkracht is denk ik wel ruim voldoende met de Teensy-3.2 of de nieuwere Teenst-4 om dit snel genoeg te doen.

Hieronder de link naar het TDK document waar het een en ander in wordt uitgelegd.

https://www.bramcam.nl/NA/ADS1115-Tester/ntc-thermistors-an.pdf

Ik heb nog geen tijd gehad de verschillende library's te onderzoeken op algoritme gedrag, mijn kop ploft een beetje van de hoofdpijn, het zij zo, morgen beter.

Als jullie ervaring hebben met NTC temperatuur berekeningen waar ik wat aan kan hebben, dan hoor ik het graag.

Dank en groet,
Bram

Ook zou ik het netter vinden als de tekst voor de temperatuur onder de komma wordt uitgelijnd.

Daar zijn al standaard oplossingen voor in C zelf.


  char tempString[20]; // in de setup

  sprintf(tempString, "%5d", number); // voor een integer

  snprintf(tempString, 20, "%8.1f", number); // voor een float
  lcd.print(tempstring);

tempstring is een tijdelijke variabele waarin de opgemaakte karakters zitten die naar het scherm geprint moeten worden. Bij mij is er plaats voor totaal 20 karakters.
%5d de opmaak is altijd 5 digits (karakters eigenlijk want het is ACII) met spatie als er niets komt te staan.
%8.1f opmaak voor een float totale lengte is 8 karakters met 1 cijfer
achter de komma
number is het oorspronkelijk getal zonder opmaak

Ghosting: Volgens mij moet je met een LCD wel altijd eerst het gebied waar je naar toe schrijft eerst leeg maken want de oude dat gaat niet vanzelf weg. Maar eea anders hangt ook van het type karakter of de karakterset die je gebruik sommige overschrijven ook de oude data. Dus dat moet je even zelf uitproberen. Maar de uitlijning van de komma werkt wel met snprintf().

Hi benleentje, :-)

Dank voor je input, wat ik al aan gaf, mijn kop ploft nu een beetje, ik test het morgen even met de "probeer tekst" in mijn code.

Groet,
Bram

Ironisch is dat een aantal jaar geleden had je hier dezelfde vraag en toen heeft deKees daar een mooi voorbeeld van gemaakt. En daar heb ik dese truck toen ook van geleerd. Daanrna wou ik hem zelf toepassen maat werkte niet helemaal zoals ik dat toen wou en ben zelf maar gaan zoeken naar wat nu wel voor mij werkt.

Er zit heel veel al in de standaard C taal wat bijna altijd ook werkt voor de Arduino. Echter Arduino is officieel C/C++ dus bij twijfel zoek ik het ook maar op hoe anderen het gedaan hebben.

Bram, zijn we weer bij sensor twee staat een punt in de temperatuur bij 5,6 en 7 staan komma's.

Paul

Hi benleentje, :-)

Dat klopt, dat herrinner ik mij zelf nog, maar ik kon de code niet meer vinden en nog niet op CO zelf gezocht.
Als het goed is, denk ik dat het ging over de tijd/klok op een schermpje?

paulp
Dat klopt en ik kan je vertellen dat dit mij nog niet is opgevallen :-)
Alles na het = teken, is nep tekst waar ik mee experimenteer.
Maar goed dat je het aantipt, ik denk dat ik de . mooier vind dan de , op het display.
Ook is het puntje van het Celsius karakter van Sensor-6 is lila en die moet groen zijn, dus dat foutje heb je ook voor mij onder de aandacht gebracht. :-)

Dank en groet,
Bram

Ha die errors zien er duidelijk uit, over een paar jaar weet je nog wat het betekende.

Nog een paar puntjes, misschien een beetje muggenziften maar kijk maar:

Taal
Kies 1 taal en gebruik dat consistent. Nu zie ik een discussie rondom comma's, punten, datum en tijd formatie. Maar ik zie op het scherm ook 'Hum' staan wat het engelse humidity is. In nederlands is dat luchtvochtigheid. Daar heb je natuurlijk geen plaats voor op het scherm, maar ik zou of alles consistent in het Engels doen, of alles consistent in het nederlands. Mijn persoonlijke voorkeur is Engels.

Sensor-x
Hier kan je ruimte winnen, het hele woord sensor kan je weglaten. Het is immers een meet instrument met 8 ingangen. Dus het is al duidelijk dat het sensoren 1 t/m 8 zijn. Je zou ook kunnen kiezen om het ch. 1 t/m ch. 8 van te maken. Dan hou je meer ruimte over voor de meetgegevens. Wellicht zou je dan de absolute temperatuur en de relatieve temperatuur (t.o.v. de omgevingstemperatuur) achter elkaar kunnen zetten. Dan heb je geen knopje meer nodig om te schakelen. Dan zie je alle relevante info in een keer op je scherm.

Blokje
Een blokje weergeven achter de temperatuur zou ik zelf niet doen vanwege dezelfde reden als die error. Het is niet duidelijk wat daarmee bedoeld wordt. Je moet dan de handleiding lezen wil je het weten. Zelf vind ik dat een GUI vanzelfsprekend moet zijn. Alles wat er te zien is moet direct duidelijk zijn wat er mee bedoeld wordt.

Een voorbeeldje van wat ik zou doen: Het nadeel is wel dat er redelijk veel getallen op het scherm staan. Dat kan ook weer onoverzichtelijk werken.


1: 185.7℃  160.3℃ 
2: 105.7℃   90.3℃ 
3:  50.1℃   30.4℃
4:   5.1℃   -1.4℃
5:  -5.1℃  -21.4℃
6: -50.1℃  -70.6℃
7:-105.7℃ -125.6℃
8:-185.7℃ -200.0℃

Dit kan je bereiken met de volgende code: (Mijn compiler vond het graden tekentje niet leuk, dus die heb ik even weg gelaten.)



void PrintChannel(int channel, float absoluteTemp, float relativeTemp, int error)
{
	char tempString[20];
	switch(error)
	{
		case 0:
			snprintf(tempString, 20, "%d: %6.1f %6.1f", channel, absoluteTemp, relativeTemp);
			break;
		case 1:
			snprintf(tempString, 20, "%d:   UNDER", channel);
			break;
		case 2:
			snprintf(tempString, 20, "%d:   OVER", channel);
			break;
		case 3:
			snprintf(tempString, 20, "%d:   WIRE", channel);
			break;
		default:
			snprintf(tempString, 20, "%d:   ERROR", channel);
			break;
	}
	//lcd.print(tempstring);
	printf("%s\n", tempString);
}

int main()
{

    PrintChannel(1,  185.7,  160.3, 0);
    PrintChannel(2,  105.7,   90.3, 0);
    PrintChannel(3,   50.1,   30.4, 0);
    PrintChannel(4,    5.1,   -1.4, 0);
    PrintChannel(5,   -5.1,  -21.4, 0);
    PrintChannel(6,  -50.1,  -70.6, 0);
    PrintChannel(7, -105.7, -125.6, 0);
    PrintChannel(8, -185.7, -200.0, 0);
    printf("-----------------\n");
    PrintChannel(1,  185.7,  160.3, 0);
    PrintChannel(2,  105.7,   90.3, 0);
    PrintChannel(3,   50.1,   30.4, 1);
    PrintChannel(4,    5.1,   -1.4, 2);
    PrintChannel(5,   -5.1,  -21.4, 3);
    PrintChannel(6,    0,      0,   0);
    PrintChannel(7, -105.7, -125.6, 0);
    PrintChannel(8, -185.7, -200.0, 0);
}

//1:  185.7  160.3
//2:  105.7   90.3
//3:   50.1   30.4
//4:    5.1   -1.4
//5:   -5.1  -21.4
//6:  -50.1  -70.6
//7: -105.7 -125.6
//8: -185.7 -200.0
//-----------------
//1:  185.7  160.3
//2:  105.7   90.3
//3:   UNDER
//4:   OVER
//5:   WIRE
//6:    0.0    0.0
//7: -105.7 -125.6
//8: -185.7 -200.0

EDIT:
Wat betreft de wiskunde uit de link die je stuurt. Het is een stuk eenvoudiger dan het lijkt. Steinhart-Hart geeft de relatie tussen temperatuur en gemeten weerstand via de volgende formule:

1/T = C0 + C1 * LN(R) + C3 * LN(R)^3

Zoals je ziet, heb je 3 coëfficiënten (c0, c1 en c3). Deze coëfficiënten kun je bepalen als je 3 meetpunten hebt. Als je deze bepaald hebt, kun je altijd de temperatuur berekenen met die formule.

Die coëfficiënten kun je trouwens op meerdere manieren bepalen. Bijvoorbeeld door te elimineren, hij gebruikt matixes. Een andere manier is de kleinste kwadraten methode. Die heeft als voordeel dat je veel meer meetpunten kan pakken als input. Als de meetpunten dan een kleine afwijking hebben dan wordt dat gemiddeld.

Hi hardbass, :-)

Dank weer voor de input!

Ik heb een aantal van je opmerkingen op het display verwerkt, maar het staat er nog niet perfect op zoals regel 1 en 2 de eerste waarde staat te veel naar rechts.
Ik zal je nog wat laten weten betreffende mijn afwegingen wat ik wel en niet van je over neem, b.v. ik denk dat ik het blokje aan het einde van de regel wel blijf gebruiken.
Ik moet het ook even laten indalen of ik deze opbouw van het beeld prettig vind.
Ik heb een driehoekje gemaakt voor de Delta temperatuur, welke trouwens voor nu geen enkele relatie heeft met de LAB Temp onder aan het scherm.
Alle sensor waarden/regels zijn hier nog steeds "dummy".

https://www.bramcam.nl/NA/ADS1115-Tester/ADS1115-tester-13.png

.
Verder heb ik nog niet echt naar je code gekeken, geen tijd gehad, door mijn koppijn van gisteren kwam ik vandaag na 10:00 uit bed,
maar dat ga ik zo doen tijdens de lunch die ik ga verorberen. :-)

Groet,
Bram

of aan het einde van de regel een blokje op het display te plaatsen als de temperatuur niet in het optimale gebied zit.

ik denk dat ik het blokje aan het einde van de regel wel blijf gebruiken.

Er zijn natuurlijk heel veel manieren te bedenken. Zoals een groen kleur voor als de temp in de goed range zit en een rode voor niet ook. Of iopv het blokje een O of H voor Overrange of to High idem een U of L voor Underrange en to Low.
Zelf zou ik denk voor kleur gaan maar het is jouw feestje;).

Ik moet het ook even laten indalen of ik deze opbouw van het beeld prettig vind.

Uiteraard maar ik vind het behoorlijk druk al.

Ik zou denk ik zelf in regel afwisselend de datum en de HUM, druk en temp zetten. En dan als
59%, 1004 en 22°C dus wat minder nauwkeurig en details.

Hi benleentje, :-)

Ik sta altijd open voor tips en inzichten, no problemo!

Ik heb met opzet afwisselende kleuren gekozen die een "beetje" bij elkaar passen, daar ben ik nog niet helemaal klaar mee.
Maar zoals het er nu uit ziet voor de acht sensoren heb ik al vrede mee, de witte kleur zal ik echter wel nog een beetje dimmen, zodat het meer in balans is.
Daar steek ik binnenkort weer even mijn "licht op" :-) bij mijn vriendin i.v.m. de kleur leer, kijken of dar nog wat beters uit kan komen.

Het onderste deel met tijd en de lucht kwaliteit ga ik nog wel in volgorde veranderen, de LAB Temp komt in de bovenste regel en de datum en tijd op de onderste regel.

Wat betreft de hPa waarde heb je gelijk, ik heb speciaal voor een tijdje met 1 digit achter de komma het in beeld gebracht,
het past, maar voor het overzicht komt dit niet ten goede, de ruimte tussen de eenheden op die regel wordt hierdoor wat krap, dus die . en extra digit gaan ik verwijderen.

Om de omzetting van de ADC waarde naar de temperatuur te verbeteren heb ik vandaag toch maar nieuwe NTC's besteld.
DE NTC's van 10K die ik al had besteld zijn 1% bij de standaard temperatuur van 25 °C dat was voor de eerste afweging OK.
Maar toen ik naar de B waarde keek van deze 10K NTC zag ik dat ik bij het bestellen vergeten was naar de B waarde te kijken, deze was veel lager dan de 50K of de 5K NTC die ik vaak gebruik.
Nu koste deze NTC's niet zo veel, maar ik had wel een type nodig met een B waarde van ruim 3900 om het dynamische gebied van de ADC zo goed mogelijk te kunnen gebruiken.
Het type wat ik nu besteld heb, heeft ook een goed gespecificeerde B waarde welke 0,3% is, bij de meeste betaalbare NTC's is die 1% of meer voor deze B waarde.

Wat betreft de weergave van de gemeten temperatuur, deze hou ik wel met één digit achter de komma, dit is niet voor de nauwkeurigheid, maar om trends goed te kunnen zien.

Voor de gene die niet alles hebben doorgenomen in dit topic, de eerste drie sensor regels zijn zo aangepast voor een deel door de tips die hardbass gaf, deze regels staan voor de test hard in de code.
Sensor waarden van 5 t/m 8 is de manier waarmee ik begonnen ben, zodat het een en ander wat beter te vergelijken is.
Het display ligt hier op mijn Werkstation bank, naast mijn toetsenbord, zodat ik er regelmatig naa kan kijken en daarmee een goede indruk op kan bouwen van wat ik voor keuzes heb gedaan en jullie input.

De drukte
Dat klopt, het is vrij vol, en dan heb ik al een stapje in grote en resolutie gedan wat het display betreft en wat dat betreft stop ik wel,
ik ga niet groter in display, want dat betekend een kastje dat ik dan veel minder makkelijk kwijt kan, en dat wil ik zeker niet.

Kastje
Ik heb twee kastjes gekozen waar ik de schakeling in zou kunnen bouwen, jullie kunnen ze zien op de foto hieronder.
Aan de achterzijde komen 2x een 15 polige D-SUB connector, de sensoren worden aangesloten met een dunne symmetrische audiokabel, dan hou ik nog drie contacten per connector over.
https://www.bramcam.nl/NA/ADS1115-Tester/ADS1115-tester-15.png

Welk kastje het wordt, ik weet het nog niet, heel veel komt er niet in.
Ik kan vrijwel zeker een mini ringkern gebruiken als voedingstrafo, maar de eventueel filtering van de 230V wordt samen met de trafo in het blauwe kastje wel wat krap denk ik...

fatbeard en anderen
Ik had nog info beloofd over de testprint die ik gebruikt heb voor de spanningsdeler en waar ook de referentie schakeling nog op moet komen.
Hier twee foto's van de print waar ik vanmiddag de onderdelen aan de bovenzijde goed heb gemonteerd, gisteren had ik de eerste versie gedaan, die fout was...
De Covid-19 wazigheid is nog steeds niet helemaal uit mijn hoofd, zo moeilijk is die schakeling niet met drie weerstanden schakelaar en de trimpot.
Maar goed het werkt nu uitsteken, door de schakelaar om te halen, worden de spanningen op de tabs mooi in tweeën gedeeld.

Eerst nog wat uitleg
Voor het inzicht helemaal links op de onderstaande foto bevind zich de ingang van de spanning deler, er is nog net de rode draad te zien die naar de 5V referentie gaat.
Dan staan er dus drie 10K weerstanden in serie en waar de 1K2 weerstand naar de schakelaar gaat, is de eerste aftakking en daar staat dan 2V op.
De schakelaar zet de weerstanden aan de bovenzijde van de print parallel aan alle weerstanden naar rechts, daarmee wordt als je de schakelaar omhaalt 2V verlaagt naar 1V, maar ook de laatste tab welke normaal 250mV is gaat dan naar 125mV.
De aftakkingen voor de ADS1115 ADC moet ik nog aan brengen en de AD584 referentie schakeling komt aan de rechter kant, waar ook de plek komt voor de acht stuks Pull Up weerstanden van 30K.
Oja, deze print past natuurlijk niet in de kastjes, dit is niet erg, dit is de test setup.
https://www.bramcam.nl/NA/ADS1115-Tester/ADS1115-tester-17.png

.
Dit is de print en de Referentie schakeling op een breadboard, dit breadboard is vrij goed, daar ga ik er meer van kopen,
daarom zit de referentie schakeling ook op deze versie, er staat een blauw/groene W op als merk.
Iets boven de AD584 referentie schakeling zijn twee paarse printjes te zien, dat zijn de ADS1115 ADC's.
Waarom die groffe klemmen onder op de print, nou omdat deze beter contact maken dan de kleinere krokodillen klemmen die ik heb.
De basis testen zijn nu gedaan en de lange draden kunne worden afgeknipt onder aan de print.
https://www.bramcam.nl/NA/ADS1115-Tester/ADS1115-tester-16.png

.
En dan nu de links naar de experimenteer printjes.

Het Blauwe kastje, let goed op wat je besteld, vooral de afmeting komt vaak niet overeen met het plaatje enz, enz.
https://nl.aliexpress.com/item/1005002584253785.html

Hier kan je die leuke experimenteer printjes kopen, de gene waar ik de spanningsdeler op heb gebouwd kost bijna 3€.
https://nl.aliexpress.com/item/4000372753001.html

Bij de meeste van deze prinjes zijn de verbindingen net zoals op een gewoon breadboard, maar let bij de aparte vormen wel op,
want daar heb ik ook al eens een vergissing gemaakt betreffende de opbouw van mijn schakeling omdat de printopbouw iets anders was.

Groet,
Bram

Het is inderdaad een beetje druk zo, maar je kunt wel alles in een keer zien zonder door menu's te moeten of te wachten tot een waarde verschijnt. Dat laatste zou ik zelf nooit doen, het is natuurlijk een kwestie van smaak, maar ik vind het zelf vreselijk om te moeten wachten tot ik iets kan lezen.

Misschien dat de drukte nog wat minder wordt als alle regels hetzelfde zijn, ik snap dat dit maar een testje was.

Zoals benleentje ook al zegt, het is jouw feestje. En smaken verschillen. :)

Ben je trouwens wel van plan om het Steinhart Hart model te gebruiken? Ik vind dat wel een nette oplossing als ik de pdf zo bekijk.

[Bericht gewijzigd door hardbass op (10%)]

Hi hardbass,

Er zijn nog zoveel beslissingen te nemen...
Maar ik denk dat ik jouw voorstel van de twee temperaturen tegelijk op het scherm een goede optie vindt, dus die blijft.
Het gaat er wat de acht regels betreft beter uit zien, als de eerste waarde vlak achter de 1:, 2: enz komt te staan,
dat geeft ruimte tussen de twee temperatuurwaarden en daardoor wat meer rust.

Natuurlijk kijken we allemaal er anders tegen aan, gelukkig wel, want ik heb al een aantal goede tips van jullie gekregen en toegepast!
Jullie kunnen niet in mijn hoofd kijken voor b.v. wat ik comfortabel vind, iedereen is daar normaal al verschillend in en bij mij door mijn Dyslectie wat een Bitch is,
zijn er zaken lastiger en ervaar ik opbouw/kleur en nog wat zaken wat anders, dit even betreffende de schermopbouw.

Nog even naar je voorbeeld code die je gisteren om 8:46 poste.
Gisterenavond ben ik in twee boeken over het programmeren voor de Arduino bezig geweest hoe een Class werkt.
Ook heb ik zeker een uur stukjes zitten lezen op het Internet hierover.

Om het kort te houden, wat je als voorbeeld laat zien kan ik helemaal niets van breien...
Dat ligt niet direct aan jouw code, maar ik kan alleen dingen goed leren in kleine stapjes.
Ik wordt soms helemaal blind voor de opbouw als ik een bepaald percentage niet begrijp van de code die iemand voorstelt, hier op CO of bij sites die iets uitleggen.

Deze regel is voor een groot deel te begrijpen(denk ik): void PrintChannel(int channel, float absoluteTemp, float relativeTemp, int error)

void PrintChannel <= is dit een class?
(int channel, float absoluteTemp, float relativeTemp, int error) <= hier worden een aantal variabelen(verschillende typen) aangemaakt(denk ik)

Daarna gaat het mis, want ik begrijp de opbouw niet...
char tempString[20]; wordt hier een variabele aangemaakt voor 20 karakters?

Dit is echt Japans voor mij, ik ken alleen Oki Doki. :-)
snprintf(tempString, 20, "%d: %6.1f %6.1f", channel, absoluteTemp, relativeTemp); wat is b.v. "%d: %6.1f %6.1f" ?
Ik neem maar even aan dat channel "%d: is , maar wat bedoel je met channel, is dat de waarde uit de ADC? en waarom de kleinne letter d is dat random of altijd d?
%6.1f <= betekend dit de tweede variabel absoluteTemp die maximaal 6 posities inneemt met 1 digit achter de komma?

En dan het laatste stukje code, ik zie neit hoe ik dat in het gene dat ik heb zou moeten toepassen, dus int main() en de lijst er onder.
Het lijstje er onder is denk ik de output van de code, dus alles wat met // begint.

Ik zeg niet wat je doet niet goed is, dat kan ik niet, want ik ben slecht in taal en het schijven in variaties van C.
Net als met Analoge elektronica(ook de IT waar ik mijn brood mee verdien) waar ik wel wat van kan en weet hoe de kennis in de loop van de tijd is opgebouwd, weet ik dat als er te veel variabelen zijn ik niet/slecht kan leren.
Wat ik nazoek op het Internet is regelmatig slecht omschreven, veel code schrijvers zijn geen goede leraren en ze zijn niet alleen, in mijn twee vakgebieden is het al niet beter.
Vaak leg ik mijn oor te luisteren bij mijn zuster die Remedial Teacher is hoe ik zaken moet aanpakken om b.v. uitleg te geven aan klanten en ook op CO natuurlijk.

Nogmaals, dat ik je code niet begrijp ligt grotendeels aan mij, het inzicht bij de eerste blik op een analoge schakeling mis ik volledig bij b.v. C code.
Ieder stukje/functie moet ik hard in mijn brein stampen, zoals ik al eens heb aangegeven dat ik vroeger vaak megenomen schreef, Rob een collega van mij zij op een bepaalt moment, Bram meegenomen is met twee ee's.
Dat heb ik toen vastgezet in mijn brein, nooit meer fout gedaan.
Nog een leuke om aan te geven dat Dyslectie een Bitch is...
Van die zelfde zuster krijg ik een lijstje(hangt naast mij aan de muur) met hoe je werkt met de "s" achter een woord, er zijn gewoon te veel variabelen/uitzonderingen, dat lijstje werkt niet in mijn brein...

Dus, zoals de Engelsen vaak zeggen: “bear with me”

---------------------------------------------------------
Nog te doen, te leren
---------------------------------------------------------
Ik moet acht sensoren uitlezen en wil dat liever niet acht keer helemaal uitschrijven, als het compact maken dus b.v. een class maken niet lukt, dan doe ik het houtje touwtje.

Achtmaar de waarde uit de twee ADC's modules trekken, ik hoop deze week de eerste test te kunnen doen met de Library van Rob Tillaart, de code staat hieronder waarmee ik ga testen of het bruikbaar is.

Ook acht maal, moet de ADC waarde worden omgezet/bewerkt met het Steinhart Hart algoritme, misschien wil ik i.p.v. drie waarden hier vier waarden voor gebruiken,
dan heb ik misschien geen blokje aan het einde van de regel nodig omdat het dan nauwkeurig genoeg is.

Voor iedere sensor moet ik een aantal "if" functies gebruiken, zoals de Error, over, under enz.

Dan wil ik dat de uitkomsten van de temperatuur weeggescheven worden naar een SD kaard metde tijd en lucht kwaliteit(de eerste keer spelen met deSD kaart op een Uno heb ik van de week gedaan), zal via een interrupt moeten, zou er ook nog een buffer nodig zijn?
Het wegschrijven kan natuurlijk als het op een moment rustig is in de code, als die er is.

De ADC code van Rob Tillaart gebruikt ook een interrupt, wat moet dan voor gaan, moet ik dan ook uitzoeken welke interrupt pinnen dominant zijn?
Op dit moment doe ik de aanname dat het uitlezen van de ADC belangrijker is dan het wegschrijven op het SD kaartje.
Ik heb me aardig wat op mijn nek gehaald, vooral als ik het enigsins netjes wil doen wat de code betreft...

Ja het is een Bitch, dit stukje heeft ruim twee uur gekost om het te schrijven en er zitten nog steeds fouten in en ik heb me nog niet goed genoeg uitgedrukt zoals ik zou willen enz.
Hee, dit is geen klagen! ik doe het met veel plezier, maar het geeft enigzins aan, waarom ik wat code betreft niet als een speer ga! :+

Dit is de voorbeeld code van Rob Tillaart waar mee ik ga testen als mijn testprintje hiervoor afgebouwd is.


//
//    FILE: ADS_continuous_8_channel.ino
//  AUTHOR: Rob.Tillaart
// VERSION: 0.1.1
// PURPOSE: read multiple analog inputs continuously
//          interrupt driven to catch all conversions.
//

// test
// connect multiple potmeters to 2 ADS1115
//
// GND ---[   x   ]------ 5V
//            |
//
// measure at x  - connect to AIN0..4.
//
// for the test it is good to have AIN3 connected to 5V and AIN4 to GND
// so one can see these as references in the output.
//


#include "ADS1X15.h"


// adjust addresses if needed
ADS1115 ADS_1(0x49);
ADS1115 ADS_2(0x48);

//  two interrupt flags
volatile bool RDY_1 = false;
volatile bool RDY_2 = false;

uint8_t channel_1 = 0;         // channel from device 1
uint8_t channel_2 = 0;         // channel from device 2

//  array to hold the data.
int16_t val[8] = { 0, 0, 0, 0, 0, 0, 0, 0 };


void setup()
{
  Serial.begin(115200);
  Serial.println(__FILE__);
  Serial.print("ADS1X15_LIB_VERSION: ");
  Serial.println(ADS1X15_LIB_VERSION);

  // SETUP FIRST ADS1115
  ADS_1.begin();
  ADS_1.setGain(0);        // 6.144 volt
  ADS_1.setDataRate(7);

  // SET ALERT RDY PIN
  ADS_1.setComparatorThresholdHigh(0x8000);
  ADS_1.setComparatorThresholdLow(0x0000);
  ADS_1.setComparatorQueConvert(0);

  // SET INTERRUPT HANDLER TO CATCH CONVERSION READY
  pinMode(2, INPUT_PULLUP);
  attachInterrupt(digitalPinToInterrupt(2), adsReady_1, RISING);

  ADS_1.setMode(0);          // continuous mode
  ADS_1.readADC(channel_1);  // trigger first read


  // SETUP SECOND ADS1115
  ADS_2.begin();
  ADS_2.setGain(0);        // 6.144 volt
  ADS_2.setDataRate(7);

  // SET ALERT RDY PIN
  ADS_2.setComparatorThresholdHigh(0x8000);
  ADS_2.setComparatorThresholdLow(0x0000);
  ADS_2.setComparatorQueConvert(0);

  // SET INTERRUPT HANDLER TO CATCH CONVERSION READY
  pinMode(3, INPUT_PULLUP);
  attachInterrupt(digitalPinToInterrupt(3), adsReady_2, RISING);

  ADS_2.setMode(0);          // continuous mode
  ADS_2.readADC(channel_2);  // trigger first read
}


void loop()
{
  handleConversion();

  for (int i = 0; i < 8; i++)
  {
    Serial.print(val[i]);
    Serial.print('\t');
    handleConversion();
  }
  Serial.println();
  delay(100);
}


// catch interrupt and set flag device 1
void adsReady_1()
{
  RDY_1 = true;
}

// catch interrupt and set flag device 1
void adsReady_2()
{
  RDY_2 = true;
}


// handle conversions that are ready
bool handleConversion()
{
  bool rv = false;
  if (RDY_1)
  {
    // save the last value
    val[channel_1] = ADS_1.getValue();
    // request next channel
    channel_1++;
    if (channel_1 >= 4) channel_1 = 0;
    ADS_1.readADC(channel_1);
    RDY_1 = false;
    rv = true;
  }
  if (RDY_2)
  {
    // save the last value
    val[4 + channel_2] = ADS_2.getValue();
    // request next channel
    channel_2++;
    if (channel_2 >= 4) channel_2 = 0;
    ADS_2.readADC(channel_2);
    RDY_2 = false;
    rv = true;
  }
  return rv;
}


// -- END OF FILE --

Dus nu zijn jullie op de hoogte van de toestand van de Wereld door GBJ Hiltermen. de oudjes onder ons kennen dit nog wel. :-)

Dank en groet,
Bram