- ADC0804 i Raspberry Pi:
- Components necessaris:
- Explicació del circuit:
- Explicació de la programació:
- Treball:
Raspberry Pi és una placa basada en processadors d'arquitectura ARM dissenyada per a enginyers electrònics i aficionats. El PI és ara una de les plataformes de desenvolupament de projectes amb més confiança. Amb una velocitat de processador més alta i 1 GB de RAM, el PI es pot utilitzar per a molts projectes de gran perfil com el processament d’imatges i Internet de les coses.
Per fer qualsevol projecte de gran perfil, cal entendre les funcions bàsiques de PI. Cobrirem totes les funcionalitats bàsiques de Raspberry Pi en aquests tutorials. A cada tutorial parlarem d'una de les funcions de PI. Al final d'aquesta sèrie de tutorials de Raspberry Pi, ja podreu fer projectes de gran perfil. Consulteu els tutorials següents:
- Introducció a Raspberry Pi
- Configuració de Raspberry Pi
- LED intermitent
- Interfície de botons Raspberry Pi
- Generació Raspberry Pi PWM
- Control del motor de corrent continu mitjançant Raspberry Pi
- Control del motor pas a pas amb Raspberry Pi
- Interfacing Shift Register amb Raspberry Pi
En aquest tutorial, farem una interfície d’un xip ADC (conversió analògica a digital) amb Raspberry Pi. Coneixem tots els paràmetres de l’analògic, vol dir que varien contínuament al llarg del temps. Per exemple, la temperatura de l'habitació és que la temperatura de l'habitació varia amb el temps contínuament. Aquesta temperatura es proporciona amb nombres decimals. Però al món digital, no hi ha nombres decimals, per tant, hem de convertir el valor analògic a valor digital. Aquest procés de conversió es realitza mitjançant la tècnica ADC. Obteniu més informació sobre ADC aquí: Introducció a ADC0804
ADC0804 i Raspberry Pi:
Els controladors normals tenen canals ADC, però per a PI no hi ha canals ADC proporcionats internament. Per tant, si volem connectar qualsevol sensor analògic, necessitarem una unitat de conversió ADC. Per tant, amb aquest propòsit anem a la interfície ADC0804 amb Raspberry Pi.
ADC0804 és un xip dissenyat per convertir el senyal analògic en dades digitals de 8 bits. Aquest xip és una de les sèries més populars d’ADC. Es tracta d’una unitat de conversió de 8 bits, de manera que tenim valors o de 0 a 255. Amb una tensió de mesura màxima de 5V, tindrem un canvi per cada 19,5mV. A continuació es mostra el Pinout de l’ADC0804:

Ara una altra cosa important aquí és que l' ADC0804 funciona a 5V i, per tant, proporciona sortida en senyal lògic de 5V. A la sortida de 8 pins (que representa 8 bits), cada pin proporciona una sortida de + 5 V per representar la lògica '1'. Per tant, el problema és que la lògica PI és de + 3,3 v, de manera que no podeu donar una lògica de + 5 V al pin GPIO de + 3,3 V de PI. Si doneu + 5 V a qualsevol pin GPIO de PI, la placa es fa malbé.
Per tant, per reduir el nivell lògic de + 5V, farem servir un circuit divisor de tensió. Hem comentat que el circuit divisor de tensió el va examinar prèviament per obtenir més aclariments. El que farem és que utilitzem dues resistències per dividir la lògica de + 5V en lògiques de 2 * 2,5V. Per tant, després de la divisió donarem una lògica de + 2.5v a PI. Per tant, sempre que ADC0804 presenti la lògica '1', veurem + 2,5 V al pin PI GPIO, en lloc de + 5 V.
Obteniu més informació sobre els pins GPIO de Raspberry Pi aquí i consulteu els nostres tutorials anteriors.
Components necessaris:
Aquí fem servir Raspberry Pi 2 Model B amb Raspbian Jessie OS. Tots els requisits bàsics de maquinari i programari s’han comentat prèviament. Podeu consultar-los a la introducció de Raspberry Pi, a part d’això que necessitem:
- Pins de connexió
- Resistència de 220Ω o 1KΩ (17 peces)
- Olla de 10K
- Condensador de 0,1µF (2 peces)
- ADC0804 IC
- Taula de pa
Explicació del circuit:
Funciona amb una tensió d'alimentació de + 5v i pot mesurar un rang de voltatge variable en un rang de 0-5V.

Les connexions per connectar ADC0804 a Raspberry PI es mostren al diagrama de circuits anterior.
L’ADC sempre té molt de soroll, aquest soroll pot afectar molt el rendiment, de manera que fem servir condensador de 0,1 uF per a la filtració de soroll. Sense això, hi haurà moltes fluctuacions en la producció.
El xip funciona al rellotge de l’oscil·lador RC (Resistor-Capacitor). Com es mostra al diagrama de circuits, C2 i R20 formen un rellotge. L'important que cal recordar aquí és que el condensador C2 es pot canviar a un valor inferior per obtenir una taxa de conversió ADC més alta. No obstant això, amb una velocitat més alta, hi haurà una disminució de la precisió. Per tant, si l’aplicació requereix una precisió més alta, trieu el condensador amb un valor més alt i, per a una velocitat més alta, trieu el condensador amb un valor inferior.
Explicació de la programació:
Un cop tot estigui connectat segons el diagrama del circuit, podem activar el PI per escriure el programa en PYHTON.
Parlarem de poques ordres que farem servir al programa PYHTON, Importarem un fitxer GPIO de la biblioteca, la funció següent ens permet programar pins GPIO de PI. També estem canviant el nom de "GPIO" per "IO", de manera que al programa sempre que vulguem referir-nos als pins GPIO utilitzarem la paraula "IO".
importar RPi.GPIO com a IO
De vegades, quan els pins GPIO, que estem intentant utilitzar, poden estar fent algunes altres funcions. En aquest cas, rebrem avisos mentre executem el programa. L'ordre següent indica al PI que ignori les advertències i que continuï amb el programa.
IO.setwarnings (fals)
Podem referir els pins GPIO de PI, ja sigui pel número de pin a bord o pel seu número de funció. Igual que el "PIN 29" al tauler és "GPIO5". Així doncs, aquí expliquem que aquí representarem el passador per "29" o "5".
IO.setmode (IO.BCM)
Estem configurant 8 pins com a pins d'entrada. Detectarem 8 bits de dades ADC per aquests pins.
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)
En cas que la condició dels claudàtors sigui certa, les sentències dins del bucle s'executaran una vegada. Per tant, si el pin GPIO 19 augmenta, les instruccions del bucle IF s’executaran una vegada. Si el pin GPIO 19 no augmenta, les sentències del bucle IF no s'executaran.
if (IO.input (19) == True):
L'ordre de sota s'utilitza com a bucle per sempre, amb aquesta ordre les instruccions dins d'aquest bucle s'executaran contínuament.
Mentre que 1:
A la secció de codi següent trobareu més explicacions sobre el programa.
Treball:
Després d'escriure el programa i executar-lo, veureu '0' a la pantalla. "0" significa 0 volts a l'entrada.

Si ajustem el pot de 10K connectat al xip, veurem el canvi de valors a la pantalla. Els valors de la pantalla continuen desplaçant-se contínuament, aquests són els valors digitals que llegeix PI.
Digueu que si aconseguim el pot al punt mitjà, tenim + 2,5 V a l'entrada ADC0804. Així, veiem 128 a la pantalla com es mostra a continuació.

Per al valor analògic de + 5V, en tindrem 255.

Per tant, en variar el pot varem el voltatge de 0 a + 5 V a l’entrada ADC0804. Amb aquest PI, llegiu els valors del 0 al 255. Els valors s’imprimeixen a la pantalla.
Així doncs, tenim interfície ADC0804 amb Raspberry Pi.
