Raspberry Pi is een op ARM-architectuur gebaseerde processor, ontworpen voor elektronische ingenieurs en hobbyisten. De PI is momenteel een van de meest vertrouwde platformen voor projectontwikkeling. Met een hogere processorsnelheid en 1 GB RAM kan de PI worden gebruikt voor veel spraakmakende projecten zoals beeldverwerking en internet der dingen.
Voor het doen van spraakmakende projecten moet men de basisfuncties van PI begrijpen. In deze tutorials behandelen we alle basisfunctionaliteiten van Raspberry Pi. In elke tutorial bespreken we een van de functies van PI. Aan het einde van deze Raspberry Pi Tutorial-serie kun je zelf spraakmakende projecten doen. Doorloop onderstaande tutorials:
- Aan de slag met Raspberry Pi
- Raspberry Pi-configuratie
- LED Blinky
- Raspberry Pi-knopinterface
- Raspberry Pi PWM-generatie
- Besturen van DC-motor met Raspberry Pi
- Stappenmotorbesturing met Raspberry Pi
- Interfacing Shift Register met Raspberry Pi
In deze tutorial zullen we een ADC-chip (analoog naar digitaal conversie) koppelen aan Raspberry Pi. We kennen alle parameters van analoog, wat betekent dat ze continu in de tijd variëren. Stel voor een voorbeeldtemperatuur van de kamer, de kamertemperatuur varieert continu met de tijd. Deze temperatuur is voorzien van decimale getallen. Maar in de digitale wereld zijn er geen decimale getallen, dus we moeten de analoge waarde omzetten in digitale waarde. Dit conversieproces wordt gedaan door middel van ADC-techniek. Lees hier meer over ADC: Inleiding tot ADC0804
ADC0804 en Raspberry Pi:
Normale controllers hebben ADC-kanalen, maar voor PI zijn er intern geen ADC-kanalen. Dus als we analoge sensoren willen aansluiten, hebben we een ADC-conversie-eenheid nodig. Dus voor die doeleinden gaan we naar Interface ADC0804 met Raspberry Pi.
ADC0804 is een chip die is ontworpen om analoog signaal om te zetten in 8 bit digitale gegevens. Deze chip is een van de populaire series ADC. Het is een 8-bits conversie-eenheid, dus we hebben waarden of 0 tot 255 waarden. Bij een meetspanning van maximaal 5V hebben we een wijziging voor elke 19,5mV. Hieronder is de pinout van ADC0804:
Een ander belangrijk ding hier is, de ADC0804 werkt op 5V en levert dus output in een logisch signaal van 5V. In 8-pins uitvoer (die 8 bits vertegenwoordigt), biedt elke pin + 5V-uitvoer om logica'1 'weer te geven. Het probleem is dus dat de PI-logica + 3.3v is, dus je kunt geen + 5V-logica geven aan de + 3.3V GPIO-pin van PI. Als je + 5V aan een GPIO-pin van PI geeft, raakt het bord beschadigd.
Dus om het logische niveau van + 5V te verlagen, zullen we een spanningsdelercircuit gebruiken. We hebben het Voltage Divider Circuit eerder besproken, onderzoeken het voor verdere verduidelijking. Wat we zullen doen is, we gebruiken twee weerstanden om + 5V logica te verdelen in 2 * 2,5V logica. Dus na deling geven we + 2.5v logica aan PI. Dus wanneer logica '1' wordt gepresenteerd door ADC0804, zien we + 2.5V op de PI GPIO-pin, in plaats van + 5V.
Lees hier meer over GPIO-pinnen van Raspberry Pi en doorloop onze eerdere tutorials.
Vereiste componenten:
Hier gebruiken we Raspberry Pi 2 Model B met Raspbian Jessie OS. Alle basisvereisten voor hardware en software zijn eerder besproken, u kunt het opzoeken in de Raspberry Pi-introductie, behalve dat we nodig hebben:
- Verbindende pinnen
- 220Ω of 1KΩ weerstand (17 stuks)
- 10K pot
- 0.1 µF condensator (2 stuks)
- ADC0804 IC
- Broodplank
Circuit uitleg:
Hij werkt op een voedingsspanning van + 5V en kan een variabel spanningsbereik meten in het bereik van 0-5V.
De verbindingen voor de koppeling van ADC0804 met Raspberry PI worden weergegeven in het bovenstaande schakelschema.
De ADC heeft altijd veel ruis, deze ruis kan de prestaties sterk beïnvloeden, daarom gebruiken we 0.1uF condensator voor ruisfiltratie. Zonder dit zullen er veel fluctuaties aan de output zijn.
De chip werkt op de RC (Resistor-Capacitor) oscillatorklok. Zoals getoond in het schakelschema, vormen C2 en R20 een klok. Het belangrijkste om hier te onthouden is dat de condensator C2 kan worden gewijzigd in een lagere waarde voor een hogere ADC-conversie. Bij hogere snelheid neemt de nauwkeurigheid echter af. Dus als de toepassing een hogere nauwkeurigheid vereist, kiest u de condensator met een hogere waarde en voor een hogere snelheid kiest u de condensator met een lagere waarde.
Programmering Toelichting:
Zodra alles is aangesloten volgens het schakelschema, kunnen we de PI inschakelen om het programma in PYHTON te schrijven.
We zullen het hebben over enkele commando's die we gaan gebruiken in het PYHTON-programma, We gaan het GPIO-bestand uit de bibliotheek importeren, met onderstaande functie kunnen we GPIO-pinnen van PI programmeren. We hernoemen ook "GPIO" naar "IO", dus in het programma zullen we telkens wanneer we naar GPIO-pinnen willen verwijzen het woord 'IO' gebruiken.
importeer RPi.GPIO als IO
Soms, wanneer de GPIO-pinnen, die we proberen te gebruiken, andere functies uitvoeren. In dat geval zullen we waarschuwingen ontvangen tijdens het uitvoeren van het programma. Onderstaand commando vertelt de PI om de waarschuwingen te negeren en door te gaan met het programma.
IO.setwarnings (False)
We kunnen de GPIO-pinnen van PI verwijzen, hetzij op pincode aan boord, hetzij op functienummer. Net als 'PIN 29' op het bord is 'GPIO5'. Dus we vertellen hier dat we de pin hier met '29' of '5' gaan weergeven.
IO.setmode (IO.BCM)
We stellen 8 pinnen in als invoerpinnen. We detecteren 8 bit ADC-gegevens door deze pinnen.
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)
Als de voorwaarde tussen de accolades waar is, worden de instructies in de lus één keer uitgevoerd. Dus als de GPIO-pin 19 hoog wordt, worden de instructies in de IF-lus één keer uitgevoerd. Als de GPIO-pin 19 niet hoog wordt, worden de instructies in de IF-lus niet uitgevoerd.
if (IO.input (19) == True):
Het onderstaande commando wordt gebruikt als forever loop, met dit commando worden de statements in deze loop continu uitgevoerd.
Terwijl 1:
Verdere uitleg van het programma wordt gegeven in de sectie Code hieronder.
Werken:
Nadat u het programma heeft geschreven en uitgevoerd, ziet u '0' op het scherm. '0' betekent 0 volt bij ingang.
Als we de 10K-pot aanpassen die op de chip is aangesloten, zullen we de verandering in de waarden op het scherm zien. De waarden op het scherm scrollen continu, dit zijn de digitale waarden uitgelezen door PI.
Stel dat als we de pot naar het midden krijgen, we + 2,5 V hebben op de ADC0804-ingang. Dus we zien 128 op het scherm zoals hieronder getoond.
Voor + 5V analoge waarde hebben we 255.
Dus door de pot te variëren, variëren we de spanning van 0 tot + 5V op de ADC0804-ingang. Met deze PI lees je waarden van 0-255. De waarden worden op het scherm afgedrukt.
Dus we hebben ADC0804 gekoppeld aan Raspberry Pi.