INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 1 Bewertungen - 5 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
SensEgg3 - FunkSensor im Ü-Ei (ATmega168PA, nRF24, BME280, NTC)
21.08.2021, 12:19
Beitrag #1
SensEgg3 - FunkSensor im Ü-Ei (ATmega168PA, nRF24, BME280, NTC)
Das SensEgg3 ist endlich fertig ...
Nachdem ich das SensEgg1, also den TemperaturFunksensor im Ü-Ei fertiggestellt hatte, habe ich den LowPowerTimer TPL5111 gefunden, und sofort die Idee, eine neue Version (V2) damit zu bauen. Die PCB habe ich fertig geplant, aber nie zur Produktion abgeschickt. Statt dessen dachte ich darüber nach, ob ich einen ATmega328P im TQFP-Gehäuse selber löten kann. Also eine neue PCB als Lötübung geplant (V3) und abgeschickt. Diese Version benutze ich z.Zt. als Prototyp zum testen und programmieren.
Und hier kürze ich mal ab, in unterschiedlichster Reihenfolge und Häufigkeit anzuwenden:
>>> gelötet, programmiert, getestet, gemessen, geflucht, gegrübelt, gestaunt, gefreut!
Nur so viel: Wenn man einen nRF24 in einer Konfiguration mit möglichst wenig Schlafstrom benutzt, sollte man verschiedene Exemplare bei verschiedenen Spannungen (0.1V Schritte innerhalb der erlaubten Betriebsspannung) ausmessen! Ich habe ein Exemplar dabei, welches bei 3.1V 18µA Schlaftrom hat, normal sind da ca. 1.2µA ... Das gleiche Exemplar hat bei 2.0V dann nur noch 0.6µA Schlafstrom!

Eckdaten zum SensEgg3:
In ganz kurz ... der Sensor funkt alle 60sec die Temperatur, die Luftfeuchte, den Luftdruck und die Betriebsspannung an einen zentralen Empfänger, wobei die Spannungsversorgung eine Knopfzelle CR2032 (210-240mAh) ist, und diese rechnerisch über 7 Jahre ihren Dienst tut!

In etwas länger ... der ATmega168PA schläft (ohne WDT), und wird alle 60sec am InterruptPin vom LowPowerTimer TPL5111 aufgeweckt, wobei diese beiden ICs zusammen einen Schlafstrom von nur 140-150nA haben. Zu diesem Schlafstrom gesellen sich noch die 100nA des BME280 (lt.DB), bleiben für den Schlafstrom des nRF24 ca. 860nA. Bei 2.985V habe ich 1.110µA Schlafstrom für das betriebsbereite SensEgg3 gemessen! In den 25.4ms die der ATmega168 @ 4MHz aktiv ist, wird die Temperatur via NTC gemessen, danach die Referenz auf 1.1V umgeschaltet. In den 10ms die die Referenz benötigt um sich zu stabilisieren, wird die Temperatur via Steinhart-Hart Gleichung ausgerechnet, eine Messung T/H/P im Forced Mode mit dem BME280 gemacht, und die Daten abgeholt. Die Status-LED blinkt so lange, wie das Abholen der LuftFeuchte-Daten dauert (2.8-2.9ms). Nun wird die Betriebsspannung gemessen (0.5ms), und die Referenz wieder auf Default gestellt. Die eingesammelten Werte werden dann in 6.1-6.2ms mit dem nRF24 verschickt, der ATmega168 geht wieder schlafen. Die Zeitangaben sind systemintern gemessen, und können entsprechend der Werkskalibrierung des ATmega168 für den internen R-C-Oszillator +/- 10% abweichen.
Durch das Messen der Temperatur mit NTC verbessere ich die (lt.DB) max. Abweichung des BME280 von +/- 1*C auf +/- 0.2*C. In ein kleines Kästchen eingesperrt, messen bei mir ein SensEgg1, und das gerade fertig gewordene SensEgg3 mit unterschiedlichen NTCs bis auf kleiner 0.1*C Abweichung die gleiche Temperatur. Mache ich das Gleiche mit den BME280 und HTU21D, komme ich auf 0.8-1.2*C Unterschied. Ich behaupte nicht, damit die Temperatur "genau" messen zu können, aber zumindest messe ich bei gleichen Bedingungen die gleiche Temperatur.
Der Sensor ist 3x4cm, bei ca. 1cm Gesamthöhe. Der hier verbaute BME280 ist ein 3.3v Typ, ohne Levelconverter und Spannungsregler. Alternativ kann auch ein HTU21D verbaut werden, wenn man den Sketch anpasst. Da bei diesem SDA und SCL gedreht sind, muss der äußere Steckplatz verwendet werden. Ein OLED SSD1306 kann auch direkt aufgesteckt werden (wieder andere Pin-Anordnung), und war mir bei verschiedenen Problemen nützlich. Der Empfänger ist noch der Gleiche wie vom SensEgg1, auch der Sketch ist nur um die Werte im Strukt erweitert, sowie ein paar Serial.print ... die nächste Baustelle.

Code:
11:49:18.786 -> ID: 201  Temp: 24.2 *C  Humi: 49.1 %  Batt: 2.896 V  Hdex: 26.9  1018.0 hPa
11:50:19.550 -> ID: 201  Temp: 24.2 *C  Humi: 49.2 %  Batt: 2.896 V  Hdex: 26.9  1017.9 hPa
11:51:20.312 -> ID: 201  Temp: 24.2 *C  Humi: 49.4 %  Batt: 2.896 V  Hdex: 26.9  1017.9 hPa
11:52:08.994 -> ID: 100  Temp: 24.3 *C  Humi:      %  Batt: 2.618 V
11:52:21.035 -> ID: 201  Temp: 24.2 *C  Humi: 49.1 %  Batt: 2.896 V  Hdex: 26.9  1017.9 hPa
11:53:21.797 -> ID: 201  Temp: 24.2 *C  Humi: 48.7 %  Batt: 2.896 V  Hdex: 26.8  1017.9 hPa
11:54:22.520 -> ID: 201  Temp: 24.2 *C  Humi: 48.7 %  Batt: 2.896 V  Hdex: 26.8  1017.9 hPa
11:55:23.282 -> ID: 201  Temp: 24.3 *C  Humi: 49.0 %  Batt: 2.896 V  Hdex: 27.0  1017.8 hPa
11:56:24.046 -> ID: 201  Temp: 24.3 *C  Humi: 49.0 %  Batt: 2.896 V  Hdex: 27.0  1017.9 hPa
11:56:50.367 -> ID: 100  Temp: 24.3 *C  Humi:      %  Batt: 2.618 V
11:57:24.768 -> ID: 201  Temp: 24.3 *C  Humi: 49.0 %  Batt: 2.896 V  Hdex: 27.0  1017.9 hPa
11:58:25.531 -> ID: 201  Temp: 24.3 *C  Humi: 48.6 %  Batt: 2.896 V  Hdex: 26.9  1017.8 hPa
11:59:26.255 -> ID: 201  Temp: 24.3 *C  Humi: 49.4 %  Batt: 2.896 V  Hdex: 27.1  1017.9 hPa

Sensor-ID 100 ist ein SensEgg1 mit NTC TS-NTC-103 von B+B Sensors mit 0.5% Genauigkeit (10k)
Sensor-ID 201 ist ein SensEgg3 mit BME280 (3V) von Bosch und NTC 10K6A1 von Measurement Specialties mit 0.2% Genauigkeit (10k)

Hdex ist der errechnete Humidex (Temp+Luftfeuchte-Wärmeempfinden).
Bei Fragen, ...einfach raus damit Big Grin

... und noch der Sketch:

Code:
#include <LowPower.h> // https://github.com/rocketscream/Low-Power
#include <Wire.h>
#include <MyBME280.h> // https://arduino-projekte.webnode.at/meine-libraries/

// Achtung - aktuelle RF24 Library von TMRh20 benutzen !!!
#include "RF24.h"     // https://github.com/nRF24/RF24

#define BME280_I2cAdd 0x76        // I2C-Adresse
MyBME280 BME(BME280_I2cAdd);      // BME-Objekt erstellen

struct PaketStruktur
{
  const byte Sensor_ID;           // (0..255) - Eindeutige ID des Senders
  int Temp;
  int Humi;
  int Druck;
  int Vcc;
  const byte Messwert_ID;         // reserviert!
  int Wert;                       // reserviert! für versch. Werte
};
PaketStruktur payload = { 201, 22, 50, 1000, 5, 0, 0 };
//_______________________ ID   T   H   P     V  M  W __

int hoehe = 115;                  // Druck-Referenz

const byte Plus_Pin = 15;         // Stromversorgung Sensor!
const byte NTC_PWR_Pin = 14;      // Power-Pin für R - NTC - Spannungsteiler
const byte NTC_Pin = A7;          // für NTC Temperaturmessung
const byte CE_PIN =   9;          // für nRF24
const byte CSN_PIN =  10;         // für nRF24
const byte I2C_Res = 0;           // schaltbare PullUp-Widerstände für I²C
const byte LED_RT = 4;            // LED rot
const byte LED_GN = 2;            // LED grün
const byte wakeUpPin = 3;         // Pin für externes wecken

const float INTERN = 1.106;       // ausgemessene, interne Referenz
float Vcc = 3.300;                // max. 3.6V !!
float rawADC, logRt, Rt, Kelvin;  // für NTC Temperaturmessung
float R = 10000;                  // R1-NTC Widerstand = 9.980k + Ri_Pin

// NTC-Parameter
float c1 = 1.128771755E-03;       //
float c2 = 2.341783481E-04;       // NTC 10K6A1 von Measurement Specialties
float c3 = 0.875216221E-07;       //

//volatile byte counter = 0;
unsigned long SketchStartZeit;
unsigned long SketchLaufZeit;

RF24 radio(CE_PIN, CSN_PIN);              // nRF24-Radio-Objekt definieren
byte addresses[][6] = {"Node1", "Node2"}; // Adressen für Sender und Empfänger

// Funktions-Prototypen
void wakeUp();
float Vcc_messen();
void Werte_senden();

void setup()
{
  pinMode(wakeUpPin, INPUT);      // WakeUp-Pin für TPL5111
  pinMode(I2C_Res, OUTPUT);
  digitalWrite(I2C_Res, HIGH);    // PullUp-Widerstände für I²C einschalten
  pinMode (Plus_Pin, OUTPUT);    
  digitalWrite(Plus_Pin, HIGH);   // Stromversorgung Sensor !!!!!!!!!!!!!!!
  pinMode(NTC_PWR_Pin, OUTPUT);   // Stromversorgung R-NTC  !!!!!!!!!!!!!!!
  digitalWrite(NTC_PWR_Pin, LOW);

  pinMode(LED_RT, OUTPUT);
  pinMode(LED_GN, OUTPUT);

  // ADC Speed auf Prescaler 16 setzen (4 MHz / 16 = 250 kHz)(52µs/Messung)
  ADMUX |= (1 << REFS0);            // VCC als Referenzspannung für den AD-Wandler
  ADCSRA &= ~(bit (ADPS0) | bit (ADPS1) | bit (ADPS2));   // clear prescaler bits
  ADCSRA |= bit (ADPS2);                                  //  16 <== max. @ 16MHz


  delay(2); // 2ms StartUpTime BME280 !!
  if (BME.isReady())
  {
    BME.setWeatherMonitoring();     //Setze Parameter für Wetterüberwachung
    BME.init();
    //Beim Initialisieren des Parametersatzes für Wetterueberwachung (Forced-Mode)
    //wird bereits eine Messung vom Sensor durchgeführt und als Rohwerte gespeichert
  }
  else      // falls BME280 nicht bereit wird
  {
    for (byte i = 0; i < 20; i++)
    {
      digitalWrite(LED_GN, HIGH);
      delay(5);
      digitalWrite(LED_GN, LOW);
      delay(95);
    }
  }

  if (radio.begin())    // Starte Sender
  {
    radio.setChannel(101);                    // Sendekanal (zwischen 1 - 125), untere Kanäle oft von WIFI belegt
    radio.setPayloadSize(sizeof(payload));    // Sende nur so viele Daten, wie nötig
    radio.setAutoAck(true);                   // Automatische Bestätigung bei Empfang Daten
    radio.setPALevel(RF24_PA_HIGH);           // Sendeleistung definieren (RF24_PA_MAX), (RF24_PA_HIGH), (RF24_PA_LOW), (RF24_PA_MIN)
    radio.setDataRate(RF24_1MBPS);            // Übertragungsgeschwindigkeit definieren RF24_1MBPS, (RF24_250KBPS) = größere Reichweite aber nicht Kompatibel mit RF24L01 (ohne '+')
    radio.setRetries (6, 3);                  // Versucht im Abstand von 1ms (steps of 250μs) die Daten 3x wiederholt zu senden, falls keine Bestätigung vom Empfänger ankam

    // Öffne die Pipes zum Senden und Empfangen diese sind definiert durch die Adresse im array (6 byte)
    radio.openWritingPipe(addresses[1]);      // hier wird gesendet
    radio.openReadingPipe(1, addresses[0]);   // hier wird empfangen
    radio.stopListening();                    // versetze Sender in Sendemodus

    radio.powerDown();    // Deaktiviere Radio nach dem Senden
  }
  else      // Wenn Sender nicht erkannt/initialisiert wurde, 10x LED blinken
  {
    for (byte i = 0; i < 10; i++)
    {
      digitalWrite(LED_RT, HIGH);
      delay(5);
      digitalWrite(LED_RT, LOW);
      delay(195);
    }
  }
  digitalWrite(LED_GN, HIGH);         // kurzes "Bereit" blinken nach Setup
  delay(5);
  digitalWrite(LED_GN, LOW);
}

void loop()
{
  // SketchLaufZeit = int((micros() - SketchStartZeit) / 100);
  // payload.Wert = SketchLaufZeit;      // Laufzeit gesamt: 25.4ms

  attachInterrupt(1, wakeUp, RISING); // WakeUp-Pin (RISING,FALLING,CHANGE,HIGH,LOW)
  LowPower.powerDown(SLEEP_FOREVER, ADC_OFF, BOD_OFF);
  detachInterrupt(1);                 // Disable external pin interrupt on WakeUp-Pin

  // SketchStartZeit = micros();

  // Do something here

  digitalWrite (NTC_PWR_Pin, HIGH);   // Spannungsteiler aktivieren
  rawADC = analogRead(NTC_Pin);       // dummy read
  rawADC = 0;
  for (byte i = 0; i < 6; i++)        // Mittelwert & Oversampling
  {
    delayMicroseconds(50);
    rawADC += analogRead(NTC_Pin);
  }
  digitalWrite (NTC_PWR_Pin, LOW);    // Spannungsteiler ausschalten

  ADMUX = _BV(REFS0) | _BV(MUX3) | _BV(MUX2) | _BV(MUX1);   // 1.1V_Referenz (+10ms)

  rawADC = (rawADC / 6.0);            // gemittelter Wert
  if (rawADC > 100 && rawADC < 1000)  // Wenn gültiger Messwert (< 95°C oder > -40°C)
  {
    Rt = R * (rawADC / (1024.0 - rawADC));        // NTC-Widerstand berechnen

    // Steinhart-Hart Gleichung für Temperaturverlauf NTC   // 0.9 - 1.0ms @ 4MHz
    logRt = log(Rt);
    Kelvin = (1.0 / (c1 + c2 * logRt + c3 * logRt * logRt * logRt));
    payload.Temp = int((Kelvin - 273.15) * 10.0); // Kelvin >> *Celsius, 1 Kommastelle
  }
  BME.startSingleMeas();                                    // 9.1ms

  // payload.Wert = int(BME.readTemp() * 10.0);             // NTC-Wert wird gesendet

  if (payload.Vcc >= 2400) digitalWrite(LED_GN, HIGH);      // Status-Blinken EIN (GN)
  if (payload.Vcc <  2400) digitalWrite(LED_RT, HIGH);      // Status-Blinken EIN (RT)

  payload.Humi = int(BME.readHumidity() * 10.0);            // 2.8 - 2.9ms

  digitalWrite(LED_GN, LOW);                                // Status-Blinken AUS (GN)
  digitalWrite(LED_RT, LOW);                                // Status-Blinken AUS (RT)

  payload.Druck = int(BME.readReducedPress(hoehe) * 10.0);  // 4.1ms
  payload.Vcc  = int(Vcc_messen() * 1000);                  // 0.5ms
  Werte_senden();                                           // 6.1 - 6.2ms
}
// ********************************************************************************​*
void wakeUp()
{
  // Just a handler for the pin interrupt.
}

float Vcc_messen()
{
  // Via bekannter Vref1.1 die Betriebsspannung messen (only328!)
  // 2x lesen des ADC, 1x dummy read notwendig!

  // ADMUX = _BV(REFS0) | _BV(MUX3) | _BV(MUX2) | _BV(MUX1); // ist im Sketch (-10ms!)
  // delay(10);                            // Warten bis Referenz eingeschwungen (10!)

  long result = 0;
  for ( byte i = 0; i < 2; i++ )        // 1. = dummy read!
  {
    delayMicroseconds(100);
    ADCSRA |= _BV(ADSC);                // Start Umwandlung
    while (bit_is_set(ADCSRA, ADSC));   // Messen
    uint8_t low  = ADCL;                // must read ADCL first - it then locks ADCH
    uint8_t high = ADCH;                // unlocks both
    result = (high << 8) | low;         // Ergebnis lesen
  }
  float Vcc_gemessen = INTERN * 1024L / result;

  analogReference(DEFAULT);             // zurückstellen auf Vcc als Referenz
  return Vcc_gemessen;
}

void Werte_senden()
{
  radio.powerUp();            // Starte Radio

  // Sende Daten
  if (!radio.write( &payload, sizeof(payload) ))
  {
    // Kommunikation fehlgeschlagen
    digitalWrite(LED_RT, HIGH);
    delay(5);
    digitalWrite(LED_RT, LOW);
  }
  radio.powerDown();          // Deaktiviere Radio nach dem Senden
}


Gruß André


Angehängte Datei(en) Thumbnail(s)
               
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
26.08.2021, 10:05
Beitrag #2
RE: SensEgg3 - FunkSensor im Ü-Ei (ATmega168PA, nRF24, BME280, NTC)
Respect Shy

Immer in Stress
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
26.08.2021, 11:31
Beitrag #3
RE: SensEgg3 - FunkSensor im Ü-Ei (ATmega168PA, nRF24, BME280, NTC)
Tolles Projekt. Du hast da auch sehr viel Arbeit reingesteckt!

Wie funktioniert das mit dem Ü-Ei (bilde mir ein das irgendwo mal gelesen zu haben, das man die Technik in ein Ü-Ei bekommt) und der Luftfeuchte? Wie lange dauert der Temperaturausgleich im Ü-Ei?

Ich überlege mir gerade wie ich nRF24 mit meiner SmartHomeZentrale (RP4) vereinige. Hab da gar keine Erfahrung. (Ein ESP der das Signal empfängt und per MQTT zur Zentrale sendet?)

Bisher arbeitet in jedem Zimmer ein ESP8266 und sendet per MQTT zur Zentrale. Die Akkus halten nur ca. 1/4 Jahr.

Ich hätte Lust zum Nachbauen. Möchtest du Gerberfiles und Schematic auch veröffentlichen?
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
26.08.2021, 18:13
Beitrag #4
RE: SensEgg3 - FunkSensor im Ü-Ei (ATmega168PA, nRF24, BME280, NTC)
Hi,

Danke! ... schaut doch noch jemand vorbei ;-)

@ N1d45, ja, ich habe relativ viel Zeit hier reingesteckt, aber wenn es Spaß macht, würde ich es nicht unbedingt als Arbeit bezeichnen. Nur Rückschläge sind ärgerlich, aber auch lehrreich.
Der Temperaturausgleich ist schneller als bei meinen 2 gekauften (TFA/NoName) Thermometern (Im Gerät bzw. mit Außensensor). Aber ganz ohne Gehäuse würde ich nicht messen wollen, da jeder leiser Wind (bei Sonnenschein) die Temperatur ordentlich schwanken lässt, wenn jede Masse am Sensor fehlt. Es ist irritierend wenn die Temperatur um 3-4 Grad "zappelt"
Bei der Luftfeuchte wusste ich schon vorher, daß ich dem Ü-Ei ein paar Löcher verpassen muss. Da bin ich noch am Testen, ob die ca. 2cm² mit kleinen Löchern reichen, oder mir was besseres einfallen lassen muss. Bei ruhender Luft sehr träge (geschlossene Räume), sobald aber ein leiser Zug geht, scheinen 3 - 5 Minuten zu reichen, um die Luftfeuchtewerte anzuzeigen, die das Tischgerät sofort nach den nächsten 1 -2 Messzyklen anzeigen kann.
Aber hier bin ich noch empierisch am testen.
Mit RPi und ESPs habe ich leider keine Erfahrungen, aber auch mir kam schon der Gedanke, so ein nRF24 an einen ESP zu hängen, um die Daten online verfügbar zu machen. Aber die Baustelle ist aktuell nicht auf dem Plan.
Das Gerberfile kannst Du (und jeder der mich anschreibt) gern haben, nur einen Schaltplan habe ich derzeit nicht. Ich habe mich zuerst um die Platzaufteilung auf den 3x4cm gekümmert, den Atmega168 "gedreht und gewendet" wie ich am besten die Leiterzüge lege, und welche Pins ich verwenden muss/ verwenden kann. Mit einer Bestückungsliste wäre ich schneller fertig Wink

Kennst Du die Eckdaten zu Deinen ESP8266-Nodes? Schlafstrom, Betriebsstrom, Einschaltzeit?
https://oregonembedded.com/batterycalc.htm ... vor allem mal mit dem Schlafstrom spielen!

Gruß André
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
26.08.2021, 20:37
Beitrag #5
RE: SensEgg3 - FunkSensor im Ü-Ei (ATmega168PA, nRF24, BME280, NTC)
Ich werfe hier gerne auch mal ein paar Kilo Lob für das Projekt in den Ring. ExclamationExclamation

Ohne Rückschläge geht es kaum, Murphy lauert hinter jeder Ecke.
Deine Geduld das Projekt bis zum Ende zu bringen bewundere ich. Vermutlich mussten auch ganz viele Ü-Eier als Nervennahrung dran glauben. Big Grin
Um so mehr freut man sich wenn ein funktionierendes und dazu noch gut "ge­styltes" Ergebnis dabei heraus kommt. Auch wenn es nur ca. 20 Bauteile sind die auf die vorgegebenen Platinenmaße müssen ist man ständig am grübeln ob man besser dieses oder jenes Bauteil verwendet oder was einsparen kann.
Die Idee mit dem TPL5111 gefällt mir. Man muss auch erst mal darauf kommen danach zu suchen.

Ich bin auch schon seit geraumer Zeit an einem Projekt dran. Die Platinenmaße sind bei mir auch mit ca. 11x80mm "vorgegeben". (Ich hoffe die fertigt mir jemand wegen der 11mm) Auch bei mir sind es ca. 20 Bauteile. Einen 328er im TQFP habe ich schon verworfen weil der mit den 11mm absolut nicht harmonieren will. Alternativ plane ich nun mit einem ATTINY84 im SOIC-14. Das könnte mir aber noch auf die Füße fallen weil der weniger Timer hat als der 328er. Auf jeden Fall kann man in solch eine Idee gaaaanz viel Zeit und Gehirnschmalz investieren.

Gruß Arne
Mit zunehmender Anzahl qualifizierter Informationen bei einer Fragestellung, erhöht sich zwangsläufig die Gefahr auf eine zielführende Antwort.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
26.08.2021, 20:41
Beitrag #6
RE: SensEgg3 - FunkSensor im Ü-Ei (ATmega168PA, nRF24, BME280, NTC)
(26.08.2021 20:37)ardu_arne schrieb:  Auf jeden Fall kann man in solch eine Idee gaaaanz viel Zeit und Gehirnschmalz investieren.
Sowas hält das Gehirn am Laufen und dürfte auch gut gegen Alzheimer & Co. sein (hoffe ich).

Dem Lob kann ich gern noch ein paar Kilos zugeben.

Gruß Tommy

"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)
Alle von mir veröffentlichten Codes unterliegen der GPL Version 3
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
27.08.2021, 09:40
Beitrag #7
RE: SensEgg3 - FunkSensor im Ü-Ei (ATmega168PA, nRF24, BME280, NTC)
Hi,

Danke euch für die vielen Kilos Lob, ich hoffe die machen nicht dick Big Grin
Ich fange ein Projekt zu 99% erst an, wenn ich alle relevanten Bauelemente habe, und zumindest Teillösungen im Hinterkopf. Und hier gibt es ja gewisse Erfahrungswerte vom ersten Funksensor. Nur mit den nRF24 bekommt man vermutlich einen Murphy gratis mitgeliefert Big Grin
Solange wie es funktional ist, versuche ich schon eine gewisse Ästhetik bei der Anordnung der Bauelemente auf die PCB zu bringen.
Was den Schlafstrom betrifft, da habe ich sehr viel mit dem oben verlinkten Kalkulator rumgespielt.
Bei dem SensEgg1 sind es 75% Stromverbrauch allein für den WDT, da sucht man nach Lösungen.

Arne, die 11x80mm sind da eine ganz andere Hausnummer, da habe ich den Platz eines Fußballfeldes, und konnte mir durchgängig 1206 SMD-Balken leisten. Unter denen bekommt man wenigstens noch zwei Leiterzüge durch, ohne die 2. Seite der PCB benutzen zu müssen.
Zumindest meckert der Kalkulator bei JLCPCB nicht bei 11x80mm, aber Du solltest Dir auf jeden Fall die Capabilities Deines Produzenten ansehen und im Layouter einstellen.

Gruß André
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
27.08.2021, 13:16
Beitrag #8
RE: SensEgg3 - FunkSensor im Ü-Ei (ATmega168PA, nRF24, BME280, NTC)
JLCPCB lässt auf den ersten Blick 5x5mm als kleinstes Maß zu. Bei meinem bisherigen Lieferanten sind es 10x10mm. Passt also bei beiden.
1206 SMD ist mir auch lieber als 0805 oder noch kleiner. Werde mal mit dem layouten loslegen und sehen was machbar ist.
Nur interessehalber, mit welchem Programm hast du die Platine gemacht?

Gruß Arne
Mit zunehmender Anzahl qualifizierter Informationen bei einer Fragestellung, erhöht sich zwangsläufig die Gefahr auf eine zielführende Antwort.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  SensEgg.433 - FunkSensor [ATtiny1614, RFM69, BME280, NTC, LDR] SpaghettiCode 5 118 11.10.2024 09:01
Letzter Beitrag: N1d45
  SensEgg.light - FunkSensor [ATtiny814, nRF24, BME280, NTC] **** SpaghettiCode 196 30.454 30.09.2024 14:16
Letzter Beitrag: Kai R.
  SensEgg1 - Temperatursensor im Ü-Ei (ATtiny84, nRF24, NTC) SpaghettiCode 12 13.692 27.07.2021 18:53
Letzter Beitrag: Chopp
  7 Zoll Display und NRF24 Propleme schlappy82 15 11.320 28.11.2016 17:10
Letzter Beitrag: hotsystems
  Lampennetzwerk nrf24 Gen.3 - Ideensammlung MaHaI976 6 6.341 08.01.2016 20:23
Letzter Beitrag: MaHaI976
  Musik- Netzwerk (nrf24?) MaHa1976 5 6.864 30.03.2015 06:57
Letzter Beitrag: MaHa1976

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste