Jump to content
ELFORUM - Forumul electronistilor

Utilizare ADC


spinach

Recommended Posts

Avem , sa zicem , portul A  cu 8 intrari  cu potenta ADC . Din cele 8 intrari , intrare 0 si 1 sint folosite cu ADC activat , celelalte in regim stantart , ca intrari numerice .

Ce se intimpla daca citim tot portul  , tip  g = PortA; 

Sau daca citim  g=PINA&((1<<PA7)|(1<<PA6)|(1<<PA5)|(1<<PA4)|(1<<PA3)|(1<<PA2));

Ce se va citi pentru bitul 0 si 1 , tinind cont ca sint alocati cei 2 pini pt ADC ?

Link to comment
  • Replies 11
  • Created
  • Last Reply

Top Posters In This Topic

  • spinach

    5

  • nico_2010

    2

  • cimitavita

    2

  • Mircea

    1

Top Posters In This Topic

Posted Images

depinde de limitarile librariilor C.

in asm poti face orice vrei. Pinii portului A folositi pentru convertorul ADC trebuie configurati ca intrari cu pull-up dezactivat iar citirea se face din ADCH si ADCL. Convertorul ADC poate fi legat doar la un singur pin in configuratie single si la doi pini in configuratie diferentiala.

Daca se citesc bitii 0 si 1 ca intrari logice (PINA), pentru o alimentare de 5V, se vor respecta valorile logice CMOS. Adica vei citi 0 logic pentru tensiuni cuprinse intre 0 - 1,5V si 1 logic pentru tensiuni intre 3,5 - 5V. 

In datasheeturile Atmega, 0 logic e considerat de la 0V la 1,4V iar 1 logic de la 2,7V la 5V. Pentru tensiuni intre 1,4V si 2,7V valoarea citita pe PINA difera de la un microcontroler la altul si depinde mult de starea anterioara a bistabilului de la intrare.

Daca bitii 0 si 1 te supara, poti sa-i stergi:  cu ANDI Rx,0b_11111100 ii pui pe 0, iar cu ORI Rx,0b_00000011 ii pui pe 1.

Link to comment
2 hours ago, hspinache said:

Avem , sa zicem , portul A  cu 8 intrari  cu potenta ADC . Din cele 8 intrari , intrare 0 si 1 sint folosite cu ADC activat , celelalte in regim stantart , ca intrari numerice .

Ce se intimpla daca citim tot portul... 

Ce se va citi pentru bitul 0 si 1 , tinind cont ca sint alocati cei 2 pini pt ADC ?

Pai pinii ADC nu sunt biti. Informatia prezenta este sub format byte sau word. 

 

A nu se confunda byte-ul de configurare al portului A cu registrii asignati intrarilor/iesirilor. 

Link to comment

Raspunsul se gaseste in datasheet ! Nu cunosc exact raspunsul pt ca nu lucrez cu Atmel dar la PIC este asha :

I/O pins configured as analog input alwaysread ‘0’. 

Link to comment

In   datasheet  nu am gasit ceva , sau poate nu am vazut .

La prima vedere ,  pe simulare , se pare ca ii citeste 0 .  ok ; 

Problema 2 : setare ceas . 

Ce valori ar fi recomandate ? depinde de frecventa semnal injectat ? Am gasit ca ar trebui se ne limitam la max 1Mhz . 

Link to comment
Acum 25 minute, hspinache a spus:

Problema 2 : setare ceas . 

Ce valori ar fi recomandate ? depinde de frecventa semnal injectat ? Am gasit ca ar trebui se ne limitam la max 1Mhz . 

Conform foii de catalog (pe care se pare ca nu ai citit-o) pentru obtinerea rezolutiei maxime de 10 biti, frcventa de lucru a ADC nu ar trebui sa depaseasca 200kHz.

Daca in schimb se doreste o rezolutie inferioara atunci frecventa de lucru a ADC poate fi crescuta, astfel ca la max. 1MHz vei avea o rezolutie de 3 biti.

In alta ordine de idei, frecventa maxima a semnalulului aplicat la intrarea ADC ar trebui sa fie sub limita impusa de teorema lui Nyquist.

Citeste si aici: http://www.openmusiclabs.com/learning/digital/atmega-adc/in-depth/index.html

Link to comment

La Atmega, frecventa CLK la intrarea convertorului trebuie sa fie minim 50 kHz si maxim 200 kHz. O conversie se face in 13 cicluri CLK (clk de la intrarea convertorului) iar numarul maxim de conversii pe secunda este 15384. Pentru CLK sub  50 kHz si peste 200 kHz incep sa apara erori.

Convertorul AD nu este recomandat sa fie folosit in cazul in care se utilizeaza un cristal de cuartz de 32.768 kHz.

Link to comment

Am sa il folosesc pe 8 biti . Am inteles ca trebuie sa limitez in 200 khz . ok.

Dar de folosit am sa folosesc 2 canale , in free runing .  Probabil cind va comuta si achizitiona un canal , celilalt va pierde informatia si invers . 

Este recomandabil sa fie frecventa mai mare ?  Si care ar fi cea mai rapida metoda de comutare a canalelor ?

Link to comment

Multiplexarea canalelor are loc hardware, nu se face prin soft.

Citeste capitolul "Changing channel or reference selection" din foaia de catalog a microcontroller-ului.

Link to comment

@spinach, ce fel de semnale doriti sa digitalizati cu ADC-ul?

 

Daca frecventa maxima din spectrul semnalului de intrare este scazuta, mai mica de aproximativ  de 2,5KHz,

(deoarece sunt 2 canale frecventa de esantionare rezulta la jumatate),  atunci prin comutarea a 2 canale nu se pierde informatie.

In datasheetul pentru ATmega328:

 According to the datasheet, to get a 10 bits resolution on the conversion result, the ADC clock
frequency should be 50kHz – 200kHz. When the ADC clock is 200kHz, the sampling
frequency is ~15kSPS, which confines the upper frequency in the sampled signal to ~7.5kHz.

La 10 biti sunt ceva probleme, deoarece trebuiesc combinate valorile LSB si MSB rezultate din esantionare, dar nu si la 8 biti.

Se arata ca pentru un canal se poate utiliza o frecventa de esantionare de circa 15 KHz, teoretic pentru un semnal cu frecventa maxima de 7,5KHz.

In realitate, pentru ca semnalul esantionat sa poata fi vizualizat ca o imagine de calitate, trebuiesc 5-10 esantione pe perioada si atunci

 frecventa maxima utila va fi sub 1KHz. In cazul unor prelucrari numerice avansate cu metode Spline, Hanning, Hamming, Blackman, se poate obtine

 o acuratete vizuala pana la aproximativ 6KHz, adica cam la 80% din jumatatea freventei de esantionare, frecventa Nyquist (vezi terema Nyquist-Shannon).

 

Pentru studiu am facut un program interactiv capabil sa simuleze tipuri diverse de esantionare.

  image.thumb.png.86ba641fa473b35aa69267498652614b.png

 

Un exemplu de utilizare este in poza, unde semnalul este "natur"

image.thumb.png.26cd9df12046a8c986f1f0499a80be4b.png

 

@gsabac

 

 

 

 

 

 

 

Link to comment

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now



×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.Terms of Use si Guidelines