Logic level shifter - hoe werkt die nou praktisch?

Pagina: 1
Acties:

Vraag


Acties:
  • 0 Henk 'm!

  • Saturnus
  • Registratie: Februari 2005
  • Niet online
Er staat uitleg op internet, maar er zijn vier redenen dat ik daar niet verder mee kom in het snappen van mijn situatie.
1) Ik ben nog steeds een elektronica-beginner.
2) Ik ben praktisch ingesteld.
3) Het gebruiksdoel op internet is vaak buscommunicatie, niet leds aansturen.
4) Ik heb vreemde praktijkresultaten.

Ik wil graag een rgb led aansturen via een ESP32, maar niet de lading op die ESP hebben, dat gaat bij voorkeur op de voeding. (Optie 2 @ https://electronics.stackexchange.com/a/213058)

LV1 = ESP pin voor rood
LV2 = ESP pin voor groen
LV = ESP 3,3V pin
GND = ESP ground
LV3 = ESP pin voor blauw
LV4 = leeg

HV1 = Led rood
HV2 = Led groen
HV = Voeding 5V
GND = Voeding ground
HV3 = Led blauw
HV4 = leeg

ESP dev board krijgt ook van die voeding zijn 5V. In de uiteindelijke versie wordt dit een 'bare ESP32' op 3,3V zonder dev board eromheen.

ESPHome:
output:
  - platform: ledc
    pin: 13
    id: output_led_red
  - platform: ledc
    pin: 15
    id: output_led_green
  - platform: ledc
    pin: 2
    id: output_led_blue
  - platform: ledc
    pin: 5
    id: output_lv

light:
  - platform: monochromatic
    id: light_led_red
    name: "Dev LED Red"
    output: output_led_red
  - platform: monochromatic
    id: light_led_green
    name: "Dev LED Green"
    output: output_led_green
  - platform: monochromatic
    id: light_led_blue
    name: "Dev LED Blue"
    output: output_led_blue
  - platform: monochromatic
    id: light_lv
    name: "Dev LV"
    output: output_lv


En vervolgens kunnen de RGB kanalen inderdaad ingesteld worden.

Vragen
* Is de belasting nu wel echt van de ESP af? Lijkt er toch op van niet:

* Met een multi-meter meet ik load (Ampère) op de rgb led, heel logisch, ook op de GND aan de 'hoog kant', maar niet op de HV. Is dat niet vreemd? Waar komt de stroom voor de led dan vandaan?

* Als ik zonder led meet, dan komt er 5V op de kanalen aan de 'hoog kant'. Dit is ruim boven de specificatie van de led. Maar als ik de led er toch op aansluit, gaat deze niet kapot...waarom niet?

* Als de boel aanstaat en ik trek HV (5V) eruit dan blijft het werken. Waarom?

Beste antwoord (via Saturnus op 09-09-2022 19:56)


  • Tom-Z
  • Registratie: Augustus 2010
  • Laatst online: 08:42
Heb je een datasheet van die level shifter? Anders is het voor ons ook maar gissen. Heb je precies die van sparkfun?

Het korte antwoord is dat die stackexchange post niet klopt en dat deze level shifter (die van sparkfun) niet geschikt is voor je doel. Wat je nu doet kan je ESP en/of je LEDs beschadigen.
Saturnus schreef op woensdag 7 september 2022 @ 23:42:
* Is de belasting nu wel echt van de ESP af?
Nee. Het grootste deel van de stroom komt alsnog van de ESP.
* Als de boel aanstaat en ik trek HV (5V) eruit dan blijft het werken. Waarom?
Er zitten interne diodes in de logic level shifter die zodra HV te ver inzakt stroom doorlaat van LV1/2/3/4 naar HV1/2/3/4.
* Als ik zonder LED meet, dan komt er 5V op de kanalen aan de 'hoog kant'. Dit is ruim boven de specificatie van de LED. Maar als ik de LED er toch op aansluit, gaat deze niet kapot...waarom niet?
Omdat de logic level shifter niet berekend is op het (op die manier) aansturen van een LED, en door wél zo een LED aan te sluiten maak je een soort kortsluiting. Deze shifter kan maximaal 0.5 mA uitleveren op 5 V. Omdat je LED veel meer dan dat zou trekken op 5 V, zakt het voltage in. Wat er dan gebeurt is dat, zodra het voltage onder 3.3 V zakt, de ESP extra stroom gaat leveren die via die eerder genoemde diodes.

Een LED moet je in principe sowieso altijd met een geschikte serieweerstand aansturen, nooit zomaar op een voltagebron aansluiten.

Alle reacties


  • DurkVell
  • Registratie: Augustus 2011
  • Laatst online: 29-05 23:14
Waarom wil je de rgb-led niet direct op de esp aansluiten?

  • Saturnus
  • Registratie: Februari 2005
  • Niet online
DurkVell schreef op donderdag 8 september 2022 @ 00:06:
Waarom wil je de rgb-led niet direct op de esp aansluiten?
Dat kan en lijkt stabiel in een andere build die ik test. Maar stel nou dat dat onmogelijk is... Deze configuratie met logic level shifter zou moeten werken...

  • skimine
  • Registratie: Januari 2016
  • Nu online
Misschien goed om even een diagrammetje te tekenen voor de duidelijkheid?

Acties:
  • Beste antwoord
  • 0 Henk 'm!

  • Tom-Z
  • Registratie: Augustus 2010
  • Laatst online: 08:42
Heb je een datasheet van die level shifter? Anders is het voor ons ook maar gissen. Heb je precies die van sparkfun?

Het korte antwoord is dat die stackexchange post niet klopt en dat deze level shifter (die van sparkfun) niet geschikt is voor je doel. Wat je nu doet kan je ESP en/of je LEDs beschadigen.
Saturnus schreef op woensdag 7 september 2022 @ 23:42:
* Is de belasting nu wel echt van de ESP af?
Nee. Het grootste deel van de stroom komt alsnog van de ESP.
* Als de boel aanstaat en ik trek HV (5V) eruit dan blijft het werken. Waarom?
Er zitten interne diodes in de logic level shifter die zodra HV te ver inzakt stroom doorlaat van LV1/2/3/4 naar HV1/2/3/4.
* Als ik zonder LED meet, dan komt er 5V op de kanalen aan de 'hoog kant'. Dit is ruim boven de specificatie van de LED. Maar als ik de LED er toch op aansluit, gaat deze niet kapot...waarom niet?
Omdat de logic level shifter niet berekend is op het (op die manier) aansturen van een LED, en door wél zo een LED aan te sluiten maak je een soort kortsluiting. Deze shifter kan maximaal 0.5 mA uitleveren op 5 V. Omdat je LED veel meer dan dat zou trekken op 5 V, zakt het voltage in. Wat er dan gebeurt is dat, zodra het voltage onder 3.3 V zakt, de ESP extra stroom gaat leveren die via die eerder genoemde diodes.

Een LED moet je in principe sowieso altijd met een geschikte serieweerstand aansturen, nooit zomaar op een voltagebron aansluiten.

  • Saturnus
  • Registratie: Februari 2005
  • Niet online
skimine schreef op donderdag 8 september 2022 @ 00:24:
Misschien goed om even een diagrammetje te tekenen voor de duidelijkheid?
Afbeeldingslocatie: https://tweakers.net/i/bw_ZIJ4c7UF840a9cCCg7Tpy6SQ=/full-fit-in/4000x4000/filters:no_upscale():fill(white):strip_exif()/f/image/KsgdeKsHFkhYpqHedFjnsyxK.png?f=user_large
:$
Tom-Z schreef op donderdag 8 september 2022 @ 00:46:
Heb je een datasheet van die level shifter? Anders is het voor ons ook maar gissen. Heb je precies die van sparkfun?
https://www.aliexpress.com/item/1972789887.html
"BSS138" wordt daar genoemd, maar dit lijkt copy-paste van SparkFun. In ieder geval, de specificaties staan hier: https://www.digikey.nl/en...tail/onsemi/BSS138/244210
Het korte antwoord is dat die stackexchange post niet klopt en dat deze level shifter (die van sparkfun) niet geschikt is voor je doel. Wat je nu doet kan je ESP en/of je leds beschadigen.


[...]

Nee. Het grootste deel van de stroom komt alsnog van de ESP.


[...]

Er zitten interne diodes in de logic level shifter die zodra HV te ver inzakt stroom doorlaat van LV1/2/3/4 naar HV1/2/3/4.


[...]

Omdat de logic level shifter niet berekend is op het (op die manier) aansturen van een LED, en door wél zo een LED aan te sluiten maak je een soort kortsluiting. Deze shifter kan maximaal 0.5 mA uitleveren op 5 V. Omdat je LED veel meer dan dat zou trekken op 5 V, zakt het voltage in. Wat er dan gebeurt is dat, zodra het voltage onder 3.3 V zakt, de ESP extra stroom gaat leveren die via die eerder genoemde diodes.
Dank voor de uitleg. De details snap ik niet helemaal, maar duidelijk dan dat dit niet werkt. Wat is de betere manier om de led wel aan te sturen via de ESP, maar niet de ESP als voeding te hebben?
Een LED moet je in principe sowieso altijd met een geschikte serieweerstand aansturen, nooit zomaar op een voltagebron aansluiten.
Dit vind ik ook lastig te begrijpen, maar dit is om de stroomsterkte te limiteren toch? Niet de spanning. Stel er is een 3,3V bron en de led heeft 3,3V nodig. Dan kan je toch geen weerstand plaatsen? Een 0 Ohm weerstand? Of is dat de reden dat je vaak 5V bronnen ziet voor 3,3V leds? Met daartussen weerstanden.

Zo moest ik er eens over denken in Saturnus in "Het grote ESP topic"
Saturnus schreef op zondag 24 juli 2022 @ 20:41:
Maar...moet ik nog een weerstand plaatsen?
Maximale voltage van de rgb led is 2.2V/3.2V/3.2V respectievelijk. Stroomsterkte 20mA. ESP kan de voltage op de pinnen limiteren aan de waarden van die led. Oftewel geleverde voltage is gelijk aan voltage over de led. Een 0Ω weerstand nodig, ehmmm.... wat dan? :?

[ Voor 10% gewijzigd door Saturnus op 09-09-2022 19:49 ]


  • Tom-Z
  • Registratie: Augustus 2010
  • Laatst online: 08:42
Saturnus schreef op donderdag 8 september 2022 @ 01:05:
[...]

Dank voor de uitleg. De details snap ik niet helemaal, maar duidelijk dan dat dit niet werkt. Wat is de betere manier om de LED wel aan te sturen via de ESP, maar niet de ESP als voeding te hebben?
Dit kan je doen met een enkele transistor, zie bijvoorbeeld hier. De BSS138 van je logic level shifter is daar heel geschikt voor, die kan je lossolderen en gebruiken.
Dit vind ik ook lastig te begrijpen, maar dit is om de stroomsterkte te limiteren toch? Niet de spanning. Stel er is een 3,3V bron en de LED heeft 3,3V nodig. Dan kan je toch geen weerstand plaatsen? Een 0 Ohm weerstand? Of is dat de reden dat je vaak 5V bronnen ziet voor 3,3V LEDs? Met daartussen weerstanden.
Spanning en stroomsterkte hangen (vrijwel) altijd samen. De stroom door een LED is te benaderen als een exponentiële functie van de spanning die er over staat. Om de stroomsterkte te limiteren moet je (ook) de spanning verminderen, en dat is wat een weerstand doet. Die zorgt namelijk voor een vermindering van de spanning proportioneel aan de stroom die er doorheen loopt.

Een 3.3 V spanningsbron bestaat niet. Er zit altijd een beetje tolerantie dat de spanning iets hoger/lager kan zijn. Daarom gebruikt men eigenlijk altijd een iets hogere spanning dan de Vf van de LED en een weerstand, omdat je anders niet voldoende precies de stroomsterkte kan regelen. In de praktijk kom je er wel mee weg denk ik (een 3.3 V LED op een 3.3 V spanningsbron), maar netjes is het niet.

Als je een LED hebt met als specificatie 3.3 V en 20 mA die je wil aansturen met 5 V, dan moet je een weerstand hebben die bij het verschil aan spanning (5-3.3 = 1.7V) 20 mA doorlaat. Die moet dus 1.7/0.02 = 850 Ohm zijn.
Het mooie is dat als er een kleine variatie in spanning is, dit niet tot een sterke variatie in stroomsterkte leidt, terwijl dat (door het exponentiële gedrag van stroom door LEDs) bij een LED die direct op een spanningsbron aangesloten zou zijn, wel zo is.

  • memphis
  • Registratie: Oktober 2000
  • Nu online

memphis

48k was toen meer dan genoeg.

Je denkt dat LED's een spanning nodig hebben maar LED's werken met een stroom. Voor veel LED's is dit standaard 20mA
De level shifter die je wilt gebruiken is geen echte spanningsverhoger, je kunt gewoon het beste een simpele NPN transistor met een basisweerstand gebruiken of een N-channel FET.
https://arduino.stackexch...-using-a-transistor-tl188
En voor normale dingen is de BC547 het meest makkelijkst verkrijgbaar.

Je moet met een hogere spanning dan de LED werken en dan met een serieweerstand die de stroom begrensd. In de elektronica FAQ op dit forum kan je alles lezen hoe LED's te gebruiken.

Er zijn mensen die mij een GOD vinden


  • Brahiewahiewa
  • Registratie: Oktober 2001
  • Laatst online: 30-09-2022

Brahiewahiewa

boelkloedig

Saturnus schreef op woensdag 7 september 2022 @ 23:42:
...
Vragen
* Is de belasting nu wel echt van de ESP af? Lijkt er toch op van niet:
Jawel. Althans als je het zo aansluit al in je tekening, dan loopt er een aparte lijn naar je ESP en een aparte lijn naar je LED. De LED krijgt z'n stroom dus rechtstreeks van de voeding en niet via de ESP
* Met een multi-meter meet ik load (Ampère) op de RGB LED, heel logisch, ook op de GND aan de 'hoog kant', maar niet op de HV. Is dat niet vreemd? Waar komt de stroom voor de LED dan vandaan?
Zoals gezegd: de stroom voor de LED komt rechtstreeks uit de voeding. Maar het lijkt er op dat je niet precies weet hoe je amperes moet meten. Als je dat doet door je multimeter rechtstreeks aan de uitgang te plaatsen dan ben je bezig je logic-level-shifter op te blazen
* Als ik zonder LED meet, dan komt er 5V op de kanalen aan de 'hoog kant'. Dit is ruim boven de specificatie van de LED. Maar als ik de LED er toch op aansluit, gaat deze niet kapot...waarom niet?
Omdat je logic level shifter niet gemaakt is om LED's aan te sturen. Daar heb je geluk mee, anders zou je inderdaad de LED ook hebben opgeblazen
* Als de boel aanstaat en ik trek HV (5V) eruit dan blijft het werken. Waarom?
Dan wordt de LED wel gevoed vanuit de ESP en loop je het risico dat je die ook opblaast

QnJhaGlld2FoaWV3YQ==


Acties:
  • 0 Henk 'm!

  • Saturnus
  • Registratie: Februari 2005
  • Niet online
Tom-Z schreef op donderdag 8 september 2022 @ 01:22:
[...]

Spanning en stroomsterkte hangen (vrijwel) altijd samen. De stroom door een LED is te benaderen als een exponentiële functie van de spanning die er over staat. Om de stroomsterkte te limiteren moet je (ook) de spanning verminderen, en dat is wat een weerstand doet. Die zorgt namelijk voor een vermindering van de spanning proportioneel aan de stroom die er doorheen loopt.

Een 3.3 V spanningsbron bestaat niet. Er zit altijd een beetje tolerantie dat de spanning iets hoger/lager kan zijn. Daarom gebruikt men eigenlijk altijd een iets hogere spanning dan de Vf van de LED en een weerstand, omdat je anders niet voldoende precies de stroomsterkte kan regelen. In de praktijk kom je er wel mee weg denk ik (een 3.3 V LED op een 3.3 V spanningsbron), maar netjes is het niet.

Als je een LED hebt met als specificatie 3.3 V en 20 mA die je wil aansturen met 5 V, dan moet je een weerstand hebben die bij het verschil aan spanning (5-3.3 = 1.7V) 20 mA doorlaat. Die moet dus 1.7/0.02 = 850 Ohm zijn.
Het mooie is dat als er een kleine variatie in spanning is, dit niet tot een sterke variatie in stroomsterkte leidt, terwijl dat (door het exponentiële gedrag van stroom door LEDs) bij een LED die direct op een spanningsbron aangesloten zou zijn, wel zo is.
memphis schreef op donderdag 8 september 2022 @ 08:04:
Je denkt dat LED's een spanning nodig hebben maar LED's werken met een stroom. Voor veel LED's is dit standaard 20mA
[...]

Je moet met een hogere spanning dan de LED werken en dan met een serieweerstand die de stroom begrensd. In de elektronica FAQ op dit forum kan je alles lezen hoe LED's te gebruiken.
Dank. Ik snap het 'weerstand voor een led verhaal' iets beter.
Als de bron 5V zou zijn, zou ik dus technisch beter en flexibeler zitten.
Tom-Z schreef op donderdag 8 september 2022 @ 01:22:
[...]

Dit kan je doen met een enkele transistor, zie bijvoorbeeld hier. De BSS138 van je logic level shifter is daar heel geschikt voor, die kan je lossolderen en gebruiken.
memphis schreef op donderdag 8 september 2022 @ 08:04:

De level shifter die je wilt gebruiken is geen echte spanningsverhoger, je kunt gewoon het beste een simpele NPN transistor met een basisweerstand gebruiken of een N-channel FET.
https://arduino.stackexch...-using-a-transistor-tl188
En voor normale dingen is de BC547 het meest makkelijkst verkrijgbaar.
BSS138 zou ik niet weten hoe te gebruiken (misschien wel hetzelfde), maar de BC547 heb ik ook liggen.

#4 van https://www.hackatronic.c...ions-of-bc547-transistor/ nagemaakt op een breadboard, ook weerstanden gebruikt.
Afbeeldingslocatie: https://cdn.sparkfun.com/r/400-400/assets/learn_tutorials/1/9/3/npn-switch-led.png

Dit lijkt goed te werken, behalve dat de led flikkert; ~230 keer per minuut. Niet zeer storend maar wel te zien. Er staat bij belasting inderdaad 5V voor de weerstand en iets van 3V erna.

Nieuw probleem: De rgb leds die ik heb zijn cathode, dus de kleuren worden gestuurd via de positieve kant. Ook in het ESP topic begrepen dat die BC547 'de ground zijde van de led schakelt.'
Afbeeldingslocatie: https://hackster.imgix.net/uploads/attachments/697494/common_cathode_and_common_anode_rgb_led_6yyt7t5x44.png?auto=compress%2Cformat&w=680&h=510&fit=max

Toch geprobeerd om aan te sturen via de positieve kant door het vinden van https://electronics.stack...sistor-doesnt-turn-on-led. Maar dit lijkt dus niet goed te werken. In plaats van led ground op de collector en de emitter op voeding ground, de voeding 5V op de collector en emitter op led 'VIN' gedaan. Aansturen lukt maar het is duidelijk dat er geen 5V uit de emitter komt. Misschien lift de led weer op de ESP32...ik weet het niet precies, maar dit is niet goed.

Werkt de BC547 echt alleen aan de ground zijde of moet ik anders bouwen om drie hiervan met de cathode Rgb led te kunnen gebruiken?

Acties:
  • 0 Henk 'm!

  • Tom-Z
  • Registratie: Augustus 2010
  • Laatst online: 08:42
Ja, de BC547 is een NPN transistor werkt alleen als low-side switch. Om high-side te schakelen heb je een PNP transistor nodig. Dan kom je alleen weer in het probleem dat je om die PNP te schakelen een hoger voltage nodig hebt dan uit je ESP komt, en moet je en soort tweetrapsraket bouwen waarbij je een NPN gebruikt om de PNP te schakelen. Voorbeeld

Acties:
  • 0 Henk 'm!

  • memphis
  • Registratie: Oktober 2000
  • Nu online

memphis

48k was toen meer dan genoeg.

Als de LED flikkert heb je of er een wisselspanning op staan of je controler stuurt iets van een PWM uit. Het heeft niets met de schakeling te maken.

Er zijn mensen die mij een GOD vinden


Acties:
  • 0 Henk 'm!

  • Saturnus
  • Registratie: Februari 2005
  • Niet online
Tom-Z schreef op vrijdag 9 september 2022 @ 17:46:
Ja, de BC547 is een NPN transistor werkt alleen als low-side switch. Om high-side te schakelen heb je een PNP transistor nodig. Dan kom je alleen weer in het probleem dat je om die PNP te schakelen een hoger voltage nodig hebt dan uit je ESP komt, en moet je en soort tweetrapsraket bouwen waarbij je een NPN gebruikt om de PNP te schakelen. Voorbeeld
Helder! Dan moet ik anode rgb leds bestellen.
memphis schreef op vrijdag 9 september 2022 @ 18:26:
Als de LED flikkert heb je of er een wisselspanning op staan of je controler stuurt iets van een PWM uit. Het heeft niets met de schakeling te maken.
De ESP32 doet inderdaad pwm. Ik had al verwacht dat het probleem daar zit. In het opnieuw bouwen van de correcte opstelling lijkt het minder, maar er valt mee te leven.

Acties:
  • 0 Henk 'm!

  • memphis
  • Registratie: Oktober 2000
  • Nu online

memphis

48k was toen meer dan genoeg.

Als het kan moet je de PWM frequentie opschroeven.

Er zijn mensen die mij een GOD vinden


Acties:
  • 0 Henk 'm!

  • Saturnus
  • Registratie: Februari 2005
  • Niet online
memphis schreef op vrijdag 9 september 2022 @ 23:17:
Als het kan moet je de PWM frequentie opschroeven.
Dat is mogelijk om te doen. :) https://esphome.io/components/output/ledc.html
Het lijkt nu okay maar als de nieuwe componenten er zijn gaat er vast wel weer wat fout. :P Maar dan ga ik ook naar de frequentie kijken als het nog knippert.

Acties:
  • 0 Henk 'm!

  • Tom-Z
  • Registratie: Augustus 2010
  • Laatst online: 08:42
Saturnus schreef op vrijdag 9 september 2022 @ 19:52:
[...]

De ESP32 doet inderdaad pwm. Ik had al verwacht dat het probleem daar zit. In het opnieuw bouwen van de correcte opstelling lijkt het minder, maar er valt mee te leven.
230 keer per minuut klinkt wel aanmerkelijk langzamer dan de PWM-frequentie die je standaard van de ESP32 zou krijgen, en dan nog, die PWM moet je wel zelf expliciet aanzetten als je dat wil. Als je "gewoon" met 0/1 aanstuurt zou het niet moeten knipperen.
Pagina: 1