Der AVR-/ARDUINO-Faden

Der chaotische Hauptfaden

Moderatoren: Heaterman, Finger, Sven, TDI, Marsupilami72, duese

Benutzeravatar
Cubicany
Beiträge: 3543
Registriert: Sa 15. Feb 2020, 17:48
Wohnort: Soest

Re: Der AVR-/ARDUINO-Faden

Beitrag von Cubicany »

Genau, ich meinte damit, das es von der Stange ist und jetzt kaum große Eigenleistung (außer Verdrahtung, aber bitte!)
drin steckt.

ist übrigens so ein Multifunktionsrelais für 8-230V AC/DC. Habe da noch einen kleinen Fundus von.

Tuts zunächst aber da ich da noch was mit Sensoren aushecke, komme ich ums Board eh nicht rum.
IPv6
Beiträge: 2210
Registriert: Fr 17. Mär 2017, 22:05

Spannungsversorgung mit Batterie

Beitrag von IPv6 »

Das ist zwar keine direkte Frage zu Arduinos aber thematisch doch recht verwandt.

Mein Nixie-Thermometer soll einen Außenfühler bekommen.
Dafür werden NRF24L01 Funkmodule verwendet, das Ganze läuft auch prinzipiell schon alles.

Die Außeneinheit muss hier allerdings netzunabhängig mit Strom versorgt werden und somit sehr sparsam mit dem Strom umgehen.
Einen Arduino Nano bekommt man recht einfach auf nahezu keinen Verbrauch indem man den Spannungsregler runterlötet (die Masse muss dann zwischen dem mittleren Pin und der Lötfahne gebrückt werden, das macht im Normalfall der Regler), den USB-UART Wandler entfernt und die LEDs ausbaut.
Dann den µC auf dem internen Oszillator mit 1 MHz laufen lassen, schlafen legen und nur gelegentlich zum Temperatur erfassen aufwecken.

Das Funkmodul selbst beherrscht laut Datenblatt einen Low Power Modus (wenige µA), den DHT22 Temperatursensor würde ich über einen Pin vom Controller versorgen sobald er aufwacht (brauch maximal 1,5 mA).

Nun zur eigentlichen Frage:
Wo bekomme ich halbwegs saubere 3,3 V her?
Einfach zwei AA Batterien in Reihe klingt nicht so gut, die Spannung wird schon nach kurzer Zeit deutlich unter 3 V liegen. Der DHT22 Sensor möchte auch 3,3 V haben, drunter läuft der nicht. Auch wenn das Funkmodul bis 1,9 V angegeben ist dürfte da die Reichweite schon etwas leiden. Also wären 3,3 V schon ganz gut.

Am schönsten wäre ein Aufwärtswandler mit minimalem Ruhestrom, der die Batterien nahezu komplett leergenuckelt bekommt.
Ein chinesischer MT3608 Step Up, der hier rumliegt, will ohne Last schon 0,5 mA haben und schaltet unter 1,8 V aus.

Was verwendet ihr da normalerweise? Gibt es da kleine Aufwärtswandler, die selbst kaum Strom brauchen und die Batterien bis < 1 V leer bekommen? Der Wandler müsste höchsten ein paar mA liefern können.
berlinerbaer
Beiträge: 1063
Registriert: Di 22. Aug 2017, 05:19
Wohnort: Berlin

Re: Der AVR-/ARDUINO-Faden

Beitrag von berlinerbaer »

Kleine Solarzelle & SuperCap?
Benutzeravatar
Bastelbruder
Beiträge: 11541
Registriert: Mi 14. Aug 2013, 18:28

Re: Der AVR-/ARDUINO-Faden

Beitrag von Bastelbruder »

Der Supercap zeichnet sich durch äußerst variable Spannung aus.

Der Spannungspegel "3,3 Volt" ist wohl eher akademisch zu sehen, +- 10% sind das schon 2,97..3,63 V.

Wenn der Sensor ums Verrecken mit 3,0 V nicht will, gibts für solche Zwecke ultrahochzuverlässige Li-SOCl2-Zellen mit 3,6 Volt. Die sind ihr Geld echt wert. Schrottbatterien und Joule-thief würde ich an der Stelle nicht einsetzen.

Zurück zum Supercap: Solarzellen gibts neuerdings in Kombination mit LiFePO4 (3,2 V) zur Leuchtkäferbespaßung.
Benutzeravatar
Raja_Kentut
Beiträge: 1554
Registriert: Mi 14. Aug 2013, 13:11
Wohnort: Veitsbronn-Bernbach

Re: Der AVR-/ARDUINO-Faden

Beitrag von Raja_Kentut »

ne 3,6V Lithiumzelle (kost halt was) oder 3 1,5V AAA mim LDO. Der sollte einen niedrigen Iq haben.
Beispiel https://www.semic-shop.de/stlq015m33r-16/
Batterien kosten ja nix mehr...
j.o.e
Beiträge: 550
Registriert: Fr 29. Nov 2019, 01:15

Re: Der AVR-/ARDUINO-Faden

Beitrag von j.o.e »

Batteriebetrieb und Spannungsregler passt irgenwie nicht zusammen.

Wie Bastelbruder schon sagte: 3.3V sind relativ. Ich würde erst mal feststellen, in welchem Versorgungsbereich deine Komponenten funktionieren.

Ich denke, dass 2 oder 3 NiCd's an einem Mini-Solarmodul (R? + D? als Lademimik) nicht die schlechteste Lösung wären.
Hint: einer unserer LIeblingsversender vertickern sowas wie eine Solar-Bodenlichterkette für 2.44€: Solarpanel: 0,6 W (6 V-/100 mA), Akku: 3,7 V/1500 mAh.

Falls doch Primärzellen würde ich nicht auf AA setzen. Dem ab Werk AAA-versorgten Hygrometer in meiner Werkstatt habe ich 2 C-Zellen gegönnt. Die dürften es die nächsten 5 Jahre tun.
Benutzeravatar
Raja_Kentut
Beiträge: 1554
Registriert: Mi 14. Aug 2013, 13:11
Wohnort: Veitsbronn-Bernbach

Re: Der AVR-/ARDUINO-Faden

Beitrag von Raja_Kentut »

"Batteriebetrieb und Spannungsregler passt irgenwie nicht zusammen."
Das kann mit einem eindeutigen "kommt drauf an" beantwortet werden.
Der vorgeschlagene LDO verschwendet 1uA an Iq, bei Volllast 1,4uA. Eine Batterie wird zwar fast vollständig vergeudet, aber jede Zelle kann bis auf 1,16 V leergerutscht werden. Keine getaktete Lösung kommt auf weniger Eigenbedarf, langfristig kann die Verbratmethode jede getaktete energiebilanzmäßig überholen.
Die Lösung ist kwik änd dörti, und der geneigte Bastler kommt schnell zu Potte und kann sich auf die interessanten Aspekte des Projektes konzentrieren.

Ach ja, die von Bastelbruder genannte Wunderbatterie geht in diese Richtung, guhgel mal nach Dynamis
60.08357
Benutzeravatar
Cubicany
Beiträge: 3543
Registriert: Sa 15. Feb 2020, 17:48
Wohnort: Soest

Re: Der AVR-/ARDUINO-Faden

Beitrag von Cubicany »

Habe zwar nichts wegen Programmierung, sondern eher ein "Wo gibt es das?"

Und zwar suche ich einen Wandler, der aus 24V Wechselspannung gleichgerichtet zu
Gleichspannung (die dann etwas höher ist) so rund 7 Volt zaubern kann.

Das ist nichts für Arduino, sondern ich brauche halt ganz simpel diese zwei Spannungen.

Und da 7 Volt im Arduino Bereich ja ab und zu anzutreffen sind, wollte ich mich
mal umhören.
Benutzeravatar
Später Gast
Beiträge: 1697
Registriert: Di 5. Apr 2016, 22:03
Wohnort: Karlsruhe
Kontaktdaten:

Re: Der AVR-/ARDUINO-Faden

Beitrag von Später Gast »

Gleichriecht-er + Elko + DCDC war dir zu viele Bauteile? ;-)
caprivi
Beiträge: 585
Registriert: Mi 9. Mär 2016, 14:44
Wohnort: Am ehemaligen Schorbaer Berg.

Re: Spannungsversorgung mit Batterie

Beitrag von caprivi »

IPv6 hat geschrieben: Sa 11. Jul 2020, 20:57 Wo bekomme ich halbwegs saubere 3,3 V her?
Einfach zwei AA Batterien in Reihe klingt nicht so gut, die Spannung wird schon nach kurzer Zeit deutlich unter 3 V liegen.
Am schönsten wäre ein Aufwärtswandler mit minimalem Ruhestrom, der die Batterien nahezu komplett leergenuckelt bekommt. Was verwendet ihr da normalerweise? Gibt es da kleine Aufwärtswandler, die selbst kaum Strom brauchen und die Batterien bis < 1 V leer bekommen? Der Wandler müsste höchsten ein paar mA liefern können.
Ich hab bei meinem Mini-Homeautomation-Projekt einen MCP1640C verbaut. Damit bekommt man zwei R6-Zellen komplett leer.

Edit:
Hier mal noch mein Projekt-Mitschrieb zu dem Thema, hab da eine Weile herumprobiert:

Ausnutzung von Primärbatterien ohne weitere Massnahmen: Man kann Batterien ausnutzen bis 1,8 V, dann kann man unter Last fast ihre gesamte Kapaziät nutzen. Um das zu erreichen, muss der ATMega-Takt bei unter 4 MHz bleiben; z.B. 8 MHz interner Oszillator und 1/8 Teiler aktiv; außerdem BOD abschalten.

Akku oder Primärbatterie: Selbstentladung Li-Ion ist ca. 4% pro Monat, bei z.B. 500 mAh entspricht das ca. 30 µA Dauerstrom. Bei einer 18650 wäre das ca. 100 µA Dauerstrom. Selbstentladung Alkali-Mangan ist ca. 2% pro Monat, bei AAA (1200 mAh) entspricht das ebenfalls ca. 30 µA Dauerstrom. Der Trade-Off ist hier Größe der Zellen und Wechselintervall. Beides geht im Grunde gleich gut.

Step-Up: MCP1640C kann Batteriespannung durchreichen und nur im Bedarfsfall aktiv werden. Man kann ihn aber auch einen grossen C laden lassen, den er immer bei Bedarf nachlädt. Nicht den D-Typ benutzen, der hat 220 µA Eigenbedarf. Der C-Typ kommt auf 35 µA Eigenstrombedarf bei voller Batterie (=2x AA) und auf ca. 100 µA bei 1,5V Speisespannung. Zwei R6-Zellen sind dann quasi schon alle. Die krummen Widerstände im Datenblatt sind Unsinn. Berechnen kann man sie mit einer Android-App. Eine gute Widerstandskombination für 3,3V ist 470k / 270k.
Benutzeravatar
Cubicany
Beiträge: 3543
Registriert: Sa 15. Feb 2020, 17:48
Wohnort: Soest

Re: Der AVR-/ARDUINO-Faden

Beitrag von Cubicany »

Später Gast hat geschrieben: So 12. Jul 2020, 10:54 Gleichriecht-er + Elko + DCDC war dir zu viele Bauteile? ;-)
Nein, das ist nicht zu viel, nur finde ich da gerade gefühlt 10 modelle von Wandlern, wo ich nicht weiß, welcher jetzt brauchbar ist.
IPv6
Beiträge: 2210
Registriert: Fr 17. Mär 2017, 22:05

Re: Der AVR-/ARDUINO-Faden

Beitrag von IPv6 »

Solarzelle und kleiner Akku ist nicht gut, da die ganze Einheit auf die Nordseite vom Haus kommt. Wärend die Solarzelle wohl am besten in der prallen Sonne hängen will möchte ein Temperatursensor eben das genau nicht. Wobei da vielleicht auch schon das Streulich der Umgebung ausreichen würde. Ich habe nur gerade nichts in die Richtung zum testen da.

Grundsätzlich wären mit einfach zwei AA Zellen in Reihe am liebsten, sowohl der Controller als auch das Funkmodul dürften damit klar kommen, nur der DHT22 will wohl 3,3 V sehen. Da müsste man wohl erstmal eine Versuchsreihe machen bis wieviel Volt der tatsächlich läuft ohne dass die Werte verfälscht werden.

Mit drei AA Zellen und linearem Spannungsregler bekommt man die Batterien auch nicht wirklich leer (< 1V). Gerade bei so geringen Strömen sind die tpischen Alkalinbatterien auch unter 1 V noch nicht ganz fertig.

Die Stepup Lösung mit MCP1640C klingt vielversprechend, da bräuchte es nur erst eine Platine dafür...
j.o.e
Beiträge: 550
Registriert: Fr 29. Nov 2019, 01:15

Re: Spannungsversorgung mit Batterie

Beitrag von j.o.e »

caprivi hat geschrieben: So 12. Jul 2020, 11:01 Die krummen Widerstände im Datenblatt sind Unsinn.
Die krummen Werte sind Normwerte aus der E96 Reihe.
Im industriellen Bereich lohnt es sich oft nicht, 2 E-Reihen vorzuhalten. Drum ist man da längst auf E96-only umgeschwenkt.

Mein Sortimentkasten umfasst die Werte 100, 150, 221, 332, 475, 681 und 10er-Potenzen davon.

Edith meint, ich soll nicht so sparsam mit Umlauten umgehen...
caprivi
Beiträge: 585
Registriert: Mi 9. Mär 2016, 14:44
Wohnort: Am ehemaligen Schorbaer Berg.

Re: Der AVR-/ARDUINO-Faden

Beitrag von caprivi »

IPv6 hat geschrieben: So 12. Jul 2020, 13:24 Die Stepup Lösung mit MCP1640C klingt vielversprechend, da bräuchte es nur erst eine Platine dafür...
Ich kann Dir eine Target-3001-Projektdatei schicken. Da sind ATMega328P, MCP1640C und RFM69HW drauf. Schick mal PN, wenn Interesse besteht.
IPv6
Beiträge: 2210
Registriert: Fr 17. Mär 2017, 22:05

Re: Der AVR-/ARDUINO-Faden

Beitrag von IPv6 »

Das ist nett, aber für das Projekt nicht wirklich zu gebrauchen. Das wird ein einfacher Aufbau aus Arduino Nano mit an Kabeln angefrickelten Zusatzplatinchen. Wenn ich da jetzt erst anfange eine eigene Platine zu entwerfen wird das Projekt nie fertig.
Benutzeravatar
Raja_Kentut
Beiträge: 1554
Registriert: Mi 14. Aug 2013, 13:11
Wohnort: Veitsbronn-Bernbach

Re: Der AVR-/ARDUINO-Faden

Beitrag von Raja_Kentut »

...sonst wird's nie fertig...
Genau deshalb nimm die LDO Lösung oder eine verlinkte 3,6V Primärzelle, die gibt's bis >10Ah...
Außerdem willste ja funken, da ist ein Schaltregler manchmal nicht die beste Wahl...
caprivi
Beiträge: 585
Registriert: Mi 9. Mär 2016, 14:44
Wohnort: Am ehemaligen Schorbaer Berg.

Re: Der AVR-/ARDUINO-Faden

Beitrag von caprivi »

IPv6 hat geschrieben: So 12. Jul 2020, 16:03 Das ist nett, aber für das Projekt nicht wirklich zu gebrauchen. Das wird ein einfacher Aufbau aus Arduino Nano mit an Kabeln angefrickelten Zusatzplatinchen. Wenn ich da jetzt erst anfange eine eigene Platine zu entwerfen wird das Projekt nie fertig.
Ach so :-)
8288F888-3026-4760-B379-36658F77BA2C.jpeg
IPv6
Beiträge: 2210
Registriert: Fr 17. Mär 2017, 22:05

Re: Der AVR-/ARDUINO-Faden

Beitrag von IPv6 »

Sieht schick aus, was machst du damit genau?

Mein Ansatz wären jetzt erstmal die zwei AA Batterien in Reihe und testen, ob der DHT22 nicht auch mit < 3,3V funktioniert. Das wäre ganz ohne Regler das einfachste.

Sonst werden es wohl drei AA Zellen mit low dropout Regler.
caprivi
Beiträge: 585
Registriert: Mi 9. Mär 2016, 14:44
Wohnort: Am ehemaligen Schorbaer Berg.

Re: Der AVR-/ARDUINO-Faden

Beitrag von caprivi »

IPv6 hat geschrieben: So 12. Jul 2020, 23:03 Sieht schick aus, was machst du damit genau?
In Kürze: www.mysensors.org. Im Moment laufen zwei Temperatursensoren, später soll noch eine Füllstandsmessung für die Regenwasserzisterne dazukommen; und ich will auch noch wissen ob die Drainagepumpen gelaufen sind.
j.o.e
Beiträge: 550
Registriert: Fr 29. Nov 2019, 01:15

Re: Der AVR-/ARDUINO-Faden

Beitrag von j.o.e »

Vielleicht kann man bei einer 3-Zellen-Lösung noch einen Abgriff nach der 2. Zelle rausführen - imHo (mit großem H).
IPv6
Beiträge: 2210
Registriert: Fr 17. Mär 2017, 22:05

Re: Der AVR-/ARDUINO-Faden

Beitrag von IPv6 »

Die aktuelle Lösung kommt nun ohne Wandler aus.
Einfach zwei AA Zellen in Reihe. Der ATmega328 auf internem Oszillator mit 1 MHz läuft bis knapp unter 1,5 V, das Funkmodul ebenfalls.
Nur der DHT22 Sensor war auf zwei Arten für diese Anwendung nicht brauchbar:
Zum Einen werden die Werte unterhalb von 3,1 V immer unplausibler, der will also wirklich mindestens 3,3 V sehen.
Zum Anderen ist dessen Timing so kritisch, dass es erst ab 8 MHz stabil läuft. Und bei 8 MHz will der ATmega wieder > 2,7 V haben.

Also verzichte ich erstmal auf die Luftfeuchtigkeit draußen und erfasse die Temperatur mit einem NTC.

Die Spannungsteiler für den NTC und zum Einlesen der Batteriespannung (wird auch angezeigt um zu wissen wann es bald Zeit für einen Wechsel wird) werden beide per GPIO Pin im Ruhezustand stromlos geschalten. Ebenfalls wird der µC und das Funkmodul schlafen gelegt.
So liegt der Stromverbrauch bei 5 µA, nur alle paar Minuten (genaue Zeitspanne wird noch festgelegt) wacht das Ding richtig auf, aktualisiert seine Messwerte und schickt sie an das Nixiethermometer. Da fließen dann eben mal für ein paar ms grob 10 mA. Ich gehe davon aus, dass damit Batterielaufzeiten von deutlich über einem Jahr möglich sind.
Benutzeravatar
Weisskeinen
Beiträge: 3948
Registriert: Di 27. Aug 2013, 16:19

Re: Der AVR-/ARDUINO-Faden

Beitrag von Weisskeinen »

Du könntest auch mal bei Sensirion nach einem passenden Sensor schauen. Die haben auch mal Muster verschickt, machen das aber jetzt, glaube ich, nicht mehr.
Benutzeravatar
Raja_Kentut
Beiträge: 1554
Registriert: Mi 14. Aug 2013, 13:11
Wohnort: Veitsbronn-Bernbach

Re: Der AVR-/ARDUINO-Faden

Beitrag von Raja_Kentut »

Die Sensirion SHT3x gibt's auch als Boards....kann ich wärmstens empfehlen. Werkeln bei mir in der Kellerentlüftung, Temperatur und RH ...hab ein paar "Smart Gadget" Boards rumliegen, bei Interesse PN
electrixx2005
Beiträge: 387
Registriert: Di 6. Dez 2016, 10:22
Wohnort: 76599 Weisenbach

Re: Der AVR-/ARDUINO-Faden

Beitrag von electrixx2005 »

Hallo zusammen,

brauche mal euren Rat.
Ich habe ja vor einiger Zeit im - Kindergeburtstag "Baustelle" - Beitrag über die Ampel berichtet, die mit einem Arduino Nano und einem 4-fach Relaismodul betrieben wird. Darf ich den Link vom Relaismodul (und später Netzteil) hier posten?
Der Aufbau ist etwa so (habe in Fritzing allerdings nur 1-fach Relais gefunden, daher gebrückt). In der Realität bekommt das Relaismodul GND, 5V und D5, D6, D7 für die einzelnen Farben. Betreiben wollte ich das ganze mit einem eingebauten 12-Volt-Netzteil, daher Speisung des Arduino über den VIN.
ArduinoAmpel.jpg
Problem: versorge ich den Arduino und Relaismodul über PC oder USB-Netzteil, läuft alles einwandfrei. Klemme ich nun auf das Netzteilmodul um (12 Volt, 0,2A), kommt der Nano im Programm durcheinander, schaltet eine kurze Zeit richtig und dann "irgendwas" oder er "friert ein". Das Netzteil ist für Arduino, habe mal auf USB die Stromaufnahme gemessen (der größte Stromverbrauch natürlich wenn rot und gelb zusammen leuchten), Spitzenstromverbrauch liegt bei 150mA rum. Sollte das Netzteil eigentlich schaffen (Spannung bricht in dem Moment auch nicht ein). Was ich momentan nicht anschauen kann, ob es eine glatte Gleichspannung ist oder ob es da Probleme geben könnte.

Hat noch jemand eine Idee? Ist die Versorgung mit 12V über GND und VIN und die gleichzeitige Nutzung der 5V aus dem Arduino für das Relaismodul das Problem? Ggf. gleich ein 5V- Netzteil besorgen und nicht über VIN speisen?

Gruß, Jens
ch_ris
Beiträge: 3039
Registriert: Mo 30. Nov 2015, 10:08

Re: Der AVR-/ARDUINO-Faden

Beitrag von ch_ris »

ich würde vermuten die qualität von vcc.
wenn du direkt auf 5v gehst muss die ja noch besser sein.
ich würd n 9v block nehmen.
und/oder mal testhalber 10k in die signalleitungen.
Benutzeravatar
Später Gast
Beiträge: 1697
Registriert: Di 5. Apr 2016, 22:03
Wohnort: Karlsruhe
Kontaktdaten:

Re: Der AVR-/ARDUINO-Faden

Beitrag von Später Gast »

Den Link kannst du posten.

Vllt mal die 12v an Vin mit nem Elko stützen, die Einbrüche können sehr kurz sein und mit dem Multimeter unsichtbar bleiben.

Was ziehen die Relais an Strom vom Arduino wenn sie geschaltet werden? Wobei das kein Thema sein sollte, am PC gehts ja.

Wenn ich 12V Versorgung habe, verwende ich einen separaten DCDC - Wandler, der die 12V runtersetzt. Entweder auf 5V und dann direkt über den 5V pin versorgen, oder 7v und über Vin/raw, dann kommt der interne lineare Regler zum Einsatz, der hoffentlich eine glatte Versorgung liefert. Letztere Variante verbraucht etwas mehr Strom, aber wahrscheinlich immernoch weniger als ohne Wandler direkt in den Vin.
j.o.e
Beiträge: 550
Registriert: Fr 29. Nov 2019, 01:15

Re: Der AVR-/ARDUINO-Faden

Beitrag von j.o.e »

Versuch mal, ob ein dickes C (Elko, mehrere 100uF) zwischen Vcc und GND hilft.
Ein 12V Relais-Modul hast nicht zufällig liegen?

Doppelpost: Später Gast war schneller.
sysconsol
Beiträge: 4059
Registriert: Fr 8. Jul 2016, 17:22

Re: Der AVR-/ARDUINO-Faden

Beitrag von sysconsol »

Der Linearregler auf dem Arduino-Board ist thermisch überlastet.
Das sind in aller Regel LM1117 (oder ähnliche Typen, AMS z.B.).
Die sind für den Arduino - und für nichts weiteres.

Peripherie über extra Regler anschließen.

Freilaufdioden und Filter auf der Relaisplatine setze ich mal voraus...
electrixx2005
Beiträge: 387
Registriert: Di 6. Dez 2016, 10:22
Wohnort: 76599 Weisenbach

Re: Der AVR-/ARDUINO-Faden

Beitrag von electrixx2005 »

sysconsol hat geschrieben: Mi 5. Aug 2020, 12:52 Der Linearregler auf dem Arduino-Board ist thermisch überlastet.
Das sind in aller Regel LM1117 (oder ähnliche Typen, AMS z.B.).
Die sind für den Arduino - und für nichts weiteres.

Peripherie über extra Regler anschließen.

Freilaufdioden und Filter auf der Relaisplatine setze ich mal voraus...
d.h. bei Direktspeisung über USB (5 Volt von PC oder USB-Netzteil) wird der Linearregler des Arduino nicht genutzt, sondern nur wenn man über Vin eine höhere Spannung anlegt (wie in meinem Fall 12 Volt-Netzteil)?
Das würde dies Verhalten erklären...

Danke & Gruß,
Jens
electrixx2005
Beiträge: 387
Registriert: Di 6. Dez 2016, 10:22
Wohnort: 76599 Weisenbach

Re: Der AVR-/ARDUINO-Faden

Beitrag von electrixx2005 »

electrixx2005
Beiträge: 387
Registriert: Di 6. Dez 2016, 10:22
Wohnort: 76599 Weisenbach

Re: Der AVR-/ARDUINO-Faden

Beitrag von electrixx2005 »

... Ardiuno und Relaisplatine werden nun über ein anderes 5-Volt-Netzteil gespeist. Problem offensichtlich damit behoben.

Danke an alle.

Gruß, Jens
Benutzeravatar
Hightech
Beiträge: 11456
Registriert: So 11. Aug 2013, 18:37

ESP8266 Problem

Beitrag von Hightech »

Moin,

Ich hab hier so einen S1 Mini ESP8266 Board,
https://www.reichelt.de/d1-mini-esp8266 ... 53978.html
Das Wifi, und der Mqtt Kram läuft, aber ich bekomme keinen einzigen GPIO-Port angesteuert.

Was mache ich da falsch?



Ich mache
pinMode(1,OUTPUT)
digitalWrite(1,HIGH)

es tut aber nichts auf dem Port.

Code: Alles auswählen

/***************************************************
  Adafruit MQTT Library ESP8266 Example

  Must use ESP8266 Arduino from:
    https://github.com/esp8266/Arduino

  Works great with Adafruit's Huzzah ESP board & Feather
  ----> https://www.adafruit.com/product/2471
  ----> https://www.adafruit.com/products/2821

  Adafruit invests time and resources providing this open source code,
  please support Adafruit and open-source hardware by purchasing
  products from Adafruit!

  Written by Tony DiCola for Adafruit Industries.
  MIT license, all text above must be included in any redistribution
 ****************************************************/
#include <ESP8266WiFi.h>
#include "Adafruit_MQTT.h"
#include "Adafruit_MQTT_Client.h"

/************************* WiFi Access Point *********************************/

#define WLAN_SSID       "Boris Homenet"
#define WLAN_PASS       "CBwkwtvywTz"

/************************* Adafruit.io Setup *********************************/

#define AIO_SERVER      "192.168.1.100"
#define AIO_SERVERPORT  1883                   // use 8883 for SSL
#define AIO_USERNAME    "AO"
#define AIO_KEY         "AO"

int LED=0;


/************ Global State (you don't need to change this!) ******************/

// Create an ESP8266 WiFiClient class to connect to the MQTT server.
WiFiClient client;
// or... use WiFiFlientSecure for SSL
//WiFiClientSecure client;

// Setup the MQTT client class by passing in the WiFi client and MQTT server and login details.
Adafruit_MQTT_Client mqtt(&client, AIO_SERVER, AIO_SERVERPORT);

/****************************** Feeds ***************************************/

// Setup a feed called 'photocell' for publishing.
// Notice MQTT paths for AIO follow the form: <username>/feeds/<feedname>
//Adafruit_MQTT_Publish photocell = Adafruit_MQTT_Publish(&mqtt, AIO_USERNAME "/feeds/photocell");

// Setup a feed called 'onoff' for subscribing to changes.
Adafruit_MQTT_Subscribe PowerMeter = Adafruit_MQTT_Subscribe(&mqtt, "power/Leistung");

/*************************** Sketch Code ************************************/

// Bug workaround for Arduino 1.6.6, it seems to need a function declaration
// for some reason (only affects ESP8266, likely an arduino-builder bug).
void MQTT_connect();


void setup() {


  Serial.begin(115200);
  delay(10);

  Serial.println(F("PowerMeter"));

  // Connect to WiFi access point.
  Serial.println(); Serial.println();
  Serial.print("Connecting to ");
  Serial.println(WLAN_SSID);

  WiFi.begin(WLAN_SSID, WLAN_PASS);
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println();

  Serial.println("WiFi connected");
  Serial.println("IP address: "); Serial.println(WiFi.localIP());

  // Setup MQTT subscription for onoff feed.
  mqtt.subscribe(&PowerMeter);

}

uint32_t x=0;

void loop() {
  // Ensure the connection to the MQTT server is alive (this will make the first
  // connection and automatically reconnect when disconnected).  See the MQTT_connect
  // function definition further below.
  MQTT_connect();

  // this is our 'wait for incoming subscription packets' busy subloop
  // try to spend your time here

  Adafruit_MQTT_Subscribe *subscription;
  while ((subscription = mqtt.readSubscription(5000))) {
    if (subscription == &PowerMeter) {
      Serial.print(F("Got: "));
      Serial.println((char *)PowerMeter.lastread);
      Serial.println(LED);
      pinMode(LED,OUTPUT);
      digitalWrite(LED,HIGH);
      delay(1000);
      digitalWrite(LED,LOW);
      delay(1000);
      LED=LED+1;
      if (LED>=10){ LED =0;}
    }
  }

  // Now we can publish stuff!
  //Serial.print(F("\nSending photocell val "));
  //Serial.print(x);
  //Serial.print("...");
  //if (! photocell.publish(x++)) {
  //  Serial.println(F("Failed"));
 // } else {
 //   Serial.println(F("OK!"));
 // }

  // ping the server to keep the mqtt connection alive
  // NOT required if you are publishing once every KEEPALIVE seconds
  /*
  if(! mqtt.ping()) {
    mqtt.disconnect();
  }
  */
}

// Function to connect and reconnect as necessary to the MQTT server.
// Should be called in the loop function and it will take care if connecting.
void MQTT_connect() {
  int8_t ret;

  // Stop if already connected.
  if (mqtt.connected()) {
    return;
  }

  Serial.print("Connecting to MQTT... ");

  uint8_t retries = 3;
  while ((ret = mqtt.connect()) != 0) { // connect will return 0 for connected
       Serial.println(mqtt.connectErrorString(ret));
       Serial.println("Retrying MQTT connection in 5 seconds...");
       mqtt.disconnect();
       delay(5000);  // wait 5 seconds
       retries--;
       if (retries == 0) {
         // basically die and wait for WDT to reset me
         while (1);
       }
  }
  Serial.println("MQTT Connected!");
}
Zuletzt geändert von Hightech am Mi 16. Sep 2020, 20:51, insgesamt 1-mal geändert.
lommodore
Beiträge: 836
Registriert: So 22. Feb 2015, 14:52

Re: Der AVR-/ARDUINO-Faden

Beitrag von lommodore »

Versuchs mal mit D1 anstatt von 1, das hat bei mir ein derartiges Problem gefixt
Benutzeravatar
Sunset
Beiträge: 1511
Registriert: Fr 6. Dez 2013, 15:19

Re: Der AVR-/ARDUINO-Faden

Beitrag von Sunset »

DER LED Pin fängt mit Port 0 an und ändert sich bei jedem Durchlauf um 1 Port bis Port 9, bei Port 10 wird er wieder auf 0 gesetzt.

Code: Alles auswählen

int LED=0;

...

      pinMode(LED,OUTPUT);
      digitalWrite(LED,HIGH);
      delay(1000);
      digitalWrite(LED,LOW);
      delay(1000);
      LED=LED+1;
      if (LED>=10){ LED =0;}
Ist das wirklich so gewollt? 10 LEDs und die sollen alle der Reihe nach für 1 Sekunde blinken?
Benutzeravatar
Hightech
Beiträge: 11456
Registriert: So 11. Aug 2013, 18:37

Re: Der AVR-/ARDUINO-Faden

Beitrag von Hightech »

Ja, zu Debugzwecken sollte das so sein, wegen der Portzuordnung, ob es da Probleme gibt!.

Aber der Tipp mit D1 war goldrichtig!!!!

Warum ist das nirgends erwähnt?
Benutzeravatar
Weisskeinen
Beiträge: 3948
Registriert: Di 27. Aug 2013, 16:19

Re: Der AVR-/ARDUINO-Faden

Beitrag von Weisskeinen »

lommodore hat geschrieben: Mi 16. Sep 2020, 20:31 Versuchs mal mit D1 anstatt von 1, das hat bei mir ein derartiges Problem gefixt
Lasst uns andere nicht doof sterben. Welche '1' ist gemeint?
lommodore
Beiträge: 836
Registriert: So 22. Feb 2015, 14:52

Re: Der AVR-/ARDUINO-Faden

Beitrag von lommodore »

Die Pin-Nummer, beim ESP funktionierts bei mit immer den Pin als Dx anzugeben, anstatt x, also pinMode(D1, Output), anstatt (1, output"
Benutzeravatar
Hightech
Beiträge: 11456
Registriert: So 11. Aug 2013, 18:37

Re: Der AVR-/ARDUINO-Faden

Beitrag von Hightech »

lommodore hat geschrieben: Do 17. Sep 2020, 19:38 Die Pin-Nummer, beim ESP funktionierts bei mit immer den Pin als Dx anzugeben, anstatt x, also pinMode(D1, Output), anstatt (1, output"
Das passt doch wirklich in keine Logik.
Benutzeravatar
Später Gast
Beiträge: 1697
Registriert: Di 5. Apr 2016, 22:03
Wohnort: Karlsruhe
Kontaktdaten:

Re: Der AVR-/ARDUINO-Faden

Beitrag von Später Gast »

Hightech hat geschrieben: Do 17. Sep 2020, 21:17
lommodore hat geschrieben: Do 17. Sep 2020, 19:38 Die Pin-Nummer, beim ESP funktionierts bei mit immer den Pin als Dx anzugeben, anstatt x, also pinMode(D1, Output), anstatt (1, output"
Das passt doch wirklich in keine Logik.
Ich orakele mal (weitestgehend frei von einschlägigen Wissen) einen historischen Erklärungsansatz: Das ganze NodeMCU ESP Gedöns wurde nachträglich in die Arduino IDE reingeflanscht, von nicht-Arduino-Personal. Die Haben das nativ mit LUA gemacht und dadrin halt beschlossen, dass es D# und A# für digitale und analoge Pins heißen soll und das dann beim ranflanschen logischer Weise beibehalten. Weil ist ja viel logischer so. Wieso soll man bei den digitalen Pins den Buchstaben weglassen und bei den analogen nicht? :roll:
Benutzeravatar
Hightech
Beiträge: 11456
Registriert: So 11. Aug 2013, 18:37

Re: Der AVR-/ARDUINO-Faden

Beitrag von Hightech »

Ja, Herrlich.
Besonders wenn man dann schreibt
analogWrite(D1,500) auf einem Digital_Out für eine 50% PWM.
Args.
Benutzeravatar
Weisskeinen
Beiträge: 3948
Registriert: Di 27. Aug 2013, 16:19

Re: Der AVR-/ARDUINO-Faden

Beitrag von Weisskeinen »

Zahlen könnte man programmatisch einfach behandeln, Konstanten mit hinterlegten Zahlen nicht so...
Benutzeravatar
Cubicany
Beiträge: 3543
Registriert: Sa 15. Feb 2020, 17:48
Wohnort: Soest

Re: Der AVR-/ARDUINO-Faden

Beitrag von Cubicany »

Hab gerade was, wo ich nicht recht weiß, wie ich es lösen soll.

Und zwar will ich den Code eines RGB Farbwechsels aufräumen.

Zuerst sollen die Farben langsam gewechselt werden, dann langsam auf und
abgeblendet und danach Weiß auf und abgeblendet werden.

Ich will jetzt jede Variante über einzelne Schleifen laufen lassen, also zB. zehn Mal
wechseln, dann 20 mal auf und abschwellen und dann nochmal 5 mal Weiß.

Geht sowas über for Schleifen, oder muss man das anders machen?
Benutzeravatar
Später Gast
Beiträge: 1697
Registriert: Di 5. Apr 2016, 22:03
Wohnort: Karlsruhe
Kontaktdaten:

Re: Der AVR-/ARDUINO-Faden

Beitrag von Später Gast »

Müssen pu püssen. Wenn ich nur for-Schleifen programmieren könnte, würde ich sicher versuchen, das damit zu machen. ;)

Zum Glück hat man mich hier über "Funktionen" ins Bild gesetzt, deswegen würde ich das damit machen.
Ich würde mir da einzelne Funktionen programmieren, eine für die Farbwechsel und eine für Auf- und Abschwellen mit [#Farbe], dann die Funktionen aus dem Loop heraus aufrufen wie man lustig ist, also über eine bestimmte Zeit hinweg, oder die Funktion gibt Bescheid, wenn sie mit Ausführung fertig ist und der Loop macht dann passend weiter. Also einmal

void Farbwechsel(){
[farben werden x Mal gewechselt];
FarbwechselFertig=true;
}

void AnAbSchwellen(){
[Licht schwillt x Mal an und ab];
FarbwechselFertig=false;
}

und dann im Loop
if(!Farbwechselfertig){
Farbwechsel();
}
if(FarbwechselFertig){
AnAbSchwellen();
}

zur Rückmeldung wird hier die globale Variable "FarbwechselFertig" verwendet, die muss man ganz zu Beginn deklarieren, hier mit "Bool FarbwechselFertig=false;" damit er auch mit der richtigen Funktion anfängt.

Das mit den Funktionen ist super, weil du einzelne Teile viel leichter verändern kannst, ohne dabei Angst haben zu müssen dir irgendeine andere Geschichte wieder zu zerschießen. Und du kannst Blöcke easy peasy in andere Projekte reinpasten und musst nicht jedes Mal alles wieder von Null aufbauen.

Lange for-Schleifen versuche ich zu vermeiden, weil sie während sie laufen nen Haufen Zeuch blockieren, den man eigentlich gerne haben möchte.
ch_ris
Beiträge: 3039
Registriert: Mo 30. Nov 2015, 10:08

Re: Der AVR-/ARDUINO-Faden

Beitrag von ch_ris »

du könnts auch eineTabelle mit den farbwerten anlegen. und die loopen. und mit timer bremsen.
Benutzeravatar
Bastelbruder
Beiträge: 11541
Registriert: Mi 14. Aug 2013, 18:28

Re: Der AVR-/ARDUINO-Faden

Beitrag von Bastelbruder »

Ich bin ja nicht so der Softie, aber Lookuptable war meine erste Idee.
MSG
Beiträge: 2195
Registriert: Fr 9. Nov 2018, 23:24
Wohnort: Nähe Dieburg

Re: Der AVR-/ARDUINO-Faden

Beitrag von MSG »

Farbwechsel an sich machst du am einfachsten über den hue Wert ( 0 bis 765 ) damit erhälst du Farben 0 = blau ...rot ....grün...blau = 765
Hier ein Beispiel aus meiner DMX Steuerung. Die Variablen gRedToSetg, GreenToSet und gBlueToSet enthalten dann Werte von 0 = aus ...255 = max

Code: Alles auswählen

    if (hue < 256) {
      /// blue to red
      gRedToSet   = hue;
      gGreenToSet = 0;
      gBlueToSet  = 255-hue;

    } else if (hue < 511) {
      /// red to green
      gRedToSet   = 255 - (hue-255);
      gGreenToSet = hue-255;
      gBlueToSet  = 0;
    } else {
      /// green to blue
      gRedToSet   = 0;
      gGreenToSet = 255-(hue-510);
      gBlueToSet  = hue-510;
    } // if
Benutzeravatar
phettsack
Beiträge: 1200
Registriert: Mo 12. Aug 2013, 18:17

Re: Der AVR-/ARDUINO-Faden

Beitrag von phettsack »

Arbeitet ihr noch mit der Orginal-Arduino-IDE?

Ich habe mir letzte Woche die Mühe gemacht und VSCode mit Platformio installiert. Das ist wirklich ein Unterschied wie Tag und Nacht. Ich bin ja kein hocheffizienter Programmierer und stümpere mir eben ein bisschen was zusammen, mit VSCode geht das aber wesentlich angenehmer wenn man das erstmal installiert bekommen hat.
Animiert dazu hat mich dieses Video: https://www.youtube.com/watch?v=Yb-HOBynJdc
MSG
Beiträge: 2195
Registriert: Fr 9. Nov 2018, 23:24
Wohnort: Nähe Dieburg

Re: Der AVR-/ARDUINO-Faden

Beitrag von MSG »

Ich benutzer auch VS Code unter Linux mit PlatformIO.

Hier ein ganz kurzer Einstieg: https://www.heise.de/developer/artikel/ ... 64669.html
Benutzeravatar
Hightech
Beiträge: 11456
Registriert: So 11. Aug 2013, 18:37

Re: Der AVR-/ARDUINO-Faden

Beitrag von Hightech »

Ich hab das alles installiert und bei mir macht das alles nur ???

Ich bin es irgendwie gewohnt das auf Fußpilzebene zu machen, also main.c, main.h gedöhns.h Zeugs.c -> makefile und rauf auf den µC
Alleine die Arduino-IDE stellt mich vor Probleme wie: Wo sind die Libs, es verteilt sich alles in alle möglichen Pfade und Verzeichnisse.
Keine Ahnung wo was liegt von meinem Kram.
Blöd ist dann auch, wenn es 5 verschiedene Header Dateien gibt, die aber in den verschiedenen Board den gleichen Namen haben. Zu Beispiel wifi.h.

Bei VS hab ich das Gefühl, vollständig im Dunkeln zu stehen, wo was ist und wo was her kommt. Ich weiss da nicht mal, wo mein Code auf der Platte liegt und welche Abhängikeiten mein Code hat.
Ist das normal?
Benutzeravatar
Fritzler
Beiträge: 12597
Registriert: So 11. Aug 2013, 19:42
Wohnort: D:/Berlin/Adlershof/Technologiepark
Kontaktdaten:

Re: Der AVR-/ARDUINO-Faden

Beitrag von Fritzler »

Das frag ich mich auch jedesmal was die Leute an VS Code so toll finden.
Das ist sacklahm, weil in Javascript geschrieben!

Ab einer gewissen Projektgröße brauchts aber ne IDE, aber die sollte brauchbar sein.
Eine IDE hat auch keine libs zu verstecken, die libc hat vom GCC Verzeichnis zu kommen.
Ansonsten eben normales einbinden von Dateien, die dann im Projektbaum auftauchen.
Rechtsklick auf eine Funktion/Klasse: goto impd/decl (um zu gucken was das jetzt ist) ist auch imemr recht hilfreich.

Ich hab mich ja schon FAST mit eclipse angefreundet, aber jetzt soll der Nachfolger auch alles viel toller machen und in JS geschrieben sein, lasstma stecken :lol:
-> Guck dir mal das Segger Embeddetstudio an, kannste nutzen wenn dun kleinen J-Link Edu kaufst für 66€. (ist eh zu empfehlen wenne was mit ARM machen willst)
Antworten