From 905447b6be4cd4492355d95835d25423cac1a06d Mon Sep 17 00:00:00 2001 From: JanBreem <91949496+JanBreem@users.noreply.github.com> Date: Tue, 12 Oct 2021 17:22:51 +0200 Subject: [PATCH] Delete WebPage directory --- WebPage/Monitor.htm | 1875 ------------------------------------------ WebPage/format-1.css | 36 - 2 files changed, 1911 deletions(-) delete mode 100644 WebPage/Monitor.htm delete mode 100644 WebPage/format-1.css diff --git a/WebPage/Monitor.htm b/WebPage/Monitor.htm deleted file mode 100644 index 0130c3c..0000000 --- a/WebPage/Monitor.htm +++ /dev/null @@ -1,1875 +0,0 @@ - - - - - - - - - - - - - - - -Monitor Systeem - - - - - - -
- - - - - - - - - - -
Monitor Systeem       -                          - - - - - - - - -                     -                   -2021-10-03  JanBee, janbee@hack42.nl
-
-
-Geschiedenis:
-Voor het pand van Hack42 aan de Cruquiusweg 3 in Arnhem werd de behoefte gesignaleerd om het -energie verbruik in de gaten te houden, teneinde te voorkomen dat het -totaal verbruik zo hoog zou worden dat er een hoofdzekering aanspreekt. -Grote verbruikers zijn vooral de warmtepomp, heetwater voorzieningen en -keuken apparatuur.
-Daarbij komt een slecht voorspelbare, maar in de pieken aanzienlijke energieleverantie van de zonnepanelen.
-Het idee ontstond bij mij om op toepasselijke plaatsen, vooral -(sub) groepenkasten, de opgenomen  stroom te meten, om aan de hand -van die gegevens te besluiten om bepaalde belastingen af te schakelen of - niet toe te laten.
-In de loop van de ontwikkeling bleek er ook behoefte om een aantal -parameters van het binnenklimaat te meten, om daarmee verwarming, -koeling en ventilatie te kunnen regelen.
-Het resultaat van dit project is:
-
-Beknopte omschrijving:
-Een Monitor-unit (elektronica bord met behuizing) waarmee de stromen van - diverse verbruikers gemeten kunnen worden, en waarop aansluit -mogelijkheden zijn voor sensors waarmee temperaturen, luchtvochtigheid, -CO2 gehalte, diverse verontreinigende gassen en de fijnstof concentratie - gemeten kunnen worden.
-Er kunnen relais aangestuurd worden waarmee bepaalde verbruikers -afgeschakeld dan wel niet toegelaten kunnen worden, o.a. op grond van de - SpaceState.
-
-De monitor units zijn niet slim, d.w.z. ze nemen geen beslissingen over -afschakelen of niet toelaten van verbruikers. Die taak is voor de -�Mediator�, een stuk software dat buiten het bereik van dit project -valt.
-Deze units communiceren met die �Mediator� via het MQTT protocol.
-Het MQTT protocol laat wel toe dat andere entiteiten gebruik maken van de informatie die de Monitor-units aanleveren.
-
-
-
-
-
-Foto
-Het gemonteerde bord, ca. 190 x 110 mm.  Rechts onder het Ethernet -Shield, aan de onderkant van de print is de Arduino MEGA ingestoken -(niet zichtbaar) Voor dit bord + een 24VDC power supply is een behuizing - ontworpen (lasersnijden) met een doorzichtig deksel zodat de led�s -ge�nspecteerd kunnen worden.
-Het bord is aan de componentenzijde vingerveilig t.a.v. de 230 Volt -voedingsspanning in het gebied linksboven. De onderkant van het bord is -daar niet vingerveilig.
-Nabij de rode led is een lange messing schroef gemonteerd. Deze is bedoeld om de GND draad van een oscilloscope aan te klemmen.
-Alle aansluitingen van de Arduino MEGA zijn uitgevoerd met een bus aan -de bovenzijde. Ook dat is gedaan voor het gemakkelijk aansluiten van -meetapparatuur.
-
- -
Specificaties:
-
-Algemeen:
-Het bord wordt bestuurd door een Arduino MEGA 2560 R3. Er zijn versies -in omloop met verschillende USB-serial converters. De PC waarop de -firmware gecompileerd wordt moet hiervoor ingericht zijn.
-Er wordt een Arduino Ethernet Shield gebruikt voor de communicatie - met de MQTT-Broker. Er zijn ETH-shields in omloop met verschillende -Ethernet Interface IC�s. Voor het compileren van de firmware moet de -juiste chip geconfigureerd zijn in de Arduino libraries.
-
-Stroom meting:
-Via maximaal 7 stroom transformatoren kunnen 50 Hz wisselstromen gemeten - worden in bijv. een groepenkast. De stroommeting en calibratie gebeurt -zodanig dat het resulteert in de amplitude van de stroom en de -fase-hoek, zodat ook het werkelijke vermogen berekend kan worden.
-De meetmethode is niet true-RMS, d.w.z. dat als de golfvorm van de -stroom sterk afwijkt van de zuivere sinusvorm er een meetfout optreedt. -Alle meetkanalen hebben wel een 2e orde laag-doorlaat filter dat -harmonischen wegfiltert. Deze filters zijn identiek uitgevoerd zodat de -faseverschuiving in alle meetkanalen dezelfde is.
-De fase-referentie wordt betrokken van de voedingstrafo op het board, -die geacht wordt op de R-fase aangesloten te zijn. De stroom- en -fasemetingen worden gemiddeld over 1/2 seconde.
-De eerste 3 stroom meetkanalen worden geacht aangesloten te zijn op -stroomtrafo�s in de R, S en T-fasen. De 4 andere kanalen (8 t/m 11) -kunnen naar believen andere stromen meten. De nominale fase voor deze -kanalen wordt d.m.v. jumpers ingesteld.
-Kanaal 8 is geschikt te maken om de spanning tussen de Nul en de Veiligheidsaarde te meten.
-De calibratie van de metingen vindt plaats door het kiezen van de -weerstanden waarmee de stroomtrafo�s afgesloten worden, in combinatie -met parameters in de firmware (hard te coderen)
-
-In / Uit schakelen van verbruikers:
-Er kunnen maximaal 7 relais aangesloten worden voor het schakelen van eindgroepen.
-De relais dienen te werken met een spoelspanning van 24 VDC en -gezamenlijk niet meer dan 1A te gebruiken, per stuk niet meer dan 300 -mA.
-Als er relais gebruikt worden dan moet er een aparte 24 VDC voeding -aangesloten worden. Daarvoor is ruimte gereserveerd in de behuizing.
-
-Sensoren voor luchtkwaliteit:
-Er is voorzien om een BME280, een CSS811 en een SDS011 sensor aan te sluiten.
-De BME280 meet temperatuur, luchtvochtigheid en barometrische druk.
-De CSS811 meet relatieve CO2 en VOC gehaltes. (VOC = Volatile Organic Compounds)
-De SDS011 meet fijnstof deeltjes van 10μm en 2.5 μm.
-
-Daarnaast kunnen maximaal 10 temperatuur sensoren van het Dallas type DS18B20 of DS18S20 aangesloten worden.
-
-De BME280 en CSS811 sensoren worden in een daarvoor ontworpen behuizing -geplaatst en aangesloten met een 4-aderig kabeltje, bijv. het type -telefoonkabel met rood-blauw-zwart-geel.
-Deze sensoren gebruiken het I2C protocol. In die behuizing is een -conversie naar 3.3 Volt voorzien voor de CSS811. Er kunnen ook andere -sensoren op 3.3 Volt aangesloten worden.
-
-De SDS011 heeft een 3 aderig kabeltje nodig en praat seri�el 9600 baud.
-Deze sensor bevat een laserdiode met een beperkte levensduur en wordt -normaliter slechts 1 x per 10 minuten of zo, even ingeschakeld.
-
-De Dallas temperatuur sensoren hebben 3 aders nodig. Er is 5 Volt -voedingsspanning beschikbaar zodat er geen gebruik gemaakt hoeft te -worden van de z.g. parasite power mogelijkheid.
-Sensoren van het type DS18S20 (0.5 �C resolutie) en DS18B20 (0.0625 �C -resolutie) kunnen door elkaar aangesloten worden. De firmware bepaalt -automatisch de juiste calibratie factor.
-De identificatie codes voor deze sensoren worden bij het opstarten -automatisch door de firmware uitgeplozen en toegekend aan de -meetkanalen. Er moet dan alleen nog experimenteel uitgezocht worden -welke sensor op welk meetkanaal gerapporteerd wordt.
-
-Request kastjes:
-In sommige gevallen zal het wenselijk zijn dat een grote verbruiker niet -domweg ingeschakeld wordt, en dat de Mediator dan maar moet uitzoeken -wie er afgeschakeld kan/moet worden, maar dat er eerst een verzoek -gedaan wordt om die grote verbruiker te mogen inschakelen. Daarvoor -kunnen er twee z.g. Request kastjes aangesloten worden.
-En request kastje bevat een rode en een groene led en een drukknop.
-Als de betreffende load ingeschakeld mag worden brandt de groene led, -indien niet de rode. In dat geval kan het verzoek ingediend worden door -op de drukknop te drukken.
-De groene led gaat knipperen zolang het verzoek in behandeling is. Als -het mag gaat groen continue, anders terug naar rood. (jammer dan)
-Het is aan de Mediator om te bepalen hoe lang de betreffende load ingeschakeld mag blijven.
-
-Feature Connector:
-Er is een connector aanwezig waarmee extra dingen gedaan kunnen worden. Daarvoor moet de firmware aangepast worden.
-De volgende functies zijn bereikbaar:
-- GND en +5Volt.
-- RXD en TXD voor seriele communicatie.
-- 4 digitale in/uitgangen (kunnen geen interrupt genereren).
-- 2 digitale in/uitgangen (kunnen interrupts genereren of PWM output zijn).
-- 2 analoge ingangen.
-- SPI poort met faciliteiten voor bijv. een display.
-
- -
MQTT berichten:
-
-Voor een beknopte samenvatting van het MQTT protocol zie �Broker� e.v. in de begrippenlijst.
-
-Elke Monitor unit moet een unieke ClientID te hebben. Deze verschijnt in - alle publicaties en subscriptions (behalve de HeartBeat subscription).
-De ClientID verwijst bij voorkeur naar de locatie of het doel van de betreffende unit.
-
-Publicaties:
-
-Topic: ClientID/Status
-Payload: �sss � + <VersionString>
-Waar sss (byte) Status.
-Status:
-bit 0 = Request van kastje 1,
-bit 1 = Request van kastje 2,
-bit 3 .. 6 n.t.b.
-bit 7 = Error tijdens initialisatie van de unit.
-De <VersionString> bevat de ClientID en de bouw datum en tijd van de firmware.
-Publicatie interval: Eens per minuut, en als de Request Status verandert.
-
-Topic: ClientID/Power
-Payload: � aaa aaa aaa aaa aaa aaa aaa fff fff fff fff fff fff fff�.
-Waar aaa de amplitude in deci-Amperes en fff de fasehoek in graden is -van de kanalen R, S, T, ch11, ch10, ch09 en ch08, in die volgorde.
-Publicatie interval: 2 x per seconde. Er wordt steeds over 25 lichtnet periodes gemiddeld.
-
-Topic: ClientID/AirQuality
-Payload: � tttt hhhh bbbb cccc vvvv nnnn pppp�
-Waar tttt de temperatuur in deci �C (kan negatief zijn), hhhh Hygro in -%relatief, bbbb de barometrische druk in mBar c.q. hectoPascal, cccc de -CO2 -concentratie in ppm, vvvv de VOC concentratie in ppm, nnnn de fijnstof -concentratie van 10um deeltjes en pppp de fijnstof concentratie van 2.5 -um deeltjes, beide in ug/m3, bereik 0 .. 999.
-Voor niet gebruikte sensoren wordt -999 gerapporteerd.
-Publicatie interval: 1 x per minuut. (Fijnstof wordt infrequent gemeten, de laatst gemeten waarde wordt opgegeven)
-
-Topic: ClientID/DallasTemperatures
-Payload: � tttt tttt tttt tttt tttt tttt tttt tttt tttt tttt�
-Waar tttt de temperatuur is in deci �C.
-Er is gerekend op maximaal 10 sensoren. Voor afwezige sensoren wordt -999 gerapporteerd.
-Publicatie interval: 1 x per minuut.
-
-Topic: ClientID/HeartBeatAck
-Payload: 1 byte, die de payload van de Mediator�s HeartBeat publicatie echo�t.
-Publicatie interval: Als respons op de HeartBeat van Mediator.
-
-Abonnementen (Subscriptions):
-
-Topic: ClientID/SetRelays
-Payload: �ddd�
-Waar ddd de relais code is.
-De relais zijn genummerd 1 t/m 7. Dit correspondeert met de bitjes 1 t/m 7 in binary(ddd). Bit 0 doet niets.
-
-Topic: ClientID/SetRequestLights
-Payload: �ddd�
-Waar ddd een byte waarde is met:
-Bits 0, 1, 2, 3 voor RequestBox 1, bits 4, 5, 6, 7 voor RequestBox 2.
-Bit 0, 4 rood, bit 1, 5 groen knipperend, bit 2, 6: groen. 
-Bit 3, 7: cancel RequestButton.
-
-Topic: Mediator/HeartBeat
-Payload: 1 byte, wordt modulo 256 opgehoogd door de Mediator.
-Mediator verwacht een  ClientID/HeartBeatAck bericht en rapporteert (n.t.b. aan wie?) een error als die uitblijft.
-N.B. Het MQTT protocol ondersteunt ook een soort HeartBeat procedure. Ik - vond de mogelijkheden daarvan echter te beperkt of niet erg geschikt -(Last Will gedoe)
-
-

-
-
-
- Integratie.

-Een voorbeeld van hoe zulke monitoren in de elektrische installatie ge�ntegreerd kunnen worden.
-In dit voorbeeld is ook een suggestie van mij verwerkt, nl. om de -sub-groepenkasten niet afzonderlijk af te zekeren maar via een scheider -aan te sluiten op de hoofdkast. De daarvoor benodigde kabel moet flink -zwaar zijn, ik denk aan 5 x 10 mm2. Elke kast heeft uiteraard ook een -scheider aan de ingang om veilg te kunnen werken zonder alle sub-kasten -af te schakelen.
-Het afzonderlijk afzekeren van de sub-kasten leidt tot een bijkans onoplosbaar selectiviteits probleem.
-
-

-
-
-
-Aansluiten van relais en 24 VDC Power Supply.
-
-
-                   

-Aansluiten van Sensors en Stroomtransformatoren.
-Houd er rekening mee dat de - kant van de stroomtrafo�s op + 2.5 Volt DC staat.
-
-
- -
Genereren van een nieuwe unit:
-
-Montage hardware:
-Zie de onderdelen lijst.
-Componenten die alleen dienen voor functies die toch niet gebruikt worden kunnen weggelaten worden. Check daarvoor de schema�s.
-Er is een modificatie nodig op -de print. De verbinding tussen pin 13 en de Reset van de arduino moet -worden doorgesneden en Reset moet aan pin 8 van de arduino mega gelegd -worden.
-De benodigde schroefklemmen moeten worden samengsteld uit de beschikbare - 2- en 3-polige blokjes. Van de goene blokjes moeten de pennen -ingeknepen worden met een platbektangetje.
-
-Firmware:
-Gebruik een PC of laptop met een recente versie van de Arduino IDE en de juiste libraries:
-
-Adafruit_BME280_Library-master
-Adafruit_BusIO-master
-AdaFruit_CSS811-master
-Adafruit_Sensor-master
-Ethernet-5500 (voor het geval dat er W5500 ETH chips gebruikt worden)
-OneWire-master
-PubSubClient
-
-1/ Maak een directory met de naam FW_<Nieuwe CLIENTID>
-   <Nieuwe CLIENTID> dient z.m. de locatie of het doel van de nieuwe unit aan te geven.
-2/ Copieer de files van een bestaande instantie naar dat directory.
-3/ Wijzig de naam van de .ino file in die van het directory en start de IDE.
-4/ Wijzig in de Gobals.h file het item #define CIENTID in de nieuwe naam. 
-5/ Geef in de file Globals.h op welke sensors er gebruikt gaan worden.  Dat zijn de items:
-
-#define USE_CURRENTS
-#define USE_BME280 
-#define USE_CCS811
-#define USE_SDS011
-#define USE_DALLAS_SENSORS
-#define USE_REQUEST_BOX1
-#define USE_REQUEST_BOX2
-
-6/ Geef in de file Client.cpp op wat het IP adres van deze unit moet zijn. (ClientIP, verschillend voor alle monitor units)
-7/ Geef in de file Client.cpp op wat het IP adres van de Broker is. (BrokerIP, zelfde voor alle monitor units)
-8/ Compileer het programma en laad het in de unit.
-9/ Activeer de Arduino Monitor met ctrl-shift-M en inspecteer de uitvoer bij het opstarten. Zie voorbeeld.
-10/ Copy-paste de Build-datum en tijd van de uitvoer naar de .ino file bij het item VERSIONSTRING en sla het project op.
-N.B. De build datum en tijd worden automatisch gegenereerd bij het -compileren, maar komen niet automatisch in de broncode terecht. Voor de -traceability is dat wel erg gewenst.
-
- -
Calibraties:
-
-Berekenen van de afsluitweerstanden voor de stroomtrafo�s. (Zie ook schema deel 2)
-Het p-p bereik van de A/D converter is 5 Volt en de gain van de filterversterkers is 1.
-5V p-p komt overeen met 1.77 V RMS.
-Stroomtransformatoren hebben een conversiefactor F (vaak 100 , 1000 of 10000)
-Voorbeeld:
-Kies het maximale stroombereik I-max, bijv. 30A voor een 25A gezekerde groep. (We houden wat marge).
-De afsluitweerstand moet dan zo gekozen worden dat bij die stroom een -spanning van 1.77 V ontstaat. Dus bereik 30A, stel F= 1000, de secondaire - stroom is dan 30 mA, en je krijgt 1.77 V met een weerstand van 1.770 / -0.030 = 59 Ohm. Neem de eerst kleinere reekswaarde: 56 Ohm. Verdere -calibratie gebeurt in de firmware.
-De afsluitweerstanden voor de kanalen R, S, T, zijn resp. R29, R30, R31, - en die voor de kanalen 11, 10, 09, 08 resp. R52, R53, R54 en R55.
-Om kanaal 08 te gebruiken met een stroomtrafo moeten R51 en C18 overbrugd worden.
-Kanaal 08 is in beginsel voorbereid om de spanning tussen de Nul en -Veiligheidsaarde te meten. Met R55 = 1 kOhm en R51 = 11 kOhm is er een -bereik van 20 Volt. In de praktijk mag die spanning enkele volts -bedragen; als het meer is dan ca. 10 Volt dan is er iets geks aan de hand -dat aandacht vereist.
- -De fase waarop de stroom meetkanalen 08 t/m 11 aangesloten zijn kan -ingesteld worden met het 3 x 4 jumperblok. (kan on-the-fly gewijzigd -worden).
- - -Zonder jumper geldt de fase als R (dezelfde fase als die waarop de -voeding is aangesloten) Met een jumper op de R of T positie wordt de -fasehoek zodanig gecorrigeerd dat de fase voor een zuiver ohmse -belasting nagenoeg 0 of 359 is.

-Verdere calibraties in de software.
-De stromen worden bepaald met een quadratuurmeting. Dat wil zeggen dat -het signaal bemonsterd wordt op de momenten A, B, C en D. Zie figuur -hieronder. De waarde A wordt opgeteld bij een Sinus-term, C wordt daar -van afgetrokken. B wordt opgeteld bij een Cosinus-term en D wordt -daarvan afgetrokken. Dat gebeurt over een interval van 0.5 seconde, dus -25 periodes.
-De amplitude wordt dan berekend als de Wortel uit (Sinus-term2 + Cosinus-term2).  Deze amplitude is onafhankelijk van de fase hoek van de stroom.
-De A/D converter heeft een bereik van 5 V p-p of 1.77 Volt RMS, hetgeen -1023 A/D eenheden oplevert. Na sommatie over 25 periodes geeft dat 25565 - eenheden.
-Dus: 25565 eenheden komt overeen met 1.77 Volt rms.
-De calibratie wordt nu: Stroom in A-rms = gemeten eenheden / 25565 * 1.77 / Rt * F  [A]
-De waardes voor elk kanaal dienen ingevuld te worden in de file Currents.cpp van de firmware. (regel 31 e.v. )
-
-
-
-De sample momenten voor de quadratuurmeting, hier voor een Ohmse  stroom met -fasehoek ϕ = 0, oftewel cos(ϕ) = 1.  A en C zijn de sinus termen, B - en D de cosinus termen.
-Het signaal heeft een offset ter grootte van de halve voedingsspanning -omdat deze A/D converter geen negatieve signalen kan verwerken. Bij de -uiteindelijke signaalverwerking blijkt dat die offset wegvalt, zodat de -precieze waarde ervan niet ter zake doet.
-
- -
Testen en Diagnose:
-
-Voor Testen en Diagnose dient er een terminal aangesloten te worden op -de seriele poort van de Arduino. Dit kan de monitor van de Arduino IDE -zijn (ctrl-shift-M) of een andere terminal, bijv. Putty. Instelling: -19200 baud, 8 bit, No parity, 1 of 2 stopbits.
-Het is ook nodig dat er een goed werkende MQTT Broker aanwezig is in het netwerk, bijv. Mosquitto.
-
-Hulpsoftware:
-Er is een dummy-Mediator gemaakt, een PC-programma dat zich als Mediator - gedraagt in zoverre dat het de data van een monitorunit weergeeft.
-Er is eveneens een MQTT-Spy beschikbaar die alle berichten van de Broker toont.
-
-Service Mode: Jumper op JP1-JP2. (kan on-the-fly gewijzigd worden).
-In Service Mode worden de sensoren veel vaker uitgelezen dan in de -normale mode, en de voeding voor de fijnstofsensor blijft continue aan.

-Diagnose Mode: Jumper op JP3-JP4. (kan on-the-fly gewijzigd worden).
-In Diagnose Mode worden de ontvangen en verstuurde MQTT berichten ook weergegeven via de seriele poort.
-
- Andere diagnose voorzieningen:
-Het intypen van de (hoofd) letter 'R' veroorzaakt een volledige (ook hardware) reset van de Arduino.
-Een 'D' veroozaakt het opnieuw uitzoeken en rapporteren van de Dallas temperatur senors.
-Relais kunnen aangezet worden door het intypen van een cijfer 1 t/m 7, en 0 voor het uitzetten van alle relais.
- -N.B. Als er een MQTT Topic_SetRelays binnenkomt gaat dat voor.
-
- Led's:
-CONN (groen)  Continue aan: Connectie met Broker OK. Snel knipperen: Fout bij verbinden met de Broker.
-PUB (geel)     Toggelt bij elke publicatie
-SUB (blauw)   Subscriptions gelukt. Snel knipperen: 1 of meer subscriptions mislukt.
-HTBT (rood)   Toggelt bij het ontvangen van de Heartbeat -Topic. Snel knipperen: Fout tijdens het initialiseren van de sensors.
-
-Testpunten:
-De 8 aansluitingen ADCL van de Arduino MEGA zijn gebruikt als -test-uitgangen, bedoeld om met een oscilloscope bepaalde (timing) -signalen te bekijken. Ze zijn bereikbaar op het Ethernet shield als A0 -t/m A5. A6 en A7 zijn beschikbaar op de connector onder het ETH shield. -(A6 wat lastig bereikbaar)
-In de firmware zijn deze aansluitingen aangeduid als DIAGPIN_n.
-
-DIAGPIN_0:
-Toont de activiteit in FW_Monitor_xxx.ino/loop(). Verwacht een puls van ca. 80 usec met een herhalingstijd van ca. 1.1 msec.
-
-DIAGPIN_1:
-Toont de in-service tijd van de interrupt ISR(TIMER3_COMPA_vect).
-Verwacht een puls van 4 � 5 usec met een herhalingsfrequentie van 20 kHz.
-
-DIAGPIN_2:
-50 Hz Mains trigger.Toggelt op het moment waarop een positief gaande -nuldoorgang gevonden wordt voor het signaal op de ADC-15 input. Dat is -het gefilterde signaal van de voedingstrafo.
-Als USE_CURRENTS uitgeconfigureerd is of er is geen lichtnet signaal zien we een triggersignaal van ongeveer 50 Hz.
-
-DIAGPIN_3:
-Toont de periodes waarin het sampelen van de stromen plaatsvindt. -Verwacht per 50 Hz periode 4 pulsen van 300 usec op tijden 0, 5, 10 en -15 msec na de trigger op DIAGPIN_2.
-
-DIAGPIN_4:
-Toont het 4e quadrant, als de 4 samples genomen zijn, tot aan het vinden van de volgende nul-doorgang.
-
-DIAGPIN_5:
-Toont het uitlezen van de sensoren. Verwacht pulsen met een interval -niet korter dan 200 msec. De pulsduur varieert afhankelijk van welke -sensor er uitgelezen wordt.
-
-DIAGPIN_6:
-Wordt niet gebruikt want is lastig te bereiken.
-
-DIAGPIN_7:
-Toont de tijden gebruikt voor het uitlezen van de Dallas temperatuur sensoren (indien in gebruik)
-Er zijn steeds 2 pulsen na elkaar te zien, eerst het uitlezen van een -sensor, kort daarna het starten van de conversie voor de volgende -sensor. 
-Deze pulsen vallen samen met de activiteit op de 1-wire bus op T9.
-
-Opstart sequence:
-Na opstarten of reset wordt er achtereenvolgens een aantal tests gedaan:

-- De 4 MQTT leds op het bord worden in sequentie aan / uit gezet gedurende 4 seconden.
-- Indien geconfigureerd worden de leds op de RequestBoxen 1 en 2 getest in de sequentie rood, groen, gedurende ca. 4 seconden.
-- De te publiceren topics worden weergegeven, maar alleen als de betreffende sensors niet uitgeconfigureerd zijn.
-- De topics waarop deze unit zich moet abonneren worden weergegeven.
-- Vervolgens wordt de verbinding met de Broker opgezet en worden de nodige subscriptions gedaan.
-- De jumper settings voor ServiceMode en DiagnoseMode worden ge�valueerd - en gerapporteerd. Alleen indien USE_CURRENTS is geconfigureerd wordt de - instelling van de Fase-configuratie jumpers weergegeven.
-- Het stroom-meetsysteem wordt ge�nitialiseerd als USE_CURRENTS -geconfigureerd is. Indien niet dan verschijnt de mededeling �Falling -back to default Task Dispatcher�. Dat betekent het volgende: Het stukje -software dat de timing voor de stroommetingen regelt wordt ook gebruikt -voor de timing van de andere sensoren en het publiceren van topics. Het -wordt daartoe gesynchroniseerd met de lichtnet frequentie. Indien niet -gebruikt voor stroommetingen moet het toch in een tempo van ongeveer 50 -Hz blijven lopen. Dat is de �Fall back� voorziening.
-Idem als USE_CURRENTS wel geconfigureerd is maar er is geen 50 Hz -voeding aanwezig. In dat geval verschijnt het bericht �No Mains Zero -Crossing found�. Als de 50 Hz weer terugkomt komt het weer goed.
-- Hierna worden de andere sensors ge�nitialiseerd, indien ze geconfigureerd zijn.
-- Indien USE_DALLAS_SENSORS geconfigureerd is wordt er gezocht naar -zulke sensors. Van de sensors die gevonden zijn wordt de ROM code, het -chip-type en de temperatuur weergegeven.
-Als er twee of meer zulke sensors in bedrijf zijn moet er handmatig -uitgezocht worden welke sensor op welk kanaal gerapporteerd wordt. Dat -kan bijv. door steeds 1 van de sensoren met de hand te verwarmen en dan -te kijken op welk kanaal je de temperatuurstijging ziet.
-Door het intypen van de hoofdletter �D� wordt opnieuw gezocht naar de Dallas sensoren.
-Het is sterk aan te bevelen om een copie te maken van dit lijstje -kanaalnummers en ROM codes, en daarbij te noteren waar die sensors -precies zitten. Als er in de toekomst sensors bijkomen, afgaan of -vervangen worden zal de volgorde in het algemeen anders worden. Je kunt -dan aan de ROM codes zien wie wie is/was.
-
Output op de seri�le poort tijdens het opstarten: (voorbeeld)
-
-16:54:00.734 -> FW_Monitor_Primary   Build: Oct  2 2021 16:53:47 -
-16:54:00.767 -> Client ID = Monitor_Primary -
-16:54:01.065 -> Client IP = 192.168.2.5 -
-16:54:01.065 -> Broker IP = 192.168.2.4 -
-16:54:01.098 ->  -
-16:54:01.098 -> Testing MQTT Leds -
-16:54:05.078 -> Testing RequestBox 1 Leds -
-16:54:07.101 -> Testing RequestBox 2 Leds -
-16:54:09.125 ->  -
-16:54:09.125 -> Prepare Topics to publish:  -
-16:54:09.125 -> Monitor_Primary/Status -
-16:54:09.125 -> Monitor_Primary/Power -
-16:54:09.158 -> Monitor_Primary/AirQuality -
-16:54:09.158 -> Monitor_Primary/DallasTemperatures -
-16:54:09.191 -> Monitor_Primary/HeartBeatAck -
-16:54:09.191 ->  -
-16:54:09.191 -> Prepare Topics to subscribe to:  -
-16:54:09.224 -> Monitor_Primary/SetRelays -
-16:54:09.224 -> Monitor_Primary/SetRequestLights -
-16:54:09.258 -> Mediator/HeartBeat -
-16:54:09.258 ->  -
-16:54:09.258 -> Try to connect to the MQTT Broker -
-16:54:09.457 -> Monitor_Primary is now connected to the MQTT Broker -
-16:54:09.490 -> Subscribe to Topic: Monitor_Primary/SetRelays....OK -
-16:54:09.523 -> Subscribe to Topic: Monitor_Primary/SetRequestLights....OK -
-16:54:09.556 -> Subscribe to Topic: Mediator/HeartBeat....OK -
-16:54:09.556 ->  -
-16:54:09.556 -> Evaluate Jumper settings:  -
-16:54:09.589 -> Service Mode is OFF -
-16:54:09.589 -> Diagnostic Mode is OFF -
-16:54:09.589 ->  -
-16:54:09.622 -> Channel 08 Mode is: R -
-16:54:09.622 -> Channel 09 Mode is: T -
-16:54:09.622 -> Channel 10 Mode is: R -
-16:54:09.656 -> Channel 11 Mode is: R -
-16:54:09.656 ->  -
-16:54:09.656 -> Initializing Current Measurements.... -
-16:54:09.689 -> Current Measurements Initialized. -
-16:54:09.689 ->  -
-16:54:12.806 -> Start initialisation of sensors: -
-16:54:12.806 -> Initialize BME280 sensor for Temperature, Hygro and Baro.....OK -
-16:54:13.237 -> Initialize CCS811 sensor for eCO2 and eVOC..... OK -
-16:54:17.416 -> Initialize SDS011 Particle Sensor.....OK -
-16:54:19.440 -> Searching for Dallas Temperature Sensors.... -
-16:54:19.473 -> Sensor no 0: ROM = 40 25 65 117 208 1 60 30 , Chip = DS18B20 -
-16:54:19.507 -> Sensor no 1: ROM = 40 31 51 117 208 1 60 66 , Chip = DS18B20 -
-16:54:19.540 -> Found 2 Dallas Temperature Sensors. -
-16:54:20.568 -> Sensor no 0: Temperature = 25.12 Celsius,  -
-16:54:21.596 -> Sensor no 1: Temperature = 24.69 Celsius,  -
-16:54:21.596 ->  -
-16:54:21.596 -> Enter 'D' to repeat the Dallas Sensor Search -
-16:54:21.630 ->  -
-16:54:21.630 -> No errors found during initialisation -
-
-
Hulp Software:
-
-Voor het testen van de Arduino firmware zijn twee hulpprgramma's -gemaakt in FreePascal (3.2.0) met de Lazarus-IDE (2.0.12) voor Linux.
-Het programma Mediator vervult de functies van de "Mediator" in die zin -dat de door de Monitor unit geproduceerde gegevens getoond worden en dat - de "Mediator commando's" gegeven kunnen worden. Er zit verder geen -slimmigheid in.
-Het programma MqttSpy abonneert zich op alle berichten van de Broker en laat die zien met een time-stamp.
-Beide programma's produceren een event-log file met een date-timestamp als naam.
-Het IP adres van de Broker wordt uit een tekst bestandje -MQTTBrokerIP.txt gelezen, en -indien gewijzigd- daar ook weer naar -teruggeschreven bij het stoppen van het programma
-Beide programma's zijn in broncode te downloaden in zip-formaat. Er zit een linux-32 executable bij.
-Voor -het compileren is een niet te oude versie van Lazarus / Free Pascal -nodig.
-
- -
Software:
-
-De software voor de monitor units is ontwikkeld met de Arduino 1.8.16  IDE op een Linux-Mint PC.
-Het testen van de communicatie is gedaan tegen de �Mosquitto� Broker op diezelfde PC.
-
-De Arduino software bestaat uit:
-Een directory �FW_Monitor_Primary� met de files:
-
-�FW_Monitor_Primary.ino�
-�Client.cpp�
-�Currents.cpp�
-�Sensors.cpp�
-�Globals.h�
-�DiagMEGA.h�
-
-�FW_Monitor_Primary.ino� is de start-up file voor het project. -Aanbeveling voor de naam: �FW_� + de CLIENTID van de betreffende -instantie.
-De naam van het directory en deze .ino file moeten identiek zijn.
-Deze .ino file bevat de setup(), loop() en enkele algemene functies.
-
-�Client.cpp� bevat nagenoeg alles wat nodig is voor het publiceren en ontvangen van MQTT berichten.

-�Currents.cpp� bevat de routines die nodig zijn voor het meten van de -stromen. Er wordt een interrupt handler gebruikt die ook nodig is als er - geen stromen gemeten hoeven te worden.
-In deze interrupt handler worden ook enkele andere functies afgehandeld.
-
-�Sensors.cpp� bevat de routines voor het initialiseren en bevragen van de sensors, anders dan de stroom sensors.
-
-�Globals.h� bevat definities voor variabelen die in meer dan 1 file -nodig zijn, en de #defines voor het in/uit configureren van sensors.
-
-�DiagMEGA.h� bevat een aantal definities die handig zijn voor het debuggen, i.h.b. met een oscilloscope.
- -

- Overzicht Functies:
-
-

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Functie
-
Aangeroepen door
-
Hoe vaak
-
Doel
-
In .INO file:
-

-

-

-
EvaluateLeds ()
-
Currents.cpp / ISR(TIMER3_COMPA_vect)
-
ca. 6 Hz
-
Leds, zo nodig knipperen
-
EvaluateJumpers ()
-
.ino-file setup ()1-malig of in service mode bij invoer van 'D'
-
Stand van de jumpers uitzoeken
-
Sequence_MQTT_Leds ()
-
.ino-file setup ()1-malig Testen van de 4 MQTT leds
-
Sequence_Request1_Leds ()
-
.ino-file setup ()1-malig Testen van de leds op Request box 1
-
Sequence_Reques2_Leds ()
-
.ino-file setup ()1-malig Testen van de leds op Request box 2
SystemReset ()
-
.ino-file  loop ()In service mode bij invoer van 'R' Complete hardware reset van de Arduino.
-Doet hetzelfde als de reset button
-
setup ()
-
Bij opstarten
-
1-malig Initialisaties
-
loop ()
-
Continue
-
ca. 1 kHz
-
Handelt opdrachten via de seri�le poort af.
-

-

-

-

-
In file Client.cpp:
-
Aangeroepen door
-
-
Hoe vaak
-
-
Doel
-
-
InitTopics ()
-
InitClient ()1-malig Voorbereiden van de Topic strings
-
TopicReceived ()
-
PubSub Library (Callback)
-
Bij ontvangen van een topic
-
Opdracht uitvoeren
-
UpdateClient ()
-
.ino-file  loop ()
-
ca. 1 kHz
-
Publiceren van Topics
-
InitClient ()
-
.ino-file setup ()1-malig Initialisatie, opzetten van communicatie met de Broker, Subscriptions doen.
-

-

-

-

-
In file Currents.cpp:
-
Aangeroepen door
-
-
Hoe vaak
-
-
Doel
-
-
ISR(TIMER3_COMPA_vect)
-
Timer 3 Interrupt
-
20 kHz
-
Systeem timing, Meten van de stroomtrafo's,
-Opwekken Blink signaal.
-
UpdateCurrents ()
-
ISR(TIMER3_COMPA_vect)0.5 Hz
-
Berekenen van stromen en fase hoeken, Voorbereiden van Payload Power
-
InitCurrents ()
-
.ino-file setup ()1-malig Initialisatie van A/D converter en Timer 3
-

-

-

-

-
In file Sensors.cpp:
-
Aangeroepen door
-
-
Hoe vaak
-
-
Doel
-
-
UpdatePublicationScheduler ()
-

-

-
Bepaalt publicatie interval -
UpdateSensors ()
-
.ino-file  loop ()ca. 1 kHzUitlezen van geconfigureerde sensoren
-
SearchDallasSensors ()
-
.ino-file setup ()
-.ino-file  loop ()
1-malig, of in service mode bij invoer van 'D' Zoek naar Dallas temperatuursensors op de 1-wire bus.
-
ReadDallasSensor ()
-
.ino-file setup ()
-.ino-file  loop ()
1-malig, of  in service mode bij invoer van 'D' Uitlezen van de gevonden Dallas sensoren.
-N.B. Het periodiek uitlezen van deze sensoren gebeurt via een ander mechanisme in UpdateSensors ()
-
 InitSensors ()
-
.ino-file setup ()1-malig Initialisatie van sensors, voor zover die geconfigureerd zijn
-

-

-

-

-
In file DiagMEGA.h
-

-

-
Definities voor diagnose signalen op ADC-L connector.
-
In file Globals.h
-

-

-
Definities van globale identifiers,
-Configuratie van sensor gebruik.
-
-
-
- Arduino MEGA 2560 - pin use:
- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Pin - number
-
Port, - Bit
-
Funtion
-
Remark
-
A0
-
PORTF-0
-
Diagnostic output
-

-
A1
-
PORTF-1Diagnostic output
-
A2
-
PORTF-2Diagnostic output
-
A3
-
PORTF-3Diagnostic output
-
A4
-
PORTF-4Diagnostic output
-
A5
-
PORTF-5Diagnostic output
-
A6
-
PORTF-6 Diagnostic output - Also on Feature Connector -
A7
-
PORTF-7Diagnostic outputAlso on Feature Connector -

-

-

-

-
A8
-
PORTK-0
-
Analog input Channel 8
-
Current input Line tbd / Voltage PE-N
-
A9
-
PORTK-1Analog input Channel 9Current input Line tbd
A10
-
PORTK-2Analog input Channel 10Current input Line tbd
A11
-
PORTK-3Analog input Channel 11Current input Line tbd
A12
-
PORTK-4Analog input Channel 12Current input Line T
A13
-
PORTK-5Analog input Channel 13Current input Line S
A14
-
PORTK-6Analog input Channel 14Current input Line R
-
A15
-
PORTK-7Analog input Channel 15Voltage input Line R
-

-

-

-

-
0
-
PORTE-0RXD-0
-
programming / diagnostics
-
1
-
PORTE-1TXD-0
-
programming / diagnostics
2
-
PORTE-4
-
/Enable Particle Sensor
-

-
3
-
PORTE-51-Wire
-
DS18x20 Temperature Sensors
-
4
-
PORTG-5n.c.
-

-
5
-
PORTE-3SEL-TFT
-
On Feature Connector
-
6
-
PORTH-3DIR-TFT
-
On Feature Connector
7
-
PORTH-4n.c.
-

-

-

-

-

-
8PORTH-5RESET - Hardware Reset
-
9
-
PORTH-6n.c.
-

-
10PORTB-4SEL-ETH
-
Internally to ETH Board
-
11
-
PORTB-5PB5 / OC1A / PCINT5
-
On Feature Connector
12
-
PORTB-6PB6 / OC1B / PCINT6
-
On Feature Connector
13
-
PORTB-7n.c.
-

-

-

-

-
 
14
-
PORTJ-1
-
TXD3
-
n.c.
-
15
-
PORTJ-0RXD3
-
Data from particle - Sensor
-
16
-
PORTH-1TXD2
-
not used
-
17
-
PORTH-0RXD2
-
not used
-
18
-
PORTD-3TXD1
-
On Feature Connector
19
-
PORTD-2 RXD1
-
On Feature Connector
20
-
PORTD-1I2C-SDA
-
Sensors
-
21
-
PORTD-0I2C-SCL
-
Sensors
-

-

-

-

-
22
-
PORTA-0
-
Led-Green-1
-
Request Unit 1
-
23
-
PORTA-1Led-Green-2
-
Request Unit 2
24
-
PORTA-2Led-Red-1Request Unit 1
25
-
PORTA-3Led-Red-2
-
Request Unit 2
26
-
PORTA-4Switch-1
-
Request Unit 1
27
-
PORTA-5Switch-2
-
Request Unit 2
28
-
PORTA-6JP1 (JP2 = GND)
-
When connected: Service Mode
-
29
-
PORTA-7JP3 (JP4 = GND)
-
When connected: Diagnose Mode -

-

-

-

-
30
-
PORTC-7Relay Output-T26
-
31
-
PORTC-6Relay Output-T27
-
32
-
PORTC-5Relay Output-T28
-
33
-
PORTC-4Relay Output-T29
-
34
-
PORTC-3Relay Output-T30
-
35
-
PORTC-2Relay Output-T31
-
36
-
PORTC-1Relay Output-T32
-

-
37
-
PORTC-0Led HeartBeat
-

-

-

-

-

-
38
-
PORTD-7
-
Led-SUB
-

-
39
-
PORTG-2Led-PUB
-

-
40
-
PORTG-1Led-CONN
-

-
41
-
PORTG-0Config-alt
-

-

-

-

-

-
42
-
PORTL-7PL7On Feature Connector
43
-
PORTL-6PL6
-
On Feature Connector
44
-
PORTL-5PL5
-
On Feature Connector
45
-
PORTL-4PL4
-
On Feature Connector
46
-
PORTL-3Config-ch-11 jumper
-

-
47
-
PORTL-2Config-ch-10 jumper
-
48
-
PORTL-1Config-ch-09 jumper
-
49
-
PORTL-0Config-ch-08 jumper -
-

-

-

-

-
50
-
PORTB-3SPI-MISO
-
Also on Feature Connector
51
-
PORTB-2SPI-MOSI
-
Also on Feature Connector
52
-
PORTB-1SPI-SCK
-
Also on Feature Connector
53
-
PORTB-0SPI-SS
-
SEL SD-Card on ETH Shield?  not used
-

-

-

-

-
- -
- -
- -
Begrippen:    (binnen het kader van dit document / project)
-
-Monitor, Monitor-unit, Unit: De hier beschreven elektronica en firmware.
-
-Mediator:
-Een software die de gevens van de Units verzamelt en besluiten neemt -over toe te laten c.q. af te schakelen verbruikers. Zou ook de -verwarming / koeling en ventilatie kunnen aansturen. 
-
-Broker, Client, Topic, Payload:
-Begrippen van het MQTT protocol. MQTT-clients �publiceren� hun gegevens -aan de Broker en kunnen �geabonneerd� zijn op bepaalde gegevens van -andere clients.
-Een MQTT bericht bestaat uit een �Topic� en een �Payload�. De Topic -geeft aan waar een bericht vandaan komt of naartoe moet, de Payload is -de inhoud van het bericht (gemeten waardes, afschakel opdrachten, e.d.) -De Broker (ook wel Server genoemd) verdeelt de aangeboden informatie -over de geabonneerde clients, maar bemoeit zich niet met de inhoud van -de berichten.
-
-BME280:
-Een sensor die temperatuur, luchtvochtigheid (hygro) en luchtdruk meet. -Deze sensor gebruikt het I2C protocol en wordt met een 4-ader kabeltje -aangesloten op de Unit. Deze sensor zal in het algemeen op een geschikte - plek in de buurt van de Unit geplaatst worden, en niet in de buurt van -een warmtebron.
-Er zijn diverse goedkope PCB-tjes te koop waarmee deze chip gemakkelijk aangesloten kan worden, o.m. GY-BM E/P 280.
-Let op: de zeer goedkope BMP280 heeft geen hygro sensor aan boord.
-
-CSS-811:
-Een sensor die de equivalente CO2 en VOC gehaltes in de lucht meet.
Deze goedkope sensor meet ook VOC, Volatile Organic Compounds, Vluchtige - Organische Bestanddelen. Dat is een verzamelnaam voor gasjes die niet -in frisse lucht thuishoren.
-Er zijn diverse goedkope PCB-tjes te koop waarmee deze chip gemakkelijk aangsloten kan worden..
-De goedkopere versie loopt op 3.3 Volt en is offici�el niet 5 Volt -tolerant.
-
-CO2 of kooldioxide wordt door mensen en dieren uitgeademd en door planten opgenomen. Enkele richtwardes (Wikipedia):
- -390 ppm (2011) .. 417 ppm (2020) "normale" concentratie in de buitenlucht.
- -1500 ppm: Maximum toelaatbaar in een klaslokaal.
- -5000 ppm: MAC waarde = maximale langdurige blootstelling zonder blijvende schade.
- -10000 ppm: Sufheid bij langdurige blootstelling.
- -40000+ ppm: Ademnood, bewusteloosheid, dodelijk.
-
-Dallas, Dallas-Sensors:
-Hiermee wordt gedoeld op de bekende DS18B20 of DS18S20 temperatuur -sensoren. Deze sensoren leveren digitale informatie via een 1-draads -protocol. De calibratie is afhankelijk van het �B� of �S� type. Ik heb -slechte ervaring met het gebruik van �Parasite Power�, waarbij de sensor - z�n voedingsspanning betrekt van de signaaldraad. Ik gebruik ze hier -met een 5Volt voedingsspanning via een derde draad.
-
-CT, Current Transformer, Stroomtrafo:
-Een instrumentje om (doorgaans vrij grote) wisselstromen te meten, -zonder het circuit noemenswaardig te be�nvloeden. Een CT bestaat uit een - kern van gelamineerd ijzer, als bij een gewone transformator, of van -een of ander ferriet. De primaire wikkeling is doorgaans een enkele -draad die door het gat van de kern gestoken wordt en waardoor de te -meten stroom loopt. Er is een secondare wikkeling van doorgaans 100, -1000 of 10000 wikkelingen die aangesloten wordt op het meetcircuit. In -deze secondaire loopt dan een stroom die 100, 1000 of 10000 maal kleiner - is dan die in de primaire. Met een geschikte weerstand kan deze stroom -omgezet worden in een spanning die op velerlei manieren gemeten kan -worden.
-
-
- - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - \ No newline at end of file diff --git a/WebPage/format-1.css b/WebPage/format-1.css deleted file mode 100644 index 1b0eb8c..0000000 --- a/WebPage/format-1.css +++ /dev/null @@ -1,36 +0,0 @@ -/* Generated by KompoZer */ -body { - font-size: 10pt; - word-spacing: 0; - text-indent: 0; - margin-top: 0; -} -#navbar { - border: 1px solid black; - font-family: Arial,Helvetica,sans-serif; - line-height: 16pt; - background-color: #3366ff; - float: left; - width: 136px; - position: fixed; - padding-left: 10pt; - margin-left: 0; - color: #ccffff; - background-color: #ccffff; - font-size: 10pt; -} -#content { - border: 1pt solid black; - margin: 1px; - padding: 5pt 10pt 10pt; - font-family: Arial,Helvetica,sans-serif; - font-size: 10pt; - line-height: 12pt; - font-weight: normal; - font-style: normal; - background-color: #ccffff; - min-width: 600px; - max-width: 900px; - position: relative; - left: 157px; -}