I dette projekt bruger vi begrebet ADC (Analog til digital konvertering) i ARDUINO UNO. Vi skal bruge en Hall Effect sensor og Arduino uno til at måle feltstyrken på en magnet. Sensoren, som vi har brugt her, er UGN3503U. Dette er en hallsensor, der registrerer magnetfeltstyrken og giver en varierende spænding ved output, der er proportional med feltstyrken. Denne sensor opfanger feltstyrke i enhederne i ' GAUSS '.
Så med denne sensor har vi feltstyrke som varierende spænding. Ved at bruge ADC-funktionen konverterer vi denne spænding til et tal. Dette tal repræsenterer feltstyrken og vises på LCD.
Arduino har seks ADC-kanaler. I dem kan en eller alle af dem bruges som indgange til analog spænding. UNO ADC har 10 bit opløsning (så heltalets værdier fra (0- (2 ^ 10) 1023)). Det betyder, at det vil kortlægge indgangsspændinger mellem 0 og 5 volt i heltalsværdier mellem 0 og 1023. Så for hver (5/1024 = 4,9 mV) pr. Enhed.
I alt dette skal vi forbinde et potentiometer eller en potte til 'A0' -kanalen, og vi vil vise ADC-resultatet i et simpelt display. De enkle skærme er 16x1 og 16x2 displayenheder. 16x1 displayenheden har 16 tegn og er i en linje. Den 16x2 vil have 32 tegn i alt 16in 1 st linje og en anden 16 i 2 nd linje. Her skal man forstå, at der i hvert tegn er 5x10 = 50 pixels, så for at få vist et tegn skal alle 50 pixels arbejde sammen, men vi behøver ikke bekymre os om det, fordi der er en anden controller (HD44780) i displayenheden, som gør job med at kontrollere pixels (du kan se det i LCD-enheden, det er det sorte øje på bagsiden).
Komponenter, der kræves
Hardware: ARDUINO UNO, strømforsyning (5v), JHD_162ALCD (16x2LCD), 100uF kondensator (2 stykker), UGn3503U.
Software: arduino IDE (Arduino nightly)
Kredsløbsdiagram og forklaring
Ovenstående figur viser kredsløbsdiagrammet til magnetfeltmåling ved hjælp af arduino uno.
I 16x2 LCD er der overalt 16 ben, hvis der er baggrundslys, hvis der ikke er baggrundslys, vil der være 14 ben. Man kan tænde eller lade bagbelysningsstifterne stå. Nu i de 14 stifter er der 8 data stifter (7-14 eller D0-D7), 2 Strømforsyning stifter (1 & 2 eller VSS & VDD eller GND & + 5V), 3 rd pin for kontraststyring (VEE-styringer, hvor tyk tegnene bør være vist) og 3 kontrolben (RS & RW & E).
I kredsløbet ovenfor kan du observere, at jeg kun har taget to kontrolben, kontrastbiten og LÆS / SKRIV bruges ikke ofte, så de kan kortsluttes til jorden. Dette sætter LCD i højeste kontrast og læsetilstand. Vi skal bare kontrollere ENABLE og RS-ben for at sende tegn og data i overensstemmelse hermed.
Forbindelserne, der foretages for LCD, er angivet nedenfor:
PIN1 eller VSS til jord
PIN2 eller VDD eller VCC til + 5v strøm
PIN3 eller VEE til jorden (giver maksimal kontrast bedst for en nybegynder)
PIN4 eller RS (Registrer valg) til PIN8 for ARDUINO UNO
PIN5 eller RW (læse / skrive) til jorden (sætter LCD i læsefunktion letter kommunikationen for brugeren)
PIN6 eller E (Aktiver) til PIN9 for ARDUINO UNO
PIN11 eller D4 til PIN10 for ARDUINO UNO
PIN12 eller D5 til PIN11 i ARDUINO UNO
PIN13 eller D6 til PIN12 for ARDUINO UNO
PIN14 eller D7 til PIN13 for ARDUINO UNO
ARDUINO IDE giver brugeren mulighed for at bruge LCD i 4 bit-tilstand. Denne type kommunikation gør det muligt for brugeren at mindske pin-brugen på ARDUINO, i modsætning til andre behøver ARDUINO ikke at blive programmeret separat for at bruge den i 4 it-tilstand, fordi ARDUINO som standard er indstillet til at kommunikere i 4 bit-tilstand. I kredsløbet kan du se, at vi brugte 4bit kommunikation (D4-D7). Så fra blot observation fra ovenstående tabel forbinder vi 6 ben på LCD til controller, hvor 4 ben er datapinde og 2 ben til kontrol.
Arbejder
For at grænsefladen mellem en LCD og ARDUINO UNO skal vi kende et par ting.
|
Først og fremmest har UNO ADC-kanalerne en standardreferenceværdi på 5V. Dette betyder, at vi kan give en maksimal indgangsspænding på 5V til ADC-konvertering på enhver indgangskanal. Da nogle sensorer leverer spændinger fra 0-2,5V, med en 5V-reference får vi mindre nøjagtighed, så vi har en instruktion, der gør det muligt for os at ændre denne referenceværdi. Så for at ændre den referenceværdi, vi har ("analogReference ();")
Som standard får vi den maksimale ADC-opløsning på kortet, der er 10 bit, denne opløsning kan ændres ved hjælp af instruktion (“analogReadResolution (bits);”). Denne opløsningsændring kan komme til nytte i nogle tilfælde.
Hvis ovenstående betingelser nu er indstillet til standard, kan vi læse værdien fra ADC for kanal '0' ved direkte at kalde funktionen "analogRead (pin);", her "pin" repræsenterer pin, hvor vi forbandt analogt signal, i dette tilfælde ville det være “A0”. Værdien fra ADC kan tages i et heltal som “int ADCVALUE = analogRead (A0); ”, Ved denne instruktion bliver værdien efter ADC gemt i heltalet“ ADCVALUE ”.
Lad os nu tale lidt om 16x2 LCD. Først skal vi aktivere headerfilen ('#include
For det andet skal vi fortælle tavlen, hvilken type LCD vi bruger her. Da vi har så mange forskellige typer LCD (som 20x4, 16x2, 16x1 osv.). Herinde skal vi interface en 16x2 LCD til UNO, så vi får 'lcd.begin (16, 2);'. For 16x1 får vi 'lcd.begin (16, 1);'.
I denne instruktion vil vi fortælle tavlen, hvor vi forbandt stifterne. De stifter, der er forbundet, skal vises i rækkefølge som “RS, En, D4, D5, D6, D7”. Disse ben skal vises korrekt. Da vi tilsluttede RS til PIN0 og så videre som vist i kredsløbsdiagrammet, repræsenterer vi pin-nummeret til kortet som “LiquidCrystal lcd (0, 1, 8, 9, 10, 11);”.
Efter først og fremmest er der kun tilbage at sende data, de data, der skal vises i LCD, skal skrives som “cd.print (" hej verden! ");”. Med denne kommando viser LCD'et 'hej verden!'. Som du kan se, behøver vi ikke bekymre os om dette andet, vi skal bare initialisere, og UNO vil være klar til at vise data. Vi behøver ikke at skrive en programsløjfe for at sende data BYTE af BYTE her.
Når en magnet er bragt nær sensoren, repræsenterer sensoren en spænding ved output, der er proportional med feltet, denne værdi optages af Uno og vises i LCD. Arbejdet med dette magnetfeltmåleprojekt forklares yderligere gennem nedenstående C-kode.