Hallo liebe ESP Freunde! Ich habe das Wohnzimmer meiner Tochter mit einer Vielzahl von LED Spots und Strips ausgerüstet. Ich verwende nur weiße Spots und Strips. Ich benötige für die Ansteuerung 13 PWM Kanäle. Gesteuert wird das Ganze über einige Taster und über WLAN. An Hardware verwende ich einen ESP32 (LOLIN32) und 2 Treiber Boards (Eigenbau) mit jeweils 8 Känälen zur Ansteuerung der LED (24 V max 3 A; 12 V max 3 A). Nun zu meinem Problem: Ich habe die LED stufenweise in Betrieb genommen. Das erste Board PWM Känale 0-7 arbeitet ohne Probleme. Das zweite Board PWM Kanäle 8-15 akzeptiert den Wert 0 nicht. Schreibe ich ledcWrite(8, 0); reagiert der PWM Kanal nicht. Er bleibt auf dem vorherigen Wert stehen. Schreibe ich ledcWrite(8, 1); ist der Kanal zwar "aus", es bleibt aber immer ein Reststrom. Die Lösung ist nicht sauber. Mögliche Gründe: Die PWM Känale 0-7 und 8-15 des ESP 32 sind nicht identisch aufgebaut. Die oberen Kanäle verfügen über einen Hightspeed Modus. Das Ganze läßt sich auch ohne viel Hardware nachstellen: Die PWM Kanäle 0-15 zuweisen, Pins zuweisen, und z.B. an Kanal 8 eine LED mit Widerstand anschliesen. Hard und Firmware des ESP32: ets Jun 8 2016 00:22:57 rst:0x1 (POWERON_RESET),boot:0x12 (SPI_FAST_FLASH_BOOT) configsip: 0, SPIWP:0xee clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00 mode:DIO, clock div:1 load:0x3fff0018,len:4 load:0x3fff001c,len:1100 load:0x40078000,len:10088 load:0x40080400,len:6380 entry 0x400806a4 Gruß Mathias Ps: Nachdem ich das Projekt abgeschlossen habe werde ich die Dokumentation hier veröffentlichen.
Um das Problem mal einzugrenzen hier eine (vermutlich unvollständige) Auflistung der möglichen Ursache(n): 1. Software 1.1 Arduino ledc-Treiber 1.2 sonstiger Arduino-Code 1.3 ESP-SDK 2. Hardware 2.1 ESP-Peripherie 2.2 ESP Pins 2.3 "Adapter-Boards" Um 2.3 (vorerst) ausschließen zu können müsstest du prüfen ob an den ESP-Pins kein PWM-Signal anliegt. Am einfachsten geht das mit einem LA oder Oszi. Für 2.2 ist es wichtig zu wissen, dass nicht alle Pins des ESP32 als Output funktionieren. Welche Pins du verwendest hast du aber nicht verraten. Am besten du packst hier mal einen minimalen Arduino-Sketch rein, der das Problem aufzeigt, nachdem du 2.3 ausschließen konntest. Dann kann man mal schauen wo der Hund begraben liegt. Vielleicht liegt es ja auch an der Software. Sollte es an deinen Pegelwandlern liegen, so pack doch hier mal einen Schaltplan rein.
:
Bearbeitet durch User
Hallo Christopher! Danke für die Antwort! 2.2 ESP Pins Ich habe im ersten Post ein Minimal-Skipt mit allen Infos angehängt. Hier sind die Pins aufgelistet die verwendet werden. Die Pins die in vielen Pinout Darstellungen aus GPIO gelistet werden, aber nur GPI sind (34,35,36,39), werden nicht verwendet . 2.3 "Adapter-Boards" Selbstverstädlich liegt an den Pins ein PWM Signal an. Die LEDs behalten nach dem Schreiben der "0" ihre zuletzt programmierte Leuchtstärke. Pegelwandler werden nicht verwendet. Um das Problem darzustellen reicht z.B. ein R680 und eine 3mm LED. Gruß Mathias
Mathias W. schrieb: > Ich habe im ersten Post ein Minimal-Skipt mit allen Infos angehängt. Hatte ich übersehen, sorry. Sieht soweit alles ganz vernünftig aus. Ich tippe mal auf einen Fehler im Arduino-LEDC-Treiber oder im ESP-SDK. Hast du mal versucht die Auflösung zu verändern, d.h. z.B. 10 Bit zu nehmen oder auch die Frequenz mal etwas zu verändern, z.B. 10kHz? Ich hab schon mal ziemlich blöd geschaut, als ich ähnliche Probleme mit dem MCPWM-Treiber aus dem SDK hatte. Am Ende stellte sich dann raus, dass das SDK maximal 1MHz Timer-Takt zulässt, obwohl der Chip selbst viel mehr kann. Nur steht das halt nirgendwo, außer im Code des SDK.
0-7 sind in der Gruppe HS LEDC und 8-15 hingegen gehören zur LS LEDC Gruppe. Die Unterscheiden sich in den Registern und der Art und Weise wie die Frequenz gesetzt wird. Kann also wirklich ein Bug in der Arduino Lib sein.
Es gibt da einen Bugfix seit dem 12.04. sind deine Bibs aktuell? https://github.com/espressif/arduino-esp32/commit/6dab3f6777b47e077fecd5b27f5f316664dd6096
Hallo Sorry für die lange Zeit bis zur Antwort. Habe jetzt die Boards aktualisiert. Es funktioniert jetzt perfekt. Danke an alle, besonders Chris Gruß Mathias
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.