uln2803 - Iets lastiger vraagje

Arco

Special Member

Het is beter om niet gebruikte processors in 'sleep' mode te zetten, dan gebruiken ze bijna niets.
Botweg de voedingsspanning eraf halen is een smerige methode die allerlei ongewenste en onverwachte effecten kan opleveren.

(de processors zonder voeding zullen proberen zich te voeden via de i/o pinnen en hun diodes)

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

Dat afschakelen werkt uitstekend. Is al uitgebreid getest.
De te schakelen arduinos zijn allemaal slaves en de bus us goed geborgd.
Het was even puzzelen hoe eea in te richten dat iedere slave zich bij ieder request eerst moet valideren maar dat is gelukt.

Sjors
Arco

Special Member

Omdat iets werkt is het nog geen goed idee... :)
Ik zou zelf in ieder geval nooit zo gaan stunten als je weet wat er kan gebeuren...

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

Golden Member

@TS: ik ben met iets vergelijkbaars bezig. Een ESP32 master met verschillende ATmega32 en Arduino nodes. Ik ga toch voor iets betrouwbaarder, waar de communicatie tussen master en nodes niet afhankelijk is van in of uitschakelen van nodes. Zoals je in dit draadje kan lezen zal het RS485 worden.

Van Lambiek wordt goede geuze gemaakt.
Sine

Moderator

Op 10 augustus 2022 21:02:19 schreef SBE:
Dat afschakelen werkt uitstekend. Is al uitgebreid getest.

Dat was het punt niet, het afschakelen op zichzelf is een tikje smerig. Als je er toch al een bus verbinding tussen hebt moet je ook via die weg een controller stil kunnen krijgen indien nodig.

Sterker nog, een hele berg arduino's in een project is al apart. Maar ik wee niets van hoe het een en ander aan elkaar geknoopt zit om daar een gefundeerder mening over te kunnen vormen.

Op 10 augustus 2022 21:02:19 schreef SBE:
Dat afschakelen werkt uitstekend. Is al uitgebreid getest.
De te schakelen arduinos zijn allemaal slaves en de bus us goed geborgd.

Ik geloof er ook niet in zoals Arco zegt. Dat kan alleen werken als de I2C lijnen op pinnen zitten waar geen ingebouwde (esd) diodes zitten, en die zijn er verrekte weinig.
Het is meer geluk dan wijsheid dat het werkt. De chip krijgt waarschijnlijk wat parasitaire voeding via de bus draden en is dan gedeeltelijk tristated omdat die in reset mode blijft hangen.

Alleen echte transceiver chips zoals CAN-bus en RS485 drivers hebben een "vanaf de specificatie een bewezen gedrag" bij wegvallen van de voeding.
Zoals al meerdere hier zeggen: 'Not done' en los het softwarematig op door nodes in sleep te zetten.

Kortom: de tijd zal het leren, we zien je wel weer terug hier denk ik...

1-st law of Henri: De wet van behoud van ellende. 2-nd law of Henri: Ellende komt nooit alleen.

Als je de reset pin van de slave arduino's stuurt heb je geen ULN2803 of iets dergelijks nodig, je slave gebruiken nog nauwelijks stroom en je loopt niet het risico dat er iets mis gaat met je I2C bus.

Arco

Special Member

Ik geloof er ook niet in zoals Arco zegt.
Dat kan alleen werken als de I2C lijnen op pinnen zitten waar geen ingebouwde (esd) diodes zitten, en die zijn er verrekte weinig.

Zelfs al zouden de pinnen geen diodes hebben (wat ik nog nooit gezien heb), dan ben je nog ruim buiten de toegestane grenzen bezig.

Max spanning op een input is Vcc + 0.6v. Aangezien je Vcc 0v maakt is dus 0.6v toegestaan.
Als de i2c pinnen actief blijven staat daar 5v(!) op, dus 4.4v teveel...

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

Op 11 augustus 2022 03:02:13 schreef Arco:
[...]
Zelfs al zouden de pinnen geen diodes hebben (wat ik nog nooit gezien heb),

Ik WEET dat jij dat wel gezien hebt. D'r is zo'n pin die alleen pulldown kan en niet pullup op een PIC. Dat heb jij me verteld (toen ik de pin "HOOG" wilde hebben en dat niet werkte). Die pin heeft geen diode naar VCC.

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

Special Member

Alle niet-analoge pinnen hebben clamping diodes, dat heeft niets met pull-ups of OD te maken...

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

verandert er wat aan de discussie als we er vanuit gaan dat de I2C bus op een arduino nano gelokaliseerd is op twee analoge input poorten: nl A4 en A5?

Sjors

Op de arduino nano hebben ALLE pins clamping diodes. Ook de analoge.

Op veel 3.3V processoren is het zo dat in plaats van een clamping diode naar de 3.3V VCC hebben ze een (5.5V) zener diode naar GND. Dit dan voor pinnen waar juist GEEN analoog spul aan zit. Op de analoge pinnen zit dan gewoon een clamping diode. Maar omdat de atmega328 gewoon een ouderwetse 5V CPU is heeft die gewoon overal clamping diodes. En geen uitzonderingen zoals RA4 op de PIC16F877A (die zoals arco vergeten is, geen clamping diodes heeft).

Wat voor pullup weerstandswaarde gebruik je op je I2C bus?

Ik verwacht dat als je een "hoog" (via de weerstand) op de bus zet, de uitgeschakelde nano gevoed gaat worden via de weerstand. Als jij zegt dat het gewoon werkt, dan is kennelijk de nano erg "zuinig" en komt de bus-spanning dus boven de threshold spanning uit daar waar het belangrijk is.

Stel je belast de 5V voeding van de nano met een 70 Ohm weerstand (bijvoorbeeld zo'n relais) Als nu de spanning op de bus 2V is, zou de spanning op 5V van de "uit" nano rond de 1.4V zijn en er 20mA door de clamping diode gaan. Aangezien je de weerstand uitrekent om bij 5V spanningsval (meer dan de 3V bij 2V op de bus) minder dan 20mA stroom te leveren, zal dit dus niet goed gaan. Je komt met de spanning op de bus niet eens boven de "gegarandeerd nul" spanning uit.

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

Special Member

En geen uitzonderingen zoals RA4 op de PIC16F877A (die zoals arco vergeten is, geen clamping diodes heeft).

Je haalt nu wel een heel oud (meer als 20 jaar) relikwie naar boven, maar toen mocht er inderdaad 8.3v op RA4.

Alle moderne pics zitten op Vcc+0.6v en Vss-0.6v op alle pinnen behalve /MCLR (die moet nu eenmaal tot 9v kunnen als je wilt programmeren met HVP.)

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

beste allen,

ik heb al jullie opmerkingen aandachtig gelezen en het klopt: het kan een stuk netter.
Ik ben afgestapt van het ruw killen van de power richting arduinos.
Het is een beter idee om ze gecontroleerd op slaapstand te zetten, bv afhankelijk van een waarde van bv een van de poorten. ( als dat kan. moet ik nog uitzoeken, wat blijft er wel werken in welke slaapmodus zodat ik ze ook weer wakker kan krijgen :) ).

Dat maakt meteen de noodzaak van een udn overbodig.
Ik heb zelf nog geen ervaring met de verschillende modes van het in slaapstand zetten maar daar kom ik wel uit.

Het is overigens erg plezierig om zo van alle kanten ideeën en meningen te lezen. Dat was precies waar ik op hoopte. Hou me dus nog steeds aanbevolen voor alles wat hiermee te maken heeft. een zeer leerzame exercitie!

blijf vooral zo hard mogelijk commentaar leveren!!

dank voor alle input

Sjors

Sjors
Arco

Special Member

Mooi zo!

Het komt (te) weinig voor dat topicstarters aanbevelingen/kritiek voor verbetering overnemen. (ze zien het als een 'aanval' op hun creatie... :) )
En dat terwijl het bedoeld is om iets juist beter te maken...

Meestal is men overtuigd dat hun ontwikkelde schakeling de beste uitvinding na de gloeilamp is, en dat daar niets aan te verbeteren valt...
(ook al is er nog zo veel commentaar...)

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

Grinnik, wacht maar tot het helemaal klaar is.
Ik heb al een pak gekocht voor de nobelprijs uitreiking :)

Sjors

@arco: Ik heb sindsdien geen PICs meer gebruikt. 20 jaar zal het niet zijn, want volgens mij is CO nog niet zo oud. Ik ben pas in 2006 lid geworden (jij 2004), dus het is na 2006 geweest. :-)

@Sjors, Goeie instelling. Houwe zo!

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

Special Member

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

Special Member

Op 11 augustus 2022 12:15:39 schreef Arco:
[...]
Alle moderne pics zitten op Vcc+0.6v en Vss-0.6v op alle pinnen

Ik zou denken dat dat Vdd+0.6V is? Die moderne pics zullen toch wel in een cmos proces gebakken worden..? :)

This signature is intentionally left blank.
Arco

Special Member

Ik gebruik Vcc, Vdd en Gnd, Vss gewoon door elkaar. (ik ga niet eerst de chip ontleden... :) )
Ik noem het ook vaak V5 en V3.3 in schema's

[Bericht gewijzigd door Arco op donderdag 11 augustus 2022 14:49:54 (19%)

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

Golden Member

Op 11 augustus 2022 12:37:19 schreef SBE:
Het is een beter idee om ze gecontroleerd op slaapstand te zetten, bv afhankelijk van een waarde van bv een van de poorten. ( als dat kan. moet ik nog uitzoeken, wat blijft er wel werken in welke slaapmodus zodat ik ze ook weer wakker kan krijgen :) ).

Je bent al met I2C bezig, reserveer een commando dat het ding in slaap zet. Wakker maken doe je door te zorgen dat als de I2C-pin veranderd het ding wakker wordt. Zit als het goed is ingebouwd in je processor.

Don't Panic!
Arco

Special Member

Processor zal wel een interrupt/wake-up kunnen genereren, als er via i2c het juiste adres binnenkomt voor die slave.
(bij pin veranderingen is wat lastig, want dan wordt iedere keer de hele boel wakker...)

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

Beste allen,

Even een status update.
Na goed advies vanuit hier ben ik gaan puzzelen hoe ik de arduinos in sleepmode kon zetten.

Er is, als je gericht zoekt best veel info te vinden over dit onderwerp.

De oplossing is nu als volgt geworden.

De smartphones kunnen via mqtt en wat fancy tussenstuff de d2 poorten van een reeks arduinos hoog of laag sturen.
De d2 poort is een trigger voor een interrupt die per arduino een sleepmodefunctie start.
Het voordeel hiervan is zelfs dat per arduino specifieke extra code ingegeven kan worden om de actuators echt af te sluiten. Neem bv de veelvuldig gebruikte ws2812. Wanneer de sturing wegvalt blijven ze wel aan terwijl dat niet de bedoeling is. Deze kunnen binnen deinterruptfunctie nu eerst netjes uitgezet worden.

Het mooie is dat de i2c bus gewoon blijft werken. En dus ook de individuele stuurarduinos steeds de juiste info krijgen ( deze varieert nl zeer frequent) vanaf de master.
Door de aanpassing in de oplossing blijf ik lekker met uln2803’s werken. Zelfs niet echt nodig gezien de stromen die er lopen maar wel een fijne “buffer”.

De oplossing oogt stabieler. Het neemt wat geheugen per arduino in beslag maar zo te zien past het nog allemaal prima

Dank dus voor het meedenken en hou me aanbevolen voor verdere slimmigheden :)

Groet

Sjors

Sjors
Arco

Special Member

Het mooie aan i2c is dat er ook een 'General Call' adres is (adres 0x00), waar alle slaves op reageren. Handig als info voor alle slaves bedoeld is...

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

Golden Member

Op 11 augustus 2022 13:07:49 schreef Arco:
Meestal is men overtuigd dat hun ontwikkelde schakeling de beste uitvinding na de gloeilamp is, en dat daar niets aan te verbeteren valt...
(ook al is er nog zo veel commentaar...)

Geen idee wat mensen denken ;). Ik zou gokken dat men vaak al blij is dat het enigszins werkt en bang zijn dat het helemaal niet meer werkt als ze veel overhoop moeten halen.

Mensen zijn soms net als een gelijkrichter, ze willen graag hun gelijk hebben.