Öppen kollektor-utgång
Öppen kollektor är en vanlig typ av utgång, som finns på en del sensorer, många komparatorer och också vissa logikkretsar.
Öppen kollector-utgång (open collector) bygger på en intern transistor, som fungerar som switch till jord. Den avger alltså ingen signal själv. När transistorn är avstängd är strömbrytaren öppen, och utgången är i ett högimpedivt tillstånd (Hi-Z). Den motsvarar då en öppen krets. När transistorn aktiveras så dras utgången låg.
På engelska heter utgången Open Collector. När transistorn är en N-MOSFET kallas utgången ibland Open Drain, men eftersom funktionen är likadan (sett utifrån) så använder man ofta namnet öppen kollektor för båda typerna. Symbolen för öppen kollektor är en diamant med ett streck under: ⎐.
Hur ska man koppla?
För att få ut en signal från en öppen kollektor-utgång behövs bara ett motstånd. Motståndet kopplas från OC-utgången till positiv spänning, och kallas för ett pull-up-motstånd. Utgången kan sedan kopplas till en mikrokontroller, men går även att koppla till t.ex. ett relä som slår på eller av en apparat (om transistorn i sensorn klarar reläets strömförbrukning). Nedan visas hur man kopplar en sensor med öppen kollektor-utgång till en mikrokontroller.
Lämpliga motståndsvärden
Att välja resistans för pullup-motstånd är inte så svårt. 10kOhm är ett vanligt värde, som fungerar bra med både 3.3V och 5V. För låg resistans ger bara högre strömförbrukning. Högre värden sparar ström, men alltför höga värden kan orsaka andra problem. T.ex. så kan de ge en hög stigtid, eftersom de bildar ett RC-filter med strökapacitans på ingången. 10k är en bra avvägning!
Kan man använda de interna pullup-motstånden?
De flesta mikrokontrollers har interna pull-up-motstånd. I Arduino väljer man dem med pinMode(pinNumber, INPUT_PULLUP);. De fungerar precis som externa pull-up-motstånd, och är kopplade till kretsens matningsspänning. Det går bra att använda dem istället för externa motstånd. Alla interna pull-ups är dock inte likadana, så om du märker att det inte verkar funka fullt ut är det en bra idé att använda externa motstånd – det är knappast dyrt, och det är lätt att bekräfta funktionen med en multimeter.
Nivåomvandling med öppen kollektor
En fördel med öppen kollektor-utgång är att det är enkelt att göra nivåomvandling. En sensor (eller t.ex. komparator) som spänningsmatas med t.ex. 24V kan enkelt användas ihop med mikrokontrollers och annan elektronik med betydligt lägre logiknivå. Eftersom utgången aldrig skickar ut någon spänning riskerar man inte att den känsliga elektroniken skadas. Man väljer helt enkelt vilken spänning pull-up-motståndet ska kopplas till, förslagsvis samma spänning som mikrokontrollern matas med. Signalen från sensorn blir då t.ex. 3.3V eller 0V, men aldrig 24V.
På samma sätt kan man anpassa spänningen till reläer med högre spolspänning. Man kan t.ex. använda en komparator med en låg matningsspänning på 5V, men ändå ansluta pull-up-motståndet till upp till 50V, och alltså används reläer med 24 eller 48V spolspänning. Detsamma gäller såklart också sensorer, förutsatt att den interna transistorn klarar spänningen.
Logiken är inverterad
Utgången från sensorer med öppen kollektor är normalt inverterad, så kallad aktiv låg. När transistorn är avstängd är motståndet kopplat till mikrokontrollerns utgång, vilket ger en hög spänning. När en sensor ger utslag (t.ex. när en närhetssensor känner av ett föremål) aktiveras transistorn, vilket ger en låg spänning. Även om detta kan verka förvirrande så är det inget ovanligt, och enkelt att använda i programkod. För en Arduino räcker det med if (sensorInput == LOW) {...} för att programmet ska reagera på låg spänning.
Utgångar med aktiv låg brukar kallas för NPN NO. NO är det man ska titta efter, eftersom det visar vilken typ av logik som används. NO står för Normally Open, och transistorn är alltså normalt avstängd (öppen), när sensorn inte är aktiverad. När sensorn upptäcker det den ska upptäcka (föremål, eller vätska) aktiveras den. NO innebär alltså att logiken är aktiv låg.
Wired logic
Eftersom OC-utgångar inte skickar någon spänning kan man enkelt kombinera flera utgångar och få så kallad wired logic. Om man har flera sensorer med NPN NO-utgång får man en wired OR-funktion (logisk ELLER). Alla utgångar kan därför kombineras på en buss och kopplas till en och samma mikrokontrolleringång (eller relä, osv …), utan att påverka varandra. Så fort någon av dem aktiveras kommer spänningen från pull-up-motståndet dras låg. Det här är användbart om man t.ex. vill larma om någon av flera olika sensorer aktiveras. Man kan till och med kombinera olika typer av sensorer, men även komparatorer eller logikkretsar, så länge alla har OC-utgång. Begränsningen är såklart att man inte kan veta vilken sensors som har dragit ner spänningen, eller läsa av flera sensorer samtidigt. Men om man bara behöver veta att sensor A eller B eller C har aktiverats, så är det en smidig lösning, som dessutom sparar ingångar på mikrokontrollern.
När man kopplar flera utgångar parallellt på det här sättet behöver man inte flera pull-up-motstånd. Tvärtom, så skulle flera motstånd ge en lägre resistans (fyra 10k skulle t.ex. ge 2.5k), med högre strömförbrukning som följd.
För OC-utgångar med NC (aktiv hög) får man istället AND-logik. Det innebär att utgången är låg till dess att alla sensorer är aktiva och ger en öppen krets.
Simulering ↗
Simulering av en sensor med öppen kollektor-utgång, med pull-up-motstånd. Sensorn drivs på 12V, men är kopplad till en kontroller med 5V logiknivå. Klicka på brytar-symbolen ovanför ordet Sensor.

