P-channel MosFet als high-side powerswitch

big_fat_mama

Zie Paulinha_B

Volgend op het draadje (dat ik zo gelijk niet kon terugvinden) over het aan- en uitschakelen van (neem nu maar) een Raspberry PI door (neem nu maar) een Arduino:

De uitgang van de Arduino is ofwel 3,3V ofwel 0V (min of meer). Een 3,3 V-belasting kan met een P-channel MosFet dus "high-side" worden aan- en uitgeschakeld. Tot zover alles kits.

Maar wat als er een 5V-belasting aan en uit dient geschakeld? Moet ik nu vanuit de Arduino een npn-transistor of een n-channel FET naar massa aansturen, die dan de P-channel MosFet aanstuurt? Dan zit ik wel met een vervelende trap inversie ertussen, bij inschakelen zijn de Arduino-pennen ingangen en dus "hoog" en dus gaat de hele keten naar "aan" gaan, totdat de initialisatie afgelopen is.

Of zie ik het helemaal mis? Aangaande MosFets ben ik nog heel erg bleu, bijna maagdelijk... :) Excuus als ik stomme vragen stel. Een voorbeeldschemaatje is heel erg welkom.

hoe beter de vraag geschreven, zoveel te meer kans op goed antwoord
benleentje

Golden Member

Een fet heeft ook een schakeldrempel en de meeste fets krijg je 3,3V niet eens in geleiding of althans een heel klein beetje. Als je dan een fet neemt die bij 2V nog niet aan is maar bij 5V wel genoeg voor jouw belasting dan zou dat dus in theorie goed moeten gaan.
Maar je zit dan wel met een situatie waarin de fet wel een klein beetje open staat en er dus wel lekstroom is.

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

Op 13 januari 2018 21:01:27 schreef big_fat_mama:
Maar wat als er een 5V-belasting aan en uit dient geschakeld? Moet ik nu vanuit de Arduino een npn-transistor of een n-channel FET naar massa aansturen, die dan de P-channel MosFet aanstuurt? Dan zit ik wel met een vervelende trap inversie ertussen, bij inschakelen zijn de Arduino-pennen ingangen en dus "hoog" en dus gaat de hele keten naar "aan" gaan, totdat de initialisatie afgelopen is.

Ja eigenlijk wel. Nee, geen inversie meer; hoog is aan, laag is uit.

Nee, arduino pinnen gaan bij aanzetten niet hoog. Ze gaan hoog-impedant: inputs. Dan KUNNEN ze hoog worden, maar meestal zullen ze laag zijn en/of blijven. Als je een gedefinieerd gedrag wil bij het opstarten kan je het beste een pulldown of pullup monteren al naar gelang wat je wilt. (bijvoorbeeld bij een "de gebruiker drukt op een tijdelijk knopje om de boel aan te zetten en de CPU pin kan de boel aanhouden of weer uitzetten wil je de default misschien "aan" zodat de CPU z'n tijd kan nemen om op te starten en zichzelf aan te houden.

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

Zie Paulinha_B

OK, dank je. Daarmee kan ik aan de slag. Als ik iets te melden heb dan zal ik het doen - maar het kan wel effe duren.

Wat betreft het "hoog" gaan in input-mode: dat staat me nog ingebeiteld uit de tijd van de TTL en ik had altijd begrepen dat (de meeste) microcontrollers dat gedrag navolgen. Maar inderdaad, een pull-up of pull-down zou daar weg moeten mee weten.

[Bericht gewijzigd door big_fat_mama op zaterdag 13 januari 2018 21:46:57 (52%)

hoe beter de vraag geschreven, zoveel te meer kans op goed antwoord

Je kunt ook een FET driver gebruiken ipv een npn transistor. Bijvoorbeeld een TC427. Die inverteert niet en schakelt gegarandeerd by 0.8 en 2.4V op de ingang. Dus die kun je direkt aansturen vanuit de raspberry.

https://www.eoo-bv.nl/zoeken?controller=search&orderby=position&am…

Op 13 januari 2018 21:01:27 schreef big_fat_mama:
Volgend op het draadje (dat ik zo gelijk niet kon terugvinden) over het aan- en uitschakelen van (neem nu maar) een Raspberry PI door (neem nu maar) een Arduino

Aangezien dat wellicht mijn draadje was, bij deze de link ter referentie moest jij of iemand anders het nodig hebben.
Pi Zero aan/uitschakelen met een Arduino

Marlon

big_fat_mama

Zie Paulinha_B

Dat was'm inderdaad, @Marlon, dank!

hoe beter de vraag geschreven, zoveel te meer kans op goed antwoord

Als je iets aanstuurt vanuit een micro i/o output zou ik stellen dat je ALTIJD een pullup/down moet toevoegen, tenzij de logica die je aanstuurt dat zelf al heeft. Immers, je weet nooit precies wat die i/o doet tussen het moment van inschakelen en het configureren als output door je firmware. De pullup die vaak wel in micros zit is zo hoogohmig dat het signaal alsnog alle kanten op kan.

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

Nou, dat hangt af van wat je er aan hangt. Een klant van mij zet mijn modules in waarbij ie schakelaars op een aantal meters van m'n bordje met lange draden aan m'n bordje hangt. Dan is het met de ingebouwde pullups inderdaad onbetrouwbaar en moeten er externe bij.

Maar voor een drukknop gewoon binnen 5cm van de CPU op hetzelfde bordje heb ik nog nooit een storing gezien. (ook niet met een 10A powerswitching mosfet installatie er naast :-) ).

Bij AVR en PIC microcontrollers, alsmede bij de STM32 familie ken ik alleen de "wordt hoogohmig" variant. Bij ALTERA kan het zijn dat er IOs zijn die de pullup activeren. Bij andere (heftige) ARM cpus heb ik wel eens gezien dat er een zwik vaniedere variant zijn: hoogohmig, pullup en pulldown. Dan kan je kiezen als je een signaal hebt wat iets vereist.

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

Special Member

De nieuwere pics hebben allemaal interne pull-ups en pull-downs. Hoogohmig kon je ze allemaal al schakelen.
Outputs zijn als push-pull of open drain te schakelen.

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

@rew: ik heb m'n post voor je aangepast. We hebben het hier over een output die een fet aanstuurt. Voor inputs is het een ander verhaal, hoewel ik dan toch zou kiezen voor een externe pull maar strikt genomen is het niet altijd nodig dan.

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