Doorduino EL520: verschil tussen versies
k |
|||
(2 tussenliggende versies door dezelfde gebruiker niet weergegeven) | |||
Regel 107: | Regel 107: | ||
== Doorduino-EL520 bordje == | == Doorduino-EL520 bordje == | ||
− | Nu duidelijk is hoe het slot in elkaar zit en aangestuurd moet worden is het tijd om een bordje te ontwerpen wat open/dicht signalen van de [[Doorduino|Doorduino]] krijgt en hiermee het motorslot aanstuurt | + | Nu duidelijk is hoe het slot in elkaar zit en aangestuurd moet worden is het tijd om een bordje te ontwerpen wat open/dicht signalen van de [[Doorduino|Doorduino]] krijgt en hiermee het motorslot aanstuurt. |
− | + | [[Bestand:Doorduino el520 board.png|thumb|600px|left|Doorduino-EL520 PCB]] <br clear=all> | |
+ | Het printje bestaat uit twee helften, de Doorduino-helft (links) en de EL520 helft (rechts). De twee helften zijn standaard elektrisch verbonden, maar kunnen los van elkaar gebroken worden om de helften apart te gebruiken. | ||
− | + | '''Links''' | |
+ | |||
+ | De linker Doorduino helft kan functioneren als een standalone Doorduino bordje. Er is ook een footprint voor een MOSFET aanwezig zodat een ouderwets solenoidslot gebruikt kan worden in plaats van het motorslot. Hiernaast biedt dit bordje met een DS9503 chip ESD beveiliging op de OneWire bus waarmee iButtons uitgelezen worden. Mocht je deze beveiliging onnodig achten, dan zijn er twee jumpers zodat het onderdeel weggelaten kan worden. | ||
+ | |||
+ | [[Bestand:Doorduino_el520_ESD.png|thumb|400px|right|ESD beveiliging op de Doorduino input]] | ||
+ | '''Rechts''' | ||
+ | |||
+ | De rechterhelft kan rechtstreeks aan een ongemodificeerde Doorduino worden aangesloten. Via een pull-up weerstand kan de Arduino op deze helft de open-drain ''Strike'' output van de Doorduino uitlezen. | ||
+ | Met een serieweerstand, condensator en zener diode zou deze input ook tegen ESD en andere transients beveiligd moeten zijn. | ||
+ | |||
+ | Een TB6612 motor driver IC wordt gebruikt om de motor in het slot aan te sturen. | ||
+ | Omdat de hall effect sensor in het slot een open collector output heeft wordt een soortgelijke schakeling als in het figuur hiernaast gebruikt om deze uit te lezen en de Arduino input te beschermen. | ||
+ | |||
+ | |||
+ | === Hardware-configuraties === | ||
+ | |||
+ | Zie https://git.hackalot.nl/Kartoffel/doorduino_el520/tree/master/PCB voor alle ontwerpbestanden rond de PCB, inclusief gerbers. | ||
+ | |||
+ | In vrijwel alle configuraties wil je R8, R9 en Q1 weglaten. Deze zijn enkel nodig als je de linkerhelft gebruikt om een solenoidslot aan te sturen. | ||
+ | |||
+ | |||
+ | ==== Rechterhelft aangesloten op een bestaande Doorduino ==== | ||
+ | |||
+ | De standaard backwards-compatible configuratie. | ||
+ | |||
+ | * Breek de PCB in twee helften, soldeer enkel de onderdelen op de rechterhelft. Vergeet de schroefterminals op X5 niet. | ||
+ | * Flash de [https://git.hackalot.nl/Kartoffel/doorduino_el520/blob/master/doorduino_EL520.ino code] op een Arduino Pro Mini (5V, 16MHz). Laat <code>#define INVERT_INPUT</code> weggecomment. | ||
+ | * Zet een jumper op JP1 als je alleen 12V op het bordje aansluit. De on-board regulator van de Arduino zal dan gebruikt worden om deze van 5V te voorzien. | ||
+ | |||
+ | |||
+ | ==== Linker en rechterhelft als standalone Doorduino+EL520 ==== | ||
+ | |||
+ | Met deze setup heb je enkel een Pi+toebehoren nodig om een volledige Doorduino setup met een motorslot te bouwen. | ||
+ | |||
+ | * Laat de PCB intact. Omdat in dit geval twee Arduino's op elkaar aangesloten zitten kan je C1, D1 en R2 weglaten. X5 is ook niet nodig. | ||
+ | ** Let op: de EL520-Arduino heeft een pull-down weerstand nodig zodat de deur niet van het slot kan gaan wanneer de doorduino reset. Soldeer hiervoor een 22k (of 10k) weerstand direct van A3 naar GND op de rechter Arduino. | ||
+ | * Bouw het Raspberry Pi-deel van een Doorduino volgens [https://revspace.nl/Doorduino3] | ||
+ | * Flash de [https://github.com/revspace/doorduino/tree/master/arduino/doorduino3 standaard Doorduino code] op de linker Arduino Pro Mini. | ||
+ | * Flash de [https://git.hackalot.nl/Kartoffel/doorduino_el520/blob/master/doorduino_EL520.ino code] op de rechter Arduino. Haal de comments voor <code>#define INVERT_INPUT</code> weg. | ||
+ | * Zet een jumper op JP1 als je alleen 12V op het bordje aansluit. De on-board regulator van de Arduino zal dan gebruikt worden om deze van 5V te voorzien. | ||
+ | * Met JP2 kan je de linkerhelft zijn eigen 5V laten maken vanaf de gedeelde 12V, '''of''' gebruik JP3 om de 5V van de rechterhelft te delen. | ||
+ | * Sluit de linkerhelft aan als een standaard Doorduino setup. Let op dat de iButton zijn eigen ESD-beveiligde GND gebruikt, houd deze dus gescheiden van de GND van de ledjes als je de DS9503 gebruikt. | ||
+ | |||
+ | ==== Linkerhelft als ouderwetse Doorduino ==== | ||
+ | |||
+ | Voor als je de linkerhelft met een solenoidslot wilt gebruiken. | ||
+ | |||
+ | * Breek de PCB in twee helften. | ||
+ | * Snijd de soldeerjumper J4 door en check of de verbinding verbroken is. | ||
+ | * Soldeer alle onderdelen op de linkerhelft, inclusief Q1, R8 en R9. | ||
+ | * Gebruik de soldeerpunten op J1 om de voeding en het solenoidslot aan te sluiten. | ||
+ | * Verbind JP2 als je de Arduino zijn eigen 5V vanaf de 12V lijn wilt laten maken. | ||
+ | * Flash de [https://github.com/revspace/doorduino/tree/master/arduino/doorduino3 standaard Doorduino code] op de linker Arduino Pro Mini. |
Huidige versie van 17 mrt 2023 om 20:53
Let op: de informatie over het slot is grotendeels beredeneerd op basis van reverse engineering en niet gegarandeerd correct, pas het toe op eigen risico!
Project Doorduino_EL520 | |
---|---|
Name | Doorduino_EL520 |
Start | 2019/09/12 |
End | 2019/10/31 |
Contact | Kartoffel, redlizard |
Website | https://git.hackalot.nl/Kartoffel/doorduino el520 |
Information | Aansturen Abloy EL520 motorslot vanuit de Doorduino |
Status | Voltooid |
Abloy EL520 motorslot
In de zoektocht naar elektrisch bedienbare sloten voor de spacedeuren van Hackalot kwamen we twee Abloy EL520 motorsloten tegen. Dit zijn normaal erg dure sloten die nutteloos zijn zonder de (tevens dure) EA420 control unit. De sloten hebben we voor een zacht prijsje over kunnen nemen maar we hebben geen control units, dus het was tijd om de sloten te reverse engineeren en zelf iets te bouwen om de sloten aan onze Doorduino's te koppelen.
Het motorslot heeft een antipaniekfunctie, de hendel aan de binnenkant kan dus altijd gebruikt worden om de deur te ontgrendelen. Hiernaast kan het slot kan van binnen of buiten geopend worden door de cilinder, of elektrische bediening. Het slot ziet er van binnen zo uit:
Dit aanzicht is een halve slag gedraaid ten opzichte van hoe het slot normaal in de deur gemonteerd wordt. Op de foto mist een metalen beugel, die als een soort OR-gate de verschillende ontgrendelmechanismes met elkaar verbindt.
Linksbovenin zie je de blauwe 2x7 pin plug waar normaal een Abloy EA218/EA219 kabel in gaat. Deze kan ook prima vervangen worden door standaard 0.1" pin headers.
Onderaan zit de motor die via een wormwiel een tandwiel met metalen palletje aandrijft. Het metalen palletje bedient de OR-beugel om het slot te ontgrendelen.
Verder zitten er een hoop schakelaars en een reed sensor verspreid door het slot om alle standen en staten te meten voor een luxe aansturingssysteem, wij gebruiken die niet.
Bij normaal gebruik draait de motor het tandwiel alleen met de klok mee. Op de foto is deze in neutrale stand te zien (de deur is vergrendeld). Om de deur te ontgrendelen moet het tandwiel circa een halve slag draaien en hiermee de nachtschoot naar binnen trekken. Zolang de motor in deze stand blijft staan blijft de deur ontgrendeld. Om de deur weer te ontgrendelen draait het tandwiel met de klok mee tot deze weer in de neutrale stand staat. Wanneer de deur dan in de slotplaat valt zal de nachtschoot er weer uit schieten om de deur te vergrendelen.
Voor het gemak noem ik hierna de 'vergrendel' stand van het tandwiel DICHT, en de 'ontgrendel' stand van het tandwiel OPEN.
Om te detecteren wanneer het tandwiel in OPEN of DICHT stand staat zit er een magneet in met de vorm van een halve maan. Onder het tandwiel bevind zich een unipolaire hall effect sensor om de aanwezigheid van de magneet hierboven te detecteren. In de neutrale DICHT stand staat het begin van de magneet direct boven de hall effect sensor, en in de OPEN stand staat het eind van de magneet boven de hall effect sensor.
Typenummers en aansluitingen
De bovenstaande afbeeldingen geven de pinout van het slot samen met EA218/219 kabelkleuren, en een schematische weergave hoe de hall effect sensor en motor intern aangesloten zijn. Bij de relevante onderdelen hebben we de volgende typenummers gevonden:
Onderdeel | Functie |
---|---|
SS543AT | Hall effect sensor |
16G88-211E.1 | 12V Brushed DC Motor |
De relevante pins aan de kabelconnector zijn:
Pin | Kabelkleur | Functie |
---|---|---|
2 | geel | M+ (motor) |
3 | groen | M- (motor) |
6 | wit | 12V (hall) |
7 | zwart | GND (hall) |
14 | rood | OUT (hall) |
Aansturingsprocedures
Wanneer de aanstuurelektronica net opgestart is kan aan de hand van enkel de hall effect sensor de stand van het tandwiel niet bepaald worden. Met wat mechanisch inzicht zijn we bij de volgende resetprocedure uitgekomen om het tandwiel, ongeacht van de andere bedienmogelijkheden van het slot, altijd in DICHT stand te krijgen zonder de deur te hoeven ontgrendelen:
- Staat de magneet al boven de sensor?
- Draai het tandwiel tegen de klok in tot de magneet van de sensor valt.
- Rem de motor om het tandwiel snel tot stilstand te krijgen.
- Draai het tandwiel met de klok mee tot het begin van de magneet net boven de sensor valt.
- Rem de motor om het tandwiel snel tot stilstand te krijgen.
- Klaar.
Hierna kan het volgende uitgevoerd worden om het tandwiel in OPEN stand te krijgen (en de deur te ontgrendelen):
- Draai het tandwiel met de klok mee tot de magneet voorbij de sensor valt.
- Rem de motor om het tandwiel snel tot stilstand te krijgen.
Om het tandwiel van OPEN naar DICHT te krijgen (en de deur weer te kunnen laten vergrendelen):
- Draai het tandwiel met de klok mee tot de magneet net boven de sensor valt.
- Rem de motor om het tandwiel snel tot stilstand te krijgen.
Doorduino-EL520 bordje
Nu duidelijk is hoe het slot in elkaar zit en aangestuurd moet worden is het tijd om een bordje te ontwerpen wat open/dicht signalen van de Doorduino krijgt en hiermee het motorslot aanstuurt.
Het printje bestaat uit twee helften, de Doorduino-helft (links) en de EL520 helft (rechts). De twee helften zijn standaard elektrisch verbonden, maar kunnen los van elkaar gebroken worden om de helften apart te gebruiken.
Links
De linker Doorduino helft kan functioneren als een standalone Doorduino bordje. Er is ook een footprint voor een MOSFET aanwezig zodat een ouderwets solenoidslot gebruikt kan worden in plaats van het motorslot. Hiernaast biedt dit bordje met een DS9503 chip ESD beveiliging op de OneWire bus waarmee iButtons uitgelezen worden. Mocht je deze beveiliging onnodig achten, dan zijn er twee jumpers zodat het onderdeel weggelaten kan worden.
Rechts
De rechterhelft kan rechtstreeks aan een ongemodificeerde Doorduino worden aangesloten. Via een pull-up weerstand kan de Arduino op deze helft de open-drain Strike output van de Doorduino uitlezen. Met een serieweerstand, condensator en zener diode zou deze input ook tegen ESD en andere transients beveiligd moeten zijn.
Een TB6612 motor driver IC wordt gebruikt om de motor in het slot aan te sturen. Omdat de hall effect sensor in het slot een open collector output heeft wordt een soortgelijke schakeling als in het figuur hiernaast gebruikt om deze uit te lezen en de Arduino input te beschermen.
Hardware-configuraties
Zie https://git.hackalot.nl/Kartoffel/doorduino_el520/tree/master/PCB voor alle ontwerpbestanden rond de PCB, inclusief gerbers.
In vrijwel alle configuraties wil je R8, R9 en Q1 weglaten. Deze zijn enkel nodig als je de linkerhelft gebruikt om een solenoidslot aan te sturen.
Rechterhelft aangesloten op een bestaande Doorduino
De standaard backwards-compatible configuratie.
- Breek de PCB in twee helften, soldeer enkel de onderdelen op de rechterhelft. Vergeet de schroefterminals op X5 niet.
- Flash de code op een Arduino Pro Mini (5V, 16MHz). Laat
#define INVERT_INPUT
weggecomment. - Zet een jumper op JP1 als je alleen 12V op het bordje aansluit. De on-board regulator van de Arduino zal dan gebruikt worden om deze van 5V te voorzien.
Linker en rechterhelft als standalone Doorduino+EL520
Met deze setup heb je enkel een Pi+toebehoren nodig om een volledige Doorduino setup met een motorslot te bouwen.
- Laat de PCB intact. Omdat in dit geval twee Arduino's op elkaar aangesloten zitten kan je C1, D1 en R2 weglaten. X5 is ook niet nodig.
- Let op: de EL520-Arduino heeft een pull-down weerstand nodig zodat de deur niet van het slot kan gaan wanneer de doorduino reset. Soldeer hiervoor een 22k (of 10k) weerstand direct van A3 naar GND op de rechter Arduino.
- Bouw het Raspberry Pi-deel van een Doorduino volgens [1]
- Flash de standaard Doorduino code op de linker Arduino Pro Mini.
- Flash de code op de rechter Arduino. Haal de comments voor
#define INVERT_INPUT
weg. - Zet een jumper op JP1 als je alleen 12V op het bordje aansluit. De on-board regulator van de Arduino zal dan gebruikt worden om deze van 5V te voorzien.
- Met JP2 kan je de linkerhelft zijn eigen 5V laten maken vanaf de gedeelde 12V, of gebruik JP3 om de 5V van de rechterhelft te delen.
- Sluit de linkerhelft aan als een standaard Doorduino setup. Let op dat de iButton zijn eigen ESD-beveiligde GND gebruikt, houd deze dus gescheiden van de GND van de ledjes als je de DS9503 gebruikt.
Linkerhelft als ouderwetse Doorduino
Voor als je de linkerhelft met een solenoidslot wilt gebruiken.
- Breek de PCB in twee helften.
- Snijd de soldeerjumper J4 door en check of de verbinding verbroken is.
- Soldeer alle onderdelen op de linkerhelft, inclusief Q1, R8 en R9.
- Gebruik de soldeerpunten op J1 om de voeding en het solenoidslot aan te sluiten.
- Verbind JP2 als je de Arduino zijn eigen 5V vanaf de 12V lijn wilt laten maken.
- Flash de standaard Doorduino code op de linker Arduino Pro Mini.