Hardware vragen.

Hardware die niet past in bovenstaande onderwerpen
Berichten: 313
Geregistreerd: 23 Okt 2016, 20:29

Hardware vragen.

Berichtdoor benvo » 02 Nov 2017, 14:47

Hallo allemaal,

Destijds was ik bezig om een Aquariumcontroller te bouwen. Daarbij werd gebruik gemaakt van o.m. een Arduino Mega 2560 en een Enhanced 7” Nextion scherm. Dat is ook gelukt dankzij de hulp van velen maar vooral Koepel, Nico en Shooter leverden belangrijke bijdrages en wisten mij telkens op het juiste spoor te brengen. Hoewel dit project dus afgesloten is blijft er bij mij een interesse voor het programmeren in C. Op zich is dat nog niet zo eenvoudig, in mijn omgeving is er weinig tot niets te vinden waarmee kennis opgedaan kan worden. Via het internet uiteraard wel dus daar ben ik nu mee bezig. Voor nu heb ik wat vragen die de hardware betreffen.

Bij de bouw van de aquariumcontroller bleek telkens dat er sprake was van “overload” problemen. Veelal ontstonden die door het klungelige programmeerwerk van mijn kant en bleken ook dikwijls oplosbaar door wijzigingen in de software. Het probleem is dus wel opgelost maar bij mij bleef een ontevreden gevoel, het waarom. Nu dus de vragen:

Aan welke kant ontstaan eigenlijk zulke problemen? Ik bedoel kan er nier genoeg data “uit” de Arduino of kan de Nextion het data aanbod niet aan?

Je kan door de baudrate te verhogen wel de snelheid verhogen maar de bitjes blijven na elkaar verstuurd, serieel dus. Heb ik dit goed?
Zo ja, bestaan er Microcontrollers die op een andere, parallel(?), wijze kunnen verzenden?
Zou dit het geval zijn heb je dan nog wat aan een Nextionscherm?
Of kan de woordbreedte een rol spelen? (Arduino 8 bits, Nextion(?))
Of kunnen dit soort problemen eigenlijk alleen maar softwarematig opgelost worden?

Ik ben al een poosje aan het googelen om een antwoordt te vinden op deze vragen. Waarschijnlijk, door een gebrek aan de juiste kennis, is mijn vraagstelling niet juist. In ieder geval heb ik geen antwoordt kunnen vinden. Hopelijk is er iemand die mijn nieuwsgierigheid wat dit betreft kan bevredigen.

Dank jullie wel!

Groet,
Ben.

Advertisement

Gebruikers-avatar
Berichten: 1776
Geregistreerd: 06 Aug 2016, 01:03

Re: Hardware vragen.

Berichtdoor Koepel » 02 Nov 2017, 15:15

Enerzijds heeft het de maken met de basis van hoe de code is opgebouwd. Anderzijds is het technische kennis van wat er allemaal mis kan gaan.

Als je bijvoorbeeld een klokje met alleen uren en minuten op het scherm zet, dan hoef je dat maar één keer per minuut te verversen, op het moment dat de minuten verspringen. Dat geldt dus voor alles wat op het scherm staat.

Als je met een logic analyzer zou zien wat er allemaal naar en van het scherm gestuurd wordt, dan zou je het begrijpen. Wanneer er niets hoeft te wijzigen op het scherm, dan hoeft er ook niets heen en weer gestuurd te worden.

De baudrate verhogen scheelt natuurlijk wel een beetje. Maar een sketch die in de basis al verkeerd is, die zal met de hogere baudrate alleen nog maar meer gegevens heen en weer sturen naar het scherm. Dus dan gaat het nog sneller verkeerd. Een snellere processor of wat dan ook gaat echt niet helpen.
Het "ijkpunt" is wat je als mens ziet. Een mooi bewegende wijzer hoeft maar 20 keer per seconde ververst te worden. Om te proberen dat 2000 keer per seconde te verversen slaat natuurlijk nergens op.
Als de wijzer stil staat, dan hoeft die wijzer op het scherm al helemaal niet ververst te worden.

De 9600 baud is trouwens wel langzaam hoor. 40 jaar geleden was 1200 baud een standaard, en 30 jaar geleden was 9600 baud de standaard. Het omhoog krikken van de baudrate voor een Nextion display werkt helaas niet perfect. Ik ben op die manier al meerdere keren de communicatie met het display kwijtgeraakt.

Ik heb een week geleden nog gezocht naar een andere (bij voorkeur open-hardware / open-source) displays vergelijkbaar met een Nextion display. Helaas is er nog niets dat in de buurt komt. De Nextion displays hebben een redelijke mix van mooie mogelijkheden en niet te duur.

Het grootste nadeel is de Arduino library die bij het Nextion display wordt geleverd. Die zit slecht in elkaar wat de seriële communicatie betreft, het vertraagd de boel flink, er zitten rare delays in, er wordt erg veel gewacht. Er is blijkbaar niet goed nagedacht over de communicatie.

Gebruikers-avatar
Berichten: 4861
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: Hardware vragen.

Berichtdoor nicoverduin » 02 Nov 2017, 16:25

Ik zou eerst veel meer energie steken in efficient programmeren dan proberen met symptoombestrijding het echte probleem uit de weg te gaan.
Docent HBO Software Engineering, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Berichten: 313
Geregistreerd: 23 Okt 2016, 20:29

Re: Hardware vragen.

Berichtdoor benvo » 02 Nov 2017, 16:29

Dank je wel, Koepel. Dat verduidelijkt al het e.e.a. De aspecten die je noemt zijn inderdaad van belang zoals ik ook al zelf mocht ervaren. Begrijp me goed, dit gaat niet meer over mijn voorgaande problemen. Eigenlijk wil ik begrijpen niet hoe de problemen ontstonden maar waarom. Vandaar mijn bovenstaande vragen. Maar de vragen zijn nu eigenlijk toch nog wat meer op de hardware gericht. Zo is bijvoorbeeld de "pipeline" bij een 16 bits controller breder als bij een 8 bits controller. Zou dit helpen tegen "overload" problemen? Van de technische gegevens van een Nextion wordt je eigenlijk nog niet zoveel wijzer moet ik zeggen. Deze heb ik bijvoorbeeld. Maar werkt dit alleen met een 8 bits controller zoals de Arduino?

Specification

Data Description
Color 65K (65536) colors 16 bit, 5R6G5B
Layout size 181(L)×108(W)×7.7(H) NX8048K070_011N
181(L)×108(W)×9.3(H) NX8048K070
181(L)×108(W)×9.3(H) NX8048K070_011R
181(L)×108(W)×9.3(H) NX8048K070_011C
Active Area (A.A.) 164.90mm(L)×100.00mm(W) -
Visual Area (V.A.) 154.08mm(L)×85.92mm(W) -
Resolution 800×480 pixel Also can be set as 480×800 pixel
Touch type Resistive -
Touches > 1 million -
Backlight LED -
Backlight lifetime (Average) >30,000 Hours -
Brightness 250nit (NX8048K070_011N) 0% to 100%, the interval of adjustment is 1%
230 nit (NX8048K070_011R) 0% to 100%, the interval of adjustment is 1%
Weight 216g (NX8048K070_011N) -
268g (NX8048K070) -
598g (NX8048K070_011R) -
598g (NX8048K070_011C) -

Electronic Characteristics

Test Conditions Min Typical Max Unit
Operating Voltage 4.75 5 7 V
Operating Current VCC=+5V, Brightness is 100% - 510 - mA
SLEEP Mode - 15 - mA
Recommended Power Supply:5V, 2A, DC

Working Environment & Reliability Parameter

Test Conditions Min Typical Max Unit
Working Temperature 5V, Humidity 60% -20 25 70 ℃
Storage Temperature - -30 25 85 ℃
Working Humidity 25℃ 10% 60% 90% RH

Interfaces Performance

Test Conditions Min Typical Max Unit
Serial Port Baudrate Standard 2400 9600 115200 bps
Output High Voltage IOH=-1mA 3.0 3.2 - V
Output Low Voltage IOL=1mA - 0.1 0.2 V
Input High Voltage - 2.0 3.3 5.0 V
Input Low Voltage - -0.7 0.0 1.3 V
Serial Port Mode TTL
Serial Port 4Pin_2.54mm
USB interface NO
SD card socket Yes (FAT32 format), support maximum 32G Micro SD Card
Extended IO 8 extended IO
I00-I07 support input, output and component binding event;
I04-I07 support PWM
RTC Support built-in RTC (Battery type: CR1220)

Memory Features

Memory Type Test Conditions Min Typical Max Unit
FLASH Memory Store fonts and images - - 32 MB
User Storage EEPROM - 1024 - byte
RAM Memory Store variables - 8192 - Byte
Instruction Buffer Instruction Buffer 1024 Byte

Berichten: 313
Geregistreerd: 23 Okt 2016, 20:29

Re: Hardware vragen.

Berichtdoor benvo » 02 Nov 2017, 16:33

nicoverduin schreef:Ik zou eerst veel meer energie steken in efficient programmeren dan proberen met symptoombestrijding het echte probleem uit de weg te gaan.


Daar ben ik inderdaad ook mee bezig, Nico. Overigens is dit, zoals je kon lezen, ook niet bedoelt als symptoom bestrijding. Ik wil begrijpen waarom de dingen gebeuren zoals ze gebeuren. En waarom en hoe voorgaande problemen ontstonden. Daarvoor stel je dus vragen en hoop je op antwoorden van de kenners.

Gebruikers-avatar
Berichten: 1776
Geregistreerd: 06 Aug 2016, 01:03

Re: Hardware vragen.

Berichtdoor Koepel » 02 Nov 2017, 18:41

Toch benoemt Nico precies wat het probleem is.
Welke processor het display gebruikt heeft hier niets mee te maken.

benvo: Hallo Koepel.
Koepel: Hallo benvo, wil je koffie ?
benvo: Graag, met melk en suiker.
Koepel: Hier is je koffie.
benvo: Dankjewel.

Dat is normale communicatie.

Maar wat als ik 2000 keer per seconde zeg: "Hier is je koffie", en dat achter elkaar door, zonder er ooit mee te stoppen ?

Jouw oplossing is om zoveel mogelijk vitaminepillen en omega-3 en Red Bull te nemen om te proberen bij te houden wat ik zeg. Maar dat werkt niet, omdat geen enkel mens zo snel iets kan verstaan.

Onze oplossing is om normaal te communiceren en al het onzinnige geblèr weg te laten.

Berichten: 313
Geregistreerd: 23 Okt 2016, 20:29

Re: Hardware vragen.

Berichtdoor benvo » 02 Nov 2017, 19:18

Dank voor jullie reacties.

Ik snap wat jullie zeggen. Ik begrijp ook wel hoe het probleem te voorkomen. Zorg voor een te verhapstukken datastroom. Ik geef ook geen voorkeur aan door versnelling o.i.d. voor te stellen want dat is geen oplossing. Begrijp ik allemaal. Ik heb echter ook geen probleem! Maar mijn nieuwsgierigheid wordt getriggerd wáár hardware matig er iets fout gaat wanneer er sprake is van overload. Kan in zo'n geval de Arduino de hoeveelheid data niet aan? De uitstroom dus? Of laat de Nextion de te grote datastroom niet binnen en gaat het daar fout?
't Is dus gewoon een vraag en ik ben benieuwd naar dat antwoordt. Of is daar geen zinnig antwoordt op te geven? Stel ik nu mijn vraag wat beter?

Gebruikers-avatar
Berichten: 1776
Geregistreerd: 06 Aug 2016, 01:03

Re: Hardware vragen.

Berichtdoor Koepel » 02 Nov 2017, 19:58

Ja, nu begrijp ik de vraag.

Met 9600 baud kunnen er zo'n 1000 tekens per seconde verstuurd en ontvangen worden.
Dat zegt echter niet zoveel, misschien zijn er commando's binnen de Nextion die meer tijd nodig hebben dan andere commondo's.
Wat de Nextion doet, daar weet ik te weinig van.

Wanneer de Arduino tekens blijft versturen. Dan wordt de Arduino opeens honderd keer (of meer) langzamer.
Stel dat de Arduino meer verstuurt dan die 1000 tekens per seconde, dan loop de software buffer van de Serial library vol.
Als dat gebeurt, dan gaat de Serial library zitten wachten totdat er weer een plaatsje vrij is in die buffer.
Dat is gedaan om er zeker van te zijn dat de gegevens verstuurd worden.
Maar als de Arduino honderd keer langzamer wordt, dan lukt het niet goed meer om iets van het Nextion display terug te lezen.
Daarom werkte het drukken op knoppen niet goed meer.

Dit probleem komt dus vaker voor. Een Arduino die in loop() bij iedere keer dat de loop() wordt uitgevoerd een Serial.println() doet zonder enige restrictie, die wordt opeens honderd keer langzamer.

Berichten: 313
Geregistreerd: 23 Okt 2016, 20:29

Re: Hardware vragen.

Berichtdoor benvo » 02 Nov 2017, 20:14

Koepel schreef:Ja, nu begrijp ik de vraag.

Met 9600 baud kunnen er zo'n 1000 tekens per seconde verstuurd en ontvangen worden.
Dat zegt echter niet zoveel, misschien zijn er commando's binnen de Nextion die meer tijd nodig hebben dan andere commondo's.
Wat de Nextion doet, daar weet ik te weinig van.

Wanneer de Arduino tekens blijft versturen. Dan wordt de Arduino opeens honderd keer (of meer) langzamer.
Stel dat de Arduino meer verstuurt dan die 1000 tekens per seconde, dan loop de software buffer van de Serial library vol.
Als dat gebeurt, dan gaat de Serial library zitten wachten totdat er weer een plaatsje vrij is in die buffer.
Dat is gedaan om er zeker van te zijn dat de gegevens verstuurd worden.
Maar als de Arduino honderd keer langzamer wordt, dan lukt het niet goed meer om iets van het Nextion display terug te lezen.
Daarom werkte het drukken op knoppen niet goed meer.

Dit probleem komt dus vaker voor. Een Arduino die in loop() bij iedere keer dat de loop() wordt uitgevoerd een Serial.println() doet zonder enige restrictie, die wordt opeens honderd keer langzamer.


Dát bedoelde ik. Dank je wel koepel. Misschien moet wil ik wel eens vaker soortgelijke of andere vragen stellen. Hoewel ik nu erg bezig ben om eerst eens te leren wat er met C kan is het voor een goed begrip hoe alles werkt ook handig om deze dingen te weten. Overigens merkt ik dat het domweg leren van C regeltjes lang niet genoeg is en probeer ik gewoon programmaatjes in C te schrijven. Ik probeer dat te doen door eerst een stroomdiagram te maken en van daaruit te werken. Erg leuk allemaal! Mijn Arduino's zijn in gebruik dus doe ik dit maar even met Codeblocks. Maar het is wel de bedoeling om nog een Arduino te bestellen om te experimenteren. Nogmaals dank! Groet, Ben.

Terug naar Overige hardware

Wie is er online?

Gebruikers in dit forum: Geen geregistreerde gebruikers en 1 gast