Ayuda con LCD Nokia 5510 (PCD8544) ?

Saludos chic@s!

Voy a compartir unas dudas , a ver si alguien se ha visto en una situación así, o veis algo que a mi se me escapa.

El material que estoy usando es:

Arduino UNO + LCD Nokia 5510 (Arduino alimentado por USB)

  • El circuito: La pantalla LCD, trabaja a 3V, la he alimentado con la salida 3.3V del Arduino. Como el Arduino trabaja con lógica de 5V, he usado divisores de voltage, para entregar 3V en las entradas de la LCD.

  • El programa: es el ejemplo de la playground, solo he cambiado la función LCDInitialice, acorde con lo que comenta el usuario Kuy en la pagina del producto. Antes de cambiarla, no veía nada en pantalla.

void LcdInitialise(void)
{
  pinMode(PIN_SCE, OUTPUT);
  pinMode(PIN_RESET, OUTPUT);
  pinMode(PIN_DC, OUTPUT);
  pinMode(PIN_SDIN, OUTPUT);
  pinMode(PIN_SCLK, OUTPUT);
  digitalWrite(PIN_RESET, LOW);
  digitalWrite(PIN_RESET, HIGH);
  
  LcdWrite(LCD_C, 0x21); //switch to extended commands
  LcdWrite(LCD_C, 0x80); //set value of Vop (controls contrast) = 0x80 | 0x60 (arbitrary)
  LcdWrite(LCD_C, 0x04); //set temperature coefficient
  LcdWrite(LCD_C, 0x14); //set bias mode to 1:48.
  LcdWrite(LCD_C, 0x20); //switch back to regular commands
  LcdWrite(LCD_C, 0x0C);
}

- Los problemas:

  • Cuando escribo caracteres en la pantalla, algunos se ven perfectos, otros siempre se ven mal (pixels de más), y otros se ven unas veces bien y otras mal cuando ejecuto el programa. :~ :astonished:

Lo podéis ver en esta y esta imagen.

  • Cuando reseteo o arranco el arduino, unas veces el LCD funciona, otras veces no muestra nada, lo reseteo 20 veces, y aproximadamente la mitad de las veces el LCD no arranca.

  • El divisor de voltage utilizado es: Arduino-Out[ x ] —> 470K —> [ x ]LCD-In —> 820K —> GND, elegí esos valores, para minimizar la energía consumida por el divisor. Cuando vi el problema de los pixels erróneos, probé con valores mas bajos (82K y 47K, 680-Ohm y 1K, 100-Ohm y 150-Ohm) para mi sorpresa ninguno de ellos funcionó! ← ¿Tiene alguna explicación? ¿O estaré metiendo la pata en otro sitio?


He observado que los errores siempre son por exceso de pixels, nunca falta un pixel, ¿podría ser ruido o alguna interferencia? ¿por culpa del divisor?

Imagino que el problema tiene que estar en la pantalla, o en el circuito…
Para descartar que no es problema de la pantalla, voy a hacer unos tests, intentaré llenar todos los pixels, lineas en horizontal, lineas en vertical y ver
el resultado.

¿Alguna idea?
PD: Si has llegado aquí, ¡gracias por leer la parrafada!

Un saludo a tod@s

Hola

En realidad la tensión máxima de alimentación de PCD8544 son 7V (lo puedes ver en la página 17 de su manual http://www.myplace.nu/mp3/files/pcd8544.pdf). Mira la implementación que hacen la gente de nuelectronics http://www.nuelectronics.com/download/projects/Nokia_3310_lcd.pdf

Hola complubot

¡Muchas gracias por tu respuesta!, he observado el esquema de nuelectronics, no se si lo he entendido del todo :blush:

Me ha parecido, que Vcc lo toman del pin 5V del Arduino (pin 3 en el J4) con eso alimentan directamente la LCD. La retro-iluminación, tienen 6 LEDs conectados por separado, con resistencias limitadoras de 330-Ohm, en mi LCD solo tengo un PIN para alimentar todos los LEDs pero imagino que también me valdría con una resistencia limitadora.

No se si entiendo muy bien el pin RESET del LCD, ¿va conectado al pin LCD_RST del Arduino, y ademas a una resistencia a Vcc, y a través de un condensador a masa? :cold_sweat: :cold_sweat: :cold_sweat:

Los conectores C, y Vcc inferior del LCD, no los tengo en mi PCB, así que supongo que no debo preocuparme por ellos.

Bueno, a ver si me aclaro con el RESET, y en cuanto tenga un ratito lo pruebo, espero no cargarme la pantalla, ¡ya os cuento!

No se si entiendo muy bien el pin RESET del LCD, ¿va conectado al pin LCD_RST del Arduino, y ademas a una resistencia a Vcc, y a través de un condensador a masa? smiley-roll-sweat smiley-roll-sweat smiley-roll-sweat

La rssitencia R9 y el condensador C1 forman un Power On Reset, esto es, un circuito que mantiene la línea del display a nivel bajo (resest) duarnte un corto tiempo en el momento del encendido.

LCD_RST es una entrada de Reset del display que está conectado la la DIO 9 de la placa Arduino y que nos permite hacer un reset de la pantalla (por programa) en cualquier momento.

Es decir que esté módulo hace un reset automático en el momento del encendido o mediante programa en cualquier momento: digitalWrite(9,LOW);

¡Ouch! como diría homer

¡ni cuenta me había dado! en su momento los estudiamos, lo mío tiene delito, ni me acordaba...

¡Madre! me has despertado la chispa, creo que voy a coger los cuadernos del instituto, quitarles el polvo, y pegarles un repaso, ¡que falta me hace! XD XD

Gracias de nuevo complubot, a ver si el fin de semana, tengo un rato y puedo hacer unas pruebas.

Os comentaré por aquí los resultados.

Un saludo!

¡ EUREKA ! Siempre quise decirlo XD

¡LCD funcionando!

Gracias a complubot, que me ha quitado el miedo a trabajar con 5V en esta pantalla, he conectado como en el esquema de nuelectronics y todo bien.

Por si a alguien le sirve de ayuda:

He conectado las líneas digitales de Arduino directamente a las entradas del LCD, lo he alimentado a 5V y funciona perfecto! He utilizado una resistencia de 270-Ohm, para limitar la corriente de los LEDs de retroiluminación.

También se ha solucionado el problema del arranque del LCD (unas veces arrancaba, otras no) ahora arranca perfectamente siempre.

Un saludo a tod@s

Bueno tu problema quiza se deba a las librerias, a la Pantalla o a una placa china, yo he tabajado con este display desde hace varios años usando microcontroladores PIC y nunca tuve lios. Con los sketchs de Arduino nunca he tenido lio pero te recomiendo que pruebes con estas librerias: http://www.fileden.com/files/2007/7/6/1244190/LCD4884.7z las cuales son especificamente para 5110. que tiene 9 pines a diferencia de la 3310 que tiene 8 ademas no olvides el condensador de 0.1uf entre el pin 7( Vss ) y 8 (Vout). Espero que esto te ayude.

Hola Jose Luis,

gracias por la respuesta! En este caso, la pantalla y la placa no son chinas, XD, en el primer mensaje tengo un enlace a la pantalla que uso, que viene de la tienda sparkfun. Es un PCB con la pantalla ya montada muy curiosa. Esta placa, solo tiene 8 pines, así que imagino, que ya esta integrado el condensador.

Eso si, la pantalla sola, he leído como dices que tiene un pin mas, que la del 3310.

Al alimentar a 5V y usar niveles lógicos a 5V para controlarla han funcionado muy bien los sketchs de ejemplo de Arduino. Tendré que revisar por curiosidad el datasheet de este PCB, a ver si encuentro la explicación.

Voy a echar un vistazo a la librería que me pasas, en cuanto tenga un ratillo para probar!

Lo dicho, así da gusto! gracias por las ayudas, que sin ellas, a veces cuesta arrancar! Un saludo! XD