- ADC0804 och Raspberry Pi:
- Komponenter som krävs:
- Kretsförklaring:
- Programmeringsförklaring:
- Arbetssätt:
Raspberry Pi är ett ARM-arkitekturbaserat kort designat för elektroniska ingenjörer och hobbyister. PI är en av de mest betrodda projektutvecklingsplattformarna där ute nu. Med högre processorhastighet och 1 GB RAM kan PI användas för många högprofilerade projekt som bildbehandling och Internet of Things.
För att göra något av högprofilerade projekt måste man förstå de grundläggande funktionerna i PI. Vi kommer att täcka alla grundläggande funktioner i Raspberry Pi i dessa handledning. I varje handledning kommer vi att diskutera en av funktionerna i PI. I slutet av denna Raspberry Pi-handledningsserie kommer du att kunna göra högprofilerade projekt själv. Gå igenom handledningarna nedan:
- Komma igång med Raspberry Pi
- Raspberry Pi-konfiguration
- LED blinkande
- Raspberry Pi-knappgränssnitt
- Raspberry Pi PWM-generation
- Styr DC-motor med Raspberry Pi
- Stegmotorstyrning med Raspberry Pi
- Interfacing Shift Register med Raspberry Pi
I den här guiden kommer vi att ansluta ett ADC-chip (Analog till Digital Conversion) till Raspberry Pi. Vi känner till alla parametrar för analog, betyder att det varierar kontinuerligt över tiden. Säg för en instansstemperatur i rummet, rumstemperaturen varierar kontinuerligt med tiden. Denna temperatur är försedd med decimaltal. Men i den digitala världen finns det inga decimaler, så vi måste konvertera det analoga värdet till det digitala värdet. Denna omvandlingsprocess görs med ADC-teknik. Läs mer om ADC här: Introduktion till ADC0804
ADC0804 och Raspberry Pi:
Normala styrenheter har ADC-kanaler men för PI finns inga ADC-kanaler tillhandahållna internt. Så om vi vill ansluta några analoga sensorer behöver vi en ADC-omvandlingsenhet. Så för det ändamålet ska vi gränssnitt ADC0804 med Raspberry Pi.
ADC0804 är ett chip utformat för att konvertera analog signal till 8-bitars digital data. Detta chip är en av de populära ADC-serierna. Det är en 8bit konverteringsenhet, så vi har värden eller 0 till 255 värden. Med en mätspänning på maximalt 5V kommer vi att ändra varje 19,5mV. Nedan är Pinout av ADC0804:
Nu är en annan viktig sak här, ADC0804 arbetar vid 5V och så ger den utdata i 5V logisk signal. I 8-stiftsutgång (representerande 8bits) ger varje stift + 5V-utgång för att representera logik'1 '. Så problemet är att PI-logiken är + 3.3v, så du kan inte ge + 5V-logik till + 3.3V GPIO-stiftet på PI. Om du ger + 5V till någon GPIO-stift av PI, skadas kortet.
Så för att minska logiknivån från + 5V kommer vi att använda spänningsdelarkretsen. Vi har diskuterat Voltage Divider Circuit tidigare undersökt det för ytterligare förtydligande. Vad vi ska göra är att vi använder två motstånd för att dela + 5V-logik i 2 * 2,5V-logik. Så efter division kommer vi att ge + 2,5v logik till PI. Så när logik '1' presenteras av ADC0804 ser vi + 2.5V vid PI GPIO-stiftet, istället för + 5V.
Läs mer om GPIO Pins of Raspberry Pi här och gå igenom våra tidigare självstudier.
Komponenter som krävs:
Här använder vi Raspberry Pi 2 Model B med Raspbian Jessie OS. Alla grundläggande hårdvaru- och mjukvarukrav har tidigare diskuterats, du kan slå upp det i Raspberry Pi Introduktion, annat än vad vi behöver:
- Anslutningsstift
- 220Ω eller 1KΩ motstånd (17 delar)
- 10K kruka
- 0,1 µF kondensator (2 delar)
- ADC0804 IC
- Brödbräda
Kretsförklaring:
Den fungerar på matningsspänning på + 5v och kan mäta ett variabelt spänningsområde i området 0-5V.
De anslutningar för samverkan ADC0804 till Raspberry PI, är visade i kopplingsschemat ovan.
ADC har alltid mycket brus, detta brus kan i hög grad påverka prestandan, så vi använder 0.1uF kondensator för brusfiltrering. Utan detta kommer det att finnas många fluktuationer vid produktionen.
Chipet fungerar på RC (Resistor-Capacitor) oscillatorklocka. Som visas i kretsschemat bildar C2 och R20 en klocka. Det viktiga att komma ihåg här är att kondensatorn C2 kan ändras till ett lägre värde för högre ADC-omvandlingshastighet. Men med högre hastighet kommer precisionen att minska. Så om applikationen kräver högre noggrannhet, välj kondensator med högre värde och välj kondensator med lägre värde för högre hastighet.
Programmeringsförklaring:
När allt är anslutet enligt kretsschemat, kan vi sätta PÅ PI för att skriva programmet i PYHTON.
Vi kommer att prata om några kommandon som vi ska använda i PYHTON-programmet, Vi ska importera GPIO-filer från biblioteket, nedanstående funktion gör att vi kan programmera GPIO-stift av PI. Vi döper också om "GPIO" till "IO", så i programmet när vi vill hänvisa till GPIO-stift kommer vi att använda ordet "IO".
importera RPi.GPIO som IO
Ibland, när GPIO-stiften, som vi försöker använda, kan göra några andra funktioner. I så fall får vi varningar när vi kör programmet. Kommandot nedan ber PI att ignorera varningarna och fortsätta med programmet.
IO.setwarnings (False)
Vi kan hänvisa GPIO-stift på PI, antingen med stiftnummer ombord eller med deras funktionsnummer. Precis som 'PIN 29' på tavlan är 'GPIO5'. Så vi säger här antingen att vi kommer att representera nålen här med '29' eller '5'.
IO.setmode (IO.BCM)
Vi ställer in 8 stift som ingångsstift. Vi kommer att upptäcka 8 bitars ADC-data med dessa stift.
IO.setup (4, IO.IN) IO.setup (17, IO.IN) IO.setup (27, IO.IN) IO.setup (22, IO.IN) IO.setup (5, IO.IN) IO.setup (6, IO.IN) IO.setup (13, IO.IN) IO.setup (19, IO.IN)
Om villkoret i hängslen är sant kommer uttalandena inuti slingan att utföras en gång. Så om GPIO-stiftet 19 blir högt kommer uttalandena i IF-slingan att köras en gång. Om GPIO-stiftet 19 inte går högt kommer uttalandena i IF-slingan inte att utföras.
if (IO.input (19) == True):
Nedan kommandot används som alltid loop, med detta kommando kommer uttalandena inuti denna loop att köras kontinuerligt.
Medan 1:
Ytterligare förklaring av programmet ges i kodavsnittet nedan.
Arbetssätt:
När du har skrivit programmet och kört det ser du '0' på skärmen. '0' betyder 0 volt vid ingång.
Om vi justerar 10K-potten som är ansluten till chipet ser vi förändringen i värdena på skärmen. Värdena på skärmen fortsätter att rulla kontinuerligt, det här är de digitala värdena som PI läser.
Säg att om vi får potten till mittpunkten har vi + 2,5V vid ADC0804-ingången. Så vi ser 128 på skärmen som visas nedan.
För + 5V analogt värde kommer vi att ha 255.
Så genom att variera potten varierar vi spänningen från 0 till + 5V vid ADC0804-ingången. Med detta läser PI-värden från 0-255. Värdena skrivs ut på skärmen.
Så vi har gränssnitt ADC0804 till Raspberry Pi.