Gör en Mini Arduino programmerbar 4 kanal DC-DVM (3 / 8 steg)
Steg 3: Krets konstruktion
När vi har ingångar arbetar, vi installerar den 1.8" TFT LCD-färgskärm och skriva en skiss för att Visa ingångsvärde på det.
Sedan kommer vi att undersöka flera mjukvara och hårdvara alternativ att förbättra eller anpassa DVM.
Så låt oss börja genom att bygga spänningsavdelaren på en skärbräda och ansluta den till stift A0 Arduino.
Titta på kopplingsschemat och andra bilder som hjälper dig med steg.
När kretsen är tillsammans, koppla Arduino till USB-porten på datorn och ladda upp den följande test skiss som visar spänningen ansluten till gratis 1Meg resistor benet via seriell bildskärmen.
Bara kopiera och klistra in följande skiss till Arduino IDE.
// -----------------Sketch Start-----------------------------
/* -----------------------------------------------------------
Program: SERIAL DVM
Beskrivning/kontroller: DC voltmeter med spänning visas på serial bildskärm
Ingen färg TFT LCD ännu!
Hårdvara: Arduino NANO eller Uno med spänningsavdelare på A0.
Programvara: Skriven och utvecklas med hjälp av Arduino 1.0.3 programvara
Datum:
Författare:
--------------------------------------------------------------*/
spänningsavdelare kalibreringsvärden
#define Dv1 11
ADC referensspänningen / kalibreringsvärde
#define VREF 5
flyta V1 = {0,00}.
void setup()
{
Serial.BEGIN(9600);
}
void loop()
{
V1 = analogRead(0);
Serial.Print ("spänning @ pin A0");
Serial.println(((v1*VREF) / 1023)) * Dv1, 2);
}
// -----------------Sketch End-----------------------------
Låt oss se vad som händer;
Atmega controllerns användas för Arduino innehåller en ombord 6 kanal analog-till-digital (A/D) omvandlare. Omvandlare har 10 bitars upplösning, som returnerar ett heltal från 0 till 1023 (210= 1024, 0 räknas, så det är 1023 steg) för värdet av 0 till 5 volt.
Vi vill konvertera A/D returnerade värde till den faktiska spänning som vi mäter.
Måste vi multiplicera resultatet med 5 och division med 1023 justera värdet som returneras av 10-bitars a/d omvandlare.
Vi också dividera spänningen 11 med spänningsavdelare, så spänningen vi mäter (och vi vill se på displayen), har multipliceras med 11 att kompensera för avdelningen.
Vi gör det med den followimg formeln:
Vout=((vin*(5/1023))*11).
koden för detta är:
Serial.println(((v1*VREF) / 1023)) * Dv1, 2);
Vi multiplicera med 5 (VREF) och dividera med 1023 konvertera analog utgång i en skala mellan O och 5, då vi multiplicera med 11(Dv1) att kompensera för spänningsdelare. Anledningen till att vi använder variabler för avdelare och spänningsvärden, är att dessa värden kommer att förändras när vi kalibrerar DVM. "2" i slutet av formeln anger hur många siffror som visas efter decimaltecknet.
Om du fick programmet läses in korrekt, öppna seriell bildskärmen genom att klicka på förstoringsglas ikonen i det övre högra hörnet i arduino IDE, bör du se data flödar. Med hjälp av en bygel tråd, försök ansluta den fria delen av 1Meg motståndet till GND stift pin först och sedan till 5V. Du bör se behandlingen ändra från 0 till 5v.
Nu har vi bara att upprepa vad vi gjorde för den första kanalen tre gånger att ha en 4 kanal DVM, men innan vi gör det, låt oss ansluta våra TFT färg LCD-skärm till Arduino. Behöver 7 hoppare ledningar att göra detta:
Anslut följande med byglarna
TFT LCD. Arduinoen
VCC 5V
GND Gnd
SCL 13
SDA 11
CS 10
RS/DC 9
RES 8
Obs:
Till skillnad från min andra instructables, kommer vi att använda den höga hastigheten SPI gränssnitt för att köra displayen så bygeln ledningar är olika. Igen, kolla in bilderna hjälper dig om du inte vet hur tråd det upp.
Måste du installera två bibliotek att använda displayen:
Adafruit_GFX.h Core grafik bibliotek
Adafruit_ST7735.h maskinvaruspecifikt bibliotek
Hämta biblioteken och kopiera dem till mappen Arduino bibliotek.
Kopiera och klistra in nedan skiss till Arduino IDE. Skissen DVM koden är den samma, men med tillägg av koden till uppvisning spänningen på A0 på LCD-displayen.
Kompilera och ladda upp skissen till Arduino.
// -----------------Sketch Start-----------------------------
/*-----------------------------------------------------------
Program: TFTLCDDVM
Beskrivning/kontroller: DC voltmeter med spänning visas
på färg TFT LCD med 2 decimaler
Hårdvara: Arduino NANO med spänningsavdelare på A0.
TFT LCD ansluten
Programvara: Utvecklad med Arduino 1.0.3 programvara
Datum: 10 mars 2014
Författare: johnag
--------------------------------------------------------------*/
#define sclk 13
#define mosi 11
#define cs 10
#define dc 9
#define rst 8 / / reset
#include < Adafruit_GFX.h > / / Core grafik bibliotek
#include < Adafruit_ST7735.h > / / maskinvaruspecifika bibliotek
#include < SPI.h >
Adafruit_ST7735 tft = Adafruit_ST7735 (cs, dc, rst);
spänningsavdelare kalibreringsvärde
#define Dv1 11
ADC referensspänningen
#define VREF 5
flyta V1 = {0,00}.
void setup()
{
Serial.BEGIN(9600);
tft.initR(INITR_BLACKTAB); initiera en ST7735S chip, svart flik
tft.fillScreen(ST7735_BLACK); Rensa skärmen
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 ("försiktighet max spänning 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);
spänning 1 (pin A0)
spänning är multiplicerad med resistor nätverket
Division faktor att beräkna den faktiska spänningen
tft.setCursor (45, 40);
TFT.println ("V1");
tft.setTextSize(1);
TFT.println ("spänning @ pin A0");
tft.setCursor (20, 80);
tft.setTextSize(2);
Serial.Print ("spänning @ pin A0");
Serial.println(((v1*VREF) / 1023)) * Dv1, 2);
TFT.Print(((v1*VREF) / 1023)) * Dv1, 2);
TFT.Print ("Vdc");
}
//---------------Sketch End----------------------------------------