Inhaltsverzeichnis:

Entwerfen eines Mikrocontroller-Entwicklungsboards - Gunook
Entwerfen eines Mikrocontroller-Entwicklungsboards - Gunook

Video: Entwerfen eines Mikrocontroller-Entwicklungsboards - Gunook

Video: Entwerfen eines Mikrocontroller-Entwicklungsboards - Gunook
Video: How to use MicroPython on Your Arduino? 2024, September
Anonim
Entwerfen eines Mikrocontroller-Entwicklungsboards
Entwerfen eines Mikrocontroller-Entwicklungsboards

Sind Sie ein Hersteller, Bastler oder Hacker, der daran interessiert ist, von Perfboard-Projekten, DIP-ICs und hausgemachten Leiterplatten zu mehrschichtigen Leiterplatten zu wechseln, die von Boardhouses und SMD-Gehäusen für die Massenproduktion hergestellt werden? Dann ist dieses instructable für Sie!

In dieser Anleitung wird beschrieben, wie Sie eine Multilayer-Leiterplatte entwerfen, am Beispiel einer Mikrocontroller-Entwicklungsplatine.

Ich habe KiCAD 5.0 verwendet, ein kostenloses und Open-Source-EDA-Tool, um die Schaltpläne und das PCB-Layout für dieses Entwicklungsboard zu erstellen.

Wenn Sie mit KiCAD oder dem Workflow für das PCB-Layout nicht vertraut sind, sind die Tutorials von Chris Gamell auf YouTube ein guter Anfang.

EDIT: Einige der Fotos zoomen zu stark heran, klicken Sie einfach auf das Bild, um das ganze Bild zu sehen:)

Schritt 1: Denken Sie an die Komponentenverpackung

Denken Sie an die Verpackung von Komponenten
Denken Sie an die Verpackung von Komponenten

SMDs (Surface Mount Devices) können mit einer Bestückungsmaschine auf einer Leiterplatte positioniert werden, wodurch der Bestückungsprozess automatisiert wird. Sie können die Leiterplatte dann durch einen Reflow-Ofen oder eine Wellenlötmaschine laufen lassen, wenn Sie auch Durchgangslochkomponenten haben.

Auch die Komponentenanschlüsse für kleinere SMDs werden reduziert, was zu einer wesentlich geringeren Impedanz, Induktivität und EMI führt, eine sehr gute Sache, insbesondere für HF- und Hochfrequenz-Designs.

Der Weg zur Oberflächenmontage verbessert auch die mechanische Leistung und Robustheit, was für Vibrations- und mechanische Belastungstests wichtig ist.

Schritt 2: Wählen Sie Ihren Mikrocontroller

Wählen Sie Ihren Mikrocontroller
Wählen Sie Ihren Mikrocontroller

Das Herzstück jedes Mikrocontroller-Entwicklungsboards, wie des Arduino und seiner Derivate, ist ein Mikrocontroller. Im Falle des Arduino Uno ist dies der ATmega 328P. Für unser Dev-Board verwenden wir den ESP8266.

Es ist spottbillig, läuft mit 80 MHz (und ist auf 160 MHz übertaktbar) UND verfügt über ein integriertes WiFi-Subsystem. Als eigenständiger Mikrocontroller kann er bestimmte Operationen bis zu 170x schneller ausführen als ein Arduino.

Schritt 3: Wählen Sie Ihren USB-zu-Seriell-Konverter

Wählen Sie Ihren USB-zu-Seriell-Konverter
Wählen Sie Ihren USB-zu-Seriell-Konverter

Ein Mikrocontroller muss mit Ihrem Computer verbunden werden, damit Sie Ihre Programme darauf laden können. Dies wird normalerweise durch einen externen Chip erreicht, der für die Übersetzung zwischen den Differenzsignalen sorgt, die vom USB-Port Ihres Computers verwendet werden, und der Single-Ended-Signalisierung, die auf den meisten Mikrocontrollern über ihre seriellen Kommunikationsperipheriegeräte wie UART verfügbar ist.

In unserem Fall verwenden wir einen FT230X von FTDI. USB-zu-Seriell-Chips von FTDI werden in der Regel von den meisten Betriebssystemen gut unterstützt, daher ist dies eine sichere Sache für ein Entwicklerboard. Beliebte Alternativen (billigere Optionen) sind der CP2102 von SiLabs und der CH340G.

Schritt 4: Wählen Sie Ihren Regler

Wählen Sie Ihren Regler
Wählen Sie Ihren Regler

Das Board muss irgendwo mit Strom versorgt werden - und in den meisten Fällen wird dieser Strom über einen Linearregler-IC bereitgestellt. Linearregler sind billig, einfach und, obwohl sie nicht so effizient wie ein Schaltmodusschema sind, bieten saubere Leistung (weniger Rauschen) und einfache Integration.

Der AMS1117 ist der beliebteste Linearregler, der in den meisten Entwicklungsplatinen verwendet wird, und auch eine ziemlich gute Wahl für unsere Entwicklungsplatine.

Schritt 5: Wählen Sie Ihr Power-OR-ing-Schema

Wählen Sie Ihr Power-OP-Schema
Wählen Sie Ihr Power-OP-Schema

Wenn Sie den Benutzer die Entwicklungsplatine über USB mit Strom versorgen lassen und auch einen Spannungseingang über einen der Pins auf der Platine anbieten möchten, müssen Sie zwischen den beiden konkurrierenden Spannungen wählen. Dies wird am einfachsten durch die Verwendung von Dioden erreicht, die nur die höhere Eingangsspannung passieren lassen und den Rest der Schaltung mit Strom versorgen.

In unserem Fall haben wir zu diesem Zweck eine duale Schottky-Barriere, die zwei Schottky-Dioden auf einem einzigen Gehäuse enthält.

Schritt 6: Wählen Sie Ihre Peripheriechips (falls vorhanden)

Wählen Sie Ihre Peripheriechips (falls vorhanden)
Wählen Sie Ihre Peripheriechips (falls vorhanden)
Wählen Sie Ihre Peripheriechips (falls vorhanden)
Wählen Sie Ihre Peripheriechips (falls vorhanden)

Sie können Chips als Schnittstelle zu Ihrem ausgewählten Mikrocontroller hinzufügen, um die Benutzerfreundlichkeit oder Funktionalität Ihres Entwicklungsboards für seine Benutzer zu verbessern.

In unserem Fall hat der ESP8266 nur einen einzigen analogen Eingangskanal und sehr wenige nutzbare GPIOs.

Um dies zu beheben, werden wir einen externen Analog-Digital-Wandler-IC und einen GPIO-Expander-IC hinzufügen.

Die Auswahl eines ADC ist in der Regel ein Kompromiss zwischen Konvertierungsrate oder -geschwindigkeit und Auflösung. Höhere Auflösungen sind nicht unbedingt besser, da Chips, die höhere Auflösungen aufweisen, weil sie unterschiedliche Abtasttechniken verwenden, oft sehr langsame Abtastraten haben. Typische SAR-ADCs haben Abtastraten von über Hunderttausenden von Samples pro Sekunde, während Delta-Sigma-ADCs mit höherer Auflösung normalerweise nur eine Handvoll Samples pro Sekunde verarbeiten können – eine Welt von den schnellen SAR-ADCs und den blitzschnellen Pipeline-ADCs entfernt.

Der MCP3208 ist ein 12-Bit-ADC mit 8 analogen Kanälen. Es kann überall zwischen 2,7V-5,5V betrieben werden und hat eine maximale Abtastrate von 100kps.

Das Hinzufügen eines MCP23S17, eines beliebten GPIO-Expanders, führt dazu, dass 16 GPIO-Pins zur Verfügung stehen.

Schritt 7: Schaltungsdesign

Schaltungsdesign
Schaltungsdesign

Die Stromversorgungsschaltung verwendet zwei Schottky-Dioden, um eine einfache ODER-Verknüpfung für den Stromeingang bereitzustellen. Dies führt zu einem Kampf zwischen 5 V, die vom USB-Anschluss kommen, und dem, was Sie dem VIN-Pin zur Verfügung stellen möchten - der Gewinner des Elektronenkampfs geht an die Spitze und versorgt den AMS1117-Regler mit Strom. Eine bescheidene SMD-LED dient als Indikator dafür, dass der Rest der Platine tatsächlich mit Strom versorgt wird.

Die USB-Schnittstellenschaltung verfügt über eine Ferritperle, um zu verhindern, dass Streu-EMI und die verrauschten Taktsignale in Richtung des Computers eines Benutzers abgestrahlt werden. Die Serienwiderstände auf den Datenleitungen (D+ und D-) bieten eine grundlegende Flankenratensteuerung.

Der ESP8266 verwendet GPIO 0, GPIO 2 und GPIO 15 als spezielle Eingangspins und liest ihren Status beim Booten, um zu bestimmen, ob im Programmiermodus gestartet werden soll, sodass Sie über Serie kommunizieren können, um den Chip- oder Flash-Boot-Modus zu programmieren, der Ihr Programm startet. GPIO 2 und GPIO 15 müssen während des Bootvorgangs auf logisch hoch bzw. logisch niedrig bleiben. Wenn GPIO 0 beim Booten niedrig ist, gibt der ESP8266 die Kontrolle auf und ermöglicht es Ihnen, Ihr Programm im Flash-Speicher zu speichern, der mit dem Modul verbunden ist. Wenn GPIO 0 hoch ist, startet der ESP8266 das letzte im Flash gespeicherte Programm und Sie können loslegen.

Zu diesem Zweck bietet unser Entwicklungsboard Boot- und Reset-Schalter, mit denen Benutzer den Zustand von GPIO 0 umschalten und das Gerät zurücksetzen können, um den Chip in den gewünschten Programmiermodus zu versetzen. Ein Pull-Up-Widerstand sorgt dafür, dass das Gerät standardmäßig in den normalen Boot-Modus startet und das zuletzt gespeicherte Programm startet.

Schritt 8: PCB-Design und Layout

PCB-Design und Layout
PCB-Design und Layout

Das PCB-Layout wird kritischer, wenn es um Hochgeschwindigkeits- oder Analogsignale geht. Insbesondere analoge ICs sind empfindlich gegenüber Grundrauschproblemen. Masseebenen haben die Fähigkeit, eine stabilere Referenz für die interessierenden Signale bereitzustellen, wodurch Rauschen und Störungen reduziert werden, die typischerweise durch Masseschleifen verursacht werden.

Analoge Spuren müssen von digitalen Hochgeschwindigkeitsspuren ferngehalten werden, wie z. B. den differentiellen Datenleitungen, die Teil des USB-Standards sind. Die Spuren der differentiellen Datensignale sollten so kurz wie möglich gemacht werden und der Spurlänge angepasst sein. Vermeiden Sie Windungen und Durchkontaktierungen, um Reflexionen und Impedanzschwankungen zu reduzieren.

Die Verwendung einer Sternkonfiguration zur Stromversorgung von Geräten (vorausgesetzt, Sie verwenden nicht bereits eine Stromebene) hilft auch, das Rauschen zu reduzieren, indem Stromrückwege eliminiert werden.

Schritt 9: PCB-Stack-Up

PCB-Stack-Up
PCB-Stack-Up

Unser Entwicklungsboard ist auf einem 4-lagigen PCB-Stack mit einer dedizierten Powerplane und Groundplane aufgebaut.

Ihr „Stack-up“ist die Reihenfolge der Schichten auf Ihrer Leiterplatte. Die Anordnung der Schichten beeinflusst die EMI-Konformität Ihres Designs sowie die Signalintegrität Ihrer Schaltung.

Zu den Faktoren, die Sie bei Ihrem PCB-Stack-up berücksichtigen sollten, gehören:

  1. Die Anzahl der Schichten
  2. Die Reihenfolge der Schichten
  3. Abstand zwischen den Schichten
  4. Der Zweck jeder Schicht (Signal, Ebene usw.)
  5. Schichtdicke
  6. Kosten

Jeder Stapel hat seine eigenen Vor- und Nachteile. Ein 4-Schicht-Board erzeugt ungefähr 15 dB weniger Strahlung als ein 2-Schicht-Design. Mehrschichtplatinen weisen eher eine vollständige Masseebene, eine abnehmende Masseimpedanz und ein Referenzrauschen auf.

Schritt 10: Weitere Überlegungen zu PCB-Schichten und Signalintegrität

Weitere Überlegungen zu PCB-Schichten und Signalintegrität
Weitere Überlegungen zu PCB-Schichten und Signalintegrität

Signalschichten sollten idealerweise entweder neben einer Strom- oder Masseebene liegen, mit minimalem Abstand zwischen der Signalschicht und ihrer jeweiligen nahegelegenen Ebene. Dies optimiert den Signalrückweg, der durch die Referenzebene verläuft.

Strom- und Masseebenen können verwendet werden, um eine Abschirmung zwischen Schichten bereitzustellen, oder als Abschirmung für innere Schichten.

Eine Strom- und Masseebene, wenn sie nebeneinander platziert werden, führt zu einer Kapazität zwischen den Ebenen, die normalerweise zu Ihren Gunsten arbeitet. Diese Kapazität skaliert mit der Fläche Ihrer Leiterplatte sowie ihrer Dielektrizitätskonstante und ist umgekehrt proportional zum Abstand zwischen den Ebenen. Diese Kapazität eignet sich gut, um ICs zu bedienen, die einen volatilen Versorgungsstrombedarf aufweisen.

Schnelle Signale werden idealerweise in den inneren Schichten von Multilayer-PCBs gespeichert, um die von den Leiterbahnen erzeugte EMI einzudämmen.

Je höher die Frequenzen, die auf dem Board behandelt werden, desto strenger sind diese Idealvorgaben einzuhalten. Niedriggeschwindigkeits-Designs kommen wahrscheinlich mit weniger Schichten oder sogar einer einzigen Schicht aus, während Hochgeschwindigkeits- und HF-Designs ein komplizierteres PCB-Design mit einem strategischeren PCB-Stack-up erfordern.

Hochgeschwindigkeitskonstruktionen zum Beispiel sind anfälliger für den Skin-Effekt – die Beobachtung, dass bei hohen Frequenzen der Stromfluss nicht durch den gesamten Körper eines Leiters dringt, was wiederum bedeutet, dass der Grenznutzen der Erhöhung abnimmt die Dicke des Kupfers bei einer bestimmten Frequenz, da das zusätzliche Leitervolumen sowieso nicht genutzt wird. Bei etwa 100 MHz beträgt die Skin-Tiefe (die Dicke des tatsächlich durch den Leiter fließenden Stroms) etwa 7 µm, was sogar Standard 1 Unze bedeutet. dicke Signalschichten werden zu wenig genutzt.

Schritt 11: Eine Randnotiz zu Vias

Eine Randnotiz zu Vias
Eine Randnotiz zu Vias

Vias bilden Verbindungen zwischen den verschiedenen Schichten einer Multilayer-Leiterplatte.

Die Art der verwendeten Durchkontaktierungen wirkt sich auf die Kosten der PCB-Produktion aus. Blinde/vergrabene Vias kosten in der Herstellung mehr als Durchgangsloch-Vias. Ein Durchgangsloch durchstanzt die gesamte Leiterplatte und endet an der untersten Schicht. Burried Vias sind im Inneren versteckt und verbinden nur innere Lagen, während Blind Vias auf einer Seite der Leiterplatte beginnen, aber vor der anderen enden. Through Hole Vias sind die billigsten und am einfachsten herzustellenden Vias, wenn sie für den Kosteneinsatz optimiert werden.

Schritt 12: PCB-Herstellung und -Bestückung

PCB-Herstellung und -Bestückung
PCB-Herstellung und -Bestückung

Nachdem die Platine nun entworfen wurde, möchten Sie das Design als Gerber-Dateien von Ihrem EDA-Tool Ihrer Wahl ausgeben und sie zur Herstellung an ein Boardhouse senden.

Ich habe meine Boards von ALLPCB herstellen lassen, aber Sie können jeden Board-Shop für die Herstellung verwenden. Ich würde dringend empfehlen, PCB Shopper zu verwenden, um Preise zu vergleichen, wenn Sie entscheiden, welches Leiterplattenhaus Sie für die Fertigung auswählen möchten - damit Sie in Bezug auf Preise und Funktionen vergleichen können.

Einige der Platinenhäuser bieten auch PCB-Bestückung an, die Sie wahrscheinlich benötigen, wenn Sie dieses Design implementieren möchten, da es hauptsächlich SMD- und sogar QFN-Teile verwendet.

Schritt 13: Das ist alles Leute

Das war's Leute!
Das war's Leute!

Dieses Entwicklungsboard heißt "Clouduino Stratus", ein ESP8266-basiertes Entwicklungsboard, das ich entwickelt habe, um den Prototyping-Prozess für ein Hardware-/IOT-Startup zu beschleunigen.

Es ist immer noch eine sehr frühe Iteration des Designs, mit neuen Überarbeitungen, die in Kürze folgen.

Ich hoffe, Sie haben viel aus dieser Anleitung gelernt!:D

Schritt 14: Bonus: Komponenten, Gerber, Designdateien und Danksagungen

[Mikrocontroller]

1x ESP12F

[Peripheriegeräte]

1 x MCP23S17 GPIO-Expander (QFN)

1 x MCP3208-ADC (SOIC)

[Anschlüsse und Schnittstellen]

1 x FT231XQ USB auf Seriell (QFN)

1 x USB-B-Mini-Anschluss

2 x 16-polige Buchsen-/Steckerleisten

[Leistung] 1 x AMS1117 - 3.3-Regler (SOT-223-3)

[Andere]

1 x ECQ10A04-F Dual-Schottky-Barriere (TO-252)

2 x BC847W (SOT323)

7 x 10K 1% SMD 0603 Widerstände

2 x 27 Ohm 1% SMD 0603 Widerstände

3 x 270 Ohm 1% SMD 0603 Widerstände

2 x 470 Ohm 1% SMD 0603 Widerstände

3 x 0.1uF 50V SMD 0603 Kondensator

2 x 10uF 50V SMD 0603 Kondensator

1 x 1uF 50V SMD 0603 Kondensator

2 x 47pF 50V SMD 0603 Kondensator

1 x SMD-LED 0603 Grün

1 x SMD-LED 0603 Gelb

1 x SMD-LED 0603 Blau

2 x OMRON BF-3 1000 THT Taktschalter

1 x Ferritperle 600/100mhz SMD 0603

[Danksagungen]ADC-Grafiken mit freundlicher Genehmigung von TI App Notes

MCU-Benchmark:

PCB-Illustrationen: Fineline

Empfohlen: