Pagina's

vrijdag 10 april 2020

LCD display en Keypad

9-7-2020.
Ruim een week geleden ben ik met een encoderknop bezig geweest. Daarmee wil ik het menu bedienen.
Het doorsrrollen van menuregels gaat heel erg goed, zonder noemenswaardige vertraging. En eigenlijk verbaast me dat. Een meevaller dus.
Mijn computer is een week uitgeschakeld geweest. Nu kan ik weer verder met de encoder.

De werkwijze is kiezen (scrollen), kiezen (drukken), kiezen (scrollen), kiezen (drukken), eventueel input met toetsenbordje of aanklikken met encoder op alfabet op scherm. Dit laatste is nodig om bepaalde items op de SD te krijgen, anders moet voor elke wijziging de computer eraan gehangen worden. Het kan ook zomaar zijn, dat ik daar toch voor kies. We zien wel.

Nu is het zo, dat de keuze door de druk op de knop nog niet feilloos werkt. Ga ik nu dus uitzoeken.
________________________________________________________
8-5-2020
Vandaag heb ik de 2560 al binnen. en... HET WERKT.
Mijn conclusie dat het een geheugenprobleem zou kunnen zijn is dus de goeie.

Dit display met keypad kan dus de prullebak in. Was mooi geweest, veel geleerd.
Want: nu ik toch een grote broer heb van de arduino Nano, vervang ik beide nano's op de print voor die ene Mega 2560.
____________________________________________________________
7-5-2020
Ik ben lang bezig geweest om het LCD goed te krijgen.
Telkens had het zeer onregelmatig gedrag. Met name de klok toonde hij steeds niet.

In een routine maak ik een keuze of een regel op het lcd gevuld moest worden met de klokkalender, of met informatietekst.
Direkt na de start gaat het nog wel, maar het werd steeds grilliger.

Uiteindelijk heb ik een miniprogrammaatje gemaakt in het hoofdprogramma. Alleen dát programmaatje draaide steeds opnieuw. Hierin heb ik relevante routines gebruikt, waar het steeds fout ging. Het resultaat was, dat dit programmaatje het prima deed.

Conclusie is dan ook dat de hardware het prima doet. Ook de aangesproken routines werken feilloos.

Dat kon maar één ding betekenen: geheugen, en wel de SRAM, waarin de variabelen worden gemaakt en bewerkt.

Ja he, ik heb bijna 1000 bytes beschikbaar, maar blijkbaar gaat het met tekstverwerking en manipulering héél erg hard.

Ik ben op zoek gegaan naar geheugenuitbreidingen voor de nano. Die zijn er niet, ja, eeprom, maar daar heb ik niks aan.

Ander bord dus. Veel gezocht en gevonden. Er zijn ook heel dure oplossingen, maar ik heb er een gevonden die verder compatible is met de nano. Het is de MEGA 2560 met 4 keer zoveel poorten en geheugen. Echt een werkpaard dus. Het programma zou dus 1 op 1 overgezet kunnen worden.
Die heb ik dan ook besteld.

Hierdoor kan ik de bediening met twee losse nano's vervangen door deze ene.
Ben benieuwd.
__________________________________________________________________
20-4-2020


Dit is de hele klok. De batterij knoopcel is duidelijk zichtbaar. Deze gaat jaren mee, en zorgt ervoor dat de klok blijft doorlopen. ook bij spanningsuitval.
Dit type heeft zeer goede eigenschappen voor wat betreft stabiliteit en gelijkloop. De klok wijkt hooguit 1 minuut per jaar af.

Gisteren ben ik de hele dag bezig geweest om uit te zoeken hoe ik deze klok elke minuut een signaaltje kan laten geven, wat volgens het datablad zou moeten kunnen. Het is me wel gelukt hoor, maar dit was er weer zo-eentje waar veel tijd in gaat zitten in uitzoekwerk en het proberen te begrijpen van de informatie die ik wel op internet kan vinden.

Wat kan ik nu met deze klok:
Deze klok heeft de functie van een moederklok. Alle projectjes die ik nog ga maken, zijn via het netwerk verbonden met deze klok.
Vergelijk dit met de spoorwegen: elke klok die er hangt wordt aangesstuurd met een moederklok in Utrecht, vandaar ook dat de grote wijzer elke hele minuut ineens naar de volgende minuut springt. Maar dat doen dus alle klokken op alle stations in nederland op hetzelfde tijdstip. Hierdoor kunnen ze de treinen beter op elkaar laten afstemmen en daardoor een strak tijdschema hanteren.

Hiermee kan ik verschillende processen op elkaar afstemmen als daar behoefte naar is.
Als voorbeeld bedenk ik dat het weerstation, dat uit verschillende units wordt opgezet, de processen op elkaar afstemmen. Of dit nodig is weet ik nog niet, maar de mogelijkheid is er.
____________________________________________________
19-4-2020
De klok.
De klok zit op de processor van het LCD in de werkkamer. Het is een zgn. Real Time Clock. Ook bij spanningsuitval blijft de klok gelijk lopen, omdat er een backup-batterij in zit. De klok heeft ook een kalender met de laatste 2 cijfers van het jaar.
In het gehele systeem in huis is er maar één klok, die ik moederklok noem.
Elk ander station heeft een soort register, geheugen, waarin alle relevante data van de kalender/klok opgeslagen kan worden.
Elke minuut zendt de moederklok de gehele kalender/tijd-informatie het netwerk op, waarop alle stations hun registers kunnen afstemmen.

Programmeren van de klok.
Dit is nog een heel ander verhaal. De kalender en tijd gelijk zetten en uitlezen is geen probleem; daar zijn genoeg voorbeelden over te vinden. Maar het alarm is een ander verhaal.
Het alarm kun je zodanig afstellen, dat je elke minuut, als de seconden op 00 komt, een interruptsignaal krijgt, waarop gereageert kan worden. Natuurlijk is dit een zeer geschikt signaal voor dit doel. Alleen heb ik er hierover nog niks vinden. Ja, een gegevensblad, maar die is erg moeilijk te lezen. Het is een hele kunst om zo'n blad te doorgronden.
Maar toch ga ik er mee aan de slag. Dit is dus een projectje appart.
______________________________________________________
18-4-2020
Wat heb ik nou gemaakt: 2 processoren op één print, met RS485 gekoppeld. Processor 1 heeft het keypad, processor 2 het display en de klok. 

Nu beschouw ik de 2e processor als master, waar alle hoofdhandelingen plaatsvinden, en die alles aanstuurt voor wat betreft processen in het geheel aan stations in de toekomst. Dit inzicht kan makkelijk nog aangepast worden.

Het heeft even geduurd voordat ik de basis van dit setje goed had. Bedoeling is om data, in welke praktische vorm dan ook, van de ene processor naar de andere te sturen en op het display te zien is. Want als dit werkt, kan ik vanuit elk station data versturen dat rechtstreeks naar het display gestuurd kan worden. Of dit al dan niet gebeurt, moet ik nog bezien, maar het is wel mogelijk.

Maar die basis is wel moeizaam verlopen. Maar het werkt! Deze programma's vormen de basis van dit setje. 
Een ander programma dat ik hiervoor had bedacht gaf te veel problemen. De aanpak is nu anders dan bedacht, maar dat heeft alleen te maken met welk programma ik in de andere implementeer, of andersom.
_________________________________________________________
13-4-2020
  
Hierbij een bouwplan voor het hoofdstation, ook voor de huiskamer. Een combinatie van het LCD en het keypad.

Een goede opletter ziet de print terug van het projectje laatste werkdag. Die heb ik met een 2e processor uitgebreid voor het keypad. En, uiteraard de twee RJ45 ingangen voor het netwerk.

Nu ga ik 2 bestaande projecten (LCD en keypad) samenvoegen, of althans, met elkaar laten communiceren via RS485. Hoe dat er exact uit gaat zien weet ik nog niet.



________________________________________________________
11-4-2020
Laat ik maar eens beginnen met een printje te maken voor dit geheel. De keuze om hierin ook de klok te betrekken is nu heel simpel.

Ik heb in het verleden al eens geprobeerd om 2 arduino's met elkaar te laten praten, serieel, maar dat gaf nogal wat problemen. Niet technisch, maar wel de vorm van de variabelen. Het resultaat van een data-overdracht bleef een gok.

Inmiddels is mijn eerste RS485 verbinding een feit, zodat de keuze wel heel gemakkelijk gemaakt is, om ook deze zeer korte verbinding met RS485 te doen. Wel wil ik het 485ic gebruiken, omdat dit dingen doet die ik nog niet helemaal snap. En juist dit ic vormt het hart van de RS485 verbinding.

Nu kán ik er voor kiezen om het display helemaal los van de rest te monteren, misschien zelfs ook het keypad. Het display kan ik dan op een vaste plek monteren, en het keypad los in de hand. Dit geldt dan voor de werkkamer.
Voor de huiskamer wordt het wel één geheel. Laat ik met die opstelling maar eens beginnen.
_____________________________________________________
10-4-2020.
Omdat deze twee niet meer los van elkaar worden gebruikt, zet ik ze verder samen in dit Blog.
Deze combinatie vereist ook een volle processor, vandaar.

Voor de LCD heb ik 7 poorten nodig.
En voor het keypad nog eens 8 poorten.
Daarbij komen nog het RS485 netwerk bij (3 poorten), en mogelijk de klok op I2C (2 poorten).
Bovendien wil ik de verlichting van het display kunnen dimmen, weer 1 poort.
Alles bij elkaar 21 poorten.
Ik heb beschikbaar 11 digitalen en 6 analoge poorten, zijn 17 poorten. Als ik de klok weglaat, heb ik er nog altijd 2 tekort.
De keuze wordt dan vrij simpel: gebruik 2 processors.
Mogelijk zal ik analoge ingangen als digitale poort moeten gebruiken. Ik weet dat dit kan, maar ik weet niet of ik nog uitdagingen tegenkom.

Uiteraard is het LCD van het type 40x4, en het keypad een 4x4 matrix, dat 16 toetsen geeft.
Voor menugestuurde programma's en de invoer van data is dit een heel mooie combinatie.
___________________________________________________

Geen opmerkingen:

Een reactie posten