- Grundlegendes zum ADC-Modul:
- Schaltplan:
- Programmieren Ihres MSP430 für ADC:
- Testen Sie Ihr Ergebnis!
Eine gemeinsame Funktion, die in fast jeder eingebetteten Anwendung verwendet wird, ist das ADC-Modul (Analog-Digital-Wandler). Diese Analog-Digital-Wandler können die Spannung von analogen Sensoren wie Temperatursensor, Neigungssensor, Stromsensor, Flex-Sensor und vielem mehr lesen. In diesem Tutorial erfahren Sie, wie Sie mit ADC in MSP430G2 analoge Spannungen mit der Energia IDE lesen. Wir werden ein kleines Potentiometer an die MSP-Karte anschließen und einen analogen Pin mit einer variierenden Spannung versorgen, die Spannung ablesen und auf dem seriellen Monitor anzeigen.
Grundlegendes zum ADC-Modul:
Vertrauen Sie mir, es würde kaum 10 Minuten dauern, den MSP430G2 anzuschließen und zu programmieren, um die analoge Spannung zu lesen. Lassen Sie uns jedoch einige Zeit damit verbringen, das ADC-Modul in der MSP-Karte zu verstehen, damit wir es in all unseren bevorstehenden Projekten effektiv einsetzen können.
Ein Mikrocontroller ist ein digitales Gerät, dh er kann nur Einsen und Nullen verstehen. In der realen Welt ist jedoch fast alles wie Temperatur, Luftfeuchtigkeit, Windgeschwindigkeit usw. analoger Natur. Um mit diesen analogen Änderungen zu interagieren, verwendet der Mikrocontroller ein Modul namens ADC. Es gibt viele verschiedene Arten von ADC-Modulen. Das in unserem MSP verwendete ist der SAR 8-Kanal-10-Bit- ADC.
SAR-ADC (Sukzessive Approximation): Der SAR-ADC arbeitet mit Hilfe eines Komparators und einiger logischer Konversationen. Dieser ADC-Typ verwendet eine Referenzspannung (die variabel ist) und vergleicht die Eingangsspannung mit der Referenzspannung unter Verwendung eines Komparators, und die Differenz, die ein digitaler Ausgang ist, wird aus dem höchstwertigen Bit (MSB) gespeichert. Die Geschwindigkeit des Vergleichs hängt von der Taktfrequenz (Fosc) ab, auf der der MSP arbeitet.
10-Bit-Auflösung: Dieser ADC ist ein 8-Kanal-10-Bit-ADC. Hier impliziert der Begriff 8-Kanal, dass es 8 ADC-Pins gibt, mit denen wir die analoge Spannung messen können. Der Begriff 10-Bit impliziert die Auflösung des ADC. 10-Bit bedeutet 2 hoch zehn (2 10), was 1024 entspricht. Dies ist die Anzahl der Abtastschritte für unseren ADC, sodass der Bereich unserer ADC-Werte von 0 bis 1023 reicht. Der Wert erhöht sich von 0 auf 1023 basierend auf dem Wert der Spannung pro Schritt, der unter Verwendung der folgenden Formel berechnet werden kann
Hinweis: Standardmäßig wird in Energia die Referenzspannung auf Vcc (~ 3 V) eingestellt . Sie können die Referenzspannung mithilfe der Option analogReference () variieren.
Überprüfen Sie auch, wie ADC mit anderen Mikrocontrollern verbunden wird:
- Wie verwende ich ADC in Arduino Uno?
- Schnittstelle zwischen ADC0808 und 8051-Mikrocontroller
- Verwenden des ADC-Moduls des PIC-Mikrocontrollers
- Raspberry Pi ADC Tutorial
Schaltplan:
In unserem vorherigen Tutorial haben wir bereits gelernt, wie man LCD mit MSP430G2 verbindet. Jetzt fügen wir dem MSP430 nur ein Potentiometer hinzu, um ihm eine variable Spannung zuzuführen und den Spannungswert auf dem LCD anzuzeigen. Wenn Sie nicht wissen, dass das LCD angeschlossen ist, greifen Sie auf den obigen Link zurück und lesen Sie ihn durch, da ich die Informationen überspringen werde, um Reue zu vermeiden. Das vollständige Schaltbild des Projekts ist unten angegeben.
Wie Sie sehen, werden hier zwei Potentiometer verwendet, von denen eines zum Einstellen des LCD-Kontrasts und das andere zum Versorgen der Platine mit einer variablen Spannung verwendet wird. Bei diesem Potentiometer ist ein äußeres Ende des Potentiometers mit dem Vcc und das andere Ende mit Masse verbunden. Der mittlere Pin (blauer Draht) ist mit dem Pin P1.7 verbunden. Dieser Pin P1.7 liefert eine variable Spannung von 0 V (Masse) bis 3,5 V (Vcc). Wir müssen also den Pin P1.7 programmieren, um diese variable Spannung zu lesen und auf dem LCD anzuzeigen.
In Energia müssen wir wissen, zu welchem analogen Kanal der Pin P1.7 gehört? Dies finden Sie anhand des folgenden Bildes
Auf der rechten Seite sehen Sie den Pin P1.7, dieser Pin gehört zu A7 (Kanal 7). Ebenso können wir die jeweilige Kanalnummer auch für andere Pins finden. Sie können hier beliebige Pins von A0 bis A7 zum Lesen von analogen Spannungen verwenden. Ich habe A7 ausgewählt.
Programmieren Ihres MSP430 für ADC:
Das Programmieren Ihres MSP430 zum Lesen der analogen Spannung ist sehr einfach. In diesem Programm wird das Analog des Werts gelesen und die Spannung mit diesem Wert berechnet und dann beide auf dem LCD-Bildschirm angezeigt. Das vollständige Programm finden Sie unten auf dieser Seite. Weiter unten erkläre ich das Programm in Ausschnitten, damit Sie es besser verstehen.
Wir beginnen mit der Definition von LCD-Pins. Diese definieren, an welchen Pin des MSP430 die LCD-Pins angeschlossen sind. Sie können auf Ihre Verbindung verweisen, um sicherzustellen, dass die Pins jeweils verbunden sind
#define RS 2 #define EN 3 #define D4 4 #define D5 5 #define D6 6 #define D7 7
Als nächstes fügen wir die Header-Datei für die LCD-Anzeige hinzu. Dies ruft die Bibliothek auf, die den Code enthält, wie der MSP mit dem LCD kommunizieren soll. Diese Bibliothek wird standardmäßig in der Energia IDE installiert, sodass Sie sie nicht hinzufügen müssen. Stellen Sie außerdem sicher, dass die Funktion Flüssigkristall mit den oben definierten Pin-Namen aufgerufen wird.
#einschließen
In unserer setup () -Funktion geben wir nur eine Intro-Nachricht aus, die auf dem LCD-Bildschirm angezeigt wird. Ich gehe nicht viel tiefer, da wir bereits gelernt haben, wie man LCD mit MSP430G2 benutzt.
lcd.begin (16, 2); // Wir verwenden eine 16 * 2 LCD-Anzeige lcd.setCursor (0,0); // Platziere den Cursor in der 1. Zeile 1. Spalte lcd.print ("MSP430G2553"); // Eine Intro-Nachricht anzeigen lcd.setCursor (0, 1); // setze den Cursor auf 1. Spalte 2. Zeile lcd.print ("- CircuitDigest"); // Eine Intro-Nachricht anzeigen
Schließlich beginnen wir innerhalb unserer Endlosschleifenfunktion () , die an den A7-Pin gelieferte Spannung zu lesen. Wie bereits erwähnt, ist der Mikrocontroller ein digitales Gerät und kann den Spannungspegel nicht direkt ablesen. Mit der SAR-Technik wird der Spannungspegel von 0 auf 1024 abgebildet. Diese Werte werden als ADC-Werte bezeichnet. Um diesen ADC-Wert zu erhalten, verwenden Sie einfach die folgende Zeile
int val = analogRead (A7); // Lesen Sie den ADC-Wert von Pin A7
Hier wird die Funktion analogRead () verwendet, um den Analogwert des Pins zu lesen. Wir haben A7 darin angegeben, da wir die variable Spannung an Pin P1.7 angeschlossen haben. Schließlich speichern wir diesen Wert in einer Variablen namens " val ". Der Typ dieser Variablen ist eine Ganzzahl, da nur Werte zwischen 0 und 1024 in dieser Variablen gespeichert werden.
Der nächste Schritt wäre die Berechnung des Spannungswerts aus dem ADC-Wert. Dazu haben wir folgende Formeln
Spannung = (ADC-Wert / ADC-Auflösung) * Referenzspannung
In unserem Fall wissen wir bereits, dass die ADC-Auflösung unseres Mikrocontrollers 1024 beträgt. Der ADC-Wert befindet sich auch in der vorherigen Zeile und speichert die Variable val. Die Referenzspannung ist gleich der Spannung, bei der der Mikrocontroller arbeitet. Wenn die MSP430 Platte über USB - Kabel mit Strom versorgt wird, dann ist die Betriebsspannung 3,6V. Sie können die Betriebsspannung auch mit einem Multimeter über dem Vcc- und Erdungsstift auf der Platine messen. Die obige Formel passt also wie unten gezeigt in unseren Fall
Float-Spannung = (Float (Val) / 1024) * 3,6; // Formeln zum Umwandeln des ADC-Werts in Spannung
Sie könnten mit der Zeile float (val) verwechselt werden . Dies wird verwendet, um die Variable "val" vom Datentyp int in den Datentyp "float" zu konvertieren. Diese Konvertierung ist erforderlich, da wir sie nur dann multiplizieren können, wenn wir das Ergebnis von val / 1024 in float erhalten. 3.6. Wenn der Wert in einer ganzen Zahl empfangen wird, ist er immer 0 und das Ergebnis ist ebenfalls Null. Nachdem wir den ADC-Wert und die Spannung berechnet haben, müssen Sie nur noch das Ergebnis auf dem LCD-Bildschirm anzeigen. Dies kann mithilfe der folgenden Zeilen erfolgen
lcd.setCursor (0, 0); // setze den Cursor auf Spalte 0, Zeile 0 lcd.print ("ADC Val:"); lcd.print (val); // ADC-Wert anzeigen lcd.setCursor (0, 1); // setze den Cursor auf Spalte 0, Zeile 1 lcd.print ("Voltage:"); lcd.print (Spannung); // Spannung anzeigen
Hier haben wir den Wert von ADC in der ersten Zeile und den Wert von Voltage in der zweiten Zeile angezeigt. Schließlich geben wir eine Verzögerung von 100 Millsekunden und löschen den LCD-Bildschirm. Dies war der Wert, der alle 100 mil aktualisiert wird.
Testen Sie Ihr Ergebnis!
Schließlich kommen wir zum lustigen Teil, der unser Programm testet und damit herumspielt. Stellen Sie einfach die Verbindungen wie im Schaltplan gezeigt her. Ich habe ein kleines Steckbrett verwendet, um meine Verbindungen herzustellen, und Überbrückungskabel verwendet, um das Steckbrett mit MSP430 zu verbinden. Sobald die Verbindungen hergestellt sind, sah meine unten so aus.
Laden Sie dann das unten angegebene Programm über die Energia IDE auf die MSP430-Karte hoch. Sie sollten in der Lage sein, den Intro-Text auf dem LCD zu sehen, wenn Sie den Kontrast des LCD nicht mit dem Potentiometer einstellen, bis Sie klare Wörter sehen. Versuchen Sie auch, die Reset-Taste zu drücken. Wenn die Dinge wie erwartet funktionieren, sollte der folgende Bildschirm angezeigt werden.
Variieren Sie nun das Potentiometer und Sie sollten auch sehen, wie die auf dem LCD angezeigte Spannung variiert. Lassen Sie uns überprüfen, ob wir die Spannung dazu korrekt messen. Verwenden Sie ein Multimeter, um die Spannung zwischen der Mitte des POT und der Erde zu messen. Die am Multimeter angezeigte Spannung sollte nahe an dem auf dem LCD angezeigten Wert liegen (siehe Abbildung unten).
Das heißt, wir haben gelernt, wie man die analoge Spannung mit dem ADC der MSP430-Karte misst. Jetzt können wir viele analoge Sensoren mit unserer Karte verbinden, um Echtzeitparameter zu lesen. Ich hoffe, Sie haben das Tutorial verstanden und es genossen, es zu lernen. Wenn Sie Probleme haben, wenden Sie sich bitte an den Kommentarbereich unten oder an die Foren. Lassen Sie uns in einem anderen Tutorial von MSP430 mit einem anderen neuen Thema nachholen.