Pagina's

dinsdag 31 maart 2020

Laatste werkweek

Goede dag beste mensen.

Dit is mijn laatste werkweek voordat ik met pensioen ga.

Mijn collega's hebben mij verrast met een white-board met daarop de tekst "Frans nog 3 dagen en 8 uur".

Hilarisch gewoon!.
Verschillende collega's hebben die stand regelmatig bijgewerkt. Maar op de 2e dag werd dat al wat minder....

Morgen mijn vrije dag. Daarna zie ik dan wel weer.

Maar maandag kreeg ik een idee:
Ik had net een avond (nacht..:)) daarvoor het display 40x4 werkend gekregen, alleen nog niet echt operationeel. Moest nog wat finetunen.
En met dat display zou ik natuurlijk een dag en/of urenteller kunnen bouwen. En meteen wat info op het display plaatsen dat ik me toch zéker niet zal vervelen als ik met pensioen ben. Dit display liet dat dan ook duidelijk zien.

 
Ik heb toen een printje gemaakt, want losse breadboard en draadjes zou erg riskant zijn.
Dat heeft me wel wat uurtjes (tot in de kleine) gekost. Maar het is wel leuk. Alleen de "nog te werken tijd" werkte niet naar behoren. Maar dat doe ik vanavond of morgen nog wel.

De reacties van mijn collega's waren heel verschillend; ach, ieder het zijne hoor. Er werd zelfs al op mijn blog gesnuffeld.
__________________________________________________


maandag 16 maart 2020

Koelkast


28-9-2020
Even een kleine update.
De koelkast vormde nogal stevige ijsplaten op de achterwand in de koelkast.
Meestal hebben koelkasten automatische ontdooiing. Maar eens gegoogled.
Het blijkt dat ontdooiing wordt ingeprogrammeerd als even niet koelen, en daarmee de koelkasttemperatuur iets te laten oplopen.
Nou, dat heb ik nu dus ook gedaan. Twee keer per dag laat ik de temperatuur oplopen naar 7 graden.
Daarmee ontdooit de koelkast. Het lekwater wordt opgevangen in een gootje achterin de koelkast. Dit lekwater loopt naar een bakje dat op de pomt is geplaatst, en daarmee in de omgeving verdampt.
Afwachten hoe dit verloopt.
_______________________________________________
16-3-2020

jaja, wie had gedacht dat ik bijna klaar zou zijn? De waarheid achterhaalt haar wel.
Want de koelkast doet het al een poosje niet meer. Na wat onderzoek en een nieuw onderdeeltje weet ik nu waar ik het moet zoeken.

De koelkast heeft een microprocessor gestuurde regeling.
Eén of andere temperatuurvoeler en een motor die met een speciale thyristor wordt geschakeld. Die thyristor kan rechtstreeks vanuit een microprocessor geschakeld worden. En nou net hierin kan ik voorzien. Juist ja, met een arduino.

De koelkast zelf is nog prima in orde; als ik de elektronica overbrug en de motor rechtstreeks aansluit, koelt'ie als de beste, alleen zonder af te schakelen bij bepaalde temperatuur.

Dus ga ik hiermee aan de gang.
Eerst de elektronica eruit en onderzoek doen of ik de thermostaat kan hergebruiken. Hierin kan ik twee varianten tegen komen:

  1. het is een ptc of ntc voeler. Dit houd in dat een elektrische grootheid, de weerstand, verandert naar gelang de temperatuur. Nou, met een arduino kan ik dat prima aan. Dit is dan een zg. passieve voeler.
  2. het is een micro-ic met serieële uitsturing. Daarmee kan ik ook uit de voeten met arduino, maar dan moet ik wel weten wat het protocol is. En die hoop ik dan te achterhalen als er een type aanduiding is aangebracht. Anders lukt het niet. Dit heet een actieve voeler.
Als geen van tweëen is te vinden, zal ik zelf een andere thermovoeler moeten aanschaffen. En daar zijn diverse uitvoeringsvormen in, en daar kan ik dan weer wat mee.
___________________________________________________
16-3-2020 / 2

Er bevinden zich twee voelrs in de koelkast. Elk 2-draads, dus waarschijnlijk gewoon passieve voelers.
Met een ohmmeter heb ik de weerstand van beide voelers gemeten. De weerstand van elke voeler ligt in de orde van grootte van 400 á 500 ꭥ. Ook als ik de meter omdraai, meet ik dezelfde weerstand. Dit is belangrijk om te weten, omdat er dan vrijwel zeker geen halfgeleider (diode oid) in zit. Dus vrijwel zeker passieve voelers.

Nu heb ik met arduino een schakelingetje gebouwd om de aard van de voelers te meten. Die lees ik uit op een display.
Ik schakel de koelkast in en lees in de tijd de voelers uit.

Eén van de voelers zakt snel in waarde, de andere blijft behoorlijk achter. Ik denk dat ze op twee verschillende plaatsen zitten, misschien een aan het begin van het koude circuit, en de ander in de koelkast. Daar omheen is wel iets te bedenken met arduino.

Ik heb ook op de print mijn metingen gedaan. Ik tref daar twee spanningen aan, 9V en 4,8V.

Ik heb ook de thyristor onderzocht op datasheet. Deze triggert normaal op maximaal 5V, minimaal op 1,5V.
Nou zegt de datasheet dat ik moet triggeren tov. aansluiting T2. Dat vind ik heel vreemd, op de print doet hij dat tov. T1. Of ik intrepeteer de sheet verkeerd. Ik houd voor de zekerheid de printplaat maar aan.

Ik gebruik overigens de printplaat voor plaatsing van mijn arduino. Misschien gebruik ik ook wel de LEDjes en drukknoppen om de arduino te bedienen en uit te lezen. De originele printplaat wordt dan behoorlijk gesloopt.
___________________________________________________
17-3-2020

Goede resultaten vandaag geboekt.




Middels een opto coupler kan ik de thyristor open sturen, op de eigen 4,8 volt van de originele printplaat.
Het regelsircuit zat rechtstreekt aan het lichtnet. De benodigde voeding hadden ze simpel met een condensator en weerstand gemaakt, en hiermee werd alles van voedingsspanning voorzien. Maar kan ik niks mee, want ik wil de arduino later op de computer aan kunnen sluiten......
Daarvoor heb ik de printplaat onder handen genomen en alleen de noodzakelijke 5volt en de schakeling rondom de thyristor behouden. Er is nu een behoorlijke isolatie-buffer tussen dit deel en de rest van de printplaat, zodat ik veilig de LED's en de drukknoppen kan gebruiken op arduino.

Ik heb een adapter van nokia gesloopt voor de 5volt voor de arduino. (foto).
En een mini printplaatje voor de arduino. Als het goed is past straks alles in de balk van de bediening en elektronica.
___________________________________________________
20-3-2020

De vakantie is bijna voorbij, en de koelkast is nog niet operationeel. Niet dat het heeft tegengezeten, maar het is toch een puist werk!
Nu vind ik dat niet erg hoor, maar stiekem vind ik het wel jammer.

Maar dan héb ik ook wat. Want omdat ik de regeling zelf in handen heb, kan ik het maken hoe ik wil.

Zo heb ik 5 LEDjes, één voor 2ºC, voor 4, 5, 6 en 8ºC.
Nu kan ik die aan zetten, laten knipperen of uit zetten. Hiermee kan ik laten zien op welke temperatuur hij is ingesteld (was al origineel), maar ook in welk temperatuurgebied de koelkast zich bevindt. Dit alleen als informatie voor ons. Dit treedt op bijvoorbeeld bij erg veel nieuwe spullen plaatsen in de koelkast.

Schuifregister. 1.
Op de originele print is voor de aansturing van de LED's een schuifregister gebruikt. Het voordeel hiervan is dat je met 3 draden acht dingen aan kunt sturen. Zelfs de drukknoppen zou ik hiermee kunnen scannen, maar dat heb dan weer niet gedaan. Ik gebruik overigens toch maar één van de twee drukknoppen. De knop "super" voor het extra hard koelen bij bijvoorbeeld veel voedsel in één keer opbergen. Ik vroeg me al af wat het nut van die stand is. Ja, dan slaat de motor niet meer af. Heb ik zo mijn bedenkingen bij.
Dit schuifregister ga ik dus hergebruiken. Een kleine zelfstudie hiervoor was wel nodig, maar dan ken je internet nog niet.

Schuifregister. 2.
Voor als je geintreseerd bent over details.

Schuifregister / Werking.

Dit schuifregister heeft 8 uitgangen, waarmee de 6 leds worden aangestuurd. (ja, geen 5; één gebruik ik niet).

Als ingangen is er een reset. Spreekt voor zich, dit zet alles op nul.

Verder een data ingang. Hier zet ik het signaal op dat ik wil doorschuiven. (vandaar de naam).

Als laatste een clock-signaal. Hiermee zet ik het datasignaar in werking en schuif dit steeds een plaats op. En die plaatsen zijn de 8 uitgangen.
Dus als ik LED 3 wil laten branden, moet ik 1 keer data invoeren en 3 clockpulsen geven. En zo zijn er meerdere mogelijkheden.

Elke LED zit dus op een uitgang. De LED's komen aan de andere kant bij elkaar via een weerstand op de voeding.

Schuifregister / uitwerking knipperen.

Nu kan ik de gemeenschappelijke aansluiting van de LED's op de voeding zetten, maar dan zijn ze alleen maar aan.
Ik kan die gemeenschappelijke aansluiting ook op een uitgang van arduino zetten, en die laten knipperen, maar dan knippert ook álle led's die aan staan.
Een gecombineerd aan en knipperen van verschillende LED's heb ik toch voor elkaar gekregen.

Nu is het instellen van dit register een kwestie van microseconden, dus dat zie je niet gebeuren, je ziet alleen het resultaat.

Schuifregister / masker.

Nu heb ik 2 maskers gemaakt die elke 700 msec wisselt (de gekozen knipperfrequentie van de LED's).
Via dat masker kies ik welke LED ik wil laten branden. Als ik een LED aan wil hebben, staat die LED in beide maskers op aan. Wil ik een LED laten knipperen, dan staat die LED in één masker níet aan. Het maakt ook nog uit in welk masker, maar zo kan ik 2 LED's gelijktijdig laten knipperen, maar ook wisselknipperen.
zelf bedacht...😉

Temperatuurtabel.
Met het proefprintplaatje heb ik de koelkast uitgetest en langzaan de temperatuur laten verlopen. De uitgelezen waarden van de voelers heb ik in een tabelletje opgeschreven. Hieruit heb ik een temperatuurtabel samengesteld.
Nu heb ik met elke voeler, dat een NTC temperatuurbereik heeft, een spanningsdeler gevormd. Die lees ik uit met een analoog ingang op de arduino. Daar komt dan een digitale waarde uit van 0 to 1023.
Ik heb in de test gekozen voor een weerstand van 10kꭥ om de spanningsdeler met de voeler mee te vormen. Dit voor beide voelers, hoewel ze een verschillend verloop en waarde hebben.
Ik heb de originele print nog eens goed bekeken, toen ik met de aansluiting van de voelers op de printplaat bezig was. Op die print bevinden zich 2 weerstanden en 2 condensatoren om die spanningsdeling te vormen. Alleen zijn die weerstanden 12kꭥ en 23kꭥ, waar ik 2x 10kꭥ heb gebruikt. Nu is dat niet zo erg, maar ik moet dan wel de temperatuurtabel opnieuw samenstellen. Kost een dag extra. Ik heb anders toch niks te doen, en het is een mooie praktische uitvoering van mijn hobby.😁

En dan nu alles inbouwen......
___________________________________________________
22-3-2020

Nou, dat inbouwen viel niet tegen.
Als koelkastmotor gebruik ik tijdelijk een lamp, als voelers een paar potmeters. En het doet allemaal wat het moet doen.
De LEDjes reageren zoals bedacht. Als extra heb ik het 6e LED, dat van de super-stand, gebruikt om aan te geven dat de motor draad, want dat hoor je niet. Het heeft me wel een paar uur gekost om dat LEDje actief te krijgen, maar uiteindelijk lukte het me. Ik begreep maar niet dat het niet ging. en... ja hoor twee accolades () vergeten.... pfff..... En toen ging het ineens wél.

Volgende stap is het gebruik van de drukknop, want daar heb ik nog niets aan gedaan. Met de drukknop selecteer ik de temperatuurinstelling, dus 2, 4, 5, 6 of 8ºC. Maar dat zal niet veel tijd in beslag nemen.

Daarna wederom de koelkast inschakelen en op een lijst bijhouden wat de voelerwaarden zijn bij bepaalde temperaturen. Want dat vormt de basis voor de temperatuur.

Nu dacht ik even snel een programmaatje in elkaar te flanzen om een temperatuurtabel te creeeren. Maar.... ik heb de weerstanden nodig die op de printplaat zitten. Want dán is mijn tabel betrouwbaar.
Helaas, toch deze proef uitstellen, totdat alles klaar is (drukknop).
___________________________________________________
26-3-2020
Het programmeren van de drukknop had wederom wat stagnatie.... een programmeerfoutje, vergeten ergens een punt-komma ; vergeten. En daarna werkte het goed.

Met een thermometer in de koelkast en een lijst heb ik bijgehouden wat de uitleeswaarden van de voelers zijn ten opzichte van de kasttemperatuur. De lijst die hieruit komt vormt de basis van de temperatuurregeling van de koelkast.

De drukknop was heel erg gevoelig voor storingen; de temperatuurinstelling verzette zichzelf steeds.
Hier heb ik programmatisch iets aan veranderd, en nu werkt het goed.


Het arduino ontwikkerlprogramma IDE heeft ook een monitor. Dwz. je kunt de resultaten van het programma dat je hebt geschreven, op het beeldscherm tonen. In het programma zelf geef je aan wat je precies wilt laten zien.
Als ik deze resultaten in excel zet, kan ik er makkelijk grafieken uit halen.
Het programma heb ik afgelopen etmaal laten draaien, waarin ik elke 1/2 minuur een resultaat laat zien. Hier is een prachtige grafiek uit gekomen.
De pomp is 3 x op storing gevallen door te snel schakelen van de pomp. Een koelkastpomp kan daar nou eenmaal niet goed tegen in verband met de gassen en de vloeistoffen van het koelmiddel. Eerst moet de hoge druk van de pomp af zijn voordat weer wordt ingeschakeld.

Nu had ik al rekening gehouden met een hysterese van + en - 3 waarden(1) van de voelers, maar was deze vergeten mee te nemen in het programma. Nu ik dit wel heb gedaan zal het schakelgedrag veel rustiger zijn.
(1) per graad celcius heeft ongeveer 13 waarden.

Uitleg grafiek.
Dit deel is samengesteld uit 2 grafieken voor de duidelijkheid. Hierdoor komt het schakelgedrag van de pomp 2x voor. Dat zijn de groene en de rode hoekige lijnen. Hoog is pomp aan, laag is pomp uit.
De blauwe lijn bovenin is de ingestelde waarde, en komt overeen met 4ºC.
De rode kronkellijn daar doorheen is de werkelijke temperatuur in de koelkast.
De blauwe lijn onderin is een maat voor de temperatuur aan het begin van het koelsysteem. Hierin zie je duidelijk het resultaat van de pomp zelf.
De getalletjes halverwege zijn het aantal halve minuutjes vanaf het begin.
Ook zie je duidelijk dat de pomp snel achter elkaar schakelt.

Nieuwe grafiek.
Het resultaat van de iets gewijzigde opzet met een ietwat grotere differentie.
In een paar uur tijd is de pomp 2x aan geweest. Een iets te grote differentie? Ik wil hiermee wat experimenteren.

Want een te kleine differentie leidt weer tot onstabiel gedrag.

Maar ik zie ook nog heel iets anders in deze grafiek: de blauwe lijn onderin, het koelcircuit, dus dat wat de pomp presteert.
Je ziet dat het koelcircuit heel veel koeling heeft ingezet. Dit resulteert in het doorkoelen van de koelkast nadat de pomp is uitgezet. Dit zie je dus duidelijk terug in de rode lijn; die loopt erg ver door naar onderen.
Nu wil ik voor het schakelen van de pomp ook daarnaar kijken.
Het schakelen van de pomp zou er bijvoorbeeld zo uit kunnen zien:

  1. inschakelen pomp op de kasttemperatuur.
  2. uitschakelen pomp op de onderste curve, bijvoorbeeld op 250. En ook hierin een hysterese gebruiken om de pomp weer in te schakelen totdat de kast op temperatuur is.
Nu is dit gedrag duidelijk anders (is de verwachting) in de winter en in de zomer. Ook mogelijk met een volle of lege kast. Maar ook het plaatsen van "warme" spullen in de kast.
Dit zijn allemaal dingen die het schakelgedrag beinvloeden.
Het inschakelmoment zal altijd hetzelfde zijn.
Maar het uitschakelmoment zal veranderlijk zijn. Dit moment zal steeds aangepast moeten worden. Dus wordt de koelkast zelflerend, net zoals de meeste kamerthermostaten tegenwoordig.
___________________________________________________
27-3-2020
Het koelkastproject nadert zijn voltooiing.

In de grafiek zijn duidelijk diverse zaken te zien.

  1. de blauwe lijn met dicht daarboven en eronder geeft de temperatuur aan waartussen de temperatuur beweegt in de meest ideale situatie. Deze situatie probeer ik zo veel mogelijk te bewaken. Hier in de grafiek is de temperatuur 4ºC =/- 0,25ºC.
  2. De rode gerafelde lijn rond de blauwe lijk is de gemeten temperatuur. Deze kronkelt grotendeels netjes binnen de lijntjes.
  3. De paarse flink uitslaande curve is het koelmiddel. Hoe lager, hoe meer energie deze in staat is de temperatuur omlaag te brengen.
  4. Je ziet dan ook dat de curve flink omlaag gehaald wordt door de compressor (zie onderin de lichtblauwe curve).
  5. Je ziet diverse digen heel duidelijk:
    1. bij 41 schakelt de compressor in, omdat de temperatuur né iets boven de groene lijn uit komt.
    2. de compressor schakelt pas uit als de curve van het koelmiddel de oranje lijn raakt. De compressor schakelt dan uit (lichtblauwe curve).
    3. Het koelmiddel loopt toch nog iets door, om vervolgend weer op te lopen, dus minder actief wordt.
    4. de koelmiddel-curve komt bovenin de bleekblauwe lijn tegen, waardoor alles wordt gereset. (programma dingetje).
    5. Bij 131 zie je het hele proces weer opnieuw beginnen.
  6. Nu kan er ook nog een actie zijn die hier nog niet te zien is, namelijk het verschuiven van het uitschakelpunt, de oranje lijn. Ik hoop deze nog zichtbaar te kunnen maken.
___________________________________________________
28-3-2020












Hier zie je het resultaat van de prograamma-inspanningen.
Heel duidelijk is het effect te zien van de verschuivende uitschakellijn, de trapsgewijze vaalblauwe lijn in de grafiek. Elke keer dat het koelmiddel (groene lijn) de uitschakellijn snijdt, schakelt de compressor uit.
Het resultaat is een veel soepeler verloop van de temperatuur (rode rafelige lijn). Maar..... nu komt de uitschakellijn wel héél dicht bij de waarnemingslijn (oranje). Zodra de uitschakellijn boven de oranje lijn terechtkomt, gaat het programma op tilt; werkt gewoon niet meer. Dus ik moet ook de oranje lijn omhoog mee laten bewegen.

Waarom dan niet de uitschakellijn altijd wat hoger zetten, zal je je af kunnen vragen.
Deze situatie is rondom de nacht genomen, wat een grote stabiele situatie is.
Maar als de situatie verandert, warmere dagen, koelkastdeur open, nieuwe produkten in de koelkast plaatse, volle koelkast, ja, dán heb je alleen maar plezier van de meebewegende uitschakellijn. Want hoe lager de lijn, hoe lager de temperaturr van het koelmiddel.
___________________________________________________
31-3-2020
Ik heb de monitor nu een aantal dagen op de koelkast gehad.
De grafiek die hieruit ontstaat is zeer bevredigend; de koelkast blijft binnen de grenzen ongeveer 0,25 graden naast zijn instelling. Dit ondanks deur open, vers voedsel plaatsen, ed.

Hiermee sluit ik het project "koelkast" af.
___________________________________________________
___________________________________________________

zaterdag 7 maart 2020

speciale tekens

º  ꭥ

RS 485

5-6-2021

Een leuke uitbreiding op dit onderwerp: soort van bibkiotheek.

Met een bibliotheek voor bepaalde functies in een totaalprogramma, waarbij die functies op een andere plaats staan dan het programma, bereik je dat wijzigingen in die functies gemakkelijker gedaan kunnen worden. Ze staan niet overal her en der in het programma, maar mooi centraal.

Nu ben ik al eens meer bezig geweest om bibliotheken te doorgronden, maar dat is nog een brug te ver voor mij.
Als tussenoplossing maak ik nu gebruik van tabbladen van het IDE ontwikkelplatforn van arduino. Die zijn óf pas ingevoerd met een automatische update, óf ik heb ze nooit gezien. Makkelijk zo'n handleiding, die er niet is.

Die tabbladen gebruiken voor functies heeft het nadeel dat alleen de eigenlijke functies in het tabblad opgenomen kan worden. Initialisaties ed. moeten nog gewoon in het hoofdpragramma.
Maar zeker voor zo iets groots als mijn RS485 protocol werkt dit al heel erg goed. En wat een gemak hierdoor! Bij wijzigingen die ik en elk programma wil doorvoeren, hoef ik nu alleen nog maar dat tabblad te vervangen. En dat kan gewoon in verkenner! (is uitgeprobeerd)

1-2-2021

Er doet zich nu een belangrijke ontwikkeling voor, dat het vermelden de moeite waard is.

Dataconflicten.

Ja, ik kon erop wachten, het zou ooit wel eens kunnen escaleren.

Omdat ik twee systemen door elkaar gebruik, de RS485 en de softwareSerial, is het niet uitgesloten dat het een keer mis zou gaan.

Even een stukje diepzinnigheid:

RS485 is gemaakt om over lange kabels data te kunnen verzenden. Dit is ondergebracht in een klein simpel ic-tje. Bij mij de MAX485. Zie op 11-3-2020.
Dit ic-tje kan op twee manieren gebruikt worden:
  1. half duplex. Dat wil zeggen óf zenden, óf ontvangen. Maar altijd over de twee dezelfde draden in de kabel.
  2. full duplex. Dat wil zeggen met de mogelijkheid van én zenden én ontvangen tegelijkertijd. Maar dit over vier draden.
Ik heb toendertijd gekozen voor half duplex.

Op de arduino zelf maak ik gebruik van softwareSerial. Een software variant van de seriele dataversturing. Dit kan in princiepe op elke pen geconfigureerd worden. Het maakt echter wel gebruik van de eigen vaste seriele buffers. Hoe precies, is me niet duidelijk.

De eigen seriele overdracht op de arduino, heeft de eigenschap dat zowel zenden als ontvangen tegelijkertijd kunnen plaatsvinden. Met de lees en de schrijffuncties kunnen die buffers aangesproken worden.

Maar waarom dan de softwareSerial variant gebruiken?
Om de doodenvoudige reden, dat ik anders mengvormen krijg van de netwerkdata  en de monitor-data. Dan weet je helemaal niet meer waarnaar je moet kijken.

De grote vraag is echter, kan die gelijktijdigheid ook in de softwareSerial plaatsvinden.

Ik heb destijds gekozen om dat maar af te wachten. 
En nu blijkt toch dat ik dataconflicten krijg.
En dat is prima te monitoren.
Ik zie duidelijk dat de ene datastroom wordt onderbroken door een andere, waarbij die andere, in dit geval, overheerst. Hierdoor heb ik een verminkte datastroom, en is daardoor onbruikbaar geworden.

Nu ben ik op zoek gegaan naar de eigenlijke RS485 programma's.
Ik heb er twee onder de loep genomen:
  1. Het eigen protocol van arduino.
    Deze is heel vreemd. Het 485-ic heeft een RX en een TX, en nog twee schakellijnen.
    Arduino gebruikt de RX niet, maar schakelt in plaats daarvan de schakellijnen van het ic.
    Je zou dit kunnen vergelijken met een kamer met een lamp. Ik kan de lamp aan en uitschakelen met de schakelaar op de kamer, maar ook met de hoofdschakelaan in de meterkast. Ja, de lamp gaat inderdaad hiermee ook aan en uit, maar ik vind dit niet fraai. Bovendien kreeg ik het destijd niet werkend.
  2. Een protocol van iemand anders.
    Op zich vind ik dit een heel goede, als je erop voorbereid bent, of toch nog start met een nieuw project. Dan kun je er rekening mee houden.
    Want wat doet het?
    Er zijn vele mogelijkheden, die ik eerlijk gezegd niet helemaal goed heb bekeken. Allemaal onder het mom van conflictvermijding van data. Het safe maken van de data.
    Zo is er een echo-functie (teruggeven van dezelde data), waarop eventueel de data opnieuw wordt verzonden.
    Ook foutdetectie, waardoor de data opnieuw word verstuurd.
    En ook nog meer mogelijkheden.
    Of deze mogelijkheden door mij aan of uit gezet kunnen worden, heb ik nog niet bekeken.
    Maar voor dit moment vind ik dit nog te ingewikkeld.
    Bovendien wordt het oorspronkelijke serialprotocol van arduino om zeep geholpen ten behoeve van zijn 485 protocol. Hier weet ik dus niet wat dit voor concequenties heeft voor andere dataoverdracht, bijvoorbeeld de USB, en dus het monitoren van het programma.
Al met al heb ik besloten om mijn huidige methode uit te breiden met een bezet-lijn.
Dit houdt in, dat deze geschakeld moet wordn als er iemand wilt zenden. Alle andere stations kunnen daarop testen. Hiermee hoop ik gelijktijdige verzending te voorkomen, of zéker tot een minimum te beperken. Ik schat zelf in dat die gelijktijdigheid met een factor van enkele duizenden wordt beperkt.

In het beginstadium van de opbouw van het netwerk, ben ik al bezig geweest met de mogelijkheid van stuur-lijnen. Dat heb ik toen niet toegepast, eerst maar eens kijken hoe het zou gaan.

Momenteel heb ik een datastroom van een stuk of tien datatreintjes per minuut. Eén datatrein kan bestaan uit iets minder dan 10 bytes tot enkele tientallen bytes. Maar ondanks de grote pauzes tussen de treinen, die zeer willekeurig plaatsvinden, komen toch dataconflicten voor.
De snelheid van de data is bij mij 4800 bytes per seconde.

Praktijk:

Dit houdt in dat ik één draad extra in de kabel moet gebruiken voor de bezet-lijn. Ik had er 4 van de 8 in gebruik, dus kan prima zo.
En ik moet een I/O poort op de arduino over hebben voor de bezet-lijn. Helaas zal dit nu steeds een andere pin moeten worden, of ik moet meer wijzigen.
Al met al moeten alle staions onder het mes, zowel softwarematig als hardwarematig.


12-4-2020

Nu ik wat meer ga uitbreiden, en dus de bus RS485 ga uitbreden, bedenk ik me toch over de afsluitweerstanden van 120ꭥ, die "noodzakelijk" zijn voor een goede werking over lange leidingen. In het huidige netwerk heb ik ze weggelaten. Over die korte leiding werk dit prima.

Nu herinner ik me een situatie waarbij ik problemen had met de maximale capaciteit van de 5V van het NANO-bordje. Die was voor een bepaalde situatie niet genoeg. Na aansluiting op de losse spanningesregelaar functioneerde het ineens wél goed.

Het zou zomaar eens kunnen zijn dat de RS485 met hetzelfde probleem zit.
Als je 2x 120ꭥ op 5 volt zet, moet er zomaar ineens 80mA geleverd worden. Het maximum is 200mA.

Dus, als ik de communicatie over de extra regelaar wil laten lopen, moet ik daar wel vanaf nu mee beginnen, én het huidige aanpassen. Op een veel later tijdstip alles aanpassen is ondoenlijk, dus nu maar gelijk doen.

Ik heb net weer een testopstelling gemaakt met een netwerkje. Zowel met interne als met externe spanning van 5V gewerkt. In beide gevallen blokkeert de weerstand van 120ꭥ de communicatie.
Ik ga er dan maar vanuit dat het niet nodig is. Ik hoop dat dit in de toekomst geen problemen gaat geven.

______________________________________________________
16-3-2020.
Inmiddels heb ik de RS485 echt operationeel. De ventilatieklep in de keuken kommuniceert met de basis in mijn werkkamer. En dat is kicken!
En in twee richtingen! Stoer hoor.
______________________________________________________
11-3-2020.

De echt eerste RS485 verbinding had heel wat voeten in aarde.
Ik wilde de ventilatie-klep separaat uitvoeren en RS485 gebruiken voor comando's om de klep in te stellen. In het bestaande gedeelte heb ik de RS485 bibliotheek moeten installeren.
Ik kreeg het spul maar niet werkend. Bovendien ontdekte ik dat de hardware, de ontwikkelbordjes, niet 100% betrouwbaar zijn. En dat is een tegenvaller. Want op die breadboards test je eerst alles uit.
Na een aantal dagen zonder bevredigend resultaat, heb ik maar eens 2 programma's naast erkaar gelegd, een werkend programma naast het programma, waarin de RS485 ingepast moest worden. Hierin ontdekte ik dat ik de noodzakelijke setup was vergeten van de bilbiotheek. (:

En nu werkt het dus wel, hoewel nog met korte draadjes.
Straks ga ik er een lange kabel tussen hangen. Ben benieuwd.




De configuratie van de RJ45 stekerverbindingen heb ik inmiddels ook moeten maken. Hiervoor is niks specifiek vastgelegd.
Deze opstelling wordt uiteraard overal in dit systeem toegepast.

De A en B is de communicatielijn.
De signalen zijn altijd tegengesteld aan elkaar. Dit is dé eigenschap van het RS485 protocol. Hiermee kan je lange leidingen van maximaal 1200mtr halen.
Verder heb ik de 12v meegenomen in de kabel. Hiermee voedt ik alle submodules.
In elke module bevindt zich een 12 naar 5 volt omvormer. Zolang de 12 volt niet onder de 7 volt uitkomt, ben ik gewaarborgt over mijn 5 volt, hetgeen de voeding is voor al mijn modules / onderstations.

Als kabel gebruik ik (reeds gebruikte) CAT5 kabel, unshielded. De twisted pair zorgt voor de imuniteit voor andere signalen, ook de pairs onderling.

Het MAX485 ic vormt het hart van de RS485 communicatie. Deze zet de Rx Tx seriele communicatie om in de harde A en B lijn.
Met de R/W lijn kies ik of ik wil zenden of ontvangen. Standaard staat die lijn altijd op ontvangen. Data wordt daardoor niet gemist.
______________________________________________________
7-3-2020.

Afgelopen tijd ben ik druk geweest met het behandelen van het netwerk RS485 protocol. Maar de praktische uitvoering had heel wat werk in petto.

Arduino kent een bibliotheek voor een origineel RS485 netwerk.
Eigenlijk alle fora gebruiken echter software serial als basis, maar met een RS485 ic.
Door het gebruik van het ic bereik je wel de voordelen van de hardware, namelijk gebruik van lange leidingen.
Maar zoals ik al zei, de diverse fora gebruiken niet het originele RS485 bibliotheek. Deze bilbliotheek kent een groot manco, namelijk de pin-bezetting. Nu kan deze aangepast worden, maar is niet volledig.
Ik heb van allles uitgeprobeerd, maar het lukt me echt niet.

Dus moet ik ook mijn toevlucht nemen tot het software serial bibliotheek.
Deze ondersteunt Rx en Tx protocol op andere dan de standaard penbezetting.
Nu ben ik ook door schade en schande wijs geworden, en ontdekt dat niet alle pennen van de arduino geschikt zijn voor seriele overdracht. Wat heeft me dat tijd gekost om dáár achter te komen. Maar eenmaal onderkend, loopt het ineens heel erg soepel.

In een proefprogramma heb ik het volledige netwerk onder de knie gekregen. Deze kan ik nu in het ventilatieproject inpassen, eerst nog in het huidige "thuis" programma, later in het geheel.

Weerstanden.
Diverse websites laten schema's zien met diverse weerstanden in de hardware rondom de rs485 ic.
Er zijn echter ook complete boards beschikbaar, maar die vind ik veel te groot. en te duur.
Ik heb dus een aantal ic's gekocht voor een paar duppies per stuk. En dan zie ik wel wat nog daaromheen gebouwd moet worden.

Websites laten zien dat in ieder geval de A-B lijn afgesloten moeten worden met weerstanden van 120ꭥ. Ook een voortrekken met 560ꭥ naar +5v en gnd wordt aangeraden.
Nou, in elk van die gevallen slaat de ic dicht. maw: doet dan niks meer.
Maar die weerstanden zijn wel essensieel, zeggen diverse websites.
Maar eens uitproberen.
Een kort draadje van 10 cm werkt prima in de testopstelling.
Een hussel kabel, ik denk 50 meter, werkt een twisted pair prima, zonder weerstanden.
Ook ontdekte ik dat de (noodzakelijke???) gnd, die meegestuurd zou moeten worden, geen effect had.

In de toekomst zie ik wel verder, wat het uiteindelijk moet worden.



overwegingen opbouw blog


_____________________________________________________
Onlang ben ik getipt over het aanvullen van oudere blogs. Nergens is terug te vinden dat dit is gebeurd, je moet er zelf toevalling maar achter komen.

Tja, hoe lossen we dat nou op.

Allereerst wist ik niet dat mijn "kijkers" het gehele blog in zicht kregen, de meest recente bovenaan.
Ik, als blogger, zie uitsluitend de betreffende blog, tenzij ik niet inlog.

Als oplossing wil ik bovenaan elk deel-blog, dus per onderwerp, een revisieregel plaatsen. Die zijn dan snel door te lopen.
In bestaande blogs zal ik proberen de revisies te achterhalen.
Dit ga ik niet meer uitvoeren. Want de revisie-blog is voldoende.

Ook een "revisie-blog", die altijd bovenaan staat is de overweging waard. Ik zal eens kijken naar de mogelijkheden.
Dit is alleen te realiseren door telkens een nieuwe revisie-blog aan te maken en het oude te verwijderen. Dit is vrij simpel. Ga ik dus zeker doen.

Ik wil ook de nieuwe bewerkingen in elke blog BOVENAAN plaatsen. Dit is de extra bewerking wel waard.