Wat is het verschil tussen een buck converter, een linear voltage regulator en een logic level converter ?

Voltages_converterenWaarschuwing vooraf: dit is een nogal technisch verhaal, maar zoals ik wel eens vaker uitleg gebruik ik dit weblog juist ook om onderwerpen te bewaren die ik maar heel af en toe nodig heb en dan hier zelf weer gemakkelijk terug kan vinden.

En andere waarschuwing: ik ben geen elektronica-man. Ik doe meestal maar wat, heb het over stroom die uit een stopcontact komt en zo. Dus “be kind!”. 🙂

Ok, het verhaal dan. De afgelopen 2 weken had ik eindelijk weer eens tijd om met mijn Arduino’s aan de slag te gaan (en ze in te zetten als weerstation en als schakelstation voor de kerstboom). Daarbij had ik ook een aantal ESP8266’s binnen gekregen (waarvan er nu eentje als grondvochtigheidsmeter voor een plant hier in de woonkamer werkt). Maar Maar dat zorgde er ook weer eens voor dat ik te maken kreeg met de vraag: 5V of 3,3V?
Ik wist dat de Raspberry Pi op zijn GPIO poorten gebruik maakt van 3,3V. De Arduino gebruikt 5V. En de ESP8266 blijkt meer overeen te komen met de Raspberry Pi en gebruikt ook 3,3V voor de GPIO.
Als voedingsbron nemen ze echter allemaal 5V. Niet zo moeilijk als je daarbij gebruik maakt van dezelfde adapters als voor het opladen van je smartphone (gelukkig hebben alle drie de devices in mijn geval een micro-USB aansluiting).

Tot zover helder. Maar waar het dan even wat ingewikkelder wordt is als:

  • je een externe voedingsbron hebt die niet netjes 5V is (bv omdat je een accu of batterijen gebruikt)
  • je sensoren wilt gebruiken op de ESP8266 die 5V verwachten terwijl de ESP8266 maar 3,3V levert op de GPIO poorten of
  • je sensoren wilt gebruiken die een 5V datasignaal terug geven naar de ESP8266 (ook niet fijn)
  • je sensoren wilt gebruiken op een Arduino die een 3,3V datasignaal verwachten (terwijl de Arduino een 5V datasignaal geeft).

Het blijkt dat het sowieso om verschillende uitdagingen gaat.  Eerst maar eens het aansluiten van de ESP8266 of Arduino (of Raspberry Pi) op een accu of batterijen. Alle drie de apparaten verwachten 5V. Die kun je rechtstreeks via de pinnen aansluiten, dus een verbinding met een batterij maken is niet zo moeilijk. Maar gebruik je ‘gewone’ batterijen dan heb je het meestal over veelvouden van 1,5V (of 1,2V bij oplaadbare batterijen). Zet ik er 4 in serie dan kom ik op 6V of 4,8V waarbij dat volledig opgeladen waarschijnlijk net wat hoger is en tijdens het ontladen zakt.
Je wilt er dus meer, bijvoorbeeld 6 of 8 in serie, maar dan kom je bij een voltage dat te hoog is om zomaar op de Arduino aan te sluiten.  Gebruik je de accu van een auto, dan zit je bijvoorbeeld op 12V.

Je kunt dat voltage terug brengen naar een constante 5V middels een linear voltage regulator. In het onderstaand filmpje kun je zien hoe je zelf een telefoonoplader zou kunnen bouwen die werkt op een 12V accu. Het principe voor een Arduino is gelijk.

Het voordeel van zo’n linear voltage regulator, zeker in combinatie met de getoonde condensatoren is dat het uitgangsvoltage mooi constant is. Dat is bijvoorbeeld relevant als je 433Mhz zenders/ontvangers gebruikt op je ESP8266. Die zenders/ontvanger zijn namelijk gevoelig voor te lage spanning, en de ESP8266 levert maar 3,3V aan de zenders/ontvangers. Als je een externe voeding hebt van bv 9V, dan kun je die via een linear voltage regulator naar een constante 5V terug brengen en de zender/ontvanger zo rechtstreeks voeden. Belangrijkste nadeel van zo’n linear voltage regulator is dat hij erg inefficiĂ«nt is. Zoals je in het filmpje kunt zien wordt er veel warmte geproduceerd, afhankelijk van het verschil in voltage en de stroomsterkte.

En daar komt dan de buck converter van pas. Die buck converter is een heel efficiĂ«nte manier om voltages te verlagen. Hierbij wordt bijna geen warmte geproduceerd. Wel is het zo dat er meer “ruis” geproduceerd wordt dan bij de linear voltage regulator. Dus voor een Arduino of ESP8266 is het een prima manier om er voor te zorgen dat ze een constante 5V krijgen, maar voor je 433Mhz zender/ontvanger wil je deze dan weer niet gebruiken.

Duur zijn beiden niet, je kunt ze heel goedkoop vanuit China laten komen als je niet teveel haast hebt. Zie bijvoorbeeld 10 linear voltage regulators  voor €1,12 of 10 buck converters voor €6,43 (prijzen kunnen variëren/wisselen). Daarbij wel de waarschuwing dat je via die kanalen iets minder garanties hebt over de kwaliteit van de componenten. Zie bijvoorbeeld dit filmpje waarbij een aantal goedkope KIS-3R33S DC-DC converters getest worden:

Die zitten o.a. in dit soort componenten verwerkt. Betekent niet per definitie dat de gelinkte component (ook) slecht zijn, maar omdat het meer aan het ontwerp lijkt te liggen (en de kwaliteit van de gebruikte onderdelen) is de kans groot dat ook andere componenten aan de uiteinden van de opgegeven waarden afwijkend gedrag kunnen vertonen.

Goed, dat terzijde, we hebben de eerste en de tweede vraag besproken. We weten hoe we een Arduino op een accu of batterij kunnen laten werken Ă©n hoe je een externe component die 5V voeding verwacht ook samen kunt laten werken met een ESP8266.
De andere twee vragen hebben te maken met de spanning die gebruikt wordt om via de GPIO poorten een 1 weer te geven. Bij de Arduino is dat 5V, bij de ESP8266 wordt daar 3,3V voor gebruikt. Vaak is het niet zo’n probleem en ziet de component een 3,3V signaal ook wel als een “aan” of 1. Maar als een component via een externe voeding gevoed wordt met 5V, dan kan er ook een 5V signaal terug komen. Dat vindt de ESP8266 niet fijn.

Daar blijkt gelukkig ook een oplossing voor te zijn:

Logic_Converter_2

Dit is een logic converter die het signaal van 3,3V naar 5V en omgekeerd omzet. De afbeelding laat er eentje zien met 4 kanalen. Ook deze zijn niet vreselijk duur (€3,28 voor 5 stuks) als je weer even kunt wachten.

En zo hebben een buck converter, een linear voltage regulator en een logic level converter elk hun eigen functie en taak als je met elektronica aan de slag gaat. 🙂