Stap 3: Circuit bouw
Als we eenmaal de ingangen werken, zullen wij installeren de 1.8" TFT LCD-kleurenscherm en een schets wilt weergeven van de input meting op het schrijven.
Vervolgens zullen we verschillende opties voor software en hardware te verbeteren of aanpassen van de DVM ontdekken.
Dus laten we beginnen door te bouwen van de scheidingslijn van de spanning op het breadboard en het verbinden van A0 pin van de Arduino.
Kijk naar het circuit diagram en de andere foto's om u te begeleiden met de stappen.
Zodra het circuit is samengesteld, sluit de Arduino op de USB-poort op uw PC en uploaden van de volgende test schets die de spanning verbonden aan de vrije 1Meg weerstand been via de seriële monitor wordt weergegeven.
Kopieer en plak de volgende schets aan de Arduino IDE.
// -----------------Sketch Start-----------------------------
/* -----------------------------------------------------------
Programma: Seriële DVM
Beschrijving: DC voltmeter met spanning op seriële monitor weergegeven
Geen kleur TFT LCD nog!
Hardware: Arduino NANO of Uno met spanning divider op A0.
Software: Geschreven en ontwikkeld met behulp van de Arduino 1.0.3 software
Datum:
Auteur:
--------------------------------------------------------------*/
voltage divider kalibratie waarden
#define Dv1 11
ADC referentie spanning / kalibratie waarde
#define VREF 5
zweven V1 = {0,00};
VOID Setup
{
Serial.begin(9600);
}
void loop
{
V1 = analogRead(0);
Serial.Print ("spanning @ pin A0");
Serial.println(((v1*VREF) / 1023)) * Dv1, 2);
}
// -----------------Sketch End-----------------------------
Herzie wat er gebeurt;
De controller van de Atmega gebruikt voor de Arduino bevat een on-board 6-kanaals analoog-naar-digitaal (A/D) converter. Het conversieprogramma heeft 10 bit resolutie, die het resultaat van een geheel getal van 0 tot 1023 (210= 1024, 0 punten, dus het is 1023 stappen) voor de waarde van 0 tot 5 volt.
We willen converteren van de A/D waarde terug naar de werkelijke spanning die we meten.
We moeten vermenigvuldig het resultaat met 5 en deling door 1023 aan te passen de resultaatwaarde van de 10 bit a/d Converter.
We zijn ook de spanning delen door 11 met de spanning divider, zodat de spanning we meten (en we willen zien op het display), moet worden vermenigvuldigd met 11 ter compensatie van de divisie.
Dat doen we met de followimg-formule:
Vout=((Vin*(5/1023))*11).
de code voor dit is:
Serial.println(((v1*VREF) / 1023)) * Dv1, 2);
We vermenigvuldigen met 5 (VREF) en verdelen door 1023 de uitvoer van de A/D omzetten in een schaal tussen O en 5, waarna we vermenigvuldigen met 11(Dv1) om te compenseren voor de scheidingslijn van de spanning. De reden we zijn met behulp van variabelen voor de divider en spanningswaarden, is dat deze waarden zal veranderen wanneer we de DVM kalibreert. De '2' aan het einde van de formule bepaalt hoeveel cijfers achter de komma weergeven.
Als je het programma te laden correct, de seriële monitor openen door te klikken op het vergrootglas pictogram in de bovenste rechter hoek van de arduino IDE, moet u gegevens stroomt. Met behulp van een jumper draad, probeer het vrije been van de weerstand van de 1Meg verbinden met de GND Pin pin eerste en vervolgens naar de 5V. U ziet de lezing wijzigen van 0 tot 5v.
Nu we alleen maar te herhalen wat we deed voor het eerste kanaal drie vaker te hebben een 4 kanaals DVM, maar voordat we dat doen, laten we onze TFT kleuren LCD-scherm verbinding te maken met de Arduino. Je moet 7 jumper draden om dit te doen:
De volgende verbinding te maken met de jumpers
TFT LCD. Arduino
VCC 5V
GND Gnd
SCL 13
SDA 11
CS 10
RS/DC 9
RES 8
Opmerking:
In tegenstelling tot mijn andere instructables, zullen we gebruiken de hoge snelheid SPI Interface om te rijden het display zodat de jumper bedrading anders is. Nogmaals, check de foto's om u te begeleiden als je niet zeker hoe het draad omhoog.
U moet twee bibliotheken voor het gebruik van het display te installeren:
Adafruit_GFX.h The Core grafische bibliotheek
Adafruit_ST7735.h de hardwarespecifieke bibliotheek
Downloaden van de bibliotheken en kopieer ze naar de bibliotheekmap Arduino.
Kopieer en plak de schets hieronder naar de Arduino IDE. De schets DVM code is hetzelfde, maar met de toevoeging van de code weer te geven van de spanning op A0 op het LCD-Display.
Compileren en uploaden van de schets aan de Arduino.
// -----------------Sketch Start-----------------------------
/*-----------------------------------------------------------
Programma: TFTLCDDVM
Beschrijving: DC voltmeter met spanning weergegeven
op kleur TFT LCD-scherm met 2 decimalen
Hardware: Arduino NANO met spanning divider op A0.
TFT LCD aangesloten
Software: Ontwikkeld met behulp van de Arduino 1.0.3 software
Datum: 10 maart 2014
Auteur: johnag
--------------------------------------------------------------*/
#define sclk 13
#define mosi 11
#define cs 10
#define dc 9
#define rst 8 / / reset
#include < Adafruit_GFX.h > / / Core grafische bibliotheek
#include < Adafruit_ST7735.h > / / hardwarespecifieke bibliotheek
#include < SPI.h >
Adafruit_ST7735 tft = Adafruit_ST7735 (cs, dc, rst);
voltage divider kalibratie waarde
#define Dv1 11
ADC referentie spanning
#define VREF 5
zweven V1 = {0,00};
VOID Setup
{
Serial.begin(9600);
tft.initR(INITR_BLACKTAB); initialiseren van een tab ST7735S-chip, zwart
tft.fillScreen(ST7735_BLACK); scherm wissen
tft.setTextColor(ST7735_WHITE);
tft.setTextSize(1);
tft.setCursor(10,0);
TFT.println ("DC voltmeter DVM");
tft.setTextColor(ST7735_RED);
tft.setCursor(0,140);
TFT.println ("Let op max spanning 55vdc");
}
void loop
{
V1 = analogRead(0);
tft.drawLine (0, 20, tft.width ()-1, 20, ST7735_WHITE);
tft.drawLine (0, 130, tft.width ()-1, 130, ST7735_WHITE);
tft.setTextColor(ST7735_YELLOW,ST7735_BLACK);
tft.setTextSize(2);
spanning 1 (pin A0)
spanning wordt vermenigvuldigd met het netwerk van de weerstand
divisie factor voor het berekenen van de werkelijke spanning
tft.setCursor (45, 40);
TFT.println ("V1");
tft.setTextSize(1);
TFT.println ("spanning @ pin A0");
tft.setCursor (20, 80);
tft.setTextSize(2);
Serial.Print ("spanning @ pin A0");
Serial.println(((v1*VREF) / 1023)) * Dv1, 2);
TFT.Print(((v1*VREF) / 1023)) * Dv1, 2);
TFT.Print ("Vdc");
}
//---------------Sketch End----------------------------------------