Inhoudsopgave:

Hoe ADC Current Sense te maken: 5 stappen
Hoe ADC Current Sense te maken: 5 stappen

Video: Hoe ADC Current Sense te maken: 5 stappen

Video: Hoe ADC Current Sense te maken: 5 stappen
Video: How to use Allegro ACS712 AC/DC Current Sensor with Arduino 2024, December
Anonim
Hoe ADC Current Sense te maken
Hoe ADC Current Sense te maken

In deze Instructable zullen we beschrijven hoe een 8-bit analoog-naar-digitaal-omzetter (ADC) in de SLG46855V kan worden geïmplementeerd die laadstroom kan detecteren en kan communiceren met een MCU via I2C. Dit ontwerp kan worden gebruikt voor verschillende stroomdetectietoepassingen, zoals ampèremeters, foutdetectiesystemen en brandstofmeters.

Hieronder hebben we de stappen beschreven die nodig zijn om te begrijpen hoe de oplossing is geprogrammeerd om de ADC-stroomzin te creëren. Als u echter alleen het resultaat van het programmeren wilt hebben, download dan GreenPAK-software om het reeds voltooide GreenPAK-ontwerpbestand te bekijken. Sluit de GreenPAK Development Kit aan op uw computer en druk op programma om het ADC-stroomgevoel te creëren.

Stap 1: ADC-architectuur

ADC-architectuur
ADC-architectuur

De ADC bestaat in wezen uit een analoge comparator en een digitaal-naar-analoogomzetter (DAC). De comparator detecteert de ingangsspanning versus de DAC-uitgangsspanning en regelt vervolgens of de DAC-ingangscode moet worden verhoogd of verlaagd, zodat de DAC-uitgang convergeert naar de ingangsspanning. De resulterende DAC-invoercode wordt de ADC digitale uitvoercode.

In onze implementatie creëren we een DAC met behulp van een pulsbreedtemodulatie (PWM) gestuurd weerstandsnetwerk. We kunnen eenvoudig een nauwkeurig digitaal gestuurde PWM-uitgang creëren met behulp van GreenPAK. De PWM wordt, wanneer gefilterd, onze analoge spanning en dient dus als een effectieve DAC. Een duidelijk voordeel van deze benadering is dat het eenvoudig is om de spanningen in te stellen die overeenkomen met nulcode en volledige schaal (equivalent offset en versterking) door eenvoudigweg weerstandswaarden aan te passen. Een gebruiker wil bijvoorbeeld idealiter nulcode lezen van een temperatuursensor zonder stroom (0 A) die overeenkomt met 4,3 V, en een volledige code bij 1000 µA die overeenkomt met 3,9 V (tabel 1). Dit is eenvoudig te realiseren door simpelweg een paar weerstandswaarden in te stellen. Door het ADC-bereik overeen te laten komen met het sensorbereik dat van belang is, maken we optimaal gebruik van de ADC-resolutie.

Een ontwerpoverweging voor deze architectuur is dat een interne PWM-frequentie veel sneller moet zijn dan de ADC-updatesnelheid om ondergedempt gedrag van de regellus te voorkomen. Het moet op zijn minst langer zijn dan de ADC-gegevenstellerklok gedeeld door 256. In dit ontwerp is de ADC-updateperiode ingesteld op 1,3312 ms.

Stap 2: Intern circuit

Intern circuit
Intern circuit

De flexibele ADC is gebaseerd op het ontwerp gepresenteerd in Dialog Semiconductor AN-1177. De kloksnelheid wordt verhoogd van 1 MHz naar 12,5 MHz om de ADC-teller te klokken, aangezien de SLG46855 een klok van 25 MHz beschikbaar heeft. Dit maakt een veel snellere updatesnelheid mogelijk voor een fijnere voorbeeldresolutie. De LUT die de ADC-gegevensklok klokt, wordt gewijzigd zodat deze door het 12,5 MHz-signaal gaat wanneer de PWM DFF laag is.

Stap 3: Extern circuit

Extern circuit
Extern circuit

Een externe weerstand en condensatornetwerk worden gebruikt om een PWM om te zetten in een analoge spanning, zoals weergegeven in het schakelschema in figuur 1. De waarden worden berekend voor maximale resolutie voor de maximale stroom die het apparaat zal detecteren. Om deze flexibiliteit te bereiken, voegen we weerstanden R1 en R2 parallel aan VDD en aarde toe. Een weerstandsdeler verdeelt VBAT naar de lage kant van het spanningsbereik. De delerverhouding voor een verwachte minimale VBAT kan worden opgelost met behulp van de vergelijking 1.

Stap 4: I2C Lees de instructies

I2C Lees Instructies
I2C Lees Instructies

Tabel 1 beschrijft de I2C-opdrachtstructuur om de gegevens die zijn opgeslagen in CNT0 terug te lezen. De I2C-opdrachten vereisen een startbit, stuurbyte, woordadres, leesbit en stopbit.

Hieronder staat een voorbeeld van een I2C-opdracht om de getelde CNT0-waarde terug te lezen:

[0x10 0xA5] [0x11 R]

De getelde waarde die wordt teruggelezen, is de ADC-codewaarde. Als voorbeeld is een Arduino-code opgenomen in het ZIP-bestand van deze toepassingsnotitie op de website van Dialog.

Stap 5: Resultaten

Resultaten
Resultaten
Resultaten
Resultaten
Resultaten
Resultaten

Om de nauwkeurigheid van het ADC-stroomdetectieontwerp te testen, werden de gemeten waarden bij een gegeven belastingsstroom en VDD-niveau vergeleken met een theoretische waarde. De theoretische ADC-waarden werden berekend met de vergelijking 2.

De ILOAD die correleert met een ADC-waarde wordt gevonden met de vergelijking 3.

Voor de volgende resultaten heb ik deze componentwaarden gebruikt die in tabel 3 worden getoond.

De resolutie van de ADC-waarde naar ILOAD-conversie kan worden berekend met behulp van vergelijking 3 met de gemeten waarden in Tabel 2 en de ADC-waarde ingesteld op 1. Bij een VBAT van 3,9 V is de resolutie 4,96 µA/div.

Om het ADC-stroomdetectiecircuit te optimaliseren tot een minimaal VDD-niveau van 3,6 V met een maximale stroom van 1100 A en een weerstand van 381 Ω, zou de ideale delercoëfficiënt 0,884 zijn, gebaseerd op vergelijking 1. Met de waarden in tabel 2 heeft de werkelijke deler een delercoëfficiënt van 0,876. Aangezien dit iets minder is, zal het een iets groter belastingsstroombereik mogelijk maken, zodat de ADC-waarden dicht bij het volledige bereik liggen, maar niet zullen overlopen. De werkelijke delerwaarde wordt berekend met de vergelijking 4.

Hierboven (Afbeeldingen 2-6, Tabellen 4-6) zijn de metingen van het circuit op drie spanningsniveaus: 4,3 V, 3,9 V en 3,6 V. Elk niveau geeft een grafiek weer die het verschil tussen de gemeten en theoretische ADC-waarden weergeeft. Theoretische waarden worden afgerond op het dichtstbijzijnde gehele gehele getal. Er is een samenvattende grafiek om de verschillen op de drie spanningsniveaus te vergelijken. Daarna is er een grafiek die de correlatie weergeeft tussen de theoretische ADC-waarden en de belastingsstroom bij de verschillende spanningsniveaus.

Conclusie

Het apparaat is getest op drie spanningsniveaus: 3,6 V, 3,9 V en 4,3 V. Het bereik van deze spanningen modelleert een volledige lithium-ionbatterij die ontlaadt tot het nominale niveau. Van de drie spanningsniveaus is waargenomen dat het apparaat doorgaans nauwkeuriger was bij 3,9 V voor het gekozen externe circuit. Het verschil tussen de gemeten en theoretische ADC-waarden was slechts 1 decimale waarde af bij belastingstromen van 700 - 1000 µA. Bij het gegeven spanningsbereik waren de gemeten ADC-waarden in het slechtste geval 3 decimalen boven de nominale omstandigheden. Verdere aanpassingen aan de weerstandsdeler kunnen worden gemaakt om verschillende VDD-spanningsniveaus te optimaliseren.

Aanbevolen: