Sommario:

Modulo controller LCD Uber I2C: 6 passaggi
Modulo controller LCD Uber I2C: 6 passaggi

Video: Modulo controller LCD Uber I2C: 6 passaggi

Video: Modulo controller LCD Uber I2C: 6 passaggi
Video: Введение в LCD2004 ЖК-дисплей с модулем I2C для Arduino 2024, Luglio
Anonim
Modulo controller LCD Uber I2C
Modulo controller LCD Uber I2C
Modulo controller LCD Uber I2C
Modulo controller LCD Uber I2C
Modulo controller LCD Uber I2C
Modulo controller LCD Uber I2C

Preambolo

Questo Instructable spiega come creare un modulo controller basato su LCD HD44780 (foto 1 sopra). Il modulo consente all'utente di controllare tutti gli aspetti dell'LCD in modo programmatico su I2C, comprendendo; LCD e display, contrasto e intensità della retroilluminazione. Sebbene Arduino Uno R3 sia stato utilizzato per prototiparlo, funzionerà ugualmente bene con qualsiasi microcontrollore che supporti I2C.

introduzione

Come accennato in precedenza, questo articolo documenta la creazione di un modulo controller LCD I2C, è stato principalmente inteso come esercizio di progettazione per determinare quanto tempo sarebbe necessario per creare un pratico PCB funzionante.

Il design sostituisce il modulo controller generico standard (foto 3 sopra) e si basa su Instructables e librerie che ho prodotto in precedenza.

Dal prototipo del concetto iniziale (foto 2 sopra) al PCB completato e completamente testato (foto 1 sopra) ci sono voluti un totale di 5,5 giorni.

Di quali parti ho bisogno?Vedi la distinta materiali allegata di seguito

Di che software ho bisogno?

  • Arduino IDE 1.6.9,
  • Kicad v4.0.7 se vuoi modificare il PCB. Altrimenti basta inviare 'LCD_Controller.zip' a JLCPCB.

Di quali strumenti ho bisogno?

  • Microscopio almeno x3 (per saldatura SMT),
  • Saldatore SMD (con penna a flusso liquido e saldatura animata),
  • Pinzette forti (per saldatura SMT),
  • Pinze sottili (a punta e a becco camuso),
  • Multimetro digitale con controllo di continuità sonoro.

Di quali competenze ho bisogno?

  • tanta pazienza,
  • Grande manualità e ottima coordinazione occhio/mano,
  • Ottime capacità di saldatura.

Argomenti trattati

  • introduzione
  • Panoramica del circuito
  • Produzione PCB
  • Panoramica del software
  • Testare il design
  • Conclusione
  • Riferimenti utilizzati

Passaggio 1: panoramica del circuito

Panoramica del circuito
Panoramica del circuito

Uno schema circuitale completo di tutta l'elettronica è fornito nella figura 1 sopra, insieme a un PDF dello stesso sotto.

Il circuito è stato progettato per sostituire esattamente il modulo controller LCD I2C PCF8574A standard con i seguenti miglioramenti;

  • Compatibilità 3v3 o 5v selezionabile dall'utente I2C,
  • Controllo digitale del contrasto o impostazione convenzionale del potenziometro,
  • Selezione dell'intensità della retroilluminazione variabile con controllo della funzione di allentamento Quartic per ottenere una dissolvenza uniforme.

Controllo display LCD

Questo è un facsimile del modulo controller LCD I2C standard che utilizza un PCF8574A (IC2) per la conversione da I2C a parallelo.

L'indirizzo I2C predefinito per questo è 0x3F.

Compatibilità 3v3 o 5v I2C

Per il funzionamento 3v3, montare Q1, Q2 ROpt1, 2, 5 e 6, IC1, C2 e C2.

Se è richiesta l'operazione a 5v, non montare alcun componente 3v3, sostituendoli con resistori da 0 Ohm ROpt 3 e 4.

Contrasto digitale

Il controllo digitale del contrasto è ottenuto tramite l'uso di un potenziometro digitale U2 MCP4561-103E/MS e C4, R5.

Se è necessario un potenziometro meccanico convenzionale, è possibile montarne uno sul PCB, RV1 10K, invece di U2, C4 e R5. Vedere BoM per potenziometro compatibile.

Collegando il jumper J6 l'indirizzo I2C è 0x2E. Si presume che per il normale funzionamento questo sia collegato.

Selezione dell'intensità della retroilluminazione variabile

L'intensità della retroilluminazione variabile è controllata dalla modulazione PWM della retroilluminazione a LED LCD tramite il pin U1 6 e ATTiny85. Al fine di mantenere la piena compatibilità con il modulo controller LCD I2C standard R1, T1 R7 e T2 vengono utilizzati per modulare la linea di alimentazione +ve.

L'indirizzo I2C predefinito per questo è 0x08. Questo è selezionabile dall'utente, in fase di compilazione prima della programmazione U1.

Passaggio 2: produzione PCB

Produzione PCB
Produzione PCB
Produzione PCB
Produzione PCB
Produzione PCB
Produzione PCB
Produzione PCB
Produzione PCB

Come accennato in precedenza, questo Instructable era un esercizio, inteso principalmente a determinare quanto tempo sarebbe necessario per completare un progetto (che aveva uno scopo pratico).

In questo caso ho pensato al concetto iniziale sabato pomeriggio e avevo completato il prototipo entro sabato sera foto 1 sopra. La mia idea, come affermato, era quella di creare la mia variante del modulo controller LCD I2C, con un ingombro identico, offrendo il controllo programmatico completo dell'LCD su I2C.

Il diagramma schematico e il layout del PCB sono stati sviluppati con Kicad v4.0.7 foto 2 e 3. Questo è stato completato domenica pomeriggio e le parti sono state ordinate da Farnell e il PCB è stato caricato su JLCPCB entro domenica sera.

I componenti sono arrivati da Farnell mercoledì, seguiti dai PCB da JLCPCB giovedì (ho usato il servizio di consegna DHL per velocizzare le cose) foto 4, 5, 6 e 7.

Giovedì sera erano state costruite e testate con successo due schede (varianti 3v3 e 5v) su un display LCD 4x20. Foto 8, 9 e 10.

Un incredibile 5,5 giorni dall'idea iniziale fino al completamento.

Mi stupisce quanto velocemente JLCPCB sia in grado di prendere un ordine, produrre un PCB PTH a doppia faccia e spedirlo nel Regno Unito. Un blistering di 2 giorni per la produzione e 2 giorni per la consegna. Questo è più veloce dei produttori di PCB con sede nel Regno Unito e ad una frazione del prezzo.

Passaggio 3: panoramica del software

Panoramica del software
Panoramica del software
Panoramica del software
Panoramica del software

Ci sono tre componenti principali del software necessario per controllare il modulo controller LCD I2C;

1. Libreria Arduino LiquidCrystal_I2C_PCF8574

Disponibile qui

Da utilizzare nel tuo schizzo Arduino per controllare il display LCD.

Nota: funziona ugualmente bene con il controller del modulo LCD I2C generico. Solo dà funzionalità rispetto ad altre librerie.

2. Libreria Arduino MCP4561_DIGI_POT

Da utilizzare nel tuo schizzo per controllare in modo programmatico il contrasto LCD

Disponibile qui

3. Controllo programmatico dei livelli di retroilluminazione LCD utilizzando la funzione PWM e Quartic easing per ottenere una dissolvenza uniforme

Come accennato in precedenza la scheda contiene un singolo ATTiny85 utilizzato per controllare il graduale sbiadimento della retroilluminazione del display.

I dettagli di questo software sono forniti in un precedente Instructable "Smooth PWM LED Fading With the ATTiny85"

In questo caso per mantenere le dimensioni finali del PCB le stesse di un generico modulo controller LCD è stata scelta la variante SOIC dell'ATTiny85. Le foto 1 e 2 mostrano come è stato programmato e testato l'ATTiny85 SOIC nell'allestimento del prototipo.

Il codice programmato nell'ATTiny85 era 'Tiny85_I2C_Slave_PWM_2.ino' disponibile qui

Per i dettagli su come creare il proprio programmatore ATTiny85, vedere questo Instructable "Programmazione di ATTiny85, ATTiny84 e ATMega328P: Arduino come ISP"

Passaggio 4: test del design

Testare il design
Testare il design
Testare il design
Testare il design

Per testare il design ho creato uno schizzo chiamato 'LCDControllerTest.ino' che consente all'utente di impostare qualsiasi parametro specifico dell'LCD direttamente su una connessione terminale seriale.

Lo schizzo può essere trovato nel mio repository GitHub I2C-LCD-Controller-Module

L'immagine 1 sopra mostra la pressa per scheda compatibile 5v I2C montata su un LCD 4x20 e l'immagine 2 il display predefinito quando si esegue il codice di test per la prima volta.

Utilizza i seguenti valori predefiniti per la retroilluminazione e il contrasto;

  • #define DISPLAY_BACKLIGHT_LOWER_VALUE_DEFAULT ((unsigned long) (10))
  • #define DISPLAY_CONTRAST_VALUE_DEFAULT ((uint8_t) (40))

Ho scoperto che funzionavano bene con il display LCD 4 per 20 che avevo in giro.

Passaggio 5: conclusione

Quando ho iniziato a lavorare nell'industria elettronica/software un po' di tempo fa, c'era una grande enfasi sull'uso della costruzione wire-wrap o veroboard per la prototipazione con un sacco di over-engineering sul circuito finale nel caso avessi commesso un errore, dato il costo e la durata di un re-spin della scheda.

Un errore di solito ti costa alcune settimane sul programma e fa saltare il margine di profitto (e forse il tuo lavoro).

I PCB erano chiamati "opere d'arte", perché erano vere e proprie opere d'arte. Creato due volte a grandezza naturale utilizzando nastro adesivo crepe nero da un "tracciante" o disegnatore e ridotto fotograficamente dalla favolosa casa per rendere la foto resistente agli stencil.

Anche gli schemi circuitali sono stati creati da traccianti e disegnati a mano dalle tue note di progettazione. Le copie venivano fatte in modo fotostatico e chiamate "stampe blu". Perché erano invariabilmente di colore blu.

I microcontrollori erano solo agli inizi ed erano in genere emulati nel circuito se la tua azienda poteva permettersene uno con il relativo ambiente di sviluppo complesso e costoso.

Come produttore all'epoca, il semplice costo della catena di strumenti di sviluppo software era proibitivo, eri inevitabilmente costretto a inserire valori esadecimali direttamente nella EPROM (RAM/Flash se eri molto fortunato) e poi passare ore a interpretare il comportamento risultante per determinare cosa il tuo codice stava facendo se non funzionava come previsto (bit 'wiggling' o serial printf sono le tecniche di debug più popolari. Alcune cose non cambiano mai). In genere dovevi scrivere tutte le tue librerie poiché non erano disponibili (non c'era certamente una fonte ricca come Internet).

Ciò significava che passavi molto tempo a cercare di capire come funzionava qualcosa e dedicavi meno tempo alla creazione creativa.

Tutti i tuoi diagrammi sono stati disegnati a mano, in genere su A4 o A3 e hanno dovuto essere attentamente pensati, dando loro un flusso logico del percorso del segnale da sinistra a destra. Le correzioni di solito significavano che dovevi iniziare con un nuovo foglio.

Per la maggior parte il tuo circuito finale è stato sviluppato utilizzando veroboard per la permanenza e montato in una semplice custodia in ABS per dargli quel "tocco professionale".

In netto contrasto, ho sviluppato l'intero progetto in 5,5 giorni utilizzando freeware di alta qualità risultando in un PCB standard professionale. Se il desiderio mi avesse preso, avrei potuto montarlo in una scatola stampata in 3D di mia fabbricazione.

Qualcosa che potevi solo sognare meno di dieci anni fa.

Come le cose sono cambiate in meglio.

Passaggio 6: riferimenti utilizzati

Acquisizione di schemi KiCAD e progettazione PCB

KiCAD EDA

Strumento di sviluppo software Arduino ORG

Arduino

Libreria Arduino LiquidCrystal_I2C_PCF8574

Qui

Libreria Arduino MCP4561_DIGI_POT

Qui

Dissolvenza uniforme del LED PWM con ATTiny85

Qui

Programmazione di ATTiny85, ATTiny84 e ATMega328P: Arduino come ISP

Consigliato: