Digitales Voltmeter mit CloudX - Gunook
Digitales Voltmeter mit CloudX - Gunook
Anonim
Digitales Voltmeter mit CloudX
Digitales Voltmeter mit CloudX

Batterien liefern eine reinere Form von Gleichstrom (Gleichstrom), wenn sie in Schaltkreisen verwendet werden. Ihr niedriges Rauschniveau macht sie immer perfekt für einige sehr empfindliche Schaltungen. Zu Zeiten, in denen ihr Spannungspegel jedoch unter einen bestimmten Schwellenwert sinkt, können die Schaltkreise – (die sie versorgen sollen) ein unberechenbares Verhalten zeigen; vor allem, wenn sie dafür nicht gut ausgelegt sind.

Daher besteht die Notwendigkeit, den Batterieladezustand regelmäßig zu überwachen, um uns richtig zu leiten, wann ein vollständiger Austausch oder ein Aufladen im Falle einer wiederaufladbaren Batterie fällig ist. Daher sollen wir in diesem DIY (Do It Yourself) einen einfachen Batteriespannungsmesser mit dem CloudX entwerfen – mit dem 7Segment als Display.

Schritt 1: Hardware-Anforderung

CloudX-Mikrocontroller-Modul

CloudX-USB

SoftCard

7Segment-Anzeige

Widerstände

Netzteil

Steckbrett

Jumper-(Verbindungs-)Drähte

Schritt 2: CloudX M633 Mikrocontroller

CloudX M633 Mikrocontroller
CloudX M633 Mikrocontroller

CloudX-Mikrocontroller-Modul

Das CloudX-Modul ist ein Hardware-Tool für das Elektronikdesign, das Ihnen eine sehr bequeme und einfache Möglichkeit bietet, über eine einfache Mikrocontroller-Platine mit der physischen Welt zu kommunizieren. Die gesamte Plattform basiert auf einem Open-Source-Physical Computing. Seine Einfachheit einer IDE (Integrated Development Environment) macht es wirklich zu einer perfekten Lösung für Anfänger, behält jedoch genügend Funktionalität, um es fortgeschrittenen Endbenutzern zu ermöglichen, sich zurechtzufinden. Kurz gesagt, CloudX bietet einen viel einfacheren Prozess der Handhabung des Mikrocontrollers – indem die damit verbundenen normalen komplexen Details abstrahiert werden; und bietet gleichzeitig eine sehr reichhaltige Plattform für die Benutzererfahrung. Es findet breite Anwendungsmöglichkeiten in allen Bereichen: Schulen als großartiges Bildungswerkzeug, industrielle und kommerzielle Produkte und als großartiges Werkzeug in den Händen eines Bastlers.

Schritt 3: Pin-Anschlüsse

Pin-Anschlüsse
Pin-Anschlüsse

Die 7-Segment-Pins: A, B, C, D, E, F, G, 1, 2 und 3 sind mit Pin1, Pin2, Pin3, Pin4, Pin5, Pin6, Pin7, Pin8, Pin9 der CloudX-MCU verbunden. Pin10 bzw. Pin11.

Schritt 4: Schaltplan

Schaltplan
Schaltplan

Das Mikrocontroller-Modul, das hier im Mittelpunkt steht, kann eingeschaltet werden:

entweder über die Vin- und Gnd-Punkte (dh sie verbinden sie mit den +ve- bzw. –ve-Klemmen Ihres externen Netzteils) auf der Platine;

oder über Ihr CloudX USB-Softcard-Modul

. Darüber hinaus ist, wie aus dem obigen Schaltplan leicht ersichtlich, die Eingangsbatteriespannung mit dem MCU-(Mikrocontroller-)Modul verbunden, so dass der –Punkt des Spannungsteilernetzwerks (gebildet durch und) mit A0 des MCU-Pins verbunden ist.

und werden so gewählt, dass:

begrenzen Sie die Strommenge, die durch das Netzwerk fließt;

Grenzwert innerhalb eines sicheren Bereichs von (0 – 5)V für die MCU.

Mit der Formel: VOUT = (R2/(R1+R2)) * VIN; und kann leicht ausgewertet werden.

Voutmax = 5V

und für dieses Projekt wählen wir: Vinmax = 50V;

5 = (R2/(R1+R2)) * 50 R1 = 45/5 * R2 Nehmen wir zum Beispiel R2 = 10kΩ; R1 = 45/5 * 10 = 90kΩ

Schritt 5: Funktionsprinzip

Wenn die gemessene Eingangsspannung über den VOUT-Punkt des Spannungsteilernetzwerks gelesen wird, werden die Daten in der MCU weiterverarbeitet, um den endgültigen Istwert auszuwerten, der auf der Segmenteinheit angezeigt wird. Es (das Systemdesign) ist ein automatischer Dezimalpunktplatzierer, indem er (Dezimalpunkt) tatsächlich die Position auf der Anzeigeeinheit selbst gemäß dem, was der Gleitkommawert zu einem bestimmten Zeitpunkt vorschreibt, verschiebt. Anschließend wird die gesamte Hardware 7-Segment-Anzeigeeinheit im Multiplex-Modus verdrahtet. Es ist eine spezielle Anordnung, bei der der gleiche Datenbus (8-Daten-Pins) von der MCU die drei aktiven 7-Segmente in der Anzeigeeinheit speist. Das Senden von Datenmustern in jeden der Komponententeile wird durch einen Prozess erreicht, der als Scannen bezeichnet wird. Scannen ist eine Technik, die das Senden von Daten an jedes der 7-Segmente der Komponente beinhaltet; und Aktivieren (dh Einschalten) sie in schneller Folge, wenn ihre jeweiligen Daten ankommen. Die Adressierung jedes einzelnen von ihnen erfolgt so, dass es gelingt, das menschliche Sehvermögen zu täuschen und zu glauben, dass alle von ihnen (die Bestandteile) gleichzeitig aktiviert (adressiert) werden. Es (Scannen) nutzt einfach ein Phänomen, das als Persistenz des Sehens bekannt ist.

Schritt 6: Das Softwareprogramm

#enthalten

#enthalten

#enthalten

#define segment1 pin9

#define segment2 pin10

#define segment3 pin11

Schwimmerbatt_Spannung;

int Dezimalpunkt, batt;

/*Arrays, die Segmentmuster für jede gegebene Ziffer speichern*/

char CCathodeDisp = {0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07, 0x7F, 0x6F};

char CAnodeDisp = {0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8, 0x80, 0x90};

int disp0, disp1, disp2;

Anzeige() {

unsigniertes Zeichen i;

if(dezimalPunkt < 10) {

disp0 = (int)batt_voltage /100; // holt das MSD (Most Significant Digit)

// am höchsten gewichtet sein

/* holt die nächste gewichtete Ziffer; und so weiter */

disp1 = ((int)batt_voltage % 100)/10;

disp2 = ((int)batt_volt % 10);

}

anders {

disp0 = (int)batt_voltage /1000;

disp1 = ((int)batt_voltage % 1000)/100;

disp2 = ((int)batt_voltage % 100)/10;

}

/*Muster werden zur Anzeige ausgegeben; und 0x80-Zeichen, das einen Dezimalpunkt hinzufügt

wenn die zugehörige Bedingung wahr ist*/

for(i=0; i<50; i++) {

pin9 = pin10 = pin11 = HIGH;

if(dezimalPunkt < 10)

portWrite(1, CCathodeDisp[disp0] | 0x80);

else portWrite(1, CCathodeDisp[disp0]);

Segment1 = NIEDRIG;

Segment2 = HOCH;

Segment3 = HOCH;

VerzögerungMs(5);

pin9 = pin10 = pin11 = HIGH;

if((Dezimalpunkt >= 10) && (Dezimalpunkt < 100))

portWrite (1, CCathodeDisp[disp1] | 0x80);

else portWrite(1, CCathodeDisp[disp1]);

Segment1 = HOCH;

segment2 = NIEDRIG;

Segment3 = HOCH;

VerzögerungMs(5);

pin9 = pin10 = pin11 = HIGH;

if (Dezimalpunkt >= 100)

portWrite(1, CCathodeDisp[disp2] | 0x80);

else portWrite(1, CCathodeDisp[disp2]);

Segment1 = HOCH;

Segment2 = HOCH;

segment3 = NIEDRIG;

VerzögerungMs(5);

}

}

setup () {// hier einrichten

analogSetting(); //analoger Port initialisiert

portMode(1, AUSGANG); // Pins 1 bis 8 als Ausgangspins konfiguriert

/* Scan-Pins als Ausgangs-Pins konfiguriert */

pin9Mode = AUSGANG;

pin10Mode = AUSGANG;

pin11Mode = AUSGANG;

portWrite (1, LOW);

pin9 = pin10 = pin11 = HIGH; // Scan-Pins (die aktiv-niedrig sind)

//sind beim Start deaktiviert

loop () {//Programmieren Sie hier

batt_voltage = analogRead (A0); // nimmt den gemessenen Wert auf

Batteriespannung = ((Batteriespannung * 5000) / 1024); //Umrechnungsfaktor für 5Vin

Batteriespannung = (Batteriespannung * 50)/5000; //Umrechnungsfaktor für 50Vin

Dezimalpunkt = Batt_Spannung; //markiert, wo der Dezimalpunkt in erscheint

//der ursprüngliche Wert vor der Datenmanipulation

Anzeige();

}

}

Empfohlen: