Forum: Mikrocontroller und Digitale Elektronik ESP32-S2-Saola-1 und Spannung 1.69V und 3.29V ?


You were forwarded to this site from EmbDev.net. Back to EmbDev.net
von Achim A. (achim_a)


Lesenswert?

Hallo
ich bin hier fast am verzweifeln da ich ab und an, an verschiedenen 
GPIO's verschieden Spannungen habe.

Mein Aufbau zum Test:
6-8 PWM-Signale an
GPIO14, 15, 16, 17 und 33
wenn ich diese GPIO's schalte oder mit dem Wert 255 belege erhalte ich 
entweder (je nach GPIO's die ich probiert habe) auf den PIN's 14, 16 
oder 17 statt 3.29V nur 1.69V

wie das?

In der Doku zum ESP32-saola-1 habe ich gelesen das man wohl die GPIO's 
0, 45 und 46 und auch den GPIO26 nicht nutzen sollte.
Dann sind wohl bestimmte Pins mit PullUp oder PullDown Widerständen 
versehen
Wenn das so ist, wieso habe ich dann nicht ständig auf dem gleichen PIN 
diese halbe bzw. verringerte  Spannung?
Ist das überhaupt das Problem oder übersehe ich hier ein anderes 
wichtiges Detail?

Laut Datenblatt sollte der o.g. ESP 8 PWM-Kanäle verwalten können und 
das wohl auf jedem GPIO ausser den o.g.

Aktuell teste ich mit 4-7 PWM Signalen!

Viele Grüße
Achim

von Helmut -. (dc3yc)


Lesenswert?

Schaltplan? Programm (als Fileanhang)?

von Sebastian R. (sebastian_r569)


Lesenswert?

Mit Oszilloskop gemessen oder mit Multimeter?

von Achim A. (achim_a)


Lesenswert?

Sebastian R. schrieb:
> Mit Oszilloskop gemessen oder mit Multimeter?

Mit Multimeter.

von Sebastian R. (sebastian_r569)


Lesenswert?

Achim A. schrieb:
> Mit Multimeter.

Und wie sieht es mit einem Oszilloskop aus?

Ich bin mir sicher, dass das PWM mehr als 8bit hat.

: Bearbeitet durch User
von Achim A. (achim_a)


Angehängte Dateien:

Lesenswert?

Helmut -. schrieb:
> Schaltplan? Programm (als Fileanhang)?

Anbei ein (sorry) Fritzing-Schaltplan... der aber zum ESP32-Saola-1 pass
t

edit:
der ESP wird mit 5V am USB-Eingang versorgt, später direkt am 5V Pin da 
ich die 5V später auch für einen LevelShifter und 5V Modulen benötige.
Dürfte aber erstmal mit dem, o.g. Problem nichts zu tun haben

edit2:
die BH1750 haben verschiedene I2C Adressen (ist im Plan nicht 
eingezeichnet da ich den Adressepin bei einen BH1750 noch verwendet 
habe)

: Bearbeitet durch User
von Helmut -. (dc3yc)


Lesenswert?

Achim A. schrieb:
> Anbei ein (sorry) Fritzing-Schaltplan...

Das ist (sorry) kein Schaltplan, das ist ein Kindergarten-Wimmel-Bild. 
Fritzing hat doch auch einen Schaltplan-Reiter. Warum wird der nicht 
genommen? Ich benutze das auch für schnelle Skizzen; das Wimmelbild hab 
ich noch nie gebraucht.

von Sebastian R. (sebastian_r569)


Lesenswert?

Wichtig wäre auch noch dein Code.

Auf welche Auflösung hast du die PWM-Kanäle eingestellt?
Der ESP32 kann immerhin alles zwischen 1 und 16bit.

Wie sieht das Ausgangssignal nun mit einem Oszilloskop aus?

von Achim A. (achim_a)


Lesenswert?

Sebastian R. schrieb:
> Und wie sieht es mit einem Oszilloskop aus?

ich habe leider kein Oszilloskop da.
trotzdem glaube ich das es eine ganz simple Erklärung dafür gibt wieso 
ich an manchen Pins nur 1.69V habe.. sofern ich andere Pins auch nutze!

Beispiel:
Ich nutze 6 GPIO-Pins für PWM-Signale , an einem habe ich dann mit 
Sicherheit nur 1.69v max.
An wenn ich nur ein PWM-Signal nutze und den alten 1.69v Pin dazu 
verwende, habe ich auch dort 3.29V

Es liegt auch wahrscheinlich nicht am ESP32-Board was ich habe, denn 
davon habe ich 2 und bei beiden ist das Gleiche!

von Sebastian R. (sebastian_r569)


Lesenswert?

Achim A. schrieb:
> Es liegt auch wahrscheinlich nicht am ESP32-Board

Es liegt sicher an deinem Code.

Achim A. schrieb:
> eine ganz simple Erklärung dafür gibt wieso
> ich an manchen Pins nur 1.69V habe

Meine Vermutung: Du hast da PWM mit etwa 50% Duty Cycle drauf, weil der 
Kanal, weshalb auch immer, auf 9bit steht.

Was passiert denn, wenn du es mal mit 511 anstatt 255 ausprobierst?

: Bearbeitet durch User
von Achim A. (achim_a)


Angehängte Dateien:

Lesenswert?

Sebastian R. schrieb:
> Wichtig wäre auch noch dein Code.
>
> Auf welche Auflösung hast du die PWM-Kanäle eingestellt?
> Der ESP32 kann immerhin alles zwischen 1 und 16bit.

Ich habe kein Oszilloskop!

Ich habe auch keine Auflösung extra eingestellt. mit den Frequenzen habe 
ich probiert.. aber egal was ich auch einstellte. hat nix verändert...
hier der Code im Anhang

von Sebastian R. (sebastian_r569)


Lesenswert?

Achim A. schrieb:
> Ich habe kein Oszilloskop!

Brauchst du auch nicht.

Aha. Also ESPHome, eine wichtige Salamischeibe!

Schauen wir mal auf
https://esphome.io/components/output/ledc.html

Dann stellen wir fest, dass die Auflösung abhängig von der Frequenz ist.

Nun haben deine Kanäle lt. Code schon einmal unterschiedliche 
Frequenzen. Könnte es vielleicht damit etwas zu tun haben?

Dann schauen wir mal hier:
https://prog.world/pwm-in-esp32/

Da tauchen 9bit auf, die irgendwie zu deinem Problem passen könnten.


Ich bleibe dabei:
Deine 1.7V-Pins geben 3.3V mit 50% duty-cycle aus, weil 9bit anstatt 8.

von Achim A. (achim_a)


Lesenswert?

Sebastian R. schrieb:
> ann schauen wir mal hier:
> https://prog.world/pwm-in-esp32/
>
> Da tauchen 9bit auf, die irgendwie zu deinem Problem passen könnten.

Das ist wohl Haar genau mein Problem. Ich habe das mit der Auflösung und 
den Frequenzen missachtet.

Kann mir das jemand erklären?

wenn ich also 1Khz wähle dann habe ich 16 bit... verändern die dann auch 
die Ausgangsspannung?
wenn ich 5KHz habe so nutze ich noch 13bit

ich möchte bei meiner Konfiguration folgende Sachen damit erledigen

Kein PWM:
2x N-Fet schalten (der schaltet nur eine 5V oder 12V Spannung durch 
regelt also via PWM nichts

PWM:
- dimmen von MeanWell LDD's (beim Arduino verwendete ich hier 1000Hz)
- dimmen einer Konstantstromquelle die via 0-10V auch über einen N-Fet 
geregelt wird (beim Arduino war das alles auf 1000Hz eingestellt und 
klappte)
- 12V-3-pin-Lüfter Drehzahl via PWM über N-Fet regeln
dazu wollte ich 33600Hzz verwenden (so wars beim Arduino eingestellt)

von Achim A. (achim_a)


Lesenswert?

Sebastian R. schrieb:
> Ich bleibe dabei:
> Deine 1.7V-Pins geben 3.3V mit 50% duty-cycle aus, weil 9bit anstatt 8.

Kannst du mir das bitte erklären. Das ist womöglich genau die Lösung.

von Achim A. (achim_a)


Lesenswert?

die eingestellt Frequenz scheint hier genau der Auslöser dieser 
Spannungsschwankungen zu sein.

ich habe jetzt einige Testst mit versch. Frequenzen getestet.
Komisch waren hier GPIO10 und GPIO33.. beide hatten die Standardfrequenz 
von 490Hz (da ich keine Frequenz angab siehe Code)
aber beide Ports hatten komplett unterschiedliche Spannungen

output:
  - platform: ledc
    pin: GPIO10
    #frequency: 1220 Hz # default 490Hz
    id: test_GPIO10
  - platform: ledc
    pin: GPIO11
    frequency: 4000Hz
    id: test_GPIO11
  - platform: ledc
    pin: GPIO12
    frequency: 8000Hz
    id: test_GPIO12
  - platform: ledc
    pin: GPIO14
    frequency: 336000Hz
    id: pwm_panel_1_GPIO14
  - platform: ledc
    pin: GPIO15
    frequency: 2000Hz
    id: pwm_panel_2_GPIO15
  - platform: ledc
    pin: GPIO16
    frequency: 10000Hz
    id: test_GPIO16
  - platform: ledc
    pin: GPIO17
   #frequency: 1220 Hz
    id: pwm_panel_1_GPIO17
  - platform: ledc
    pin: GPIO33
    #frequency: 1220 Hz # default 490Hz
    id: pwm_panel_1_GPIO33


An
GPIO10 bei 100% = 0V
       bei 99%  = 3,21V
       bei 76%   = 0,9V
       bei 50%   = 1,26V

GPIO33 bei 100% = 3,29V
       bei 50%   = 0,59V
       bei ca 80% = 2V


also ganz verschiedene Werte

ein weiterer Test mit 2 gleichen Frequenzen aber am GPIO10 und 33 
komplett verschiedene Spannungen...wieso?

output:
  - platform: ledc
    pin: GPIO10
    frequency: 490Hz # default 490Hz
    id: test_GPIO10
.
.
.
.
  - platform: ledc
    pin: GPIO33
    frequency: 490Hz # default 490Hz
    id: pwm_panel_1_GPIO33

Am GPIO10 bei  100% = 3.29V (Frequenz = 490Hz siehe Code-Ausschnitt)
                52%  = 0,52V
                 81% = 1.85V

Am GPIO33  bei  100%  = 0V   (Frequenz = 490Hz siehe Code-Ausschnitt)
                  53% = 1.14V
                  80% = 0.28V

???
Kapiewr jetzt gar nix mehr

: Bearbeitet durch User
von Achim A. (achim_a)


Lesenswert?

Sebastian R. schrieb:
> Ich bleibe dabei:
> Deine 1.7V-Pins geben 3.3V mit 50% duty-cycle aus, weil 9bit anstatt 8.

in der verlinkten LEDC Doku steht das sich benachbarte kanäle (GPIO's ? 
ist dann GPIO10 und GPIO11 oder und GPIO9 benachbart?) die Frequenz wohl 
teilen... wie muss man das verstehen?
edit:
teilen sich den Timer... der die Frequenz bereit stellt?
und was hat das für Folgen?

: Bearbeitet durch User
von Stefan F. (Gast)


Lesenswert?

Achim A. schrieb:
> und was hat das für Folgen?

Na dass sie die gleiche PWM Frequenz und AUflösung (Bits) haben.

von Achim A. (achim_a)


Lesenswert?

Stefan F. schrieb:
> Na dass sie die gleiche PWM Frequenz und AUflösung (Bits) haben.

ja aber welche benachbarten Kanäle sind hier gemeint?
und wieso habe ich dann unterschiedliche Spannungen wenn ich dem GPIO14 
und GPIO15 die gleichen Frequenzen gebe... ?

Ich vermute ich muss das mit den Frequenzen ganz woanders noch 
einstellen.
Ich pribuere auch den LEDC Code aus mit den
- output.ledc.set_frequency:
aber das mag mein Compiler nicht... ich gebe das bestimmt falsch ein.

output:
  - platform: ledc
    pin: GPIO10
    - output.ledc.set_frequency:
        id: test_GPIO10
        frequency: 490Hz

von Stefan F. (Gast)


Lesenswert?

Achim A. schrieb:
> ja aber welche benachbarten Kanäle sind hier gemeint?

Das ist doch sicher irgendwo für deine Software (die ich nicht kenne) 
dokumentiert. Kannst du das nicht selber nachlesen?

> und wieso habe ich dann unterschiedliche Spannungen
> wenn ich dem GPIO14 und GPIO15 die gleichen Frequenzen gebe... ?

Weil sie vermutlich nicht zusammen am selben Timer hängen.

von Sebastian R. (sebastian_r569)


Lesenswert?

Achim A. schrieb:
> Kannst du mir das bitte erklären. Das ist womöglich genau die Lösung.

Achim A. schrieb:
> verändern die dann auch
> die Ausgangsspannung?

Achim A. schrieb:
> Auslöser dieser
> Spannungsschwankungen zu sein.

Achim A. schrieb:
> und wieso habe ich dann unterschiedliche Spannungen wenn ich dem GPIO14
> und GPIO15 die gleichen Frequenzen gebe... ?

Denk mal nicht in Spannungen. Der Ausgang ist in beiden Fällen 3.3V.
50% Duty Cycle heißt, der Ausgang ist die Hälfte der Zeit auf 3.3V, die 
andere Hälfte der Zeit auf 0V. Im Mittel beträgt die Spannung also 
1.65V. Und da dein Multimeter nicht so schnell messen kann und durch 
Kapazitäten und Filter ein Tiefpass darstellt, misst du eben nur die 
mittlere Spannung von 1.7V und nicht 3.3V.

Also trotz gleicher Frequenz kannst du mit einem DMM unterschiedliche 
Spannungen messen, weil die Ausgänge eventuell andere Werte (also 
Pulsbreiten) haben. Aber dazu bräuchte es dann ein Oszi, um das weiter 
zu verfolgen.

Bei 8bit (0..255) ist 255 100% der Zeit ein, also 3.3V.
Bei 9bit (0..511) ist 255 nur die Hälfte der Zeit ein, also deine 
gemessenen 1.65V im Mittel.

von Achim A. (achim_a)


Lesenswert?

Stefan F. schrieb:
> Weil sie vermutlich nicht zusammen am selben Timer hängen.

aber woher weiss ich an welchen timer sie hängen... das finde ich 
nirgends. Beim Arduino war es sauber dokumentiert welche Timer-Gruppen 
zusammengehören

da dies aber beim Arduino-Mega fix war und ich glkaube weil man es beim 
ESP32-S2 selbst bestimmen kann, muss man diese Timergruppen wohl selbst 
definieren aber wie?

sorry ich habe zwar die esphome LEDC sektion gelesen verstehe es aber 
nicht
Glaubs mir ich bin nicht zu faul zum lesen aber ich raffe es nicht!

edit:
laut der Doku
https://docs.espressif.com/projects/esp-idf/en/v4.4/esp32s2/esp-idf-en-v4.4-esp32s2.pdf

steht dort:

Setting up a channel of the LEDC is done in three steps. Note that 
unlike ESP32, ESP32-S2 only supports configuring
channels in “low speed”mode.
1. Timer Configuration by specifying the PWM signal’s frequency and duty 
cycle resolution.
2. Channel Configuration by associating it with the timer and GPIO to 
output the PWM signal.
3. Change PWM Signal that drives the output in order to change LED’s 
intensity. This can be done under the
full control of software or with hardware fading functions.
As an optional step, it is also possible to set up an interrupt on fade 
end.

ok... dies wird aber im ESPhome-Ledc nicht beschrieben wie man das 
einstellt.
Zumindest sehe ich es nicht.
Dort wird auf einen Buzzer eingegangen... ich habe keinen Buzzer ich 
schalte das alles von einem Home-Assistant  und da werden nur Werte an 
best. topics übertragen

ich weiss nicht wie man das im Programmcode schreibt da ich kein 
beispiel finde

: Bearbeitet durch User
von Achim A. (achim_a)


Lesenswert?

ok
habs hinbekommen

jedem, Eintrag musste ich auch seinen eigenen kanal zuweisen
Ob das auch in Gruppen ging, keine Ahnung.

so sieht der output:  imm  esphome code
bei mir nun aus
output:
  - platform: ledc
    pin: GPIO10
    channel: 0
    frequency: "1000Hz" # default 490Hz
    id: test_GPIO10
  - platform: ledc
    pin: GPIO11
    channel: 1
    frequency: "1000Hz"
    id: test_GPIO11
  - platform: ledc
    pin: GPIO12
    channel: 2
    frequency: "1000Hz"
    id: test_GPIO12
  - platform: ledc
    pin: GPIO14
    channel: 3
    frequency: "1000Hz"
    id: pwm_panel_1_GPIO14
  - platform: ledc
    pin: GPIO15
    channel: 4
    frequency: "1000Hz"
    id: pwm_panel_2_GPIO15
  - platform: ledc
    pin: GPIO16
    channel: 5
    frequency: "1000Hz"
    id: test_GPIO16
  - platform: ledc
    pin: GPIO17
    channel: 6
    frequency: "33600Hz"
    id: pwm_panel_1_GPIO17
  - platform: ledc
    pin: GPIO33
    channel: 7
    frequency: "33600Hz" # default 490Hz
    id: pwm_panel_1_GPIO33

von Achim A. (achim_a)


Lesenswert?

Sebastian R. schrieb:
> Deine 1.7V-Pins geben 3.3V mit 50% duty-cycle aus, weil 9bit anstatt 8.

wie du schon richtig erkannt hattest waren es die Frequenzen

ich hab sie nun im Griff. hatte das mit den Kanälen missverstanden und 
vergass im Programmcode diese den PWM-Pins zuzuweisen und deren fixe 
Frequenz.

Jetzt passt alles

danke für den Tipp

Wichtige Frage:
Ich möchte 3 verschiedene Devices damit dimmen
welche Frequenzen würdest du hier empfehlen?

- LDD-KSQ (kann direkt via PWM Pin gedimmt werden) (bisher hatte ich 
1000Hz)
- MeanWell KSQ mit 0-10V dimm über PWM und einen N-Fet (N-Fet passt zur 
Spannung und stromstärke )
- 12V PC-Lüfter mit ca 0.18A 3-pin inkl. PWM (die 12V werden aktuell 
über einen N-Fet geschaltet ) zum dimmen wollte ich direkt den PWM-Pin 
benutzen aber die Frequenz?

Beim dimmen der Meanwell's 0-10V wäre mir ein gleichmässiges dimmen 
wünschenswert.
Aktuell messe ich bei meinen PWM-Ausgängen mit dme Multimeter bei voll 
3,29V (müsste ich noch invertieren da bei 0V glaub ich volllast ist) und 
bei 50% messe ich gerade mal ca 0,6 oder 0,8V --- normal würde ich hier 
die Hälfte erwarten oder?
Mit dieser Spannung wird dann das gate des N-Fet versorgt

von Achim A. (achim_a)


Lesenswert?

Stefan F. schrieb:
> Weil sie vermutlich nicht zusammen am selben Timer hängen.

Genau so war es auch.
Sebastian R. hat mir auch einen  Schups in diese Richtung gegeben.

Musste nur die PWM-Pins zwingend zu Kanälen zuweisen und für diese 
Kanäle dann auch fix die Frequenzen vergeben und schon klappte es. Wenn 
man die Schraube kennt!

Danke

von Stefan F. (Gast)


Lesenswert?

Schaltplan?
Bitte kein ungefähr unvollständiges Fritzing Bild, sondern einen 
richtigen Plan wo man sehen kann, wie der LED Treiber mit dem 
Mikrocontroller verbunden ist und wo du wie gemessen hast.

Und besorge dir ein Oszilloskop. Ein billiges DSO150 reicht schon.

von Sebastian R. (sebastian_r569)


Lesenswert?

Achim A. schrieb:
> - LDD-KSQ (kann direkt via PWM Pin gedimmt werden) (bisher hatte ich
> 1000Hz)

Der Frequenzbereich steht im Datenblatt der KSQ.

> - MeanWell KSQ mit 0-10V dimm über PWM und einen N-Fet (N-Fet passt zur
> Spannung und stromstärke )

Der Frequenzbereich steht im Datenblatt der KSQ.

> - 12V PC-Lüfter mit ca 0.18A 3-pin inkl. PWM (die 12V werden aktuell
> über einen N-Fet geschaltet ) zum dimmen wollte ich direkt den PWM-Pin
> benutzen aber die Frequenz?

Der Frequenzbereich steht im Datenblatt des Lüfters. Einschließlich des 
Spannungsbereiches.

Achim A. schrieb:
> normal würde ich hier
> die Hälfte erwarten oder?

Da dein Multimeter zum Messen von Gleichspannungen gedacht ist und 
vermutlich kein True-RMS mit ein paar Kilohertz hast, ist deine 
Messmethode nicht dazu geeignet, irgendetwas zu bewerten.

Duty-Cycle und mit dem Multimeter gemessene Spannung müssen sich nicht 
linear verhalten.

> Mit dieser Spannung wird dann das gate des N-Fet versorgt

Noch einmal: PWM ist digital. An (3.3V) oder aus (0V). Das Konzept damit 
aufn FET zu gehen ist aber okay.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.