Inhaltsverzeichnis:
- Schritt 1: Schaltungsübersicht
- Schritt 2: PCB-Herstellung
- Schritt 3: Softwareübersicht
- Schritt 4: Testen des Designs
- Schritt 5: Fazit
- Schritt 6: Verwendete Referenzen
Video: Uber I2C LCD-Controller-Modul - Gunook
2024 Autor: John Day | [email protected]. Zuletzt bearbeitet: 2024-01-30 07:18
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
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
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
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
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:
Einen Stromzähler über Arduino auslesen – wikiHow
So lesen Sie einen Stromzähler über Arduino aus: Oft wäre es interessant, den aktuellen Stromverbrauch oder den Gesamtstromverbrauch Ihres Hauses zu kennen, um Ihre Stromkosten zu begrenzen und die Umwelt zu schonen. Das ist kein wirkliches Problem, denn meistens findet man ein smartes digitales el
Arduino-Programmierung über das Handy -- Arduinodroid -- Arduino-Ide für Android -- Blinzeln: 4 Schritte
Arduino-Programmierung über das Handy || Arduinodroid || Arduino-Ide für Android || Blink: Bitte abonnieren Sie meinen Youtube-Kanal für weitere Videos…… Arduino ist ein Board, das direkt über USB programmiert werden kann. Es ist sehr einfach und günstig für College- und Schulprojekte oder sogar für Produktprototypen. Viele Produkte bauen zunächst darauf für i
SCARA-Roboter: Lernen über Vorwärts- und inverse Kinematik !!! (Plot Twist Erfahren Sie, wie Sie mit PROCESSING eine Echtzeitschnittstelle in ARDUINO erstellen !!!!): 5 Schritte (mit Bildern)
SCARA-Roboter: Lernen über Vorwärts- und inverse Kinematik !!! (Plot Twist Learn How to Make a Real Time Interface in ARDUINO Using PROCESSING !!!!): Ein SCARA-Roboter ist eine sehr beliebte Maschine in der Industriewelt. Der Name steht sowohl für Selective Compliant Assembly Robot Arm als auch für Selective Compliant Articulated Robot Arm. Es ist im Grunde ein Roboter mit drei Freiheitsgraden, da er die ersten beiden Displ
So richten Sie einen Windows-Kernel-Debugger über Ihr Netzwerk ein – wikiHow
So richten Sie einen Windows-Kernel-Debugger über Ihr Netzwerk ein: Das Debuggen ist ein beliebtes Tool, das verwendet wird, um die Ursache eines Fehlers zu ermitteln. Ein Fehler kann sich auf viele verschiedene Arten manifestieren. Es kann einen Systemabsturz verursachen (Bluescreen/BSOD), es kann einen Anwendungsabsturz verursachen, es kann dazu führen, dass Ihr System einfriert, um z
Steuern Sie Geräte über das Internet über den Browser. (IoT): 6 Schritte
Steuern Sie Geräte über das Internet über den Browser. (IoT): In diesem Instructable zeige ich Ihnen, wie Sie Geräte wie LEDs, Relais, Motoren usw. über das Internet über einen Webbrowser steuern können. Und Sie können über jedes Gerät sicher auf die Bedienelemente zugreifen. Die Webplattform, die ich hier verwendet habe, ist RemoteMe.org visit