12V naar 5V brengen

Voor mijn arduino moet ik een DC signaal van 12V converteren naar 5V zodat ik deze kan aanbieden op de I/O pins. Deze 12V wordt geleverd door een externe adapter.
Nu zijn daar verschillende manieren voor. Die heb ik hieronder geschetst.

Nadeel: als de 12V iets hoger is, dan stijgt ook de 5V.

Wat ik begrepen heb is de max spanning voor een i/o pin, 5.5V
Bij silicium diode zal de spanning 5.7V worden
Bij skotchy diodes zal de spanning 5.3V worden.

Mijn voorkeur gaat uit naar schakelen met een transistor.
1. omdat ik deze in groten getale heb liggen.
2. de 5V is dan ook echt de 5V van de arduino zelf. Ongeacht de omliggende componenten.
Nadeel kan wel zijn dat ik met deze methode de meeste onderdelen nodig heb.

Zie ik zaken over het hoofd, of zijn er andere suggesties die wellicht beter zijn? Ik hoor het graag.

Om storingen enzo te vermijden gebruik een optocoupler.

Weerstandsdelertje is het simpelst, dus 1

Hoe hoog is die 12V in het ergste geval? Je kan t ook maken op +4.5V, ook dat is als een logische 'hoog' gezien door een arduino. Dan heb je nog iets marge om de input >12V te doen.

Alternatief is een optocoupler. Dan ben je ook galvanisch gescheiden van de Arduino en ben je ook veel minder storingsgevoelig

De 2 circuits delen dezelfde GND. De arduino wordt namelijk gevoed door circuit 1.
In dit geval is niet meer galvanisch gescheiden. Is dit een probleem? En is het geheel dan nog steeds minder storingsgevoelig?

Zomaar met optocouplers gaan strooien is geen oplossing en niet nodig; er is niet zoiets als "algemene storing" die je daarmee oplost. Als je de grounds toch aan elkaar gaat knopen voegt een optocoupler in de meeste gevallen weinig toe, omdat er dan toch geen galvanische scheiding is.

Bij je oplossing met die transistor gaat er nog wat mis; je gaat de input pin alsnog optillen, omdat er door de basis-emitter overgang van de transistor een stroom gaat lopen, vanaf de 12V ingang en door de basis diode. Daarbij gaat die transistor stuk als de 12V ingang ooit meer dan ongeveer 7V negatief gaat, mogelijk door een ESD puls of zo. Eigenlijk is zo'n transistor gevoeliger voor schade dan de pin van de microcontroller.

De weerstandsdeler is het gemakkelijkst, en die weerstanden kun je vrij groot kiezen, waarmee de maximale stroom door de input pin beperkt blijft, als de spanning op de 12V ingang tenminste niet idioot hoog kan worden. Met 100k in serie blijft die microcontroller echt wel heel. In je Arduino zit ook al een diode naar de 5V, dus dat is hetzelfde als jouw 2de oplossing.

Een andere nette manier is weerstandsdeler -> zenerdiode -> weerstand -> input pin. De zenerdiode beperkt de spanning, en die laatste weerstand beperkt vervolgens de stroom die naar de ingangspin kan gaan lopen.

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

Die diode van voorbeeld 2 zit al ingebouwd in de processor. Dus een externe weerstand-deler is voldoende.

Wel zorgen dat de weerstanden groot genoeg zijn, anders kun je de 5V omhoog trekken, en dat is niet de bedoeling. Maar een deler met 10K onder en 12K boven lijkt me wel voldoende. (0.5 mA). Hogere weerstanden mag ook.

Hoeft ook niet erg nauwkeurig. Elke spanning boven 3V is al hoog.

Oke, dank alle. Ik zal eerst eens gaan testen met de spanningsdeler.

Logisch 1 op een Arduino is 0.6xVCC, dat is bij 5V dan 3.12V
Als je de spannings zoals in afbeeelding 1 uitrekent zodat je hier wat ruim boven zit is het ok.

Jaren (25 ofzo) geleden bracht atmel een "Application Note" voor nuldoorgang detektie aan 230V netspanning met slechts een enkele serie weerstand. De geintegreerde ESD diodes zijn blijkbaar goed genoeg om tot ong. 4mA continu naar Vcc te geleiden (bij stroomzuinige schakelingen: die 4mA moet wel ergens naartoe).

Atmel maakte die "Application Note" nadat Microchip een vergelijkbare AN had gemaakt voor hun PIC16F84.

In datasheets staat meestal weinig over deze diode's, en meestal worden alleen grenzen aangegeven waarbij deze diode's nog niet geleiden. (Vandaar dus iets minder dan een diode drempel boven de voedingspanning van de uC).

Maar afhankelijk van waar die 12V vandaan komt zal ik eerder aan wat extra componenten denken. Misschien een zener, misschien een condensator om te filteren (vooral bij lange draden). Misschien een extra LC filter met Spark-Gap met robuste TVS diodes. 't is allemaal afhankelijk van de toepassing.

Voor simpel wat experimenteren op een Breadboard kom je al een heel eind met een spanningsdeler. Als je vrij hoogomige weerstanden gebruikt, dan kun je aardig wat overspanning verdragen voordat de ESD diode's het begeven, en je kunt de spanningsdelere natuurlijk ook uitrekenen op b.v. 3V aan de uitgang bij 12V aan de ingang. (Genoeg voor logische ingangs poort) of de ADC gebruiken, waarmee je nog een grotere verhouding tussen de weerstanden kunt gebruiken.

"de diode is al ingebouwd"....

Sporadisch kom je documenten tegen waar fabrikanten de specs daarvan publiceren. Dan blijkt ie iets van 10mA te kunnen hebben. Het nadeel van 10mA is dat als je schakeling minder dan 10mA nodig heeft, de 5V voeding wel eens 6, 7 of 8V kan worden.

Omdat de max lekstroom van een input rond de 2 µA is, is een stroompje van zeg 10 µA voldoende om 100% zekerheid te hebben dat je input hoog wordt.

7V / 10µA = 700kOhm.

Neem een 560kOhm of 470kOhm weerstand en je hebt maar 1 component nodig: het weerstandje. Je moet je wel realiseren dat dit niet kan als je schakeling zeer zuinig kan zijn: Minder dan 20µA gebruiken. Dat is lastig te halen met een arduino.

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

Nou misschien een klein beetje voorgeschiedenis van mijn project. Wellicht wordt het antwoord op de vraag dan iets makkelijker.
Voor een zelfbouw gitaar effecten switcher, wil ik de status van de output relais weergeven. Het idee was om dit met ledjes te doen die parallel over de relais spoelen staan.
Echter, om praktische redenen en plaatsgebrek kan/wil ik geen status leds voor de uitgangen gebruiken.
In plaats daarvan wil ik een OLED-scherm gebruiken.
Ik (met hulp voor forummembers) heb hiervoor software geschreven. Op dit display zie je de 8 loops met de 2 amp outputs.
Dit geeft vervolgens aan welke uitgang is geselecteerd.

Dus wat gaat er gebeuren; de leds worden vervangen door een arduino.
Zoals hierboven is te zien, is de PCB al bestückt en wel. Hiervan is nog uitgegaan van aansturing van leds.
Hieronder een klein stukje van het schema. Op connector J25 komt een bandkabel die naar de leds zou gaan. De 12V (pin 1) wordt door gekoppeld naar alle anodes, en de kathode van led 1 gaat naar pin 2, led 2 naar pin 3 enz.. Voor output 1 heb ik deze er even ingetekend.
Zoals je ziet, wordt deze geschakeld door een ULN2803 met daarachter een 1k weerstand.

Maar nu wil ik dus Pin 2 t/m 11 naar inputs van de arduino brengen. Deze laat vervolgens op een scherm de status van de outputs zien.
Ik wil eigenlijk niets wijzigen op de PCB. Het enige wat ik moet doen is nog een GND brengen naar de J25. Dan zou ik de arduino kunnen voeden met de 12V. Het enige wat ik dan nog moet doen, zijn de uitgangssignalen omlaag brengen naar 5V.
Dit alles komt op een piggyback board wat op connector J25 geschoven kan worden. Hierdoor kan ik altijd nog wisselen naar traditionele leds, mocht ik dat later nog ooit willen.

Dus op de piggyback board komt een Arduino en een netwerkje om de 12V te kunnen accepteren op de i/o van de Arduino.
Is dit dan te doen met een enkele weerstand zoals Rew aangeeft, of moet ik minimaal 2 weerstanden per ingang gaan gebruiken, om een spanningsdeler te maken? Of toch nog uitgebreider?
Wens is wel om het zo compact mogelijk te houden.

Gisterenavond getest met een simpele spanningsdeler. Dit lijkt goed te werken, dus hier ga ik voor. Bedank voor de hulp!

Effe voor de duidelijkheid: die laatste schakeling met dat NPN torretje werkt niet. Geheid blaas je de cpu op.

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

Honourable Member

De schakeling met de NPN-tor is overbodig, maar hij blaast niet de CPU op. In tegendeel, de uitgangsspanning wordt keurig 5,0 V.

Als de ingangsspanning boven de 5,6 V of zo komt, gaat de BC-diode in geleiding, zodat de ingang stroom gaat leveren aan de 5V-voeding. De weerstand aan de ingang bepaalt daarbij de stroom.
Wat dat betreft werkt de schakeling net zo als die met de diode naar de 5V.
De spanningsval over de BE-diode zorgt er vervolgens voor dat de spanning naar de CPU begrensd wordt op ca. 5,0 V - iets netter dan de diode-oplossing dus. :)

Maar, inderdaad, aan te bevelen is de schakeling niet; hij heeft geen voordelen.

Keramisch, kalibratie, parasitair: woordenlijst.org

Ik zie nu dat de collector op 5V hangt, inderdaad dus minder gevaarlijk de basisweerstand moet de boel nu redden.

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