ESP32 DevKit: Alice in Wonderland oftewel eerste vingeroefeningen en lessen.

Paulinha_B

Honourable Member

Het was niet al te moeilijk om de "hello world" van de Arduinowereld aan de praat te krijgen op mijn mooie nieuwe ESP32 DevKit; om de blauwe on-boardled te doen knipperen moest slechts de definitie van de pin veranderd worden, hier zit dat op GPIO2.

Bij de volgende stap ging het echter grondig mis! Ik ging eens gauw een zoemertje aansluiten op de eerstvolgende vrije pen, dat was dus GPIO3; op slag wilde het ding zelfs de nieuwe code niet meer opladen.

Na enig zoeken bleek GPIO3 ook gebruikt te worden door UART0 en die wordt nu net gebruikt tijdens het uploaden. Zoemertje dan maar gemigreerd naar GPIO5 en nu werkt het allemaal zoals voorzien. Mogelijks is het niet echt kosher om het zoemertje recht aan een IO-pen te hangen, ik weet eigenlijk niet hoeveel stroom die dingen trekken, maar werken doet het wel.

Nee, moeilijk is het niet, als men het eenmaal doorheeft. Zoals alles, natuurlijk, in de elektronica en soms zelfs in de rest van het leven...

buckfast_beekeeper

Golden Member

Van Lambiek wordt goede geuze gemaakt.
Paulinha_B

Honourable Member

Haha, ik had wel een reactie uwerzijds verwacht :)
Welbedankt, ik ga het zeker bekijken; maar op het eerste diagonale zicht is het nu niet echt een lijstJE, eerder een fameuze uitvoerige waslijst...

buckfast_beekeeper

Golden Member

Wat ik het meeste gebruik is de afbeelding onder ESP32 Peripherals, daar staan alle functies van elke pin, en de tabel er onder. Wat groen is kan je perfect gebruiken, wat geel is moet je even bekijken. Zo zal ik ook GPIO34, 35, 36 en 39 als eerste gebruiken voor input. Hebben wel geen interne pull-up of pull-down. Met een weerstandje zo opgelost.

Van Lambiek wordt goede geuze gemaakt.
blackdog

Golden Member

Hi buckfast_beekeeper, :-)

Handige link, sla ik even op, ik heb hier nu ook wat van die modules liggen.
Ik had me een tijdje terug al een beetje ingelezen vooral betreffende de ADC in deze modules, die is dus dramatiesch slecht, wat die web pagina met info ook al laat zien.
Daar de slechte ADC functie ben ik nooit eerder met deze modules begonnen, maar ze hebben natuurlijk ook vele goede punten. :-)

Groet,
Bram

You have your way. I have my way. As for the right way, the correct way, and the only way, it does not exist.
buckfast_beekeeper

Golden Member

ADC heb ik nog nergens gebruikt. Ook niet bij ATmega varianten. Als dit nodig is, zal ik eerder grijpen naar een echte ADC die je kan lezen met I2C of SPI. Kan die zijn werk doen terwijl de ESP wat anders doet. Zowat het systeem van de DS18B20 met de automatische delay uitgeschakeld.

Van Lambiek wordt goede geuze gemaakt.
Arco

Special Member

Een interne ADC geeft geen overhead, mits goed gebruikt... ;)
Als je die in een timerinterrupt afhandelt merk je er niks van...

Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com
Paulinha_B

Honourable Member

** =============================================================== **
@MODERATORS: het spijt me oprecht dat ik deze vraag heb gesteld. Kan ze aub verwijderd worden? En dan ook de hele ontsporing die eruit is voortgekomen?
** =============================================================== **

Wat is er zo dramatisch slecht aan die A/D-conversie, Bram? Ik herinner me uw obsessie met nauwkeurigheid, maar 12 bit is toch voor veel toepassingen voldoende?

En inderdaad, als het er echt op aankomt kan men nog altijd een externe a/d-converter toepassen. Dat gebeurt bv. ook in dit ontwerp: https://www.instructables.com/DIY-1kW-MPPT-Solar-Charge-Controller/, dat was begonnen met een Arduino maar die had maar 8-bit ADC en dus werd er gekozen voor een externe ADC; later werd er overgestapt op ESP32 maar de externe ADC bleef wel behouden, Nu, dat is dan ook een 16-bitter, een ADS1015.

[Bericht gewijzigd door Paulinha_B op dinsdag 14 maart 2023 15:38:27 (20%)

Arco

Special Member

Een 16 bitter heeft in reguliere schakelingen weinig nut. (je zult een uiterst stabiele referentiespanning nodig hebben)
Bij 3.3V is de resolutie dan 50µV, de 'ruis' op een standaard voeding is al vele, vele malen meer... (tientallen mV is niets bijzonders)

Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com
blackdog

Golden Member

Hi Paulinha_B, :-)

Ik zou eerst maar eens goed gaan kijken wat de specificaties zijn van die ADC en dan je menig gaan herwaarderen...

En mij er op wijzen dat je ook een externe ADC kan gebruiken is net zoiets als mij vertellen dat water nat is, nou ja, in een van de aggregatie toestanden dan.

Obsessie? kom nou toch, je kan hem krijgen hoor als je dat echt wilt!
Gelukkig zijn er engeneers op deze wereld die niet denken, Ooo het is wel goed zo en die verder kijken dan hun neus lang is.
Denk je trouwens ook dat ik al mijn metingen met een HP 3458A of mijn Keithley 7510 doe, om te zien wat b.v. de spanning is van een 1,5V batterij?

Ik laat hier veel op het forum zien waarbij ik de mogelijkheden van de apparatuur die ik gebruik laat zien, samen met de kennis die ik heb opgedaan in nu bijna 60 jaar dat ik met electronica bezig ben.
Vraag daar meningen en inzichten over aan de mede forum gebruikers enz, enz.

Ik heb een naar mijn mening gezonde wil naar kennis, middelmatigheid heb ik een broertje aan dood, ik wil weten hoe, wie, wat, waar, waarom...
Dat begon al met mijn eerste radio's en versterkertjes die ik bouwde jonger dan 10 jaar.
Waar komt behalve die brom toch dat gierende geluid vandaan?
En nee, ik heb het niet over generatie verschijnselen in mijn bouwsels, maar over een natuurkundig effect: Whistlers.

Later het verbeteren van de simpele buizen versterkers met tegenkoppelingen en weer een tiental jaren later het perfect afgeregeld houden van professionele bandrecorder e.d. voor de klanten.
Ontwikkeling van IR stralers voor vertaalsystemen, zoals breedband versterker en hoe je b.v. het beste de IR diodes kan koelen om zoveel mogelijk output te krijgen enz.
De grootste IR straler die we ontwikkelde had rond de 1000 dioden, 2KW ringkern voedings trafo en gierende ventilatoren. :-)
Daar had je geen IR camera voor nodig, je kan de IR straling ook voelen als je in de buurt stond. *grin*

Terug naar de ADC in microcontrolers, de Teensy modellen hebben een duidelijk veel betere ADC aan boord dan de ESP modellen, en die heb ik al meerdere malen uitgerust met een externe goede spanning referentie.
Ook de ADS1115 heb ik al meerdere keren gebruikt, ik ben daar dus mee op de hoogte.

Voor de duidelijkheid ik vind de ESP serie controlers niet slecht, maar een aantal specs zoals die ADC is een beetje triest.
Ik richt mij wat meer op Analoge techniek en ik kan me voorstellen dat anderen daar helemaal niet naar kijken omdat ze dit niet nodig hebben, vind ik geen enkel punt, zoals altijd ken je apparatuur en pas toe wat nodig is.
De Teensys hebben b.v. geen WiFi aan boord, dat kan voor gebruiker A of X een groot probleem zijn, voor mijn toepassingen meestal niet. :-)

Groet,
Bram

You have your way. I have my way. As for the right way, the correct way, and the only way, it does not exist.

Weet je waar ik een broertje dood aan heb? Aan het opleggen van hoge specificaties die nergens voor nodig zijn. Overspec'en dus. In enorm veel gevallen heb je zo'n goede ADC helemaal niet nodig. De ADC in een ESP32 gebruik je bv prima om z'n voedingsspanning te monitoren, of om lichtintensiteit te meten. Daar heb je echt geen 16 bitter voor nodig.

"We cannot solve our problems with the same thinking we used when we created them" - Albert Einstein
eSe

Honourable Member

Deze PDF's gaan over de AVR famillie, maar ze zijn als algemene leiddraad te gebruiken. Mischien kan je wat meer uit je ADC's halen na lezen van deze app. notes.

CChheecckk yyoouurr dduupplleexx sswwiittcchh..
Paulinha_B

Honourable Member

Op 10 maart 2023 14:39:13 schreef Arco:
Een 16 bitter heeft in reguliere schakelingen weinig nut. (je zult een uiterst stabiele referentiespanning nodig hebben)
Bij 3.3V is de resolutie dan 50µV, de 'ruis' op een standaard voeding is al vele, vele malen meer... (tientallen mV is niets bijzonders)

Dat was ook al de hele tijd mijn aanvoelen. Voor het thans gestelde doel (opvolgen van de spanning en stroom van een 6S1P Li-Ion-pakket) lijkt 12 bit mij ruimschoots voldoende. Als dan blijkt dat de interne A/D-converter niet voldoet, dan kan ik nog altijd een externe toevoegen.

blackdog

Golden Member

Hi flipflop, :-)

Heb ik gezegd dat dat ik een goede 16Bit performance van een ESP32 verwacht, ik denk van niet!
Als je de link volgt de werkt gegeven kan je zien hoe krom de lineariteit van de ADC in die microcontroler is.
Dat je dat niet wilt erkennen is jouw probleem, maar als je wat rond leest op fora over die ADC, dan ben ik echt niet de enige die het niet toppy vind.
De ADC doet bijna niets aan het begin stuk en aan het eind van het 12 bit is het helemaal geweldig mooi. ja dat is sarcasme. :-)

Dat je die ADC toch kan gebruiken voor b.v. een potmeter uit te lezen om daarna de helderheid van een lamp of LDR te regelen en dat dit werkt hoeft niemand mij te vertellen.
Spanning of stroom meting, daar begin ik dan al aardig mijn wenkbrauwen bij op te tillen, vooral dus als je in het begin of aan het einde van de ADC schaal komt, hij liegt je recht in je gezicht.

Waar we het trouwens dan nog niet over gehad hebben is de gevoeligheid van de ADC betreffende voeding spanning, ruis en temperatuur, die je normaal ook meeneemt in je "error budget".
Maar natuurlijk ben ik door dit hier te zeggen weer aan het over engeneren, Bram wil in natuurlijk in iedere microcontroler een 24bit ADC en ook een 24bit DAC,
een 1PPM interne Referentie en een temp gevoeligheid van niet meer dan 1PPM als het kan voor minder dan 1 Euro en ook een test rapport er bij en ja, dat is weer sarcasme. :-).

Ik heb mijn benen goed in de klei en wil graag de echte spec weten van onderdelen en apparatuur als ik iets ga toepassen en kies daarna dan wat nodig is.
Het beperkte beeld dat een aantal van jullie op dit forum van mij hebben is weinig waardevol, ook niet voor de andere lezers die je zo aan het programmeren ben met jullie middelmatigheid, dat dat wel goed genoeg is.

Groet,
Bram

You have your way. I have my way. As for the right way, the correct way, and the only way, it does not exist.

Op 10 maart 2023 16:24:35 schreef blackdog:
ook niet voor de andere lezers die je zo aan het programmeren ben met jullie middelmatigheid, dat dat wel goed genoeg is.

Wat zijn we weer aardig voor elkaar!

Ik ben met Flipflop eens dat zo'n ADC voor veel toepassingen goed genoeg is, zolang je bewust bent van de beperkingen, en daar rekening mee houdt. Ik heb zo'n ESP32 gebruikt voor een toepassing (hobby) waar een motor geregeld moet worden, en 3 NiMH accupakketten bewaakt moeten worden. Zolang je uit de buurt blijft van de uiterste spanningen (0V en 3v3), en kunt leven met de non-lineariteit, of die in software corrigeert, is er weinig aan de hand.

Ik hoef echt niet op een millikelvin nauwkeurig te weten hoe warm die accu's zijn, een paar graden ernaast is niet eens echt een probleem. Hetzelfde geldt voor de motorstroom; ik wil bewaken dat er niet veel te veel stroom gaat lopen omdat de motor geblokkeerd is, en een schatting maken van de I^2t van de motor, om te zorgen dat hij niet verbrandt.

Je kunt er wel een externe ADC naast zetten, maar als dat voor de toepassing niet nodig is, is het alleen maar onnodig duur, en kost het onnodig boardspace. Als je een commercieel product aan het ontwerpen bent, dus je met een hele goede reden moeten komen om 10 euro extra uit te geven aan de luxe ADC met dito referentie.

Jij noemt het middelmatigheid, ik noem het niet geobsedeerd zijn door nauwkeurigheid op plaatsen waar het netto niets uitmaakt.

Een manager is iemand die denkt dat negen vrouwen in één maand een kind kunnen maken
Lambiek

Special Member

Op 10 maart 2023 15:22:55 schreef flipflop:
Weet je waar ik een broertje dood aan heb? Aan het opleggen van hoge specificaties die nergens voor nodig zijn.

Precies. En SparkyGSX heeft daar een mooi voorbeeld van.

Als je haar maar goed zit, GROETEN LAMBIEK.
blackdog

Golden Member

Hi SparkyGSX, :-)

Jij doet nu ook weer de aanname dat ik dit en dat doe...
Hoe komen jullie daar toch bij...
Projecteer je eigen negatieve gedachten niet op mij, ga geen dingen beweren die ik niet gezegt heb.
Heb ik aangegeven dat iedereen maar een 10Eur ADC aan een ESP moet hangen, ik denk het niet.
Ik heb wel aangegeven dat ik bekend ben met b.v een ADS1115 en gebruik die chip ook als dit nodig is bij een microcontroler.

Geen van jullie reageert b.v. op mijn opmerking over b.v. het error budget, passen jullie dat wel eens toe?
De ADC in de ESP is dermate gammel dat ik niet weet of ik dat wel in een commecieel product zou willen hebben.
Dat vastlopen tegen de grensen aan de hoge en lage kant is echt erg en dit samen met de variaties "errror budget" dat ik al eerder aangaf.
Je Li-Ion cel meten als je tegen de bovenzijde van je ADC waarde zit waar hij vast loopt, dat gedrag kan je niet echt corrigeren, dit omdat er te weinig te corrigeren valt.
Je zal goed moeten schalen om in een linear stukje te komen, maar heb je dan nog resolutie voldoende over voor een waardevolle meting, zal het nog maar eens zeggen want het komt moeilijk binnen,
De waarde die je uitleest b.v. de maximale spanning van een Li-Ion cel, heb je met de gebruikte ADC er voldoede zekerheid over?
Ik heb het niet over een resolutie van 6 cijfer achter de komma maar een reeele waarde waar je van je product met zekerheid kan zeggen dat het klopt binne de betrouwbaarheids marge die je steld.

Het lijkt wel een hangende plaat, ik laat jullie in mijn topics precisie metingen zien en jullie nemen zonder meer aan, dat ik alles wat ik doe, zo precies moet zijn.
Vind je nu zelf ook niet dat dit een nogal erg beperkte beeld van mij is?
Ik heb zelf al aangegeven wanneer de ADC b.v. wel bruikbaar is, en dan ga jij het zelfde nog een keer herhalen alsof ik dat niet zou weten....

Ik presenteer onder meer op dit forum schakelingen die wat verder gaan dan een lampie en een batterij, ja dat is gechargeerd, net als jullie dat doen over mij.
Het zou een stuk beter zijn als de denkramen eens een stuk wijder open gezet gaan worden.

Keer op keer moet ik hier duidelijk maken dat ik regelmatig met een gewone hand multimeter allerlij metingen doe, net als jullie, moet ik daar dan berichten van maken op dit forum, dit om jullie jezelf thuis te laten voelen?
Of wil je zaken lezen die je misschien aanzetten door zelf eens een stapje verder te doen, hoeft niet, kan wel hoop ik voor de lezers.

Blijven hangen in wat jullie altijd al deden mag van mij, daar ga ik niet over, maar commentaar geven omdat ik mijn best doe,
het beter te maken of te kijken hoever ik kan komen en dan dit b.v. dit af te doen als b.v. over engenering, is wat mij betreft blijk geven van een gesloten denkraam.

Dus wat betreft onaardigheid opmerking, je begrijpt vast wel wat mijn mening hierover is en wie is hier nu onaardig?

Groet,
Bram

[Bericht gewijzigd door blackdog op vrijdag 10 maart 2023 18:31:18 (31%)

You have your way. I have my way. As for the right way, the correct way, and the only way, it does not exist.
Paulinha_B

Honourable Member

@Bram, kijk eens goed naar de titel van dit draadje aub. Dat de specs van de ADC maar zus en zo zijn, dat is best mogelijk, ik neem het graag van u aan. Maar daar gaat het helemaal niet over in dit draadje over allereerste ervaringen en inzichten.

Als ik ernstig met ADC begin om te gaan zal ik daar misschien ook nog wel over berichten, maar dat is niet voor de eerste paar weken, wellicht zelfs niet de eerste paar maanden.

Enne, sorry hoor, maar uw uitschieter "de andere lezers die je zo aan het programmeren ben met jullie middelmatigheid" is toch echt niet vriendelijk, ook niet in mijn appreciatie.

blackdog

Golden Member

Hi Paulinha_B. :-)

Ik zou zeggen leer er van, er wordt je door een van de Forum gebruikers vermeld dat de ADC van de ESP serie microcontrolers nu niet bepaald een van zijn beste eigenschappen is.
Hoe er rekening mee als je de ADC wilt gaan gebruiken in de projecten die je gaat maken, ik zie ze graag voorbij komen, van iedereen trouwens die hier projecten laat zien, of nu wel of niet de ADC gebruikt is.

Mijn opmerkingen over midelmatigheid komt door het regelmatig op de rem te gaan staan van een aantal forum gebruikers, het eeuwige gezeur dat ik te horen krijg dat ik te precies ben enz,
terwijl als je mijn stukjes leest duidelijk is dat ik een openstaand denkraam heb, open sta voor vragen en andere input.

Steeds weer het zelfde geneusel dat voor "hun" toepassing het allenaal niet nodig is of dat het geld kost en uiteindelijk niet echt nadenken waarom iets is kenbaar gemaak door mij.
Ik probeer jou en andere er op te wijzen dat bepaalde eigenschappen niet zo zijn als je zo kunnen verwachten, dat mag en kan iedereen altijd naast zich neer geleggen, zoals ik al zij, daar ga ik niet over.

Maar de brenger van het nieuws vertellen, dat ze het liever niet willen horen... af en toe krijg ik daar een beetje genoeg van en laat ik dat als tegengas merken.
Steeds weer die zelfde voorbeelden, waaruit blijkt dat die beperking van inzicht niet aan mijn zijde zit, maar bij be de gene zelf en die dan op mij worden geprojecterd, dank U, dit wordt niet gewardeerd door mij.

Groet,
Bram

You have your way. I have my way. As for the right way, the correct way, and the only way, it does not exist.

Onze guru voelt zich aangevallen... Je begon toch zelf over de slechte kwaliteiten van die ADC! De TS heeft helemaal geen toepassing ve ADC genoemd. Wel is duidelijk dat ie net met ESP32 begonnen is. Dat komt op mij niet over dat ie een super-duper ADC nodig heeft, maar meer geïnteresseerd is in het experimenteren met iets dergelijks. Nou, kan prima met die interne (die dus prima geschikt is voor heel veel toepassingen).

"We cannot solve our problems with the same thinking we used when we created them" - Albert Einstein
blackdog

Golden Member

Hi,

Moeilijk he, begrijpend lezen...

Bram

You have your way. I have my way. As for the right way, the correct way, and the only way, it does not exist.
Paulinha_B

Honourable Member

@flipflop: dankjewel hoor, heel goed begrepen en dus heel goed gelezen :)

Maar het was wel een beetje mijn eigen fout om te vragen wat er dan wel zo verkeerd is aan de ingebouwde ADC van de ESP32. Ten eerste had ik dat best zelf wel eens kunnen uitvogelen, en ten tweede was de reactie wel een beetje voorspelbaar.

marcob

Golden Member

On topic dan maar weer ;)
tip: Omdat de ESP32 dual core is, is het ook leuk en leerzaam om hier wat experimenten mee te doen. Leuk om te zien dat de ESP twee dingen onafhankelijk van elkaar kan doen.

People tend to overestimate what can be done in one year and to underestimate what can be done in five or ten years
Paulinha_B

Honourable Member

Hm, dat klinkt interessant, al is cpu-performantie nu niet bepaald mijn eerste zorg, misschien zelfs nog minder dan ADC-performantie :)

Maar hoe kan men daarmee experimenteren? Is er een manier om te maken dat bepaalde code enkel op de ene core draait, en andere code op de andere? Als men een operating system heeft dan kan men zich verlaten op de task switcher oftewel run queue handler of hoe het ook moge heten; maar hier hebben we toch helemaal geen O/S?

Let wel, ik gebruik totnogtoe de Arduino IDE, en behalve de "gewohnungsbeduerftige" editor bevalt me dat best. Misschien is stoeien met de aparte cores enkel mogelijk vanuit een iets gesofistikeerder werktuig?

Arco

Special Member

Niet lineair ADC gedrag komt meestal doordat de impedantie van de aangeboden spanning te hoog is, beste zo laag mogelijk houden...
(de samplecondensator in de ADC is meestal ook maar heel erg klein, hooguit enkele tientallen pF's)

Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com