Fensterdrehgriffkontakt selber bauen

Begonnen von Kawaci, 02 Mai 2017, 08:31:59

Vorheriges Thema - Nächstes Thema

papa

Hab ich auch schon mal drüber nachgedacht. Das wäre eine komplett neue Battery-Monitor-Implementierung. Diese muss dann über einen Interrupt angebunden werden und es muss öfters gemessen werden. Außerdem ist (mir) nicht klar, ob die kurze Laufzeit "Kontakt checken -> Nachricht senden" überhaupt ausreicht, um eine ordentliche Spannung zu messen.
Für die interne Messung habe ich das schon mal ausprobiert. Ein Sketch, der die Spannungmessung mit Interrupt (10x) erledigt sieht z.B. so aus.
#define EI_NOTEXTERNAL
#include <EnableInterrupt.h>
#include <AskSinPP.h>

using namespace as;

uint16_t vc=0;

//The setup function is called once at startup of the sketch
void setup() {
  DINIT(57600, ASKSIN_PLUS_PLUS_IDENTIFIER);

  ADMUX &= ~(ADMUX_REFMASK | ADMUX_ADCMASK);
  ADMUX |= ADMUX_REF_AVCC;      // select AVCC as reference
  ADMUX |= ADMUX_ADC_VBG;       // measure bandgap reference voltage
  ADCSRA |= (1 << ADIE);        // enable interrupt
  ADCSRA |= (1 << ADSC);        // start conversion
}

int num = 0;
volatile int done = 0;
// The loop function is called in an endless loop
void loop() {
  if( done != 0 ) {
    done = 0;
    DDECLN(vc);
    if( num++ < 10 )
      ADCSRA |= (1 << ADSC);        // start conversion
  }
}

ISR(ADC_vect) {
  done = 1;
  uint16_t v = 1100UL * 1024 / ADC;
  vc = vc == 0 ? v : (vc + v) / 2;
}


Aber das Ganze müsste mal in einer richtigen Anwendung eingebaut und getestet werden.
BananaPi + CUL868 + CUL433 + HM-UART + 1Wire

toensi

Hallo zusammen,

ich suche HM-Fensterdrehgriffkontakt selber bauen, jedoch hätte ich gerne 6 fertig aufgebaute inklusive Gehäuse, bitte um Preisvorschlag, Danke vorab....
LG  :)

Tom Major

Zitat von: papa am 19 November 2019, 14:32:20
Hab ich auch schon mal drüber nachgedacht. Das wäre eine komplett neue Battery-Monitor-Implementierung. Diese muss dann über einen Interrupt angebunden werden und es muss öfters gemessen werden. Außerdem ist (mir) nicht klar, ob die kurze Laufzeit "Kontakt checken -> Nachricht senden" überhaupt ausreicht, um eine ordentliche Spannung zu messen.

ich bin da leicht skeptisch, der Strom beim Senden könnte zu klein und die Zeit zu kurz sein.
Beweisen könnte man das mit einer Messung des Spannungseinbruchs von relativ leeren Batterien mit der Interrupt Implementierung, ähnlich meiner Messung der Batt.spannungsmessung unter Last Schaltung.
https://github.com/TomMajor/SmartHome/blob/master/HB-UNI-Sensor1/Images/BatterySensorLoad.png
Früher: FHEM 5.x
Jetzt: RaspberryMatic / ioBroker

Johnnyflash

Zitat von: Tom Major am 23 November 2019, 13:58:06
ich bin da leicht skeptisch, der Strom beim Senden könnte zu klein und die Zeit zu kurz sein.
Der Spannungseinbruch ist selbst bei frischen Varta Zellen sogar mit einem trägen Multimeter deutlich messbar (Von 3.1V auf 2.2V, LEDs nach Schaltplan bestückt mit 1k5 Vorwiderstand) Fraglich bleibt allerdings, welche Grenzen bei dieser Messmethode sinnvoll wären.

papa

Ich habe da mal was in den HM-SEC-RHS Sketch eingebaut. Bitte mal das
#define BATTERY_IRQ
einschalten. Dann wird die Batteriespannung immer im Hintergrund gemessen. Mit den voreingestellten 2,2V sollen dann ja sofort Battery-Low-Meldungen kommen. Da das CC1101 und AVR bis 1,8V funktionieren sollten, müsste ein Battery-Low-Wert von 1,9 gut funktionieren. Battery-Critical sollte dann 1,7 sein.
BananaPi + CUL868 + CUL433 + HM-UART + 1Wire

Tom Major

Zitat von: Johnnyflash am 23 November 2019, 21:11:23
Der Spannungseinbruch ist selbst bei frischen Varta Zellen sogar mit einem trägen Multimeter deutlich messbar (Von 3.1V auf 2.2V, LEDs nach Schaltplan bestückt mit 1k5 Vorwiderstand) Fraglich bleibt allerdings, welche Grenzen bei dieser Messmethode sinnvoll wären.
Das wäre sehr erstaunlich.
35mA Last (cc1101 TX) für den Bruchteil einer Sekunde können nicht frische Zellen auf 2,2V einbrechen lassen. Und ein normales Multimeter kann sowas auch nicht zeitlich auflösen.
Früher: FHEM 5.x
Jetzt: RaspberryMatic / ioBroker

papa

Ich glaube mit dem neuen Code geht er nicht mehr richtig in den Sleep-Mode  :-\
BananaPi + CUL868 + CUL433 + HM-UART + 1Wire

Johnnyflash

#1402
Zitat von: Tom Major am 24 November 2019, 00:33:30
Das wäre sehr erstaunlich.
35mA Last (cc1101 TX) für den Bruchteil einer Sekunde können nicht frische Zellen auf 2,2V einbrechen lassen. Und ein normales Multimeter kann sowas auch nicht zeitlich auflösen.
Es ist aber ganz bestimmt so, getestet an zwei unterschiedlichen Fenstern mit zwei unterschiedlichen Zellen (1x Varta, frisch eingesetzt, 1x NoName, ein paar Wochen in Gebrauch). Das wird daran liegen, dass dieser Strom deutlich außerhalb der Spezifikation einer CR2032 liegt, dadurch ist der Spannungseinbruch besonders groß und relativ lange messbar. Es darf aber auch gerne jemand eine Vergleichsmessung machen.

Tom Major

Zitat von: Johnnyflash am 24 November 2019, 21:43:03
Es ist aber ganz bestimmt so, getestet an zwei unterschiedlichen Fenstern mit zwei unterschiedlichen Zellen (1x Varta, frisch eingesetzt, 1x NoName, ein paar Wochen in Gebrauch). Das wird daran liegen, dass dieser Strom deutlich außerhalb der Spezifikation einer CR2032 liegt, dadurch ist der Spannungseinbruch besonders groß und relativ lange messbar. Es darf aber auch gerne jemand eine Vergleichsmessung machen.

sorry  ::) , hatte nicht das gesamte Bild vor Augen, dachte an AA Zellen.
Bei CR2032 mag das sein wegen dem höheren Innenwiderstand, obwohl mir auch da der Einbuch auf 2,2V etwas heftig vorkommt  :o.
Da würde ein Elko helfen um beim Senden zu puffern.
Dass man den Einbruch beim Senden für den Bruchteil einer Sekunde nicht gescheit mit dem Multimeter messen kann, dabei bleib ich aber  ;)
Außer die Batterie braucht sehr lange zum Erholen, am besten mal mit Oszi prüfen.
Früher: FHEM 5.x
Jetzt: RaspberryMatic / ioBroker

papa

BananaPi + CUL868 + CUL433 + HM-UART + 1Wire

Johnnyflash

Zitat von: Tom Major am 25 November 2019, 00:17:06
sorry  ::) , hatte nicht das gesamte Bild vor Augen, dachte an AA Zellen.
Bei CR2032 mag das sein wegen dem höheren Innenwiderstand, obwohl mir auch da der Einbuch auf 2,2V etwas heftig vorkommt  :o.
Da würde ein Elko helfen um beim Senden zu puffern.
Dass man den Einbruch beim Senden für den Bruchteil einer Sekunde nicht gescheit mit dem Multimeter messen kann, dabei bleib ich aber  ;)
Außer die Batterie braucht sehr lange zum Erholen, am besten mal mit Oszi prüfen.
Den Sendevorgang kann das Multimeter zeitlich natürlich nicht auflösen, das ist klar. Aber das spielt ja hier auch keine Rolle, da dieser Spannungseinbruch durch den relativ langsamen "Erhohlungseffekt" eben noch deutlich länger sichtbar bleibt.
Zitat von: papa am 25 November 2019, 08:19:24
Hatte hier ähnliche Effekte: https://forum.fhem.de/index.php/topic,67746.msg594962.html#msg594962

Weißt du, ob die CR2450 in den Batteriehalter aus der Stückliste passt?

Psi

Zitat von: Johnnyflash am 25 November 2019, 12:20:42
Weißt du, ob die CR2450 in den Batteriehalter aus der Stückliste passt?

Die Bezeichnung CR<b><h> gibt die Breite und Höhe an: https://de.wikipedia.org/wiki/Knopfzelle
CR2032: 20x3,2 mm
CR2450: 24x5,0 mm
Das wird also eher nicht passen und ob genug Platz im aktuelle RHS-Case ist bezweifle ich auch.

Per

Zitat von: Tom Major am 25 November 2019, 00:17:06Da würde ein Elko helfen um beim Senden zu puffern.
Der Elko wird in den Pausen die Batterien umso mehr entleeren.

Tom Major

Früher: FHEM 5.x
Jetzt: RaspberryMatic / ioBroker

maclovlin

#1409
Hallo,

kann mir jemand Hilfestellung geben, ich kriege meine Platinen HMSensor-CR2032 nicht zum laufen, genauer gesagt bekomme ich den Bootloader nicht programmiert. Es sieht so aus als ob der ATMega sich nicht meldet.

Als Programmer habe ich einen USBasp, flashen der Arduino Pro Mini funktioniert, also würde ich sagen das der Programmer in Ordnung ist.

Mein avrdude aufruf sieht so aus:
avrdude -p m328p -P usb -c usbasp -B 10 -U lfuse:w:0xE2:m -U hfuse:w:0xD2:m -U efuse:w:0xFF:m -U lock:w:0xFF:m

Als Rückmeldung kommt das:
avrdude: set SCK frequency to 93750 Hz
avrdude: error: program enable: target doesn't answer. 1
avrdude: initialization failed, rc=-1
         Double check connections and try again, or use -F to override
         this check.


avrdude done.  Thank you.


Die Platine ist minimal bestückt, nur mit C1, C2, R1 und natürlich der ATMega 328p-au.
Signalwege habe ich durchgemessen, also von den Pads bis zu den ATMega Beinchen, alles scheint ok zu sein.

Als Kondensatoren habe ich Kerkos genommen, da ist die Polung glaube ich egal, oder?

Angeschlossen an den Programmer, wird der ATMega auch richtig bestromt...

Stehe total aufm Schlauch...

Nachtrag:
Habe mal folgenden Aufruf versucht, mit option -F
avrdude -p ATmega328P -P usb -c usbasp -B 10 -U lfuse:w:0xE2:m -U hfuse:w:0xD2:m -U efuse:w:0xFF:m -U lock:w:0xFF:m -F


Das bekomme ich dann als Antwort:
avrdude: set SCK frequency to 93750 Hz
avrdude: error: program enable: target doesn't answer. 1
avrdude: initialization failed, rc=-1
avrdude: AVR device initialized and ready to accept instructions
avrdude: Device signature = 0x00790a
avrdude: Expected signature for ATmega328P is 1E 95 0F

avrdude done.  Thank you.


Wie soll ich das deuten? Das der AVR doch irgendwie Einsatzbereit ist?
Vorallem die "Device signature" ändert sich bei jedem Aufruf...