p-mosFET schakelt spanning voor BMP280 , Arduino crasht


Tja, ik doe idd niets met de i2c bus lijnen.

De crash: de serial output stokt, en (pingpong) ik hoor dat de COM-poort eruit vliegt. De ProMini probeert daarna zonder resultaat weer op te starten.

Het ligt niet persé aan de software omdat ik het handmatig ook kan simuleren. Nee geen andere zaken aangesloten dan de twee BMP's

De spanning is misschien niet echt weg bij de pnp, maar ik kan dat dan handmatig doen zonder dat de ProMini crasht.

Image: vervang BS250 door genoemde p-mosFETs (de BS250 die ik uit China ontving bleken geen p-mosFETs te zijn maar pnp transistor)

[Bericht gewijzigd door GdV op 27 juni 2020 21:44:50 (13%)]

Probeer de 100 Ohm weerstand, dat voorkomt/beperkt in ieder geval ringing (dat kan ook allerlei ongewenste gevolgen hebben)

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

mét CE

De crash:

Dat is geloof ik een mode kreet voor 'doet het niet meer' he?

de serial output stokt, en (pingpong) ik hoor dat de COM-poort eruit vliegt.

Oh. En waar vliegt-ie dan heen?

Wat je feitelijk beschrijft is dat winshit om de een of andere reden struikelt over iets wat er op USB gebeurt...

De ProMini probeert daarna zonder resultaat weer op te starten.

Wat bedoel je daarmee? (ofwel: wat neem je waar?)

zonder dat de ProMini crasht.

Zoals flipflop al beschreef: zo'n ding kan niet 'crashen'. Het doet altijd iets. Dus de vraag is... waar in software hangt dat ding uit?

Mijn gokje is dat eea. USB powered is en dat daar iets gebeurt. Waarom met een FET wel en met een bipolaire tor niet, heeft waarschijnlijk met de steilheid van de flanken te maken.

Ik kan me ook wel voorstellen dat de host USB controller over z'n nek gaat als er stroom getrokken wordt en dat houdt zeer abrupt op - zeker in combinatie met een wat langere kabel (inductie) en gebrek aan ontkoppeling / bypassing.
Win-ellende heeft geen dmesg he? Dan zou je eens kunnen kijken waarom het ding 'eruit vliegt' (kooi dicht doen helpt zeker niet?).

Begin eens met je voeding op orde brengen. En daarmee begin je door eerst eens te kijken hoe dat nu in elkaar zit. Gokje wagen dat dat wel ergens rammelt?
Daarna kun je eens kijken hoeveel stroom er nou eigenlijk loopt als er geschakeld wordt. En of dat ellende zou kunnen veroorzaken.
Voeden uit iets wat daarvoor bedoeld is kan ook al een hoop gez**k voorkomen.

Tenslotte over zomaar ergens de voeding af halen: meestal is dat een slecht idee. I2C werkt met pull-up weerstanden. Met een beetje mazzel heeft dat device protectie dioden aan de ingangen zitten. Dat betekent dan dat het voeding via I2C en de protection dioden gaat krijgen. Geen idee hoe 'lekker' die voeding is en hoe eea. reageert. Dat gezegd hebbende: ik geloof op het moment niet dat dit je probleem is. Het is wel een vreselijk brak design op deze manier...

Kortom: beginnen bij het begin. Hoe zit je voeding in elkaar? Zit er ergens iets van bypassing / decoupling? Zo ja: waar en hoeveel?

Op 27 juni 2020 21:41:09 schreef GdV:
De crash: de serial output stokt, en (pingpong) ...

Dat betekent dat de uart-usb interface chip geen voeding meer krijgt, anders had Windows nog gewoon die chip gezien op z'n poort. Dus, mijn voorzichtige conclusie is dat je de voeding kortsluit met die tor. Dat lukt blijkbaar beter met de fet dan met de bipolaire. Nogmaals, schets de gebruikte schakelingen eens.

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

@ Arco: de 100 ohm weerstand brengt geen verandering in gedrag
@ Eric: ik gebruik idd usb power uit windows computer. Ik heb nu een batterij getest, en dan "crasht"ie niet.
@ flipflop: ik heb iets eerder plaatje gepost

Is de stroom die je uit de USB trekt niet te hoog? (USB2 default max 100mA)
Er zit natuurlijk nog meer tussen, want de USB is 5v en jij gebruikt 3.3v...

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

Ik meet ongeveer 7mA (ik heb de powerLED en regulator verwijderd).

Je hebt kans dat er via de pull-ups van de i2c bus alsnog een stroom richting BME280 gaat lopen die hem van voedingsspanning voorziet.
Sommige i2c decvices reageren nogal gek op het afschakelen van de voedingsspanning.
Zoals andere ook al hebben gezegd is het niet nodig om een transistor of fet tussen de voeding te zetten. Een IO pin van een arduino kan dik 30mA leveren en dat is ruim voldoende voor een BME280.

Zelf zet ik de BME280 in slaap als hij niet benodigd is waardoor hij nog maar 200µA trekt, geen extra hw benodigd.

c code:


settings.mode = BME280::Mode_Sleep; //Put the BM280 sensor in sleep mode
bme.setSettings(settings);

De TS heeft al gezegd dat er in de toekomst meer verbruikers geschakeld gaan worden, die samen dusdanig veel stroom trekken dat het niet door een I/O pin kan. Daarnaast is het nuttig om het probleem te begrijpen, zelfs als de constructie niet strikt noodzakelijk was geweest.

Dat er stroom door de ESD diodes zou kunnen lopen is bekend, en dat is zeker niet netjes, maar dat zou het huidige probleem nog niet verklaren.

Wat mij verbaasd is dat het mis gaat bij het uitschakelen; bij het inschakelen moeten er waarschijnlijk wat condensators opgeladen worden, waarmee je mogelijk lokaal je voedingsspanning onderuit trekt, waardoor de microcontroller en FTDI chip resetten

Het feit dat de FDTI chip contact verliest, bewijst m.i. dat er iets op de voeding gebeurd. De enige verklaring die ik zo kan bedenken is dat er nauwelijks capaciteit aanwezig is, alleen een paar 100nF caps, en dat die samen met de kabel en slecht gedempte kring vormen die gaat slingeren. In dat geval zou een kleine elco van de 5V naar de ground bij de microcontroller het wellicht kunnen oplossen.

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

mét CE

Ik meet ongeveer 7mA.

Ja, ok. Tot je door het uitschakelen en dat op een lompe manier doen iets in latch-up zet. Toevallig lukt dat met die FET. En waarschijnlijk lukt het net niet op die batterij.

Ter leering ende vermaeck: zet in software beide I2C lijnen eens laag voordat je de boel uitschakelt - ik gok er even op dat er verder niks aan hangt 'naar plus'. Dan zou je eea. echt uit zetten.
Gaat die USB dan nog steeds onderuit?
Let wel: het is een gewoon een experiment. Dus geen 'oplossing'.

bprosman

Golden Member

Win-ellende heeft geen dmesg he? Dan zou je eens kunnen kijken waarom het ding 'eruit vliegt' (kooi dicht doen helpt zeker niet?).

Jawel hoor dat heet "Event viewer".

De jongere generatie loopt veel te vaak zijn PIC achterna.

Mocht de oorzaak opslingering zijn a la Application Note 88 dan zou traag schakelen kunnen helpen.
Dus een flinke gate weerstand (10-100 k) en een extra c'tje van 10n van de gate naar de +3.3V.

Reset pin wel (goed) aangesloten?

Als je de schakeling echt hebt zoals je hierboven post, dan kan dat niet het gedrag geven wat je nu ziet. Het feit dat de usb chip onderuit gaat, kan eigenlijk alleen een voltage drop betekenen (die is verder volledig onafhankelijk vd Arduino zelf, geen software involved). Een voltage drop kun je niet veroorzaken met een fet aangesloten zoals getekend.
Maar stel nu dit: je hebt de fet foutief aangesloten, zodanig dat er een geleiding is van 3v3 naar de i/o waar je de "gate" mee stuurt (dat zou dan mogelijk dus niet de gate zijn). Van D naar S is zo'n verbinding via de body diode. Nu trek je jouw i/o naar '0' om uit te schakelen, dan gaat er een dikke stroom van 3v3 die i/o in lopen en trekt daarmee aan de voeding. Suggestie: check de aansluiting van de fet.

@rwk hierboven: TS gebruikt een Arduino, daar zit alles vanzelf al goed :-)

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

Ja die achterste "weerstand" en diode naar massa ziet er verdacht uit.

De TS wil de fet uitzetten, dan moet dus gate dus omhoog. Als hij dat correct heeft bedacht (en dus niet de fet probeert uit te zetten door de gate laag te trekken), zou dat betekenen dat er een kortsluiting moet zijn van de gate naar de ground.

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

Dank voor jullie suggesties, één heeft geholpen: een 10uF over de voeding van de ProMini. Schakelen met de P-mosFET gaat nu wel goed. Ook handmatig spanningsonderbreking geeft geen crash meer.

De oplossing is dus gevonden, de oorzaak ligt waarschijnlijk bij de BME/P's modules. Ik heb geen apparatuur om piekspanningen etc. in beeld te brengen helaas.

Alle logicaprinten met langere voedingslijn als 15cm moeten altijd een eigen bufferelco krijgen...

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

mét CE

De oplossing is dus gevonden,

Laten we het er op houden dat je iets ontdekt hebt waarmee het schijnbaar in specifiek jouw situatie niet onderuit gaat. Een manager zou dat inderdaad 'de oplossing' noemen (want het werkt nu toch!?)

Als je iets aanzet, dan moet je de condensatoren op dat deel opladen zeg van 0V naar 5V. Als dit snel genoeg gaat, dan heeft de voeding geen tijd om te reageren en de lading aan te vullen. Dan moet de benodigde lading uit "dichterbij" condensatoren komen. Als je BMP280 printje 4 100nF condensatoren heeft en je arduino maar 2 dan wordt er dus 200nF * 5V aan lading over 6 condensatoren verdeeld: samen 1.66V. Dan gaan er (kort) chips gewoon echt uit.

four NANDS do make a NOR . Kijk ook eens in onze shop: http://www.bitwizard.nl/shop/
EricP

mét CE

@rew: tenzij ik echt scheef gelezen heb: het ging toch fout bij UIT zetten? DAT kun je op die manier niet verklaren. (nou ja, IK kan het niet. Jij misschien wel? :) )

Vandaar dat ik wat meer in de hoek van opslingering door parasitaire inductie of latch-up en daardoor hoog stroomgebruik zit te denken.

[Bericht gewijzigd door EricP op 28 juni 2020 16:18:40 (30%)]

Klopt, crash was bij uitzetten, dus onderbreken van BMP voeding.

[Bericht gewijzigd door GdV op 28 juni 2020 17:45:50 (69%)]

Sorry, niet goed gelezen. Nee, dan kan ik het niet direct verklaren.

four NANDS do make a NOR . Kijk ook eens in onze shop: http://www.bitwizard.nl/shop/

Ik wil geen zeur zijn, maar ik ben benieuwd hoe lang de bmp280 (of andere sensors) blijven leven met spanning op de I2C bus maar zonder voeding. Dit is een berucht scenario om IC's stuk te maken.

Ik zou me echt focussen op alle sensors in hun sleep mode zetten, dan is het verbruik vaak niet meer dan een paar nA.

Je gaat de chip "voeden" via de protection diodes naar de voedingsrail in de chip. Zolang je die stroom laag genoeg houdt dat die diodes daar tegen kunnen, dan gaat dit oneindig goed.

Ik dacht dat ik ergens een chip gevonden had waar ze de max stroom voor die diodes gespect hadden (de meeste datasheets vermelden hem niet!). Als ik het me goed herinner stond daar "10mA", maar had ik besloten om zelf dan te mikken op "niet meer dan 1mA".

Als het doel van de excercitie is om weinig stroom te gebruiken kan je trouwens niet tolereren dat er veel stroom loopt.

Die diodes zijn trouwens redelijk "lomp" omdat het de bedoeling is dat het een statische vonk op moet kunnen vangen.

four NANDS do make a NOR . Kijk ook eens in onze shop: http://www.bitwizard.nl/shop/