Forum: Analoge Elektronik und Schaltungstechnik gehegezaunüberwachung


von M. M. (blackcow)


Angehängte Dateien:

Lesenswert?

Hallo liebes Forum,

ich wollte eine alarmanlage bauen, die einen gehegezaun auf hütespannung 
und unterbrechung überwacht.
Natürlich mit Akkupufferung, Sabotage und mit einer großen Sirene :)

das klappt eig alles schon ganz gut, nur bei der unterbrechungserkennung 
komm ich einfach nicht weiter.
ich hab mal die schaltung gepostet. Mit der 16V wechselspannung wird der 
trafo t1 an der sekundärwicklung angeschlossen. die primärwicklung 
schickt dadurch dann einen wechselstrom in die gehegezaunschleife, die 
dadurch auch galvanisch von der alarmanlage getrennt wird. spannung vom 
weidezaungerät ist ca 5000 V oder so. Wenn jezt jemand herkommt und den 
gehegezaun durchschneidet oder wenn ein baum drauffällt, dann wird diese 
schleife ja unterbrochen >> der widerstand in der sekundärwicklung wird 
größer >> durch den shunt-widerstand t1 fliest weniger strom (naja shunt 
ist übertrieben eher ein spannungsteiler)>> spannung sinkt >> alarm wird 
ausgelöst.

das problem ist, das es nicht funktioniert weil der spannungsunterschied 
zu klein ist. ich hab für t1 einen 0815 printtrafo hergenommen. Welcher 
trafo könnte da besser gehen? oder hat jemand eine idee wie man das 
anders messen kann?

danke schon mal für die antworten

von Winfried J. (Firma: Nisch-Aufzüge) (winne) Benutzerseite


Lesenswert?

Optokopler, R und die Sekundärspule eines Trafos in die Schleife.

von M. M. (blackcow)


Lesenswert?

mit optokopler ist der operationsverstärker gemeint?

das geht nicht, da der operationsverstärker die Spannung vom 
weidezaungerät nicht aushält

von Winfried J. (Firma: Nisch-Aufzüge) (winne) Benutzerseite


Lesenswert?


von Bernd H. (bhallinger) Benutzerseite


Lesenswert?

Wie wärs mit nem Relais in der Schleife?

Wenn kein Strom mehr fließt, fällt das Relais ab und aktiviert den 
Alarm.

von M. M. (blackcow)


Lesenswert?

an so ein relais habe ich auch schon gedacht, da wären allerdings einige 
probleme:
- wer weis wie oft so ein relais kaputt geht (mechanik...)
- ein relais hat schon ein bisschen leistung und wenn die alarmanlage 24 
stunden am tag läuft...
- außerdem kann ich so keinen wert einstellen, ab welcher schwelle (also 
widerstand von der schleife) der alarm ausgelöst werden soll

wenn mir sonst nichts mehr einfällt werd ichs wohl trotzdem so machen :)

von Holler (Gast)


Lesenswert?

Bist du sicher, dass die Spannung an den Eingängen des 
Operationsverstärkers immer sauber innerhalb der Betriebsspannung des 
OPs liegt?
Ist mir nicht ganz klar. Wenn nicht, könnte das der Grund für die 
Fehlfunktion sein. Eigentlich müsste sich der Wechselstromwiderstand an 
der Sekundärseite des Trafos bei Lastabwurf drastisch ändern. Es sei 
denn r1 ist viel zu groß, dann fällt in beiden Fällen fast alle Spannung 
an r1 ab.

Ich würde aber ebenfalls zu Winfrieds Vorschlag tendieren: vergess den 
OP, schalte in Serie zu r1 die Diodenstrecke eines Optokopplers. Nimm 
einen Koppler mit zwei antiparallen Dioden oder schalte eine externe 
Diode antiparallel hinzu. Außerdem schalte ein Poti parallel zur Diode, 
um bei offem Primärkeis des Trafos den Dunkelstrom des Optokopplers 
abzuleiten.
Pass auf, dass du den Optokoppler nicht durch zu hohen Diodenstrom 
zerstörst.

von Ulrich (Gast)


Lesenswert?

Die Schaltung oben könnte schon ein paar Probleme haben:
Wenn die Wechselspannungsquelle einen DC Anteil hat, kann der Trafo in 
die Sättigung gehen.

Ein normaler Trafo könnte von der Isolierung nicht ausreichen und stellt 
für die Weidezaumspannung ggf. auch schon eine relativ große kapazitive 
Last da.

Der OP bekommt eine Wechselspannung mit veränderlicher Spannung und 
Phase, aber wirklich stabil 0 wird die Spannung nicht. Wo jetzt der OP 
eingezeichnet ist, müsste man schon erst einen Differenzverstärker, dann 
eine Art Gleichrichtung haben und dann an Hand er Amplitude und ggf. 
auch Phase entscheiden. So wie gezeigt wird der OP eigentlich immer ein 
Rechtecksignal am Ausgang abgeben.

Eine einfache Alternative wäre es ggf. direkt am Weidezaun eine LED 
einen kleinen Strom durch die Schleife in einen Lichtleiter schicken 
zulassen. Das ganze gespeist von einem kleinen Akku, direkt auf 
Potential des Weidezauns. Aus Stromspargründen wird man da wohl einen 
Konstanten Strom nehmen sondern eher Pulse etwa alle 100 ms (nur nicht 
gerade die Frequenz vom Weidezaungerät). Sparsam aufgebaut könnte man da 
in den Bereich kommen, dass 2 AA Zellen 1 Jahr halten.  Die 
Empfängerseite kontrolliert dann halt die Impulse.

von M. M. (blackcow)


Lesenswert?

ok neuer plan neues glück XD

da ich keine batterie einbauen will wird wieder durch den trafo ein 
prüfstrom eingespeist. der optokopler überträgt dann das signal (sind ja 
dann halbwellenimpulse) und der kondensator danach soll bewirken dass 
vom optokopler das signal 3, 4 halbwellen aus bleiben muss, damit der 
alarm an das speicherflipflop weitergegeben wird.

da aber die möglichkeit besteht, das irgend ein teil vom stromzaun die 
erde berührt, kann es ja sein das am trafo+optokoppler eine hohe 
spannung anliegt, die evtl. dann was kaputt macht. deswegen dachte ich 
an einen kondensator der diese überbrückt und mit dem trafo quasi einen 
l-c hochpass bildet. meint ihr das funzt so?

muss ich nur noch schaun ob in meiner ausschlacht-platinen-sammlung i-wo 
ein optokopler verbaut ist :)

von M. M. (blackcow)


Angehängte Dateien:

Lesenswert?

da hab ich den neuen plan noch eingefügt

von oszi40 (Gast)


Lesenswert?

Ulrich schrieb:
> direkt am Weidezaun eine LED
Stromschleife mit LED/Optokopper überwachen klingt schön, aber jeder 
lange Draht ist auch eine wunderbare Antenne. Was ihr dabei alles 
einsammelt kommt ganz auf den jeweiligen Tatort an. Spätestens beim 
nächsten Gewitter leuchet diese LED 1x ganz hell? :-)

Übrigens findet die Suchfunktion hier bestimmt noch viele interessante 
Artikel zum Thema Weidezaungerät.

von Ulrich (Gast)


Lesenswert?

Wenn man schon beim Trafo bleibt, kann man auch auf der Primärseite 
überwachen. Man muss nur auf die Qualität der Isolierung achten und die 
Überwachung des Stromes nicht zu empfindlich machen. Durch den 
Kurzschuss über den Draht auf der Sekundärseite ändert sich die Impedanz 
schon ganz deutlich - das sollte sich ohne größere Problem Detektieren 
lassen.

von M. M. (blackcow)


Lesenswert?

also doch plan 1?

ich probier mal einen anderen trafo aus
vll ein übertrager aus nem ela lautsprecher

von M. M. (blackcow)


Lesenswert?

das mit dem op-verstärker: die mess-spannungen können doch auch über vcc 
liegen oder?


http://www.produktinfo.conrad.com/datenblaetter/150000-174999/155600-da-01-en-OP_VERST_LM358N_STM.pdf

^^zumindest bei dem, nur mal interesse halber

von Holler (Gast)


Angehängte Dateien:

Lesenswert?

Hallo M.M.

ich denke ein Optokoppler dürfte am betriebsichersten sein, da hast du 
eine doppelte galvanische Trennung: einmal wichtig wegen der 
Hochspannungspulse des Weidezauns, zum anderen beim Gewitter. Gut, beim 
Direkteinschlag ist alles hin, aber ein mehrere 100m langes Kabel fängt 
auch so genug ein.

Ich habe mal ein wenig gemessen.
Einmal die vom Vorposter angesprochene kapazitive Belastung der 
Hochspannungspulse durch den Messtrafo. Habe drei Printtrafos getestet, 
siehe Bild. Alles 2x6V-Trafos, Kapazität beide Sek. gegen Primär:

7 Watt, der Blaue: 40pF
1,1 Watt:          17pF
0,35 Watt:         22pF

Ich denke die Kapazität wird die Hochspannung nicht sehr belasten.

Habe anschliessend eine kleine Testschaltung aufgebaut. Der mit 6V 
speisende Trafo ist der Blaue, der Messtrafo der 1,1Watt Trafo. Ich habe 
dessen Primärwicklung in Serie geschaltet, so dass sich im Primärkeis im 
Kabelbruch-Fall eine ungefährliche Spannung einstellt.

Am 47-Ohm Widerstand zwischen den beiden Trafos greift man die 
Messspannung ab. Ergebnis:

offener Weidezaunkreis: 1,1V
geschlossener Kreis   : 3,4V

Wobei auch ein 100 Ohm Leitungswiderstand im Weidezaunkreis wie ein 
Kurzschluss wirkt. Sollte so auch erwünscht sein.

Mit den Messwerten sollte auch die Optokopplerschaltung funktionieren, 
die ich aber nicht aufgebaut und überprüft habe.

Übrigens, Optokoppler findet man oft in Schaltnetzteilen.

MfG

von M. M. (blackcow)


Lesenswert?

ey cool, danke für die antwort :)

ich hab selber nochmal rumprobiert mit meinem 1. plan und hab 
festgestellt dass wegen dem hohen messwiderstand (1k) fast keine 
spannung an meinem messtrafo abgefallen ist.
den widerstand hab ich absichtlich so hoch gewählt, weil ich so wenig 
leistung wie möglich verbraten wollte...

jetzt hab ich die schaltung nochmal gebaut aber mit 50 ohm und siehe da: 
es funktioniert :)))

die zehnerdiode ist da weil sie wahrscheinlich den optokoppler schützen 
soll oder?

und nochmals danke, muss ich den beitrag i-wo als gelöst makieren?

von Holler (Gast)


Lesenswert?

So gut kenne ich micht im Forum nicht aus, glaube kaum dass man einen 
Betrag auf "gelöst" setzen kann/muss.

Zum Stromverbrauch:
in meiner Anordnung wird 3,4V/47Ohm*6V = knapp 0,5Watt im 
Kurzschlussfall, also Kabel ok, verbraucht. Das läßt sich verringern. 
Einen Schritt habe ich bereits unternommen, nämlich nur 6V~ in die 12V~ 
(6V+6V)Messwicklung eingespeist. Eine noch größere "Untersetzung" 
reduziert den Strombedarf weiter. Grenzen setzt vor allem der Widerstand 
der Weidezaunleitung, der ja den Kurzschlußstrom reduziert und damit das 
Messergebnis auf der Primärseite unschärfer macht.

Zur EMV:
ob die Schaltung im freien Feld wirklich dauerhaft funktioniert muss 
sich erst zeigen. Ja, die Z-Diode soll den Optokoppler schützen. Das 
reicht vermutlich nicht. Ein Kondensator von ca 1uF (Keramic oder Folie) 
sollte ebenfalls noch parallel zur Diodenstrecke am Optokoppler. 
Außerdem noch ein Serienwiderstand von 100 Ohm zur Diodenstrecke, falls 
man sich mit dem Poti vertut. Und auf der Transistorseite des OK muß ein 
Tiefpass, da der Optokoppler nur mit 50Hz-Halbwellen aus der 
Wechselspannung gespeist wird.

Das gleiche gilt für deine Operationsverstärker, die werden einen 
Feldeinsatz ohne Schutz nur kurzzeitig überleben. Tiefpässe aus 
RC-Gliedern und vor jedem OP-Eingang eine Doppeldiode zur 
Versorgungsspannung nach dem Schema

+Ub--|<--Eingang--|<---GND bzw -Ub

sind das Mindeste.

MfG

von oszi40 (Gast)


Lesenswert?

Holler schrieb:
> Zum Stromverbrauch:
Wer fordert den daß 100% der Zeit ein Strom fließen muß? Wenn man jede 
Sekunde 1x prüft sollte man auch ein Ergebnis bekommen?

von Holler (Gast)


Lesenswert?

Klar, wenn man eh einen Controller verwendet, kann der Stromverbrauch 
nochmals um Zehnerpotenzen gesenkt werden. Wird nur alles etwas 
komplexer. Man muss z.B. die Wechselspannung schalten. Mit einem Relais?

von Winfried J. (Firma: Nisch-Aufzüge) (winne) Benutzerseite


Angehängte Dateien:

Lesenswert?

Man kann auch Wechselspannung mit einem Optpokoppler  und einem 
Grätzgleichrichter potentialfrei schalten.

von oszi40 (Gast)


Lesenswert?

Winfried J. schrieb:
> mit einem Optpokoppler
... soweit die Theorie. Bleibt nur die kleine Frage, ob Dein Optokoppler 
mit dieser Schaltung und diesem Aufbau einen Tag am Elektrozaun 
überlebt??

von Winfried J. (Firma: Nisch-Aufzüge) (winne) Benutzerseite


Lesenswert?

Natürlich im 6 V Kreis einzubauen nicht im HV kreis

und bei höheren Leistungen mit Darlingtonstufe

von Kobalt (Gast)


Lesenswert?

da kommt mir eine idee:
mit dieser schaltung könnte man ja auch eine beliebige frequenz 
amplitudenmodulieren.
Ich kenn bis jezt nur am-schaltungen wo danach nochmal ein schwingkreis 
nachgeschaltet ist, damit das wieder ein sauberer sinus wird. Dieser 
schwingkreis muss aber auf die trägerfrequenz abgestimmt sein.

jezt brauch ich nur noch einen spannungsgeregelten oszillator von 1MHz 
bis sagen wir mal 400MHz

Achja und einen Verstärker

von oszi40 (Gast)


Lesenswert?

Kobalt schrieb:
> jezt brauch ich nur noch einen spannungsgeregelten oszillator von 1MHz
> bis sagen wir mal 400MHz

Kommen solche Vorschäge von der GEZ, damit künftig auch jeder Esel noch 
gebührenpflichtig wird??? :-)

von Winfried J. (Firma: Nisch-Aufzüge) (winne) Benutzerseite


Lesenswert?

Kobalt schrieb:
> da kommt mir eine idee:
> mit dieser schaltung könnte man ja auch eine beliebige frequenz
> amplitudenmodulieren.
> Ich kenn bis jezt nur am-schaltungen wo danach nochmal ein schwingkreis
> nachgeschaltet ist, damit das wieder ein sauberer sinus wird. Dieser
> schwingkreis muss aber auf die trägerfrequenz abgestimmt sein.
>
> jezt brauch ich nur noch einen spannungsgeregelten oszillator von 1MHz
> bis sagen wir mal 400MHz
>
> Achja und einen Verstärker

Aandere Baustelle, aber einen Modultor mit ähnlicher Architektur findest 
du hier.

http://scz.bplaced.net/t217.html#t217-1

Meine Optokopplerschaltung meintest du hoffentlich nicht? Die macht 
deine Wunschrequenz nicht mit und verreist auch jede Linearität.

MfG

von M. M. (blackcow)


Lesenswert?

warum eig nicht, wenn die oszillatorspannung relativ groß gegenüber der 
spannung im nichtlinearen bereich der diode ist, 0,2V oder so, dann 
könnte das doch hinhaun XD

von M. M. (blackcow)


Angehängte Dateien:

Lesenswert?

hallo,

da ich die Messungen gepulst machen möchte und es keinen spass macht 
tausend transen zusammenzulöten habe mich nun doch entschlossen einen 
mikrocontroller herzunehmen.
Es soll ein ATTINY2313 sein. Da ich das erste mal so ein "gruseliges" 
teil Verwende, wollte ich fragen ob bitte wer den angehängten schaltplan 
überfliegen könnte. Ich bin mir vor allem nicht sicher ob die 
isp-schnittstelle richtig ist. (die spannung für den controller kommt ja 
eig auch beim programmieren von meiner schaltung und nicht vom pc. 
fallen da nicht GND und VTG vom isp-stecker weg?)

danke schonmal für antworten :)

von M. M. (blackcow)


Lesenswert?

und die platine wollte ich auch machen lassen, und nicht mit der 
toner-murkser methode basteln.

kann da wer einen hersteller empfehlen?

von Werner (Gast)


Lesenswert?

M. M. schrieb:
> kann da wer einen hersteller empfehlen?

Ein paar gibt's hier zur Auswahl:
http://www.mikrocontroller.net/articles/Platinenhersteller

von Holler (Gast)


Lesenswert?

Hallo M. M.,

schwer zu lesen,der Schaltplan. Bleistift auf Butterbrotpapier ist 
unübersichtlich :-)

Der erste Schritt zu einer Platine wäre die Übertragung in ein CAD-Tool. 
Ich persönlich empfehle Eagle, mit der Freewareversion kann man 
Stromlaufpläne zeichnen und bis zur 1/2 Europlattengröße (10cm x 8cm) 
doppelseitig layouten. Müßte für dein Gerät genügen.

Die ISP-Schnittstelle ist so richtig angeschlossen. Du brauchst auch GND 
und Vcc, sonst beschwert sich das Programmiergerät.
Wie willst du die SW entwickeln und debuggen? Wenn du einen ICE mit 
debugWire verwendest, ist auch die Reset-Leitung des ATtiny wie in 
deinem Plan erstmal ohne C richtig angeschlossen. Später im Betrieb 
würde ich einen Kondensator im nF-Bereich nach GND vorsehen, sonst 
Gefahr unbeabsichtigter Resets.
Generell solltest du an alle ICs, bes. die digitalen wie den uC einen 
100nF-Kondensator (keramik) dicht am IC von Vcc nach GND vorsehen.

MfG

von M. M. (blackcow)


Lesenswert?

hallo

ich layoute grad die platine mit target3001. der keramik konsendator an 
der versorgung ist auch schon drin :-).

ist statt einem kondensator am reset-pin ein pull-down widerstand 
(push-down ... ka) gemeint? sonst hängt ja das signal immer noch in der 
luft? und das programmiergerät (ich hab ein usb-gerät von conrad 
gekauft) wird also von meiner platine versorgt, wenn ich das richtig 
verstehe? und wenn man aber selber einen ISP-RS232-Adapter mit 
widerständen und z-dioden zusammenlötet, braucht man dann nur GND (also 
kein Vcc)?

die software mach ich mittels assembly und spiel sie einfach aufm mc. 
debuggen tu ich da nix, das muss dann einfach gehen (hab ich zumindest 
vor).

und danke für die aufschlussreichen antworten :-)

von Ulrich (Gast)


Lesenswert?

Den ISP Programmer von der Zielplatine aus zu versorgen ist möglich und 
auch üblich. Die Version mit Widerständen und ZD am RS232 Port braucht 
ggf. die Spannung nicht - schaden tut sie aber auch nicht.

Die Resetleitung hat intern schon einen Pullup Widerstand. Weil der in 
gestörter Umgebung eher etwas groß ist, macht man oft noch einen 
externen Widerstand dazu oder alternativ einen kleinen Kondensator oder 
ggf. auch beides. Dies dient dazu um die Gefahr für einen Reset durch 
Störungen zu reduzieren, bzw. Teils aus Gewohnheit, denn einige der 
ersten AVRs brauchen den Widerstand noch.

von M. M. (blackcow)


Angehängte Dateien:

Lesenswert?

Hallo,

ich habe die Platine gelayoutet. Wenn wer möchte kann er mal 
drüberschaun, das wär nett :-). Aber eig müsste sie passen. Nur eine 
Frage hätte ich noch:
ich hab in das datenblatt vom ATtiny2313 gesehen, und da standen bei den 
Pins so kürzel z.B. PB3. Das soll warscheinlich heissen Port B 3. Kann 
ich jeden Port extra als eingang oder als ausgang benutzen oder nur 
Gruppe A, B, C, D extra? Und wo stell ich das ein?

von Winfried J. (Firma: Nisch-Aufzüge) (winne) Benutzerseite


Lesenswert?

jeden pin einzeln

am besten list du das datasheet

von Pascal H. (pase-h)


Lesenswert?

M. M. schrieb:
> Alarmanlage.PNG
>
>           6,6 MB, 15 Downloads

ähm hast du schon mal was von Bildformate gehört?
Ich mein ja nur 6,6Mb für einen einfachen Schaltplan...

Mfg

von M. M. (blackcow)


Lesenswert?

da ich nach email-anfrage an einen hersteller keine rückmeldung bekommen 
habe und ich keine lust hatte einen anderen zu suchen und zu warten, hab 
ich die platine nun doch selber geätzt. Siet zwar nicht so schön aus, 
funktioniert allerdings :)
Ich bin grad dabei mit dem assembly-tutorial meinen attiny zu 
programmieren. Hab ich das richtig verstanden bzw. gelesen, dass ein 
Interrupt nur von Port D1 oder D2 ausgelöst werden kann? (bein 
attiny2313). Und ja ich hab das datenblatt gelesen, wollte es nur 
besätigt bekommen ;-).

von M. M. (blackcow)


Lesenswert?

Ich polle die eingänge jezt, und wenn der hochspannungs-impuls zu kurz 
ist löte ich noch einen kleinen kondensator parallel neben den Eingang. 
Hier mal mein erstes Programm falls es i-wen interessiert:

/*
*    Alarmanlage_AVR.asm
*    Softwareversion beta 1.5
*    Created: 11.03.2012 02:24:12
*    Author: MM
*/

.include "tn2313def.inc"          ;# Definitionsdatei für Attiny2313 
Einbinden

                      ;# Interruptvektoren setzen
.org 0x000                  ;  bei Reset
  rjmp Reset
.org OC1Aaddr                ;  bei Timercompare 1A
  rjmp Zehntelinterrupt

Reset:                    ;# Start bei Reset

  .def Zehntel = r18            ;# Variablen festlegen
  .def Sekunden = r19
  .def Minuten = r20
  .def Zehntelcounter1 = r21        ;  Blinkfrequenz LED-Alarm im 
Paramet / Klickzeit in Betrieb
  .def Zehntelcounter2 = r22        ;  Abfallverzögerung Hütespannung im 
Paramet
  .def Sekundencounter1 = r23        ;  Schwellwertzeit Hütespannung in 
Betrieb
  .def Sekundencounter2 = r24        ;  Zeiten in Betrieb 
LED-Unterbrechung
  .def Merker1 = r25
  .def Merker2 = r26

  ldi r16, RAMEND              ;# Stackpointer initialisieren
    out SPL, r16

  ldi r16, 0x00              ;# Ein- und Ausgänge festlegen
    out DDRA, r16
  ldi r16, 0b00000111
    out DDRB, r16
  ldi r16, 0b01111110
    out DDRD, r16


  ldi r16, (1<<WGM12)|(1<<CS12)      ;# Timer konfigurieren: Vorteiler 
256 + mit Timecomparer verbinden
    out TCCR1B, r16
  ldi r16, (1<<OCIE1A)          ;# Interrupt bei Timer Compare 1A 
erlauben
    out TIMSK, r16

  ldi r16, high(3125-1)          ;# 16-Bit Timecomparer einstellen
    out OCR1AH, r16
  ldi r16, low(3125-1)
    out OCR1AL, r16

  clr Zehntel                ;# Variablen Resetten
  clr Sekunden
  clr Minuten
  clr Zehntelcounter1
  clr Zehntelcounter2
  clr Sekundencounter1
  clr Sekundencounter2
  clr Merker1
  clr Merker2

Main:                    ;# Hauptprogramm

  sei                    ;  Interrupts allg. erlauben

  sbis PINA, 0              ;  Testet ob Klick Sabo
    ldi Merker1, 1

  sbis PINA, 0
    rjmp Weiter
    cpi Merker1, 1
      brne ParametrierungOFF
      cpi Zehntelcounter1, 3      ;  Klickzeit in zehntel sek
        brsh ParametrierungOFF
        rjmp Parametrierung
    ParametrierungOFF:
    clr Zehntelcounter1
    clr Merker1
  Weiter:


                      ;###########    Betrieb
  sbi PORTD, 2              ;  LED-Betrieb Einschalten

  sbic PIND, 5              ;  LED-Alarm geht mit Relais 1 los
    sbi PORTD, 3
  sbis PIND, 5
    cbi PORTD, 3

  sbis PIND, 0              ;  Flip Netzausfall
    sbi PORTD, 6


  sbic PINB, 4              ;  LED-Hütespannung <
    clr Sekundencounter1
    cpi Sekundencounter1, 5        ;  Zeit in der ein impuls kommen muss
    brlo EndeHutespannung
    sbi PORTB, 0

    EndeHutespannung:


                      ;  LED Unterbrechung
  cpi Sekundencounter2, 10        ;  Zeit zwischen den 
Schleifenmessungen
  brlo WeiterU
    clr Sekundencounter2
    ldi Merker2, 1
    sbi PORTD, 1
  WeiterU:
  cpi Merker2, 1
  brne WeiterM
    cpi Sekundencounter2, 1        ;  Zeit der Messung
  brlo WeiterM
    sbic PINB, 3
    sbi PORTB, 1
    clr Merker2
    clr Sekundencounter2
    cbi PORTD, 1
  WeiterM:


  sbic PINA, 0              ;  Flip Sabotage
    sbi PORTB, 2


  sbic PORTB, 2              ;  Relais 1 Geht bei LEDs Sabo, Imp. oder 
Hütes. an
    rjmp Relais1An
  sbic PORTB, 1
    rjmp Relais1An
  sbic PORTB, 0
    rjmp Relais1An

    cbi PORTD, 5            ; PORTD AUS
      rjmp EndeRelais1

  Relais1An:
  sbi PORTD, 5

  EndeRelais1:


  sbis PIND, 6              ;  Relais 2 Geht bei LED Netzausfall an
    cbi PORTD, 4
  sbic PIND, 6
    sbi PORTD, 4


  Revisionsschleife:            ;  Rücksetzen der Ausgänge bei Drücken 
Taster Revision
    sbis PINA, 1
    rjmp Keinerevision
    ldi r16, 0b00
    out PORTB, r16
    ldi r16, 0b000000100
    out PORTD, r16
    rjmp Revisionsschleife
  Keinerevision:

rjmp Main


Parametrierung:                ;########## Parametriermodus

  cpi Zehntelcounter1, 2          ;  Blinkfrequenz LED-Betrieb im 
Parametriermodus
  brlo ToggleBetriebOff
    in r16, PIND
    ldi r17, 0b00001000
    eor r16, r17
    out PORTD, r16
    clr Zehntelcounter1
  ToggleBetriebOff:

  sbic PIND, 0              ;  Anzeige von Netzausfall
    cbi PORTD, 6
  sbis PIND, 0
    sbi PORTD, 6

  sbic PINB, 4              ;  Anzeige von Hütespannung
    clr Zehntelcounter2
  cpi Zehntelcounter2, 8          ;  abfallverz. 1 sec
  brsh WeiterParamHuteAus
    cbi PORTB, 0
    rjmp WeiterParamHute
  WeiterParamHuteAus:
    sbi PORTB, 0
  WeiterParamHute:

  sbi PORTD, 1              ;  Anzeige von Unterbrechung
  sbic PINB, 3
    sbi PORTB, 1
  sbis PINB, 3
    cbi PORTB, 1

  sbic PINA, 0              ;  Anzeige Sabotage
    sbi PORTB, 2
  sbis PINA, 0
    cbi PORTB, 2

sbic PINA, 1                ;  Beenden von Parametriermodus durch 
Revision
  rjmp Reset

rjmp Parametrierung


Zehntelinterrupt:              ;# Uhr: Interrupt von Timercomparer 1A

  inc     Zehntel
  inc    Zehntelcounter1
  inc    Zehntelcounter2
  cpi     Zehntel, 10            ;  Wenn dies nicht der 10. Interrupt
  brne    RetiUhr              ;  ist, dann zu RetiUhr ...

  clr     Zehntel
  inc     Sekunden
  inc    Sekundencounter1
  inc    Sekundencounter2
  cpi     Sekunden, 60
  brne    RetiUhr

  clr     Sekunden
  inc     Minuten
  cpi     Minuten, 60
  brne    RetiUhr
  clr Minuten

  RetiUhr:

reti

von M. M. (blackcow)


Lesenswert?

Ich polle die eingänge jezt, und wenn der hochspannungs-impuls zu kurz
ist löte ich noch einen kleinen kondensator parallel neben den Eingang.
Hier mal mein erstes Programm falls es i-wen interessiert:

1
/*
2
*    Alarmanlage_AVR.asm
3
*    Softwareversion beta 1.5
4
*    Created: 11.03.2012 02:24:12
5
*    Author: MM
6
*/
7
8
.include "tn2313def.inc"          ;# Definitionsdatei für Attiny2313
9
Einbinden
10
11
                      ;# Interruptvektoren setzen
12
.org 0x000                  ;  bei Reset
13
  rjmp Reset
14
.org OC1Aaddr                ;  bei Timercompare 1A
15
  rjmp Zehntelinterrupt
16
17
Reset:                    ;# Start bei Reset
18
19
  .def Zehntel = r18            ;# Variablen festlegen
20
  .def Sekunden = r19
21
  .def Minuten = r20
22
  .def Zehntelcounter1 = r21        ;  Blinkfrequenz LED-Alarm im
23
Paramet / Klickzeit in Betrieb
24
  .def Zehntelcounter2 = r22        ;  Abfallverzögerung Hütespannung im
25
Paramet
26
  .def Sekundencounter1 = r23        ;  Schwellwertzeit Hütespannung in
27
Betrieb
28
  .def Sekundencounter2 = r24        ;  Zeiten in Betrieb
29
LED-Unterbrechung
30
  .def Merker1 = r25
31
  .def Merker2 = r26
32
33
  ldi r16, RAMEND              ;# Stackpointer initialisieren
34
    out SPL, r16
35
36
  ldi r16, 0x00              ;# Ein- und Ausgänge festlegen
37
    out DDRA, r16
38
  ldi r16, 0b00000111
39
    out DDRB, r16
40
  ldi r16, 0b01111110
41
    out DDRD, r16
42
43
44
  ldi r16, (1<<WGM12)|(1<<CS12)      ;# Timer konfigurieren: Vorteiler
45
256 + mit Timecomparer verbinden
46
    out TCCR1B, r16
47
  ldi r16, (1<<OCIE1A)          ;# Interrupt bei Timer Compare 1A
48
erlauben
49
    out TIMSK, r16
50
51
  ldi r16, high(3125-1)          ;# 16-Bit Timecomparer einstellen
52
    out OCR1AH, r16
53
  ldi r16, low(3125-1)
54
    out OCR1AL, r16
55
56
  clr Zehntel                ;# Variablen Resetten
57
  clr Sekunden
58
  clr Minuten
59
  clr Zehntelcounter1
60
  clr Zehntelcounter2
61
  clr Sekundencounter1
62
  clr Sekundencounter2
63
  clr Merker1
64
  clr Merker2
65
66
Main:                    ;# Hauptprogramm
67
68
  sei                    ;  Interrupts allg. erlauben
69
70
  sbis PINA, 0              ;  Testet ob Klick Sabo
71
    ldi Merker1, 1
72
73
  sbis PINA, 0
74
    rjmp Weiter
75
    cpi Merker1, 1
76
      brne ParametrierungOFF
77
      cpi Zehntelcounter1, 3      ;  Klickzeit in zehntel sek
78
        brsh ParametrierungOFF
79
        rjmp Parametrierung
80
    ParametrierungOFF:
81
    clr Zehntelcounter1
82
    clr Merker1
83
  Weiter:
84
85
86
                      ;###########    Betrieb
87
  sbi PORTD, 2              ;  LED-Betrieb Einschalten
88
89
  sbic PIND, 5              ;  LED-Alarm geht mit Relais 1 los
90
    sbi PORTD, 3
91
  sbis PIND, 5
92
    cbi PORTD, 3
93
94
  sbis PIND, 0              ;  Flip Netzausfall
95
    sbi PORTD, 6
96
97
98
  sbic PINB, 4              ;  LED-Hütespannung <
99
    clr Sekundencounter1
100
    cpi Sekundencounter1, 5        ;  Zeit in der ein impuls kommen muss
101
    brlo EndeHutespannung
102
    sbi PORTB, 0
103
104
    EndeHutespannung:
105
106
107
                      ;  LED Unterbrechung
108
  cpi Sekundencounter2, 10        ;  Zeit zwischen den
109
Schleifenmessungen
110
  brlo WeiterU
111
    clr Sekundencounter2
112
    ldi Merker2, 1
113
    sbi PORTD, 1
114
  WeiterU:
115
  cpi Merker2, 1
116
  brne WeiterM
117
    cpi Sekundencounter2, 1        ;  Zeit der Messung
118
  brlo WeiterM
119
    sbic PINB, 3
120
    sbi PORTB, 1
121
    clr Merker2
122
    clr Sekundencounter2
123
    cbi PORTD, 1
124
  WeiterM:
125
126
127
  sbic PINA, 0              ;  Flip Sabotage
128
    sbi PORTB, 2
129
130
131
  sbic PORTB, 2              ;  Relais 1 Geht bei LEDs Sabo, Imp. oder
132
Hütes. an
133
    rjmp Relais1An
134
  sbic PORTB, 1
135
    rjmp Relais1An
136
  sbic PORTB, 0
137
    rjmp Relais1An
138
139
    cbi PORTD, 5            ; PORTD AUS
140
      rjmp EndeRelais1
141
142
  Relais1An:
143
  sbi PORTD, 5
144
145
  EndeRelais1:
146
147
148
  sbis PIND, 6              ;  Relais 2 Geht bei LED Netzausfall an
149
    cbi PORTD, 4
150
  sbic PIND, 6
151
    sbi PORTD, 4
152
153
154
  Revisionsschleife:            ;  Rücksetzen der Ausgänge bei Drücken
155
Taster Revision
156
    sbis PINA, 1
157
    rjmp Keinerevision
158
    ldi r16, 0b00
159
    out PORTB, r16
160
    ldi r16, 0b000000100
161
    out PORTD, r16
162
    rjmp Revisionsschleife
163
  Keinerevision:
164
165
rjmp Main
166
167
168
Parametrierung:                ;########## Parametriermodus
169
170
  cpi Zehntelcounter1, 2          ;  Blinkfrequenz LED-Betrieb im
171
Parametriermodus
172
  brlo ToggleBetriebOff
173
    in r16, PIND
174
    ldi r17, 0b00001000
175
    eor r16, r17
176
    out PORTD, r16
177
    clr Zehntelcounter1
178
  ToggleBetriebOff:
179
180
  sbic PIND, 0              ;  Anzeige von Netzausfall
181
    cbi PORTD, 6
182
  sbis PIND, 0
183
    sbi PORTD, 6
184
185
  sbic PINB, 4              ;  Anzeige von Hütespannung
186
    clr Zehntelcounter2
187
  cpi Zehntelcounter2, 8          ;  abfallverz. 1 sec
188
  brsh WeiterParamHuteAus
189
    cbi PORTB, 0
190
    rjmp WeiterParamHute
191
  WeiterParamHuteAus:
192
    sbi PORTB, 0
193
  WeiterParamHute:
194
195
  sbi PORTD, 1              ;  Anzeige von Unterbrechung
196
  sbic PINB, 3
197
    sbi PORTB, 1
198
  sbis PINB, 3
199
    cbi PORTB, 1
200
201
  sbic PINA, 0              ;  Anzeige Sabotage
202
    sbi PORTB, 2
203
  sbis PINA, 0
204
    cbi PORTB, 2
205
206
sbic PINA, 1                ;  Beenden von Parametriermodus durch
207
Revision
208
  rjmp Reset
209
210
rjmp Parametrierung
211
212
213
Zehntelinterrupt:              ;# Uhr: Interrupt von Timercomparer 1A
214
215
  inc     Zehntel
216
  inc    Zehntelcounter1
217
  inc    Zehntelcounter2
218
  cpi     Zehntel, 10            ;  Wenn dies nicht der 10. Interrupt
219
  brne    RetiUhr              ;  ist, dann zu RetiUhr ...
220
221
  clr     Zehntel
222
  inc     Sekunden
223
  inc    Sekundencounter1
224
  inc    Sekundencounter2
225
  cpi     Sekunden, 60
226
  brne    RetiUhr
227
228
  clr     Sekunden
229
  inc     Minuten
230
  cpi     Minuten, 60
231
  brne    RetiUhr
232
  clr Minuten
233
234
  RetiUhr:
235
236
reti

von M. M. (blackcow)


Lesenswert?

Hab alles zusammengebaut und programmiert. Haut ganz wunderbar hin.

Mein gerät hat jezt ca. 2 Wochen test im Felde bestanden, ohne 
Fehlalarme etc.
Allerdings ist noch kein Gewitter gekommen aber da bin ich 
zuversichtlich das auch das hinhaut.

Und Dank sei dem Forum, sonst hätt ich das wahrscheinlich nicht so 
schnell zum laufen gebracht :)))

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.