Micke_s skrev: ↑7 december 2020, 22:17:11
Min input i en osorterad lista
- Linjäriteten nära ändlägena på en ADC brukar vara sådär.
- Val av hastighet på ADC avgör hur många användbara bitar man får ut.
- Kontrollera att in-impedansen på ADC räcker för inte belasta mätpunkten, kanske behövs en buffert?
- Gain brukar man välja efter vad man ska mäta. Högsta som täcker in området typ. Kan även vara olika olinjär på olika Gain.
- Bra avstörning för AVDD och AVREF.
- Lite analogt filter utanför brukar inte heller skada.
- Kanske lite skydd innan I/O pinnen också.
- Kolla upp om det finns några begräsningar på insignalen spänningsnivåer om man väljer SD/Diff och Gain nivåer.
Jag återkommer till ditt inlägg senare.
TomasL skrev: ↑7 december 2020, 22:27:07
Studera och förstå datablad och app-notes, såpass mycket att man kan dem utantill.
Jag håller på med det.
Jag har koll på grunderna, men det jag inte begriper är just hur man använder det i STM32CubeIDE.
Det finns alltså tre inställningar man kan ha:
* Differentiell
* Singel
* Singel som har samma spann som differentiell, men är bara en signal
Differentiell inställning:
Denna har formel:
Kod: Markera allt
Vin = SDADCx_AINyP - SDADCx_AINyM = ReadData * Vref/(2 x gain x 32767)
Markering_008.png
Exempel:
Jag tänker använda 3 stycken differentiella ingångar, dvs 6 totalt.
Här använder jag
VDD som referens
Vref. I detta fall är det
3.3v. Rätta mig om jag har fel. Jag funderar på att använda
gain 0.5x här för att jag vill mäta en skillnad mellan 0 och 3.3 volt.
Kod: Markera allt
Förstärkning: A = Vref/(2 * gain * 32767) = 3.3/(2* 0.5 * 32767)
Ingångsspänningsspann: [-Vref/(2*gain), + Vref/(2*gain)] = [-3.3/(2*0.5), +3.3/(2*0.5)] = [-3.3, + 3.3]
Värdespann för 16-bit differentiell ADC: [-32767, +32767]
Detta betyder att när det är 3.3 volt skillnad mellan differentiella ingångarna, så har jag alltså full -32767 eller +32767 beroende på om skillnaden är -3.3v eller +3.3v
Singel som har samma spann som differentiell
Jag utesluter bara singel, då den är bara mellan
[0, 32767]. Jag vill använda den andra metoden som innefattar denna formula
Kod: Markera allt
Vin = SDADCx_AINyP = (ReadData + 32767) * Vref/(gain x 65535)
Exempel:
Sätter jag gain = 0.5. och applicerar +3.3 volt så kommer jag få:
Kod: Markera allt
Vin = (ReadData + 32767) * Vref/(gain x 65535) = (2^16 + 32767) * 3.3/(0.5*65535) = 3.3
Så vid 3.3 volt in på ingången så har jag antingen full -32767 eller +32767 beroende på om skillnaden är 0v eller +3.3v
Jag kan ha fel. Det kanske ska lika gärna vara gain = 1.0 också.
Det största problemet jag har nu är att förstå hur jag ska förklara detta för STM32CubeIDE.
Markering_009.png
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.