LCD arduino na tijd rare tekens


Als TS écht 8 a 10m bedoelde, en niet cm, zou ik er eerder aan denken om de lange afstand seriëel te overbruggen (eventueel met differentiële signalen?), en dan een extra controller vlak bij het LCD te plaatsen die deze meteen aanstuurt met de informatie die het krijgt van het hoofdtoestel.

Op 24 augustus 2019 11:02:51 schreef fcapri:
oei, dat is wel heel lang, genoeg om wat data corrupt te krijgen tussen controller en lcd.

ik weet niet of er mogelijkheden zijn om de buffer van een lcd op te vragen? maar je zou idd eens om de X tijd eens kunnen initialiseren.

wij hebben op het werk ook een arduino met 4x20 LCD hangen die de temperatuur van de serverroom weergeeft op het scherm, en dat werkt al jaren 24/24 goed.

Idd bij ons staat de arduino in de technische ruimte en het LCD scherm hangt in de bedienden ruimte zodanig dat ze kunnen weten in welke modus het programma is geschakeld en hoe warm het is.

De vraag is nu hoe ik idd om de X aantal tijd mijn LCD initialiseer. Ik denk dat dit ook de oplossing zal zijn dan.

Op 24 augustus 2019 11:13:55 schreef Arco:
Zo'n enorm eind kabel aan een parallel display heb ik nog nooit meegemaakt (en zou ik ook zeker nooit doen)
Wat je kunt proberen is alle aders die je over hebt als Gnd te gebruiken. (1 dunne ader is zeker niet genoeg)

Er is geen mogelijkheid om de arduino dicht bij het LCD te plaatsen. Daarvoor dient de LCD zodanig dat ze visueel kunnen zien wat de arduino schakelt.

Wat voor kabel gebruik je? (hopelijk wel iets fatsoenlijks als FTP of STP kabel...)

Arco - "Simplicity is a prerequisite for reliability" - www.arcovox.com

Op 24 augustus 2019 12:24:15 schreef Arco:
Wat voor kabel gebruik je? (hopelijk wel iets fatsoenlijks als FTP of STP kabel...)

Ja we maken gebruik van een FTP kabel

Afscherming en alle niet gebruikte aders dan als Gnd gebruiken...
Data traag verzenden kan helpen. Of afsluitweerstanden aan de kabel bij het display...

[Bericht gewijzigd door Arco op 24 augustus 2019 12:33:20 (40%)]

Arco - "Simplicity is a prerequisite for reliability" - www.arcovox.com

Op 24 augustus 2019 12:31:21 schreef Arco:
Afscherming en alle niet gebruikte aders dan als Gnd gebruiken...
Data traag verzenden kan helpen. Of afsluitweerstanden aan de kabel bij het display...

Oke zal dit ook eens proberen dan.

Op 24 augustus 2019 11:08:56 schreef Aart:
Dat is extreem lang, ik ben geen ervaring voorbij 20cm.
In zo een geval zou ik een aparte 'Duino bij het LCD plaatsen en b.v. een trage seriële verbinding gebruiken om de data daar te krijgen.

De standaard Arduino LCD libraries zenden bij mijn weten alleen, teruglezen vanuit de registers van het display is niet geïmplementeert. Het spaart een pin :)

Plaats de code tussen [code ]-tags, dat leest veel prettiger. Zie de UBB-code uitleg. (Overigens geen garantie dat ik iets zinnigs kan bijdragen)

Ja het is idd lang maar LCD staat in de bureauruimte en arduino in de technische ruimte.

Is er geen mogelijkheid om bv. het LCD scherm om de 2 uur eens te " resetten ". Want wanneer ik de voeding van de installatie afneem en die dan opnieuw voeding geef werkt het LCD scherm perfect.

Gewoon regelmatig de data opnieuw naar het display schrijven. (alle 20x2 karakters)

Arco - "Simplicity is a prerequisite for reliability" - www.arcovox.com

probeer eens een LCD.begin() opnieuw te doen.
kijk eens of LCD.clear() ook niet werkt en schrijf je data desnoods elke 30sec opnieuw ipv karakters te gaan veranderen

de afstand is extreem. ik zou ook gewoon een nieuwe arduino (nano) bij je display zetten, en via dezelfde UTP kabel de boel voorzien van 5V.
tussen de 2 arduino verstuur je dan de data. de ene die de verwerkingen/handelingen doet, een 2de die gewoon het display voor zijn rekening neemt.

3de oplossing: hang er een I2C to parallel print tussen, gebruik ik altijd.
https://images-na.ssl-images-amazon.com/images/I/71wDJVbb5QL._SX425_.jpg
4draden naar dat printje, en dat printje zal zelf het scherm aansturen

ik hou van werken ..., ik kan er uren naar kijken

hang er een I2C to parallel print tussen, gebruik ik altijd.

Da's bij 10 mtr kabel zonder extenders ook 'not done'...

Arco - "Simplicity is a prerequisite for reliability" - www.arcovox.com

De mooiste oplossing vind ik een tweede Arduino dicht bij het LCD scherm, dan kun je de data met een checksum versturen tussen de twee Arduino's. Als de checksum fout is sla je het printen over.

Communicatie tussen de seriele poorten met een rs485 buffertje er tussen.

buckfast_beekeeper

Golden Member

WIFI geen mogelijkheid? ESP?

Anders een RS232 (TTL) display. VSS GND en RX. Heb je in een FTP nog genoeg 5 aders over. Een deftige condensator bij het LCD en 2400Bd moet haalbaar zijn.

edit: de standaard baudrate is 9600 maar kan met een commando naar beneden gebracht worden en opgeslagen in ROM. Baudrate loopt van 300Bd tot 115.2k.

Honing kan je importeren, bestuiving niet.

Op 24 augustus 2019 12:40:50 schreef LS-Tech:
Ja het is idd lang maar LCD staat in de bureauruimte en arduino in de technische ruimte.

Dan is het nog steeds een heel bizarre oplossing om over zo'n enorm lange kabel te gaan. Dat moet je niet eens willen bedenken, of (nu je dat weet) het proberen werkend te krijgen. Het is bijna een wonder dat het uberhaupt werkt.
Snap je wat anderen zeggen, je moet niet de arduino verplaatsen, maar een extra Arduino erbij zetten die alleen het display aanstuurt. Je 1e Arduino stuurt dan niet meer het display aan, maar zend een bericht naar de 2e, die het dan naar het display schrijft. Een Nano kost maar een paar euro.

"We cannot solve our problems with the same thinking we used when we created them" - Albert Einstein

Als er daar een desktop computer staat, stuur het dan daar naartoe. (Wifi of LAN)
Kan het hele display weg. (programmaatje op pc of via browser)

Arco - "Simplicity is a prerequisite for reliability" - www.arcovox.com

Je kunt de datarate verlagen (in de library, waarschijnlijk), maar ik verwacht niet echt dat dat iets oplost; de rare tekens op het scherm suggereren dat het LCD een keer een clock puls heeft gemist, of, waarschijnlijker, storing op zijn clock lijn heeft aangezien voor een puls, en daardoor de synchronisatie met de Arduino kwijt is, in dat hij een nibble voor- of achterloopt.

Ik weet eigenlijk niet wat de gangbare manier is om dat opnieuw te synchroniseren, zonder reset puls of powercycle.

Een manager is iemand die denkt dat negen vrouwen in één maand een kind kunnen maken

Aan de sketch zelf kun je weinig veranderen.
Misschien kun je een aanpassing doen in de library zelf.

Uit liquidcrystal.cpp (helemaal onderaan).

Daarin zie je dat de enable pin voor 1 uS hoog gemaakt wordt.
Je zou die waarde wat kunnen vergroten, bvb delayMicroseconds(5)

code:


void LiquidCrystal::pulseEnable(void) {
  digitalWrite(_enable_pin, LOW);
  delayMicroseconds(1);                                   //aan te passen
  digitalWrite(_enable_pin, HIGH);
  delayMicroseconds(1);    // enable pulse must be >450ns //aan te passen
  digitalWrite(_enable_pin, LOW);
  delayMicroseconds(100);   // commands need > 37us to settle
}

void LiquidCrystal::write4bits(uint8_t value) {
  for (int i = 0; i < 4; i++) {
    pinMode(_data_pins[i], OUTPUT);
    digitalWrite(_data_pins[i], (value >> i) & 0x01);
  }

  pulseEnable();
}

void LiquidCrystal::write8bits(uint8_t value) {
  for (int i = 0; i < 8; i++) {
    pinMode(_data_pins[i], OUTPUT);
    digitalWrite(_data_pins[i], (value >> i) & 0x01);
  }
  
  pulseEnable();
}

Mijn thuis is waar mijn Weller staat

Met 10 mtr kabel ga je bij hoge frequenties dat toch al gauw merken. (gemiddelde FTP is 56pF/m, en dat hangt natuurlijk aan de bus...)

Arco - "Simplicity is a prerequisite for reliability" - www.arcovox.com

Enkel herkauwend wat reeds eerder gesteld werd, omdat het soms helpt om het in andere woorden te horen:

NIET GOED BEZIG:
* periodieke reset is niet meer dan een pleister op een houten been; strijdig met alle beroepstrots
* 10 meter is echt veel te veel voor parallele bekabeling

HOE KAN HET BETER:
* inderdaad een of ander controllertje vlakbij het display
* communicatie van het een naar het ander is te bekijken; als het mij te doen stond dan was het per Ethernet, maar daar wegen veel factoren mee. RS232 zou ook nog kunnen, mits correcte afscherming en aarding en niet al te hoge baudrate. Ik heb ooit printers aangestuurd over meer dan 20 meter met 38400 Baud, dat is al heel wat voor deze simpele niet-tijd-kritische toepassing.

hoe beter de vraag geschreven, zoveel te meer kans op goed antwoord

Op 24 augustus 2019 17:32:35 schreef big_fat_mama:
...RS232 zou ook nog kunnen, mits correcte afscherming en aarding en niet al te hoge baudrate. Ik heb ooit printers aangestuurd over meer dan 20 meter met 38400 Baud, dat is al heel wat voor deze simpele niet-tijd-kritische toepassing.

20meter is peanuts. ik heb ooit discussie gehad op het werk dat ze een windsensor op het einde van de landingsbaan via RS232 naar een pc wilden verbinden die zomaar 500-800meter verder stond. RS232 gewoon doorgepatch over 2 telefoonlijnen van gebouw naar gebouw. ik was 100% overtuigt dat het niet zou werken, wel het werkte... baudrate weet ik niet meer, vermoed 2400bps.

Op 24 augustus 2019 15:23:04 schreef Arco:
Als er daar een desktop computer staat, stuur het dan daar naartoe. (Wifi of LAN)
Kan het hele display weg. (programmaatje op pc of via browser)

in de meeste bedrijven zal dit al niet meer mogen. daar moeten pc's voldoen aan bepaalde eisen, met 1 of andere goedgekeurde image OS erop. zomaar een oude pc daar zetten die iets eigen draait, zal binnen een paar jaar verboden worden. bij ons beginnen ze ons ook te nekken met onze eigen pc's en software. en veel van die software stamd nog uit de tijd van OS2 of windwos 95 die met veel gefoefel nog op winXP gekregen werd. nu moet dat op win10 en loopt overal fout. en toch moet het. pc's met ander OS mogen niet meer op het netwerk, ook al zijn dit afgescheiden Vlans

ik hou van werken ..., ik kan er uren naar kijken

Oude PC hoeft niet, iedere pc met een browser voldoet...

Dat de zaak dichtgetimmerd is, is goed en gebeurt al veel langer.
Rond 2010 heb ik software volgens klantspecificatie gemaakt voor een overheidsinstelling. Verstuurde interne mails bij bepaalde inkomende telefoongesprekken.
Werkte uitstekend, maar is nooit gebruikt. (netwerk was dichtgetimmerd; berichten tussen pc's zenden was niet mogelijk)

Dat krijg je dus als de leiding hun wensen niet met de techneuten afstemt... (ze laten iets maken waar je niets aan hebt... ;) )

[Bericht gewijzigd door Arco op 25 augustus 2019 22:19:38 (81%)]

Arco - "Simplicity is a prerequisite for reliability" - www.arcovox.com
buckfast_beekeeper

Golden Member

RS232 is vrij robusst. Als je zend aan max spec en je ontvangt aan de minimum, dan gaat het vrij goed. Ik heb vele jaren via RS232 communicatie gehad tussen (DOS) PC en een zelf gemaakt weerstation. Windsnelheid, -richting, grondtemperatuur, temperatuur op 1m en vijvertemperatuur werden zo gelogd in een Q-Basic programma, dat een cvs file aanmaakte. Communicatie was 1200Bd en de kabellengte zal wel een 30à40m geweest zijn. Pc zond een tag met op te vragen gegevens en de andere zijde beantwoordde met een gegeven. Op een week zaten er misschien 1 of 2 zichtbare fouten in. Was gewoon 4 of 5 aderige draad met afscherming niet eens twisted pair.

Honing kan je importeren, bestuiving niet.

Waarom niet een 20mA serie loop? Dat doen ze in de industrie ook.en daar zijn lengtes van wel kilometers...

u=ir betekent niet :U bent ingenieur..

Beetje overkill, misschien...

hoe beter de vraag geschreven, zoveel te meer kans op goed antwoord
fatbeard

Honourable Member

Uit ervaring kan ik melden dat RS485 over zeer grote afstanden prima te doen is zonder slowmotion: 9600 baud over 4km dom 4-aderig draad (niet getwist, wel afgeschermd)...

Een goed begin is geen excuus voor half werk; goed gereedschap trouwens ook niet. Niets is ooit onmogelijk voor hen die het niet hoeven te doen.