Hi,
ich bin relativ neu in der Mikrocontroller Welt, kenne mich aber etwas
mir raspberrys aus, C++, Python und Bash kann ich auch, also sollte eine
neue Programiersprache nicht allzu schwierig sein.
Idee ist folgende. Möchte einem Freund zum Geburstag eine Lampe bauen,
die wenn er sie anmacht, entweder eine zufällige Sounddatei abspielt,
oder je nach Tageszeit (in etwa "Guten Morgen/Abend Master")
Natürlich wäre es einfacher da ein Arduino Chip dranzuhängen, aber mein
Budget für die Elektronik ist begrentzt, daher dachte ich an einen
Mikrokontroller.
Ist das machbar?
wenn ja was bräuchte ich dazu?
Das klingt doch ganz nach den Grußkarten, die man mit selbst
aufgezeichneten Grüßen versehen kann, die dann abgespielt werden, wenn
man die Karte öffnet.
Sowas könnte man bestimmt umbauen oder vielleicht auch als Bausatz
kaufen.
> Möchte einem Freund zum Geburstag eine Lampe bauen,> die wenn er sie anmacht, entweder eine zufällige Sounddatei abspielt,> oder je nach Tageszeit (in etwa "Guten Morgen/Abend Master")
Warum so freundlich? Menschen brauchen morgens einen kräftigen
Tritt in den Hintern. Sonst kommen sie einfach nicht aus den
Federn. Also: "Steh endlich auf, du fauler Sack!" ;-)
Budget sollte doch bei China-Arduinos wirklich keine Hürde sein.
Teilweise gibts da ein solches Board billiger als einen einzelnen
Controller den man in Deutschland bestellt. Also nimm ein solches Board
und gleich ein passendes Shield für SD und MP3 dazu. Kostet unter 10€
und es gibt genug Beispiele im Netz um zu einem Programm zu kommen.
Conny G. schrieb:> RTC Modul> https://eckstein-shop.de/Adafruit-PCF8523-Real-Tim...>> Denen kann man tlw auch die Aufgabe geben einen uC aufzuwecken zu> bestimmter Zeit.> Weiß nicht ob das verlinkte das kann, aber die gibts zu hauf.
The PCF8523 is simple and inexpensive but not a high precision device.
It may lose or gain up to 2 seconds a day.
Also DAS bekommt man nun wahrlich auch rein in Software hin mit einem
32,768kHz Quarz. Budget ist ja begrenzt.
Schau mal im ws2812 Word clock Projekt hier auf der Seite nach. Die neue
Version der Uhr verwendet ein China Modul für das abspielen von mp3
Dateien. Den esp8266 kann man als uC verwenden und gleichzeitig übers
WLAN sich die Uhrzeit aus dem Internet holen.
Schau mal nach DFPlayer mini. Die sind sehr einfach anzusteuern (Per
UART) und man kann damit MP3 Dateien von SD-Karte abspielen. Kosten auch
nur 3 Euro oder so und haben einen Audio-Verstärker eingebaut. Kann man
einfach an einen Lautsprecher anschließen.
Stefan U. schrieb:> Das ist sicher eine nette Bastelei, aber mir würde diese Lampe> schnell> auf die Nerven gehen.
Deswegen plane ich einen Schalter einzubauen, mit dem die
Stromversorgung zum uC unterbrochen und die Funktion deaktiviert werden
kann.
Chris K. schrieb:> Schau mal im ws2812 Word clock Projekt hier auf der Seite nach.> Die neue> Version der Uhr verwendet ein China Modul für das abspielen von mp3> Dateien. Den esp8266 kann man als uC verwenden und gleichzeitig übers> WLAN sich die Uhrzeit aus dem Internet holen.
Im prinzip ist die genaue Zeit ja egal. Ich möchte nur zwischen morgen,
Tag und Abend unterscheiden. Wie krieg ich sowas hin?
und habt ihr Tipps wo man Bauteile relativ günstig und schnell bekommt?
Konrad ist halt wucher, aber aus China wird schwierig, weil das ganze in
3 Wochen fertig sein sollte
also dass ich das richtig verstanden hab. kann ich mit dem ESP8266
mittels z.B. Atmel-Studio ein C++-Script schreiben, dass aus dem
Internet die Uhrzeit ausliest und je nach tageszeit dann eine 1 2 3 an
den DFPlayer oder http://elm-chan.org/works/sd20p/report.html dem Teil
sendet, sodass der die entsprechende sounddatei ausgibt?
Mit diesen 3 Funktionen kannst du das Modul ansprechen.
Du musst natürlich die Funktion UARTSendArray(data,10);
selber implementieren (je nach Platform)
Stefan U. schrieb:> Das ist sicher eine nette Bastelei, aber mir würde diese Lampe schnell> auf die Nerven gehen.
Es ist ein Geschenk, also interessiert den TO das nicht :-)
michox schrieb:> also dass ich das richtig verstanden hab. kann ich mit dem ESP8266> mittels z.B. Atmel-Studio ein C++-Script schreiben, dass aus dem> Internet die Uhrzeit ausliest und je nach tageszeit dann eine 1 2 3 an> den DFPlayer oder http://elm-chan.org/works/sd20p/report.html dem Teil> sendet, sodass der die entsprechende sounddatei ausgibt?
Das ESP programmierst Du nicht mit dem Atmel Studio.
Entweder mit der Arduino IDE (Anleitungen im Web) oder mit einer Tool
Chain separat (Anleitungen im Web). Vermute Arduino IDE ist einfacher.
Und dann ist das ESP gleich Dein Controller, der sich die Zeit holt und
per USART das DFPlayer-Modul ansteuert.
michox schrieb:> Walter schrieb:>> nein, dazu ist die Zeit zu kurz (für Dich)> ich glaub meine Programmierfähigkeiten kann ich am besten einschätzen.>> ich bestell dann jetzt diese Platine> Ebay-Artikel Nr. 252718027546>> hat jemand noch eine Netzteilempfehlung für mich?
bzw kann ich als Netzteil einfach ein Handy Ladegerät nehmen?
michox schrieb:> michox schrieb:>> Walter schrieb:>>> nein, dazu ist die Zeit zu kurz (für Dich)>> ich glaub meine Programmierfähigkeiten kann ich am besten einschätzen.>>>> ich bestell dann jetzt diese Platine>> Ebay-Artikel Nr. 252718027546>>>> hat jemand noch eine Netzteilempfehlung für mich?>> bzw kann ich als Netzteil einfach ein Handy Ladegerät nehmen?
Das Board hat einen Micro-USB Anschluss, für das würde ein USB Ladegerät
und ein Micro-USB-Kabel reichen.
Die Frage ist, welche Spannung u welchen Strom das Player-Board braucht.
Idealerweise könntest Du den Player an das ESP-Board hängen, dann muss
der Spannungsregler ESP + Player aushalten, wenn 3.3V, oder es müsste
einen 5V Ausgang vom USB haben.
Das DFPlayer Board läuft wohl von 3.2 bis 5V
https://www.dfrobot.com/wiki/index.php/DFPlayer_Mini_SKU:DFR0299
Man könnte ihn also an die Spannungsregelung des NodeMCU hängen, von der
Spannung her.
Es braucht 20mA Standby-Current (ohne Wiedergabe ist wohl gemeint)
http://www.picaxe.com/docs/spe033.pdf
Mit Lautsprecher sollte man aber eher mindestens 100mA rechnen...?
Hier
https://github.com/nodemcu/nodemcu-devkit-v1.0/blob/master/NODEMCU_DEVKIT_V1.0.PDF
kann man nachsehen, dass ein On Semiconductors NCP1117 Spannungsregler
auf dem NodeMCU Board sein sollte, Datenblatt:
https://www.onsemi.com/pub/Collateral/NCP1117-D.PDF
Der kann grundsätzlich 1A und mehr, aber man muss nochmal die Erwärmung
nachrechnen.
Das NodeMCU braucht bis 170mA
(laut
http://www.mikrocontroller-elektronik.de/nodemcu-esp8266-tutorial-wlan-board-arduino-ide/)
Das
Dann wandelt der Regler 5V-3.3V = 1.7V in Wärme um.
Das bei sagen wir mal bis zu 300mA, dann haben wir eine Verlustleistung
von 0,5 Watt.
Auf dem NodeMCU ist der SOT-223 verbaut, der hat 160 K/W Erwärmung, das
ergibt bei 0,5 Watt 80 Watt Erwärmung.
Bei einer maximal Umgebungstemperatur in einem Gehäuse von 50 Grad sind
wir bei 50+80 = 130 Grad Chip-Temperatur.
Das wäre schon noch akzeptabel, aber Obergrenze.
Heisst, man sollte den lieber nicht mit 300mA belasten.
Wobei das ja nicht Dauerbetrieb ist:
- der Ton wird ja nur ein paar Sekunden abgespielt.
- das Wifi sendet nicht ständig, nur dann werden die 170mA benötigt
Wäre also ok!
Ah, ansonsten gäbe es aber auch die 5V vom USB an PIN 15 des Board,
siehe Seite "IO CONN".
https://github.com/nodemcu/nodemcu-devkit-v1.0/blob/master/NODEMCU_DEVKIT_V1.0.PDF
VDD5 finden wir nach einer Verpolschutzdiode an VDDUSB auf der Seite
POWER.
Damit gäbe es dann gar kein Problem mit dem Strom.
Allerdings läuft das Playermodul dann mit 5V und der UART kommt mit 3.3V
vom ESP.
Der Player müsste mit dem 3.3V Pegel zurechtkommt, könnte aber auch
schief gehen.
Den Eingang am ESP vom UART des Player muss man aber über einen
Spannungsteiler laufen lassen, damit der ESP keine 5V sieht.
Conny G. schrieb:> Den Eingang am ESP vom UART des Player muss man aber über einen> Spannungsteiler laufen lassen, damit der ESP keine 5V sieht.
wow hammer Rechnung vielen Dank!
aber ich dachte dass der ESP dem Player Informationen schickt, nicht
andersrum?
michox schrieb:> Conny G. schrieb:>> Den Eingang am ESP vom UART des Player muss man aber über einen>> Spannungsteiler laufen lassen, damit der ESP keine 5V sieht.>> wow hammer Rechnung vielen Dank!>> aber ich dachte dass der ESP dem Player Informationen schickt, nicht> andersrum?
Wenn das so wäre und der Rückkanal nicht gebraucht wird müsste man gar
nichts tun.
Aber ein Spannungsteiler für Player > ESP ist auch trivial.
helfer schrieb:> Im Prinzip musst du nur dem Player Informationen schicken. Eine> Rückleitung ist nicht notwendig.
Dann kann der an die 5V und der Strom kommt direkt vom USB, wunderbar.
Also ich hab mal einen Schaltplan eingebaut. Ich möchte noch eine WPS
Taste einbauen, da ich ja das Wlan von meinem Freund nicht kenne. Da
hätte ich mich einfach hier
https://www.arduinoclub.de/2016/04/30/arduino-ide-esp8266-wps-push-button/
dran gehalten. Passt der Schaltplan so?
und hat jemand eine Idee wie ich da noch einen Potentiometer dranhängen
kann, um die Lautsärke anpassbar zu machen? könnte man da direkt einen
analogen vor den Lautsprecher schalten oder sollte man einen Digitalen
nehmen und den mit dem Board anpassen?
michox schrieb:> Also ich hab mal einen Schaltplan eingebaut. Ich möchte noch eine> WPS> Taste einbauen, da ich ja das Wlan von meinem Freund nicht kenne. Da> hätte ich mich einfach hier> https://www.arduinoclub.de/2016/04/30/arduino-ide-...> dran gehalten. Passt der Schaltplan so?> und hat jemand eine Idee wie ich da noch einen Potentiometer dranhängen> kann, um die Lautsärke anpassbar zu machen? könnte man da direkt einen> analogen vor den Lautsprecher schalten oder sollte man einen Digitalen> nehmen und den mit dem Board anpassen?
Die Lautstärke des DFPlayer mini lässt sich digital per kommando
einstellen.
> Also ich hab mal einen Schaltplan eingebaut.
Das ist ein Schaltplan? Macht man das heute so?
Ich glaube langsam echt, dass ich zu alt für euch bin.
Nichts destro trotz hast du Dir mit dem Plan sicher Mühe gegeben und er
ist in der Tat deutlich aussagekräftiger als die langen Texte die manch
anderer hier schreibt weil er nicht zeichnen möchte.
helfer schrieb:> Die Lautstärke des DFPlayer mini lässt sich digital per kommando> einstellen.
Das weiß ich. Soll aber Hardwaretechnisch möglich sein, da später kein
Zugriff mehr darauf sein wird
> hat jemand eine Idee wie ich da noch einen Potentiometer dranhängen> kann, um die Lautsärke anpassbar zu machen?
Dazu nimmst du ein logarithmisches Poti, 10k Ohm sind sicher ok.
Anschluss 1 (der am linken Anschlag) kommt an GND.
Anschluss 2 geht zum Eingang des Verstärkers.
Anschluss 3 gehört an den Ausgang des MP3 Players.
Solche Potis gibt es auch in doppelter Ausführung, für Stereo.
Aber du hattest gar nicht vor, einen separaten Verstärker zu verwenden.
Dann musst du wohl die digitale Lautstärke-Einstellung benutzen.
michox schrieb:> helfer schrieb:>> Die Lautstärke des DFPlayer mini lässt sich digital per kommando>> einstellen.>> Das weiß ich. Soll aber Hardwaretechnisch möglich sein, da später kein> Zugriff mehr darauf sein wird
+/- Taster, die der ESP abfragt und dann die Lautstärke hoch und runter
runter stellt, per Variable, die den aktuellen Status speichert und
seriellem Kommando an den Player bei jedem Tastendruck.
Stefan U. schrieb:>> Also ich hab mal einen Schaltplan eingebaut.>> Das ist ein Schaltplan? Macht man das heute so?> Ich glaube langsam echt, dass ich zu alt für euch bin.>> Nichts destro trotz hast du Dir mit dem Plan sicher Mühe gegeben und er> ist in der Tat deutlich aussagekräftiger als die langen Texte die manch> anderer hier schreibt weil er nicht zeichnen möchte.
Ja, es gibt so Zeug wie Fritzing, das einen eine Kombi aus Schaltplan
und Layout auf dem Breadboard machen lässt.
michox schrieb:> Passt der Schaltplan so?
Habe jetzt nicht jede Verbindung angeschaut. Auf jeden Fall sind die
Versorgungsrails vertauscht. Normalerweise nimmt man Blau = Masse und
Rot = V+.
Stefan U. schrieb:> Aber du hattest gar nicht vor, einen separaten Verstärker zu verwenden.> Dann musst du wohl die digitale Lautstärke-Einstellung benutzen.
meine Idee wäre, über den NodeMCU den Widerstand des Potis zu lesen, und
wenn sich der Wert ändert entsprechend ein Signal an den IO1/2 des
DFPlayers zu senden. Brauch ich da auch ein Logarithmisches Poti?
michox schrieb:> Stefan U. schrieb:>> Aber du hattest gar nicht vor, einen separaten Verstärker zu verwenden.>> Dann musst du wohl die digitale Lautstärke-Einstellung benutzen.>> meine Idee wäre, über den NodeMCU den Widerstand des Potis zu lesen, und> wenn sich der Wert ändert entsprechend ein Signal an den IO1/2 des> DFPlayers zu senden. Brauch ich da auch ein Logarithmisches Poti?
mit Poti sähe das ganze dann so aus
> Brauch ich da auch ein Logarithmisches Poti?
Nö, dann ist ein lineares Poti vermutlich sogar besser. Ich würde einen
Drehgeber verwenden, ist irgendwie moderner. Sogar unsere neue
Waschmaschine hat einen. Die nächste hat sicher einen Touch Screen,
uiiii.
das ist jetzt mal mein Code für den DFPlayer
jetzt wäre nur noch die Frage wie ich auslese, ob die Lampe an ist. Hab
mir überlegt einen Lichtsensor zu besorgen. Alternative wäre, Die LED
Streifen die ich einbauen will laufen auf 12V. Kann man das auf 3.3V
runtersetzen und dann ein Trigger Signal draus machen, der das NodeMCU
aufweckt? Wenn ja welche Widerstände brauch ich dafür?
Hab kurz gegoogelt, NodeMCU mit Esp8266 kann nicht mit GPIO aufgeweckt
werden, nur mit Reset oder Timer.
Jetzt gäbe es verschiedene Möglichkeiten:
- den NodeMCU an die 12V der Lampe hängen, Step-Down-Modul 12V nach 5V
und die 5V verwenden
- eine Schaltung machen, die beim Einschalten der 12V einen Reset aufs
NodeMCU gibt
- mit den 12V die 5V des USB Netzteils ein/ausschalten. Das ist jetzt
aber tricky, denn Du wolltest das bestimmt direkt ans Modul stecken.
Also entweder das NodeMCU modifizieren und eine Schaltung zum Schalten
irgendwo dazwischenklemmen (das ist aber tricky und unschön, wenn es
überhaupt gescheit geht) oder eine Platine machen oder finden, die USB
ein/Ausgang hat (nur Strom) und die Schaltfunktion realisiert (hab ich
noch nie fertig gesehen)
Also mein Favorit ist: Modul an den 12v betreiben.
Conny G. schrieb:> Also mein Favorit ist: Modul an den 12v betreiben.
Das ist in der Tat eine gute Idee, dann spar ich mir auch das Netzteil.
In dem Fall sollte ich dann wahrscheinlich alles in die Setup Funktion
schreiben oder? Kann die loop Funktion leer bleiben?
Allerdings wirft sich mir da die Frage auf, wie schnell die Verbindung
dann zum WLan aufgebaut werden kann, um die aktuelle Zeit abzulesen?
Wäre unschön, wenn die Lampe angeht und 5 Sekunden später kommt erst die
Begrüßung...
michox schrieb:> Allerdings wirft sich mir da die Frage auf, wie schnell die Verbindung> dann zum WLan aufgebaut werden kann, um die aktuelle Zeit abzulesen?
Mit 2-5 Sekunden musst Du schon rechnen.
ok Ja das hab ich auch gefunden.
Hier nochmal zusammengefasst was ich jetzt brauche.
Das Modul soll sobald das Licht eingeschaltet wird aus dem deepsleep
aufwachen, und wenn es aus gemacht wieder in den Deepsleep gehen. dazu
hätte ich mir überlegt einen elektronischen zwei wege Schalter zu
nehmen, der in der Ausgangsposition 3,3V an einen Eingang legt, und
sobald die 12V der Lampe anliegen, den Reset mit dem Ground verbindet,
um das Modul wieder aufzuwecken.
Hat jemand eine Idee mit welchen Bauteilen sich das realisieren lässt?
Bzw lohnt es sich hier in den deepsleep zu gehen oder kann man das modul
auch einfach dauerhaft laufen lassen?
Übrigens Vielen Dank für die Hilfe bisher, schon viel gelernt und
eigentlich sind wir ja fast fertig :)
michox schrieb:> Bzw lohnt es sich hier in den deepsleep zu gehen oder kann man das modul> auch einfach dauerhaft laufen lassen?
Es würde sich lohnen, weil das Modul die meiste Zeit eigentlich nichts
tut.
Aber zum Einen hast Du die "Gefahr", dass die Wifi-Initialisierung zu
lange dauert - gerade bei mässig guter Verbindung kann das lange sein.
Und zum anderen wird da jetzt technisch komplizierter.
Demgegenüber (immer an) hast Du einen dauerhaften Stromverbrauch von 5V
/ max 100mA = 0,5W - mal Netzteil-Ineffenizienzen nicht gerechnet.
Auf 365x24 Stunden sind 4 kWh / Jahr, oder 4 x 30 Cent = 1,20 Euro pro
Jahr.
Also ich würde es für Version 1 einfach dauerhaft an lassen.
Dieser Wakeup Kram scheint ein Workaround zu sein.
Der Timer wecken den µC auf, aber direkt danach hängt er sich auf.
Deswegen wird zusätzlich der Timer-Ausgang (GPIO16) mit dem Reset
Eingang verbunden.
Mit dem DeepSleep würde ich mich nur bei Batteriebetrieb beschäftigen.
Du kannst die WLAN Funktion auch ohne Deep Sleep abschalten um (weniger)
Strom zu sparen.
Stefan U. schrieb:> Dieser Wakeup Kram scheint ein Workaround zu sein.>> Der Timer wecken den µC auf, aber direkt danach hängt er sich auf.> Deswegen wird zusätzlich der Timer-Ausgang (GPIO16) mit dem Reset> Eingang verbunden.>> Mit dem DeepSleep würde ich mich nur bei Batteriebetrieb beschäftigen.> Du kannst die WLAN Funktion auch ohne Deep Sleep abschalten um (weniger)> Strom zu sparen.
eigentlich reicht es mir sogar, nur beim Setup eine Internetverbindung
herzustellen, dort die Zeit auszulesen, und dann kann ich mithilfe von
millis die Tageszeit berechnen... jetzt trotzdem noch die frage, wie ich
dem Modul mitteile dass die Lampe brennt...
Alles klar das Programm steht jetzt glaub ich. Die Info der Lämpe hätte
ich jetzt über einen Spannungsteiler realisiert. Vielleicht kann sich
jemand nochmal meine Skizze anschauen, und die Widerstände nachrechnen,
das wäre sehr hilfreich.
hab gelesen, dass falls der 3,3kOhm durchbrennt, dann der
Mikrokontroller durchbrennt und dann zu viel spannung auf dem eingang
sein kann. Ist aber auch egal, Ich hab das Konzept nochmal etwas
umgebaut, da mir das Projekt richtig Spaß macht.
Plan jetzt, ist die Lampe über einen kapazitiven Sensor (Alufolie) an
und auszuschalten. Über einen Transistor (MOSFET NPN N-Kanal) will ich
dann den Strom zu den LEDs durchschalten, und wenn man den Transistor
schon dran hat, lässt sich über Pulsweitenmodellierung noch die
Helligkeit einstellen.
Mir ist nur leider noch nicht so klar, wie ich den maximalen Strom
meiner LEDs berechne, um die Transistorschaltung richtig auszulegen.
Im Anhang mein Schaltplan nach meiner Recherche. Bin mir vor allem nicht
sicher ob ich den MOSFET richtig angeschlossen hab.
Hab für eine ähnliche Anwendung diesen gefunden
https://www.conrad.de/de/mosfet-infineon-technologies-irf540npbf-1-n-kanal-130-w-to-220-162412.html
Stefan U. schrieb:>>falls der 3,3kOhm durchbrennt>> Dann denke mal scharf nach, unter welcher Bedingung er durchbrennen> würde und wie wahrscheinlich das ist.
muss ja nicht durchbrennen, kann ja auch einfach defekt sein, dachte
wird schon nicht schaden. Aber brauch ich ja jetzt eh nicht mehr
michox schrieb:> Mir ist nur leider noch nicht so klar, wie ich den maximalen Strom> meiner LEDs berechne, um die Transistorschaltung richtig auszulegen.> Im Anhang mein Schaltplan nach meiner Recherche. Bin mir vor allem nicht> sicher ob ich den MOSFET richtig angeschlossen hab.> Hab für eine ähnliche Anwendung diesen gefunden> https://www.conrad.de/de/mosfet-infineon-technologies-irf540npbf-1-n-kanal-130-w-to-220-162412.html
Du hast allerdings einen bipolaren Transistor eingezeichnet und die
Verschaltung wäre falsch.
Bei einem npn den Emitter an Gnd und Kollektor an +.
Wolltest Du jetzt einen Bipo oder einen MOSFET?
Der verlinkte MOSFET ist kein Logic Level MOSFET, d.h. er schaltet bei
5V möglicherweise nicht ganz durch und generiert Wärme, die ihn je nach
Strom auch zerstören kann.
Um welchen Strom ginge es denn?
Ein 08/15 MOSFET, der hier geeignet sein dürfte ist ein IRLZ34N:
https://www.infineon.com/cms/de/product/power/mosfet/20v-300v-n-channel-power-mosfet/40v-75v-n-channel-power-mosfet/irlz34n/
Schau mal die Anwendung von MOSFETs hier in der Artikelsammlung nach.
Conny G. schrieb:> Wolltest Du jetzt einen Bipo oder einen MOSFET?
Hab gelesen das MOSFET wohl weniger warm werden, bzw. für größere Ströme
besser geeignet sind.
Conny G. schrieb:> Um welchen Strom ginge es denn?
also der LED Streifen würde wenn ich die ganzen 5M verbaue 2A fressen.
michox schrieb:> Conny G. schrieb:>> Wolltest Du jetzt einen Bipo oder einen MOSFET?>> Hab gelesen das MOSFET wohl weniger warm werden, bzw. für größere Ströme> besser geeignet sind.
Ja, für Schaltvorgänge sind MOSFETs effizienter.
> Conny G. schrieb:>> Um welchen Strom ginge es denn?>> also der LED Streifen würde wenn ich die ganzen 5M verbaue 2A fressen.
5W pro Meter? Da gäbe es bessere, wo Du nicht gleich so viele Meter
verbauen musst, 15W pro Meter sind eigentlich recht erschwinglich, da
brauchst nur ein Drittel der Länge, also kaum 2m.
Ansonsten sind 2A überhaupt kein Problem für den IRLZ34N.
Der hat bei 5V Gatespannung einen On-Widerstand von 0,05 Ohm, das ergibt
bei 2A eine Verlustleistung von 0,2 Watt.
Bei seinen 62 C/W an Wärmewiderstand zur Umgebung erwärmt er sich dann
nur um 15 Grad.
Auch die Schaltverluste - die bei PWM manchmal der Treiber für die
Erwärmung sind - sind hier sicher kein Problem, wenn Du nur mit wenigen
100Hz schaltest.
Conny G. schrieb:> Hast eigentlich hiervon schon mal was auf dem Breadboard getestet?
das NodeMCU kam erst gestern an, ich werde heute Abend mal was
zusammenstecken
michox schrieb:> Conny G. schrieb:>> Hast eigentlich hiervon schon mal was auf dem Breadboard getestet?>> das NodeMCU kam erst gestern an, ich werde heute Abend mal was> zusammenstecken
Hoffe Du hast von allen Bauteilen mindestens 2 gekauft :-))
Also ich hab die Funktionalität des Node mit einem Blink script
bestätigt, jedoch bekomme ich leider keinen Ton aus dem DFPlayer. Ich
habe das Beispielscript der DFRobotDFPLayerMini library genommen, und
dort die Pins angepasst, bekomme jedoch nur das hier als output...
1
DFRobot DFPlayer Mini Demo
2
Initializing DFPlayer ... (May take 3~5 seconds)
3
Unable to begin:
4
1.Please recheck the connection!
5
2.Please insert the SD card!
6
Time Out!
und davor noch einige kryptische Zeichen, die ich nicht einmal kopieren
kann.
Ich hab schon mehrere Bibliotheken ausprobiert, und einiges an der
Schaltung rumprobiert, aber dieser Output war der einzige der bisschen
was ausgesagt hat. Zum Vergleich, hier das Script
https://github.com/DFRobot/DFRobotDFPlayerMini/blob/master/examples/GetStarted/getStarted.ino
Habe da noch printDetail(myDFPlayer.readType(), myDFPlayer.read());
hinzugefügt, um den Fehler auslesen zu können.
Ich habe bereits 3 SD Karten ausprobiert, andere Pins benutzt, mit und
ohne den Widerstand vor RX, mehr fällt mir ehrlich gesagt auch nicht
mehr ein.
klemm doch den DFPlayer mini erstmal an einen ganz ordinären USB nach
UART TTL Wandler und sende die Kommandos per PC und Terminal Programm.
Dann kannst du erstmal testen ob der Player geht und ob du die SD-Karte
richtig formatierts hast usw...
Erst wenn das geht, machst du darauf basierend weiter...
> Ich habe bereits 3 SD Karten ausprobiert
Sehr gut, denn gerade an Mikrocontrollern will die ein- oder andere mal
nicht funktionieren. Hast du eine mit maximal 2GB Größe probiert? Klingt
vielleicht blöd, aber ich habe schon einige Geräte gesehen, die da eine
Grenze haben.
michox schrieb:> Ist der Transistor dann so richtig?
Ja, passt.
Pulldown ist üblicherweise etwas größer, 50-100k.
Und der Gatewiderstand kleiner, maximal 1k, weniger macht wohl aber auch
keinen Sinn, weil der MCU nicht mehr Strom liefern wird.
noch eine frage entweder ich bin zu dumm zum suchen, oder zu dumm für
mosfets... wie ist denn da physikalisch die Belegung der Pins? Im
Datenblatt finde ich nichts... aus dem Schaubild und dem Diodentest
hätte ich jetzt gesagt, wenn man auf die Seriennummer schaut ist links
das Gate in der Mitte der Source und rechts der Drain. Stimmt das?
Also hab die LED mal wie oben angeschlossen, mal mit 50kOhm mal mit 10
zwischen Gate und Source und zwischen Pin und Gate mit 1kOhm und 330 Ohm
getestet. Bei beiden malen, leutet die LED ganz schwach egal welchen
wert ich mit analogWrite übergebe... Wenn ich Gate und Drain
kurzschließe leuchtet die LED voll. Kann es sein, das der MOSFET bei der
geingen Pin Spannung nicht durchschaltet? oder woran kann das sonst
liegen?
michox schrieb:> Also hab die LED mal wie oben angeschlossen, mal mit 50kOhm mal mit 10> zwischen Gate und Source und zwischen Pin und Gate mit 1kOhm und 330 Ohm> getestet. Bei beiden malen, leutet die LED ganz schwach egal welchen> wert ich mit analogWrite übergebe... Wenn ich Gate und Drain> kurzschließe leuchtet die LED voll. Kann es sein, das der MOSFET bei der> geingen Pin Spannung nicht durchschaltet? oder woran kann das sonst> liegen?
Das wäre sehr gut möglich, dass er bei 5V noch nicht schaltet, welcher
isses?
michox schrieb:> Der den du mir empfohlen hast IRLZ34N
Der ist ein Logic-Level-MosFet und sollte es tun, siehe
https://www.mikrocontroller.net/articles/MOSFET-%C3%9Cbersicht
Wie hoch ist denn Dein Gate-Widerstand zum µC? 1K wäre auf jeden Fall zu
viel. 82 Ohm wäre okay. Oder setze einfach eine Brücke rein, geht auch.
hab einmal 330 ohm gesetzt, und komplett ohne. Ging beides nicht...
braucht mein MCU vielleicht die selbe Stromversorgung wie die LED? hab
momentan noch LED über Netzteil und MCU über PC laufen.
michox schrieb:> hab einmal 330 ohm gesetzt, und komplett ohne. Ging beides nicht...> braucht mein MCU vielleicht die selbe Stromversorgung wie die LED? hab> momentan noch LED über Netzteil und MCU über PC laufen.
Wenn die GND der Schaltungen verbunden sind, sollte das ok sein.
Da fällt mir gerade was auf....
Was kommt aus dem NodeMCU raus aus dem GPIO, 3.3V oder 5V?
Wenn das 3.3V sind, dann ist der IRLZ34N möglicherweise doch nicht
geeignet.
Hab grad kurz zurückgescrollt und da war immer von 5V die Rede, aber ESP
sind doch 3.3V. Also kommen bei einem Ausgang aus dem NodeMCU auch 3.3V,
richtig?
michox schrieb:> ja habs grade auch nochmal nachgemessen
Dann ist es knapp.
Wenn Du manuell 5V ans Gate machst, geht es dann?
Du könntest dann einen kleinen bipolaren vorschalten, der die 3.3v +
Vorwiderstand an die Basis bekommt und die 5V oder die 12V ans Gate
legt.
Also Ausgang-Vorwiderstand-Basis.
Emitter and GND
Und Kollektor-X-1k-VCC
vCC ist dann 5V oder 12v
Bei X schließt Du das Gate des MOSFET an.
Das Ganze invertiert, also High am Transistor macht Low am Gate.
michox schrieb:> also so? Ist da egal was für ein biploarer?
So ein Standard BC337 oder BC547 tut es.
Der Schaltplan ist da echt schwierig zu sehen.
Emitter an GND - ok.
Ausgang-Vorwiderstand an Basis - Verschaltung ok, der Vorwiderstand
weiss ich nicht, lass mal rechnen.
Der Transistor soll voll durchschalten (sagen wir das sei 1A), seine
Verstärkung ist mindestens 100-200, das ergäbe einen Basisstrom von 1A /
200 = 5mA.
Es kommt 3.3V aus dem NodeMCU, am Transistor fallen 0,7V ab, verbleiben
2,8V.
Wir suchen einen Widerstand, der mit 2,8V 5mA Strom durchlässt, R=U:I
sind 560 Ohm.
Ja, dann sind 300 Ohm auch ok.
Kollektor über 1k an 5V, ich glaube das ist so, das ist recht eng
beeinander.
Gate am Kollektor (vor den 1k), ich glaube das sehe ich auch, ist aber
hier alles übereinander und schwer zu sehen.
Ich glaube es ist ok, probier mal.
Wenn es mit 5V nicht geht (müsste aber), dann mach die 12V an den
Kollektor des Bipo.
mit dem 1k zwischen Kollektor und 5V hats nicht funktioniert, also hab
ich das mal weggelassen. Dann hats kurz funktioniert, jedoch hab ich das
Gefühl dass jetzt der MOSFET durchgebrannt ist... Wenn ich nichts am
Gate anschließe brennen die LEDs trotzdem relativ hell. Nicht voll aber
der MOSFET wird schnell heiß... scheint so dass ich eh nochmal zum
Konrad muss, dann kann ich auch gleich einen geeigneten besorgen. Hast
du da eine Empfehlung?
michox schrieb:> mit dem 1k zwischen Kollektor und 5V hats nicht funktioniert, also hab> ich das mal weggelassen. Dann hats kurz funktioniert, jedoch hab ich das> Gefühl dass jetzt der MOSFET durchgebrannt ist... Wenn ich nichts am> Gate anschließe brennen die LEDs trotzdem relativ hell. Nicht voll aber> der MOSFET wird schnell heiß... scheint so dass ich eh nochmal zum> Konrad muss, dann kann ich auch gleich einen geeigneten besorgen. Hast> du da eine Empfehlung?
Mmmh. Den 1k hast Du weggelassen? Dann ist Dir der Bipo durchgebrannt,
denn der kann nur 100mA oder ein paar 100mA.
Mit 5V ohne Widerstand ist der gleich durch.
Mit 1k Widerstand gehen 5mA durch, das ist kein Problem.
Das Gate war dann ganz offen oder über den 47k Pulldown auf GND?
Wenn letzteres, dann ist der MOSFET tatsächlich defekt.
Der IRLZ34N wird bei 2A nicht heiss, wenn er voll durchgeschaltet ist.
Aber er wird heiss, wenn er nicht ganz durchgeschaltet ist.
Und in dieser Konstellation kann er auch nur dann durchbrennen, weil er
2A leitet, aber noch einen hohen Widerstand hat.
Das wäre mir allerdings unklar, warum das so gewesen sein sollte.
Fall 1)
Du gibst dem Transistor 3.3V, er macht auf, dann geht der Kollektor
(fast) auf GND. Weil das Gate daran hängt, macht der MOSFET zu.
Fall 2)
Der Transistor bekommt 0Vf, er macht zu. Der Transistor mit sehr hohem
Widerstand (Megaohm?) und die 1k bilden einen Spannungsteiler, die
Spannung zwischen dem Kollektor und dem 1k Widerstand ist nahezu die 5V,
die liegen am MOSFET Gate an, der MOSFET schaltet durch.
Wenn Du den 1k rausgenommen hast:
1) 3.3V auf den Transistor, er macht auf, die 5V "rauschen" ungebremst
durch den Transistor, er glüht durch.
2) 0V auf den Transistor, er macht dicht, der Kollektor liegt auf 5V und
damit das Gate des FET, der MOSFET schaltet durch.
Jetzt ist die Frage, was im Fall 3) passiert - der Transistor ist
durchgebrannt.
Leitet er oder sperrt er? Oder irgendwas dazwischen?
also zwischen Source und Drain messe ich 30 Ohm Widerstand... ohne
irgendwas angeschlossen
Wenn ich die Funktionsweise von einem MOSFET richtig verstanden habe,
müsste er doch auf jeden Fall sperren wenn ich source und gate
kurzschließe oder? Tut er aber nicht. Ich hoffe mal der IRF3708 kommt
rechtzeitig an... Das sollte eigentlich am Mittwoch fertig werden^^
Dann ist der wohl durch. :-(
Einzige Erklärung: Die Ansteuerung durch den Bipo lies in „im
Linearbereich“ (= teilweise durchgeschaltet) hängen und er ist
abgeraucht.
Hattest Du PWM draufgegeben oder konstant ein?
Bei PWM gibt es noch einen Effekt: MOSFET haben hohe Schaltverluste,
wenn sie langsam schalten. Die Ansteuerung durch einen Bipo auf diese
Art ist sehr langsam. Bei PWM erhitzen die Schaltverluste den FET und er
brennt durch.
Deshalb muss man bei PWM mit FETs darauf achten, dass sie schnell genug
schalten im Verhältnis zum Strom, den sie schalten.
Conny G. schrieb:> Das Gate war dann ganz offen oder über den 47k Pulldown auf GND?> Wenn letzteres, dann ist der MOSFET tatsächlich defekt.
also soll da jetzt ein 47k Widerstand sein?
michox schrieb:> Conny G. schrieb:>> Das Gate war dann ganz offen oder über den 47k Pulldown auf GND?>> Wenn letzteres, dann ist der MOSFET tatsächlich defekt.>> also soll da jetzt ein 47k Widerstand sein?
50k hast ja eingezeichnet, nach den E-Systematiken ist üblicherweise ein
47k.
Aber ob 47 oder 50 ist egal.
so der neue Transistor ist da und alles tut Danke :)
Jetzt habe ich aber das Problem dass glaube ich der Lautsprecher nicht
genug Strom abkriegt. Ich hab einen 4 Ohm Lautpsrecher mit 3 Watt
angeschloßen, hab ausgerechnet das der bei voller Lautstärke dann
durchaus 1,5A brauchen kann. Jedoch liefert der Step Down den ich mir
geholt hab nur Strom bis 1A... Kann man da noch irgendwie die 12V vom
Netzteil relativ simpel nutzen, oder brauch ich eine extra
Verstärkerplatine bzw einen besseren Step Down?
Aktuell, wenn ich eine mp3 abspielen möchte funktionieren die ersten 2
Sekunden, und dann hört es auf und es fängt an durch den Lautsprecher zu
rattern. Mit der selben Frequenz geht auch die Lampe am Step Down an und
aus...
wobei es ja über den USB3.0 Port der maximal 0,9A liefert problemlos
funktioniert hat... Liegt wahrscheinlich also schon am Konverster aber
nicht am Strom
Die Spannung am Step Down wird zusammenbrechen. Da sollte etwas her was
deutlich mehr Strom liefern kann und stabiler ist. Ev. hilft auch das
Abstützen mit einer zusätzlichen Kapazität
michox schrieb:> gute Idee, Hast du eine Ahnung in welcher Größenordnung der> Kondensator> sein sollte?
ich würde direkt einen Step down nehmen, der den Strom (+ margin)
liefern kann. Sonst wird es vermutlich nie gescheit funktionieren.
> könnte man da ein KFZ Ladegerät zerlegen?
Vielleicht, kommt sehr auf das Ladegerät an. Du kannst es wahrscheinlich
nicht. Kauf doch einfach ein fertiges Netzteil! So etwas bekommst
notfalls sicher auch im Baumarkt.
michox schrieb:> Aktuell, wenn ich eine mp3 abspielen möchte funktionieren die ersten 2> Sekunden, und dann hört es auf und es fängt an durch den Lautsprecher zu> rattern. Mit der selben Frequenz geht auch die Lampe am Step Down an und> aus...
Probier doch mal 10 Ohm vor den Lautsprecher einzubauen. Oder 2x 10 Ohm
parallel (also 5 Ohm).
Das ist zwar dann weniger laut, aber der Stepdown bricht vielleicht
nicht zusammen.
Dann würde es schon mal funktionieren und von da kannst Du weitersehen.
Ansonsten, was hast Du an Bauteilen zuhause, hast verschiedene npn/pnp
Transistoren und Lochrasterplatine da?
Dann könntest Dir noch schnell einen primitiven Verstärker
zusammenstellen.
Entweder was mit nur einem Transistor oder eine kleine
Gegentaktendstufe.
Stefan U. schrieb:>> könnte man da ein KFZ Ladegerät zerlegen?>> Vielleicht, kommt sehr auf das Ladegerät an. Du kannst es wahrscheinlich> nicht. Kauf doch einfach ein fertiges Netzteil! So etwas bekommst> notfalls sicher auch im Baumarkt.
Ja, Universalnetzteil für mehrere Spannungen und 2-3A. Das gibt's
überall.
Conny G. schrieb:> Dann könntest Dir noch schnell einen primitiven Verstärker> zusammenstellen.
Konkreter: einen Verstärker der die 12V nutzt.
Hat aber m.e. ein hohes "Fertigstellungsrisiko", wenn nur noch 1 Tag
übrig ist.
Ich würde lieber den Strom an den Lautsprecher drosseln oder ein anderes
Netzteil dranhängen.
Stefan U. schrieb:> Vielleicht, kommt sehr auf das Ladegerät an. Du kannst es wahrscheinlich> nicht.
getan funktioniert... Sei doch nicht immer so negativ. 8€ Ladegerät vom
Real parallel zum alten Step Down geschalten und alles tut wunderbar
> Sei doch nicht immer so negativ
Ich habe ja geschrieben, dass es vielleicht klappt.
Das Ladegerät von meinem Auto hätte jetzt mal eben 20V Leerlaufspannung
ausgegeben und mein kleineres Ladegerät vom Motorrad hätte "Akku defekt"
angezeigt und gar keinen Strom geliefert.
Da hast du halt Glück gehabt. Ich habe selten Glück, liegt in der
Familie. Ich könnte Murphys Sohn sein.
also das ganze funktioniert soweit, bis auf die Lautstärkeregelung. Die
mache ich über interrupt und zwei Taster, jedoch kommt es manchmal vor,
das das system beim drücken einer der Knöpfe abstürzt mit der
Fehlermeldung
Interrupt-Routinen immer so kurz wie möglich, niemals Delay dort.
Datenübertragung ist tendenziell auch zu langsam dafür.
Deshalb Flags setzen und in einer Hauptschleife abarbeiten.
1
void int_volup()
2
{
3
vol_change = 1
4
}
5
6
void int_voldown()
7
{
8
vol_change = -1
9
}
10
11
void main()
12
{
13
While(1)
14
{
15
if (vol_change > 1)
16
{
17
// Lautstärke ändern
18
vol_change = 0
19
}
20
// dito für andere Tasten
21
}
22
}
Dann hast Du zur Ausführung alle Zeit der Welt und der Inerrupt ist
wenige Taktzyklen.
Ansonsten: Sind die Tasten entprellt?
https://www.mikrocontroller.net/articles/Entprellung
Das kann auch sehr giftig sein, wenn prellende Tasten auf Ints laufen.
Gemeinhin wird empfohlen Tasten nicht an Interrupts zu hängen sondern
sie timerbasiert zu pollen.
Frank M. schrieb:> Dann solltest Du aber den Hinweis, die globale Variable vol_change auch> volatile zu definieren, nicht vergessen ;-)
Ja, globale Variablen als volatile deklarieren! :-)
Und zum Thema „lang“: 1ms ist für einen uC eine Ewigkeit.
Bei 10 MHz sind das 10.000 Taktzyklen...
Bei einer prellenden Taste mit 1ms Delay könnte der Int sogar schon
mehrfach aufgerufen werden, wenn Interrupts nicht in der Int-Routine
gesperrt werden.
Und dann wird es ganz fies.
Conny G. schrieb:> Ja, globale Variablen als volatile deklarieren! :-)
Das gilt nicht generell, sondern nur diejenigen, die sowohl in
Interrupts als auch im Hauptprogramm verwendet werden.
michox schrieb:> Walter schrieb:>> nein, dazu ist die Zeit zu kurz (für Dich)> ich glaub meine Programmierfähigkeiten kann ich am besten einschätzen.
na dann lag ich doch gar nicht so schlecht mit meiner Einschätzung, es
sind schon mehr als 3 Wochen ;-)
sorry für die späte Meldung, hatte jetzt Prüfungsphase^^ Das Geschenk
ist natürlich rechtzeitig fertig geworden. Hier ein paar Bilder und mein
Code, falls sich jemand daran inspierieren möchte :)
Ein Riesieges Dankeschön an Conny für die vielen und schnellen
Hilfestellungen, Ich weiß nicht ob ich es ohne dich geschafft hätte.
Auch den anderen Helfern sei natürlich gedankt :)