- Vereiste componenten
- PCF8591 ADC / DAC-module
- I2C-pinnen in Raspberry Pi
- Koppeling PCF8591 ADC / DAC-module met Raspberry Pi
- Python-programma voor analoog naar digitaal conversie (ADC)
Analoog naar digitaal conversie is een zeer belangrijke taak in embedded elektronica, aangezien de meeste sensoren output leveren als analoge waarden en om ze in een microcontroller te sturen die alleen binaire waarden begrijpt, moeten we ze omzetten in digitale waarden. Om de analoge gegevens te kunnen verwerken, hebben microcontrollers een analoog naar digitaal converter nodig.
Sommige microcontrollers hebben ingebouwde ADC zoals Arduino, MSP430, PIC16F877A, maar sommige microcontrollers hebben het niet zoals 8051, Raspberry Pi enz. En we moeten externe analoog-naar-digitaal converter-IC's gebruiken, zoals ADC0804, ADC0808. Hieronder vind je verschillende voorbeelden van ADC met verschillende microcontrollers:
- Hoe ADC te gebruiken in Arduino Uno?
- Raspberry Pi ADC-zelfstudie
- Koppeling tussen ADC0808 met 8051 Microcontroller
- 0-25V digitale voltmeter met AVR-microcontroller
- Hoe ADC te gebruiken in STM32F103C8
- Hoe ADC te gebruiken in MSP430G2
- Hoe ADC te gebruiken in ARM7 LPC2148
- Met behulp van ADC-module van PIC-microcontroller met MPLAB en XC8
In deze tutorial gaan we leren hoe we de PCF8591 ADC / DAC-module kunnen koppelen aan Raspberry Pi.
Vereiste componenten
- Framboos-pi
- PCF8591 ADC-module
- 100K pot
- Startkabels
Er wordt aangenomen dat je een Raspberry Pi hebt met het nieuwste Raspbian-besturingssysteem erin en je weet hoe je SSH naar de Pi moet sturen met behulp van terminalsoftware zoals stopverf. Als Raspberry Pi nieuw voor je is, volg dan dit artikel om aan de slag te gaan met Raspberry Pi. Maar als je een probleem tegenkomt, zijn er talloze Raspberry Pi-zelfstudies die kunnen helpen.
PCF8591 ADC / DAC-module
PCF8591 is een 8 bit analoog naar digitaal of 8 bit digitaal naar analoog convertormodule, wat betekent dat elke pin analoge waarden tot 256 kan lezen. Het heeft ook een LDR en thermistorcircuit op het bord. Deze module heeft vier analoge ingangen en één analoge uitgang. Het werkt op I 2 C-communicatie, dus er zijn SCL- en SDA-pinnen voor de seriële klok en het seriële data-adres. Het vereist een voedingsspanning van 2,5-6V en heeft een lage stand- bystroom. We kunnen ook de ingangsspanning manipuleren door de knop van de potentiometer op de module aan te passen. Er zijn ook drie jumpers op het bord. J4 is verbonden om het thermistortoegangscircuit te selecteren, J5 is verbonden om het LDR / fotoweerstandstoegangscircuit te selecterenen J6 is verbonden om het instelbare spanningstoegangscircuit te selecteren. Er zijn twee LED's aan boord van D1 en D2- D1 toont de intensiteit van de uitgangsspanning en D2 toont de intensiteit van de voedingsspanning. Hoe hoger de uitgangs- of voedingsspanning, hoe hoger de intensiteit van LED D1 of D2. U kunt deze LED's ook testen door een potentiometer op VCC of op AOUT-pin te gebruiken.
I2C-pinnen in Raspberry Pi
Om PCF8591 met Raspberry Pi te gebruiken, is het eerste dat u moet doen de Raspberry Pi I2C- poortpinnen kennen en de I2C-poort in de Raspberry Pi configureren.
Hieronder ziet u het pin-diagram van Raspberry Pi 3 Model B +, en I2C-pinnen GPIO2 (SDA) en GPIO3 (SCL) worden in deze tutorial gebruikt.
I2C configureren in Raspberry Pi
I2C is standaard uitgeschakeld in Raspberry Pi. Dus eerst moet het worden ingeschakeld. Om de I2C in Raspberry Pi in te schakelen
1. Ga naar de terminal en typ sudo raspi-config.
2. Nu verschijnt de Raspberry Pi Software Configuration Tool.
3. Selecteer Interfacing-opties en schakel vervolgens de I2C in.
4. Na het inschakelen van de I2C start u de Pi opnieuw op.
I2C-adres van PCF8591 scannen met Raspberry Pi
Om de communicatie met de PCF8591 IC te starten, moet de Raspberry Pi het I2C-adres kennen. Om het adres te vinden, sluit u eerst de SDA- en SCL-pin van PCF8591 aan op de SDA- en SCL-pin van Raspberry Pi. Verbind ook de + 5V- en GND-pinnen.
Open nu de terminal en typ het onderstaande commando om het adres van het aangesloten I2C-apparaat te weten, sudo i2cdetect –y 1 of sudo i2cdetect –y 0
Na het vinden van het I2C-adres is het nu tijd om het circuit te bouwen en de nodige bibliotheken te installeren voor het gebruik van PCF8591 met Raspberry Pi.
Koppeling PCF8591 ADC / DAC-module met Raspberry Pi
Het schakelschema voor de interface van PCF8591 met Raspberry Pi is eenvoudig. In dit interfacevoorbeeld zullen we de analoge waarden van een van de analoge pinnen lezen en deze op de Raspberry Pi-terminal weergeven. We kunnen de waarden wijzigen met een pot van 100K.
Verbind de VCC en GND met GPIO2 en GPIO van Raspberry Pi. Verbind vervolgens de SDA en SCL met respectievelijk GPIO3 en GPIO5. Verbind tenslotte een 100K pot met AIN0. U kunt ook een 16x2 LCD-scherm toevoegen om ADC-waarden weer te geven in plaats van deze op Terminal weer te geven. Lees hier meer over de interface van 16x2 LCD met Raspberry Pi.
Python-programma voor analoog naar digitaal conversie (ADC)
Het volledige programma en werken video wordt gegeven aan het einde van deze tutorial.
Importeer eerst de smbus- bibliotheek voor I 2 C-buscommunicatie en tijdbibliotheek om een slaaptijd te geven tussen het afdrukken van de waarde.
import SMBus import tijd
Definieer nu enkele variabelen. De eerste variabele bevat het adres van de I 2 C-bus en de tweede variabele bevat het adres van de eerste analoge ingangspen.
adres = 0x48 A0 = 0x40
Vervolgens hebben we een object gemaakt van de functie SMBus (1) van bibliotheek smbus
bus = smbus.SMBus (1)
Nu, terwijl de eerste regel de IC vertelt om de analoge meting uit te voeren bij de eerste analoge ingangspen. De tweede regel slaat het adres op dat op de analoge pin is gelezen in een variabele waarde . Druk ten slotte de waarde af.
while True: bus.write_byte (adres, A0) waarde = bus.read_byte (adres) print (waarde) time.sleep (0.1)
Sla nu eindelijk de python-code op in een bestand met.py entension en voer de code uit in de Raspberry Pi-terminal met behulp van het onderstaande commando "
python bestandsnaam.py
Voordat u de code uitvoert, moet u ervoor zorgen dat u de I 2 C-communicatie hebt ingeschakeld en dat alle pinnen zijn aangesloten zoals weergegeven in het diagram, anders worden er fouten weergegeven. De analoge waarden moeten op de terminal verschijnen zoals hieronder. Pas de knop van de pot aan, en u zult de geleidelijke verandering in de waarden zien. Lees meer over het uitvoeren van het programma in
Volledige python-code en video wordt hieronder gegeven.