Inhaltsverzeichnis:

Uber I2C LCD-Controller-Modul - Gunook
Uber I2C LCD-Controller-Modul - Gunook

Video: Uber I2C LCD-Controller-Modul - Gunook

Video: Uber I2C LCD-Controller-Modul - Gunook
Video: Как сделать ПЛК LDmicro Arduino с ЖК-дисплеем I2C 2024, Juli
Anonim
Uber I2C LCD-Controller-Modul
Uber I2C LCD-Controller-Modul
Uber I2C LCD-Controller-Modul
Uber I2C LCD-Controller-Modul
Uber I2C LCD-Controller-Modul
Uber I2C LCD-Controller-Modul

Präambel

Dieses Instructable beschreibt, wie man ein HD44780 LCD-basiertes Controller-Modul erstellt (Bild 1 oben). Das Modul ermöglicht dem Benutzer, alle Aspekte des LCD programmgesteuert über I2C zu steuern, bestehend aus; LCD und Display, Kontrast und Intensität der Hintergrundbeleuchtung. Obwohl das Arduino Uno R3 als Prototyp verwendet wurde, funktioniert es genauso gut mit jedem Mikrocontroller, der I2C unterstützt.

Einführung

Wie oben erwähnt, dokumentiert dieser Artikel die Erstellung eines I2C-LCD-Controller-Moduls. Er war in erster Linie als Designübung gedacht, um zu bestimmen, wie lange es dauern würde, eine praxistaugliche Leiterplatte zu erstellen.

Das Design ersetzt das standardmäßige generische Controller-Modul (Bild 3 oben) und stützt sich auf Instructables und Bibliotheken, die ich zuvor produziert habe.

Vom ersten Konzeptprototyp (Bild 2) bis zur fertigen, vollständig getesteten Leiterplatte (Bild 1) dauerte es insgesamt 5,5 Tage.

Welche Teile benötige ich? Siehe unten angehängte Stückliste

Welche Software benötige ich?

  • Arduino-IDE 1.6.9,
  • Kicad v4.0.7, wenn Sie die Platine ändern möchten. Ansonsten einfach 'LCD_Controller.zip' an JLCPCB senden.

Welche Werkzeuge brauche ich?

  • Mikroskop mindestens x3 (für SMT-Löten),
  • SMD-Lötkolben (mit flüssigem Flussmittelstift und flussmittelgefülltem Lot),
  • Starke Pinzette (zum SMT-Löten),
  • Feinzange (spitze und stumpfe Nase),
  • DMM mit akustischer Durchgangsprüfung.

Welche Fähigkeiten brauche ich?

  • Viel Geduld,
  • Großes handwerkliches Geschick und ausgezeichnete Hand-Augen-Koordination,
  • Ausgezeichnete Lötkenntnisse.

Behandelten Themen

  • Einführung
  • Schaltungsübersicht
  • Leiterplattenherstellung
  • Software-Übersicht
  • Testen des Designs
  • Abschluss
  • Verwendete Referenzen

Schritt 1: Schaltungsübersicht

Schaltungsübersicht
Schaltungsübersicht

Ein vollständiger Schaltplan der gesamten Elektronik ist in Bild 1 oben zusammen mit einer PDF-Datei davon unten angegeben.

Die Schaltung wurde als exakter Ersatz für das standardmäßige PCF8574A I2C LCD-Controller-Modul mit den folgenden Verbesserungen entwickelt;

  • I2C-Benutzer wählbare 3v3- oder 5v-Kompatibilität,
  • Digitale Kontrastregelung oder konventionelle Potieinstellung,
  • Variable Auswahl der Hintergrundbeleuchtungsintensität mit Quartic-Easing-Funktionssteuerung, um ein sanftes Fading zu erzielen.

LCD-Display-Steuerung

Dies ist ein Faksimile des standardmäßigen I2C-LCD-Controller-Moduls, das einen PCF8574A (IC2) für die I2C-zu-Parallel-Umwandlung verwendet.

Die Standard-I2C-Adresse dafür ist 0x3F.

3v3- oder 5v-I2C-Kompatibilität

Passen Sie für den 3v3-Betrieb Q1, Q2 ROpt1, 2, 5 & 6, IC1, C2 und C2 an.

Wenn 5V-Betrieb erforderlich ist, passen Sie keine 3V3-Komponenten an und ersetzen Sie sie durch die 0-Ohm-Widerstände ROpt 3 und 4.

Digitaler Kontrast

Die digitale Kontraststeuerung wird durch die Verwendung eines digitalen Potentiometers U2 MCP4561-103E/MS und C4, R5 erreicht.

Wird ein konventionelles mechanisches Potentiometer benötigt, kann anstelle von U2, C4 und R5 eines auf der Platine RV1 10K montiert werden. Siehe Stückliste für kompatibles Potentiometer.

Durch Brücken von Jumper J6 ist die I2C-Adresse 0x2E. Wird es für den Normalbetrieb vorausgesetzt, ist dies überbrückt.

Variable Auswahl der Hintergrundbeleuchtungsintensität

Die variable Hintergrundbeleuchtungsintensität wird durch PWM-Modulation der LCD-LED-Hintergrundbeleuchtung über U1-Pin 6 und ATTiny85 gesteuert. Um die volle Kompatibilität mit dem Standard I2C LCD Controller Modul zu wahren, werden R1, T1 R7 und T2 verwendet, um die +ve Versorgungsschiene zu modulieren.

Die Standard-I2C-Adresse dafür ist 0x08. Dies kann vom Benutzer zur Kompilierzeit vor der Programmierung von U1 ausgewählt werden.

Schritt 2: PCB-Herstellung

Leiterplattenherstellung
Leiterplattenherstellung
Leiterplattenherstellung
Leiterplattenherstellung
Leiterplattenherstellung
Leiterplattenherstellung
Leiterplattenherstellung
Leiterplattenherstellung

Wie bereits erwähnt, war dieses Instructable eine Übung, die in erster Linie dazu diente, festzustellen, wie lange es dauern würde, ein Design abzuschließen (was einen praktischen Zweck hatte).

In diesem Fall dachte ich am Samstagnachmittag an das erste Konzept und hatte den Prototyp bis Samstagabend Bild 1 oben fertiggestellt. Meine Idee war, wie gesagt, meine eigene Variante des I2C-LCD-Controller-Moduls mit identischem Footprint zu entwickeln, die eine vollständige programmgesteuerte Steuerung des LCD über I2C bietet.

Der Schaltplan und das PCB-Layout wurden mit Kicad v4.0.7 Bilder 2 und 3 entwickelt. Dies wurde am Sonntagnachmittag fertiggestellt und die Teile wurden bei Farnell bestellt und die PCB wurde bis Sonntagabend auf JLCPCB hochgeladen.

Die Komponenten kamen am Mittwoch von Farnell an, gefolgt von den PCBs von JLCPCB am Donnerstag (ich habe den DHL-Lieferservice verwendet, um die Dinge zu beschleunigen) Bilder 4, 5, 6 & 7.

Bis Donnerstagabend wurden zwei Boards (3v3- und 5v-Varianten) konstruiert und erfolgreich auf einem 4 x 20 LCD-Display getestet. Bilder 8, 9 und 10.

Unglaubliche 5,5 Tage vom ersten Konzept bis zur Fertigstellung.

Es erstaunt mich, wie schnell JLCPCB in der Lage ist, eine Bestellung aufzunehmen, eine doppelseitige PTH-Leiterplatte herzustellen und nach Großbritannien zu versenden. Eine Blisterpackung 2 Tage für die Herstellung und 2 Tage für die Lieferung. Dies ist schneller als in Großbritannien ansässige PCB-Hersteller und zu einem Bruchteil des Preises.

Schritt 3: Softwareübersicht

Software-Übersicht
Software-Übersicht
Software-Übersicht
Software-Übersicht

Die Software besteht aus drei Hauptkomponenten, die zur Steuerung des I2C-LCD-Controller-Moduls erforderlich sind.

1. LiquidCrystal_I2C_PCF8574 Arduino-Bibliothek

Hier verfügbar

Zur Verwendung in Ihrer Arduino-Skizze zur Steuerung des LCD-Displays.

Hinweis: Dies funktioniert genauso gut mit dem Generic I2C LCD Module Controller. Nur gibt es Funktionalität als andere Bibliotheken.

2. MCP4561_DIGI_POT Arduino-Bibliothek

Zur Verwendung in Ihrer Skizze, um den LCD-Kontrast programmgesteuert zu steuern

Hier verfügbar

3. Programmatische Steuerung der LCD-Hintergrundbeleuchtung mit PWM- und Quartic-Easing-Funktion, um ein sanftes Fading zu erzielen

Wie bereits erwähnt, enthält das Board einen einzelnen ATTiny85, der verwendet wird, um das allmähliche Ausblenden der Hintergrundbeleuchtung des Displays zu steuern.

Details zu dieser Software sind in einem früheren Instructable "Smooth PWM LED Fading mit dem ATTiny85" angegeben.

In diesem Fall wurde die SOIC-Variante des ATTiny85 gewählt, um die endgültigen PCB-Abmessungen wie bei einem generischen LCD-Controller-Modul zu halten. Die Bilder 1 und 2 zeigen, wie der ATTiny85 SOIC im Prototypenaufbau programmiert und getestet wurde.

Der in den ATTiny85 programmierte Code war 'Tiny85_I2C_Slave_PWM_2.ino' hier verfügbar

Weitere Informationen zum Erstellen Ihres eigenen ATTiny85-Programmierers finden Sie in diesem Instructable "Programmieren des ATTiny85, ATTiny84 und ATMega328P: Arduino als ISP".

Schritt 4: Testen des Designs

Testen des Designs
Testen des Designs
Testen des Designs
Testen des Designs

Um das Design zu testen, habe ich eine Skizze namens 'LCDControllerTest.ino' erstellt, die es dem Benutzer ermöglicht, jeden LCD-spezifischen Parameter direkt über eine serielle Terminalverbindung einzustellen.

Die Skizze findet sich in meinem GitHub-Repository I2C-LCD-Controller-Module

Bild 1 oben zeigt die 5V-I2C-kompatible Platinenpresse, die an einem 4 x 20-LCD angebracht ist, und Bild 2 die Standardanzeige, wenn der Testcode zum ersten Mal ausgeführt wird.

Es verwendet die folgenden Standardwerte für Hintergrundbeleuchtung und Kontrast;

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

Ich fand, dass diese gut mit dem 4 x 20 LCD-Display funktionierten, das ich übrig hatte.

Schritt 5: Fazit

Als ich vor einiger Zeit in der Elektronik-/Softwarebranche anfing, wurde beim Prototyping viel Wert auf den Einsatz von Wire-Wrap- oder Veroboard-Bauweise gelegt, mit viel Over-Engineering an der Endschaltung, falls Sie einen Fehler gemacht haben, angesichts der Kosten und Dauer eines Board-Re-Spins.

Ein Fehler kostet Sie normalerweise einige Wochen im Zeitplan und sprengt die Gewinnspanne (und möglicherweise Ihren Job).

PCBs wurden „Kunstwerke“genannt, weil sie wirklich Kunstwerke waren. Zweimal in voller Größe mit klebrigem schwarzem Kreppband von einem "Tracer" oder Zeichner erstellt und vom Fabhouse fotografisch reduziert, um die Fotoresist-Schablonen herzustellen.

Auch Schaltpläne wurden von Tracern erstellt und von Hand aus Ihren Design Notes gezeichnet. Kopien wurden fotostatisch erstellt und als „Blaudruck“bezeichnet. Weil sie ausnahmslos blau waren.

Mikrocontroller steckten erst in den Kinderschuhen und wurden typischerweise in Schaltungen emuliert, wenn Ihr Unternehmen sich einen mit der dazugehörigen komplexen und teuren Entwicklungsumgebung leisten konnte.

Als Hersteller zu dieser Zeit waren die bloßen Kosten der Softwareentwicklungs-Toolkette unerschwinglich, Sie waren unweigerlich gezwungen, Hex-Werte direkt in das EPROM (RAM/Flash, wenn Sie viel Glück hatten) zu stecken und dann Stunden damit zu verbringen, das resultierende Verhalten zu interpretieren, um festzustellen, was Ihr Code tat, wenn er nicht wie erwartet funktionierte (bitte 'wackeln' oder serielles printf sind die beliebtesten Debug-Techniken. Manche Dinge ändern sich nie). Normalerweise mussten Sie alle Ihre eigenen Bibliotheken schreiben, da keine verfügbar waren (es gab sicherlich keine reichhaltige Quelle wie das Internet).

Das bedeutete, dass Sie viel Zeit damit verbrachten, zu verstehen, wie etwas funktioniert, und weniger Zeit damit verbrachten, kreativ zu sein.

Alle Ihre Diagramme wurden von Hand gezeichnet, normalerweise auf A4 oder A3, und mussten gründlich durchdacht werden, um ihnen einen logischen Signalverlauf von links nach rechts zu geben. Korrekturen bedeuteten normalerweise, dass Sie mit einem neuen Blatt beginnen mussten.

Ihre Endschaltung wurde größtenteils mit Veroboard für die Dauerhaftigkeit entwickelt und in einem einfachen ABS-Gehäuse montiert, um ihr den "professionellen Touch" zu verleihen.

Im Gegensatz dazu habe ich dieses gesamte Projekt in 5,5 Tagen mit hochwertiger Freeware entwickelt, was zu einem professionellen Standard-PCB führte. Sollte mich der Wunsch ergriffen haben, hätte ich es in eine 3D-gedruckte Box meiner eigenen Herstellung einbauen können.

Etwas, von dem Sie vor weniger als einem Jahrzehnt nur träumen konnten.

Wie sich die Dinge zum Besseren verändert haben.

Schritt 6: Verwendete Referenzen

KiCAD Schaltplanerfassung und PCB-Design

KiCAD EDA

Arduino ORG-Softwareentwicklungstool

Arduino

LiquidCrystal_I2C_PCF8574 Arduino-Bibliothek

Hier

MCP4561_DIGI_POT Arduino-Bibliothek

Hier

Sanftes PWM-LED-Fading mit dem ATTiny85

Hier

Programmierung des ATTiny85, ATTiny84 und ATMega328P: Arduino als ISP

Empfohlen: