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
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
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
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.
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?
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!
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
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
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.
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)
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.
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
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
Achim A. schrieb: > und was hat das für Folgen? Na dass sie die gleiche PWM Frequenz und AUflösung (Bits) haben.
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
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.
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.
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
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
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
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
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.