Inhaltsverzeichnis:
- Schritt 1: Designübersicht
- Schritt 2: Firmware
- Schritt 3: Testen des Geräts
- Schritt 4: Was kann es noch tun?
Video: USB-Innen-/Außenthermometer (oder 'Mein erstes USB-Gerät'): - Gunook
2024 Autor: John Day | [email protected]. Zuletzt bearbeitet: 2024-01-30 07:21
Dies ist ein einfaches Design, das das USB-Peripheriegerät auf den PIC 18Fs demonstriert. Es gibt eine Reihe von Beispielen für die 18F4550 40-Pin-Chips online. Dieses Design zeigt die kleinere 18F2550 28-Pin-Version. Die Leiterplatte verwendet SMD-Teile, aber alle Komponenten sind in Durchgangsloch-Versionen erhältlich. Ich verwende SMD-Teile, weil es schneller ist, die Platine ohne Bohren von Löchern herzustellen. Das Endergebnis ist ein kleines USB-Peripheriegerät, das Innen- und Außentemperaturen misst. Die Daten stehen dem PC über eine virtuelle serielle Schnittstelle zur Verfügung. Im Beispiel werden Temperatursensoren verwendet, aber andere analoge Sensoren können hinzugefügt werden. PSSehen Sie hier ein Live-Diagramm der Daten meines Loggers: Graph
Schritt 1: Designübersicht
Erforderliche PIC-Komponenten
Dieses USB-Peripheriegerät basiert auf dem 28-poligen PIC 18F2550. Dieser Chip hat alles, was für eine Full-Speed-USB-Schnittstelle benötigt wird. Ein 0,1uf Kondensator zwischen Strom und Masse entkoppelt den PIC von der Stromversorgung. Ein 20-MHz-Quarz (wird verwendet, um einen internen 48-MHz-Takt zu erzeugen) und zwei 27pf-Kondensatoren. Ein 10K-Widerstand von der Stromversorgung zum MCLR-Pin. Ich habe eine 1n4148-äquivalente Diode zwischen dem Widerstand und der Stromversorgung hinzugefügt, damit die während der Programmierung am MCLR angelegten 13 + Volt keine anderen Komponenten auf der Platine beschädigen. Ein ICSP-Header (5 Pins) wird verwendet, um das Gerät zu programmieren und zu debuggen. Erforderliches USB-Material Eine USB-Buchse vom Typ „B“. Für den internen USB-Spannungsregler sind 220nf-440nf Kapazität erforderlich. Ich verwende zwei 0.1uf Kondensatoren (die gleichen wie zum Entkoppeln) ohne Probleme. Eine LED mit 330 Ohm Strombegrenzungswiderstand wird verwendet, um den USB-Verbindungsstatus anzuzeigen. Erforderliches Sensormaterial Ich habe den Temperatursensor des Mikrochips TC1047A als Innentemperatursensor verwendet. Es ist physisch mit der Platine verlötet - dadurch wird es einige Grad heißer als Raumtemperatur. Ein Header wird verwendet, um einen Außentemperaturfühler (TO-92-Version von TC1047a) anzuschließen. Ein zusätzlicher 0,1-Uf-Kondensator hilft, einen langen Drahtverlauf vom Rest der Platine zu entkoppeln. Die USB-Spannungspegel sind nicht konsistent genug, um die Temperatur von den analogen Sensoren genau zu messen und zu berechnen. Es wird eine externe Spannungsreferenz (MCP1525, 2,5 Volt) verwendet. Die Spannungsreferenz erfordert einen Kondensator am Ausgang von 1uf bis 10uf. Ohne diesen Kondensator funktioniert die Spannungsreferenz nicht.
Schritt 2: Firmware
Die Firmware verwendet die CDC-USB-Klasse, um einen seriellen Port zu emulieren. Das Gerät wird als virtueller COM-Port auf einem PC angezeigt. Die Firmware ist in drei Abschnitte unterteilt: 1. Der USB-Treiber sorgt dafür, dass das Gerät auf einem PC enumeriert und ein COM-Port emuliert wird. 2. Eine Serviceroutine liest abwechselnd die Temperaturwerte und wandelt sie in ein lesbares Format um. Durch die gleichzeitige Ausführung dieser beiden Vorgänge wurde die Verbindung des USB-Geräts mit dem PC unterbrochen (Zeitfresser). Das Konvertieren der Gleitkommawerte in einen String im Servicezyklus nach der Konvertierung beseitigte das Verbindungsproblem.* 3. Schließlich empfängt eine Hauptroutine vom PC gesendete Bytes und gibt die angeforderten Messwerte zurück. Mehrere Messwerte werden durch ein Komma getrennt, Zeilen werden mit einem Nullzeichen abgeschlossen (hex 0x00) Die Demo-Firmware akzeptiert folgende Befehle:Hex-Wert Returns0x00 Innentemperatur (On-Board-Sensor)0x01 Außentemperatur (externer Header)0x02 Beide Temperaturen (Komma.) getrennt) Die Temperatur wird basierend auf der 2,5-Volt-Referenz und dem Offset und der Steigung des Microchip TC1047A berechnet. Andere Temperatursensoren können andere Eigenschaften haben. Das Datenblatt zum TC1047A ist hier verfügbar: https://ww1.microchip.com/downloads/en/DeviceDoc/21498c.pdfDie Firmware wird in MPLAB mit dem Demo-Compiler PIC C18 geschrieben. https://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=1406&dDocName=en010014&part=SW006011Die eigentliche USB-Firmware wird von Microchip bereitgestellt. Die Originalumgebung ist hier verfügbar:https://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=1824&appnote=en021631So bearbeiten Sie die Firmware: Extrahieren Sie die gesamte Verzeichnisstruktur der Quelle in Ihr Stammverzeichnis (c:\MCHPFSUSB). Sie können dann die Workspace-Datei in MPLAB laden.*Die Float-to-String-Routine ist ein Ressourcenfresser. Um das Konnektivitätsproblem zu umgehen, wird die USB-Service-Routine an verschiedenen Stellen in der float2string-Routine aufgerufen. Dies lässt sich am besten beheben, indem das USB-Peripheriegerät bei einem Interrupt gewartet wird. Ich habe den Hack verwendet, damit die Firmware so nah wie möglich an der Referenzversion blieb.
Schritt 3: Testen des Geräts
Die Anweisungen gelten für Windows, aber das Gerät kann an alles angeschlossen werden, das über CDC-Emulationstreiber für die serielle Schnittstelle verfügt.
Programmieren Sie das Gerät mit der Firmware. Alle Konfigurationsbits sollten in der Firmware richtig gesetzt sein. Stecken Sie das Gerät in einen USB-Port. Windows erkennt es und fordert Sie auf, einen Treiber auszuwählen. STELLEN SIE SICHER, KLICKEN SIE AUF „BENUTZERDEFINIERTEN TREIBER DURCHSUCHEN“. Navigieren Sie zum Speicherort der.inf-Datei, die im Projektarchiv enthalten ist (driver-win2k_winxp). Windows verwendet diese Datei, um das Gerät zu installieren. *Ein Hinweis zum CDC-Treiber – der CDC-Emulationstreiber für die serielle Schnittstelle ist in Windows enthalten. Die.inf-Datei (von Microchip bereitgestellt) weist Windows einfach an, diese Treiber mit dem Gerät zu verbinden. Um herauszufinden, welcher COM-Port dem Gerät zugewiesen wurde, gehen Sie wie folgt vor: Gehen Sie zur Systemsteuerung (Start->Einstellungen->Systemsteuerung) Doppelklicken Sie auf „System“Klicken Sie auf die Registerkarte „Hardware“. Klicken Sie auf „Gerätemanager“. Klicken Sie auf das „+“neben den Ports. Eine Liste der COM-Ports des Systems wird angezeigt. Ich habe gesehen, dass das Gerät als COM 3 und 4 angezeigt wird, aber es variiert je nach System. Wenn nicht offensichtlich ist, welcher Port neu ist, versuchen Sie Folgendes: Trennen Sie das Gerät vom USB-Port. Einer der Ports wird verschwinden. Dies ist die COM-Port-Nummer des Geräts. Stecken Sie das Gerät wieder ein, der Port wird wieder angezeigt. Die kleine VB-Anwendung (Quelle enthalten) kann verwendet werden, um das Gerät zu testen. Geben Sie den zu sendenden Befehl ein, klicken Sie auf 'Start'. Die Antwort wird im Fenster angezeigt.
Schritt 4: Was kann es noch tun?
Dieses Demonstrationsboard ist ein guter Ausgangspunkt für eine kleine Heimwetterstation: Fügen Sie einen HIH3160-Feuchtigkeitssensor hinzu oder ersetzen Sie den analogen Temperatursensor durch den hochgenauen seriellen Temperatur- und Feuchtigkeitssensor Sensiron HT74. Fügen Sie einen Freescale MPX(a)4115-Drucksensor hinzu barometrischen Druck messen. Möchten Sie diese Daten mit dem Web synchronisieren? Es in Ihre eigene Website einbinden, in Google Earth anzeigen oder Updates in Ihrem RSS-Reed erhalten? Sehen Sie sich diese Anleitung zur Integration dieses Geräts mit dem syndicIT.com-Web-Backend an:
Empfohlen:
Dein erstes Computerprogramm schreiben – wikiHow
Schreiben Ihres ersten Computerprogramms: Warum Programmieren? Computerprogrammierung oder „Codieren“scheint sehr einschüchternd. Sie denken vielleicht nicht, dass Sie nicht genug über Computer wissen und fürchten die Idee, Probleme zu beheben, die auf Ihrem persönlichen Laptop auftauchen. Wenn Sie glauben, dass Ihr
So schreiben Sie Ihr erstes Java-Programm: 5 Schritte
So schreiben Sie Ihr erstes Java-Programm: Dieses Tutorial zeigt Ihnen, wie Sie Schritt für Schritt Ihr erstes Java-Programm schreiben
Glücklicher Fuchs! (Erstes Element eines großen Projekts): 7 Schritte (mit Bildern)
Glücklicher Fuchs! (Erstes Element eines großen Projekts): Ein weiteres kleines Projekt ist auf mich zugekommen, es wird eine Reihe kleiner Projekte beinhalten, die irgendwann zusammenkommen werden. Dies ist das erste Element, ein Fuchs mit einem wackeligen Schwanz, der wie von selbst auftaucht und verschwindet Magie:)
Erstellen Sie Ihr erstes C++-Programm (Windows): 12 Schritte
Erstellen Ihres ersten C++-Programms (Windows): Hallo angehende Programmierer! Möchten Sie Ihren Freunden mitteilen können, dass Sie ein Programm erstellt haben? Vielleicht suchen Sie einfach nur nach einem guten Startplatz, um zu sehen, ob dies ein interessantes Hobby ist? Es spielt keine Rolle, wie vertraut Sie mit Navi sind
Meistere die Wunder von Samuel B.F. Morse! (Mein erstes Instructable): 3 Schritte
Meistere die Wunder von Samuel B.F. Morse! (Mein erstes Instructable): Hey Leute, heute zeige ich Ihnen, wie man einen einfachen Telegraphen für unter 10 US-Dollar macht. Dies ist ein einfaches Konzept für eine Einzelperson-Telegraphentaste und einen Klicker. Die Idee ist, eine Wäscheklammer zu verwenden, um den Knopf und einen Akku mit Hilfe eines Summers zu machen