Hallo,

We hebben bestaande bekabeling voor alarm magneetcontacten die zijn uitgerust met 4K7 EOL weerstand. Een 4K7 weerstand in serie met een 4K7 weerstand waarover het magneetcontact staat. Bij gesloten contact meet je dus 4K7 en bij open contact 9K4.

Ik zou deze willen uitlezen via digitale ingangen waarvan ik volgende specs kon terugvinden in data sheet.
Ri = 67K
Di kan spanning aan tussen 0VDC en 24VDC
0 = 0 ... 7,1 VDC
ongedefinieerd = 7,1 VDC ... 9,7 VDC
1 = 9,7 VDC en 24 VDC

Idealiter koppel ik deze aan twee ingangen:
* een ingang om tamper/kabelbreuk te detecteren (bedrading ok? j/n)
* een ingang 0 contact open of 1 contact gesloten (= status contact? open/gesloten)
-- inverteren kan softwarematig dus logische 0 of 1 maakt op zich niet uit, als het onderscheid maar gemaakt kan worden.

Via een analoge ingang (0-10V) zou het zeker kunnen maar gezien het aantal contacten is het veel goedkoper om de digitale ingangen te gebruiken.

Ik ken wat basis elektronica maar ik heb geen idee hoe ik dit betrouwbaar kan uitvoeren.

Als ik bv 12K pull up gebruik aan de 24V en dan de alarm ingang aan de Di en GND hang zou ik in principe 6,43V uitlezen bij gesloten contact en 9,77V bij open contact (kabelbreuk 24V en kortsluiting 0V nog even buiten beschouwing gelaten).

Dit valt maar net binnen de grenzen en vind ik niet betrouwbaar. Ik verwacht ook niet dat de Ri 67K zich netjes lineair zal gedragen.

Ik heb dus een betere schakeling nodig... Suggesties?

Met een window comparator misschien :

Ik had gehoopt op een iets eenvoudigere oplossing (enkel passieve componenten).

Het zal wellicht wel mogelijk zijn om een schakeling op te bouwen gebaseerd op de Wheatstone bridge maar opnieuw lijkt het me veel moeilijker dan aanvankelijk gedacht. Ik heb een 15-tal contacten op deze manier in te lezen.

Mijn kennis is ontoereikend om het zelf uit te werken.

Ik dacht dat het eigenlijk wel ging lukken met een spanningsdeler in combinatie met bv zenerdiodes of dergelijke.

[Bericht gewijzigd door Baskerville op (17%)]

Je moet in principe 4 toestanden kunnen detecteren (open lijn, '0', '1', en sluiting), dat maakt 't lastig.
Met comparators lijkt me inderdaad een goede oplossing...

Een comparator set voor de digitale ingangen lijkt inderdaad de enige haalbare oplossing.

Ik heb eigenlijk nog een andere mogelijkheid over het hoofd gezien. Namelijk het gebruiken van analoge ingangen. Die zijn per stuk veel duurder dan de digitale ingangen maar hebben een veel groter bereik (12-bit ADC). Ik zou ongeveer 4 contacten op 1 analoge ingang moeten krijgen in vergelijking met de digitale ingangen.

Zou het mogelijk zijn om meerdere contacten (met 4K7 EOL) aan elkaar te hangen en als input te gebruiken op de 12-bit analoge ingang 0-10V? De enige twist is dat het mogelijk moet zijn om de status van de aparte contacten te bepalen. Een soort weerstandsladder waar over elke trap een contact staat? Tegelijkertijd zou het bereik zo goed mogelijk lineair gespreid moeten worden.

Wellicht worden soortgelijke principes in andere toepassingen al vaak gebruikt en daarmee wou ik het hier eens voorleggen.

IS niet mogelijk om de EOL weerstand te verlagen naar bv 2k2 of zo iets?

Zou het mogelijk zijn om meerdere contacten (met 4K7 EOL) aan elkaar te hangen en als input te gebruiken op de 12-bit analoge ingang 0-10V?

Meerdere contacten kan wel maar niet in meerdere strings met elk hun eigen EOL weerstand.

Ja of toch misschien wel met een externe analoge multiplexer. Dan kan je elke lijn steeds een voor een op de analoge ingang schakelen.

https://www.tinytronics.nl/shop/nl/communicatie-en-signalen/io-convert…

Deze is voor 5V, kan je dus maar de helft van je ADC gebruiken maar dan nog heb je 11 bit, lijkt mij genoeg. Hou wel rekening met de weerstand van de multiplexer die is hier 60 ohm.

Ik kan de EOL niet wijzigen want ze zitten in de raam/deurcontacten. Als ik de contacten gemakkelijk kon aanpassen zou ik gewoon zonder EOL werken en rechtstreeks digitale ingangen schakelen.

De analoge ingang is van een loxone miniserver, niet van een PIC/Arduino die ik zelf programmeer. Scripting is enigszins mogelijk via PicoC maar multiplexing en de timing daaromtrent is wellicht niet zo vanzelfsprekend.

Het lijkt me op zich niet onmogelijk om de contacten te verbinden. In het geval van twee contacten parallel over gekende weerstanden zouden er 16 verschillende voltages moeten ontstaan die overeenstemmen met de 4 mogelijke aparte toestanden van een contact weergeven.

Scripting is enigszins mogelijk via PicoC maar multiplexing en de timing daaromtrent is wellicht niet zo vanzelfsprekend.

Dat valt op zich wel denk ik.

HEt is eerst 4 bit uitsturen voor de multiplexer, even een korte tijd wachten tot het signaal stabiel is, een ADC sample starten wachten tot die klaar en dat verwerken en dan weer 4 bit uitsturen. Het enige is dat er wel wat vertraging tussen een een raam gaat open en de melding zit maar dat is ook afhankelijk van hoe snel je het kan maken maar een seconde vertraging lijkt me niet relevant. Maar het zal eerder in milliseconden zitten.

Wat ik eng vind , maar misschien zijn dat zorgen om niks om lange leidingen van wel tientallen meters die dan ongebufferd rechtstreeks aan een microcontroller ingang komen te hangen, of dat nu analoog of digitaal is. Voor zover ik weet gebeurt dat in alarmpanelen nooit.
Ik zou een "tussenprintje" maken.

Ik begrijp wat je bedoelt maar ik denk niet dat de ingangen zomaar rechtstreeks aan de interne microcontroller hangen hoor. Die analoge ingangen zijn gemaakt om 0-10V dimming uit te lezen en de bediening hiervan zit ook niet zomaar naast de verdeelkast. Ik ga ervan uit dat de sampling super traag is (sample en hold circuit) en de gelezen waardes nogmaals uitgemiddeld worden. Ik kan eventueel nog een C-tje bij plaatsen om het geheel wat af te vlakken.

Om dezelfde reden is mijn inziens multiplexing niet echt haalbaar. De digitale outputs zijn 230V 10A relays en die zijn helemaal niet gemaakt om constant te schakelen. Binnen de kortste keren zijn die stuk.

Op 22 april 2022 07:39:08 schreef bprosman:
Wat ik eng vind , maar misschien zijn dat zorgen om niks om lange leidingen van wel tientallen meters die dan ongebufferd rechtstreeks aan een microcontroller ingang komen te hangen, of dat nu analoog of digitaal is. Voor zover ik weet gebeurt dat in alarmpanelen nooit.
Ik zou een "tussenprintje" maken.

Hoezo eng?Een alarmsysteem is geen kerncentrale.Het hoeft niet echt "supersnel", Dus geen last van looptijden. Er zijn hele volksstammen alarminstallaties die veel meter kabels gebruiken.
p.s. bij mijn alarmcentrale hangen ook alle ingangen ongebufferd aan een ingang.

Hoezo eng?Een alarmsysteem is geen kerncentrale.Het hoeft niet echt "supersnel", Dus geen last van looptijden. Er zijn hele volksstammen alarminstallaties die veel meter kabels gebruiken.
p.s. bij mijn alarmcentrale hangen ook alle ingangen ongebufferd aan een ingang.

Het gaat ook niet om snelheid maar storingen die lange leidingen op kunnen pikken (blikseminslag in de buurt etc).

bij mijn alarmcentrale hangen ook alle ingangen ongebufferd aan een ingang.

Aan een "Ingang" ja, maar ik ken geen alarmpanelen waar dit meteen aan de microprocessor/microcontroller hangt zonder de nodige zeners, weerstanden en andere zaken om storing buiten te houden en de ingangen te beveiligen.
En dat gaat niet met de "Spanningsdeler op AD-ingang truuk".

4 schakelaars op een analoge ingang kan wel. Maar om dan onderscheid te kunnen maken tussen de individuele schakelaars dan moet je ervoor zorgen dat elke schakelaar een andere weerstand heeft. Als je de weerstanden zelf niet kunt veranderen dan kun je wel nog een weerstand parallel zetten.

Als je nu voor elke switch een andere weerstand parallel schakelt, dan krijg je verschillende spanningen, afhankelijk van welke (combinatie van) switch gesloten is. 12-bit is voldoende resolutie om redelijk nauwkeurig te kunnen testen.

Dan krijg je bijv zo een schakeling:

Hoi Kees!

Dat is wat ik bedoelde met een weerstandsladder waar over elke trap een contact staat. Jij weet het wel veel mooier af te beelden :)

Ik heb geen idee hoe ik die weerstanden R9 en R10/R11/R12/R13 verstandig kan dimensioneren. De analoge ingang zou eventueel ook in het midden kunnen komen maar geen idee of dit voordeel of eerder een nadeel oplevert.

Ja, dat is nog wel even puzzelen.

In principe heb je 4 mogelijkheden per schakelaar zoals Arco al zei. Dat geeft met 4 schakelaars dan 256 mogelijke combinaties om te detecteren...

Hierbij een python script die alle mogelijkheden doorloopt.
Je kunt de waarden invullen voor R9 t/m R13.

Dan krijg je een gesorteerde lijst met uitgangsspanningen.




R9  = 4700 * 1;
R10 = 2200 * 1;
R11 = 4700 * 1;
R12 = 4700 * 2;
R13 = 4700 * 3;

# With a parallel resistor Rx we get the following combinations:

def Switch(Position, Rx) :
    if Position == 0: return 0;
    if Position == 1: return (Rx * 9400) / (Rx + 9400);
    if Position == 2: return (Rx * 4700) / (Rx + 4700);
    if Position == 3: return Rx;

Result = [];

for x1 in range(3):
   for x2 in range(3):
      for x3 in range(3):
         for x4 in range(3):
            S1   = Switch(x1,R10);
            S2   = Switch(x2,R11);
            S3   = Switch(x3,R12);
            S4   = Switch(x4,R13);
            Rtot = S1 + S2 + S3 + S4;
            Vout = Rtot / (R9 + Rtot);
            # print( f"{S1:8.2f}, {S2:8.2f}, {S3:8.2f}, {S4:8.2f}, Tot : {Vout:8.2f}");

            Result.append(f"{Vout:6.3f} : {x1} {x2} {x3} {x4}  ");

for x in sorted(Result):
  print( x );

@Baskersville: welke oplossing heb je nu uiteindelijk toegepast?

Ik zit met exact hetzelfde probleem.
Ook bestaande deurcontacten met EOL weerstanden van 2k2 die ik wil inlezen op de DI extention van Loxone.