Jump to content
ELFORUM - Forumul electronistilor

avr cu adc multiplexat


Recommended Posts

Salutare , Vreau sa multiplexez adc-ul de la un atmega , in genul asta , adica pe acelasi pin 2 potentiometre , dar unul sa fie cu pinii in HiZ cand il masor pe celalalt ... Cum pun pinii in HiZ? A mai facut cineva traznaia asta . Am deja Solutia implementata cu 74hc4051, dar oare se poate si asa ?

Link to comment
  • 4 months later...

Deeci , dupa ce am experimentat dupa schema de mai sus incercarea de a multiplexa 16 potentiometre pe un ADC cu 8 porturi si am vazut ca nu merge deoarece se influenteaza chiar si daca dezactivez rezistentele de pull-up .

As vrea sa intreb daca separ cele doua grupe cu un tristate de genul 74hc126 ar merge . Adica daca e corecta schema in acest caz cea din partea stanga , unde cele doua siruri de potentiometre sunt separate in hiZ .

Posted Image

Link to comment

Schema din stânga nu e corectă deoarece capătul inferior al pot. este legat la o INTRARE , deci el va sta tot timpul într-o stare de Hi-Z, indiferent de comandă. În plus poarta mai are și ieșirea conectată la masă ceea ce nu-i va conveni dacă acolo ar trebui să fie ”1”. Trebuie folosite comutatoare /  multiplexoare ANALOGICE nu porți digitale. De exemplu schema din stânga se poate implementa cu 4066. Cel mai simplu este însă ( dacă tema permite acest lucru ) să se lege toate potențiometrele în paralel la +5V și GND și să se multiplexeze doar cursoarele, cu 4051 ( de exemplu ) așa cum s-a pomenit.  În funcție de nevoile de performanță cerute s-ar putea să fie nevoie de multiplexoare analogice dedicate ( din seriile DG , ADG , etc ).

Link to comment

Va multumesc pentru raspuns si corectii . Am implementat deja schema cu 4051 preluata de pe un site de profil  (www.ucapps.de) , doar ca in acest caz folosesc prea putin din viteza de citire a ADC-ului  microcontrolerului , un potentiometru pe rand si as fi vrut sa profit de tot portul ADC care oricum e si el multiplexat deja . O poza in acest sens doar asa ca sa se vada ca am cablaj facut la CNC ... :) Posted ImageTotusi , as vrea sa gasesc ceva care sa puna in Hi-Z deadevaratelea bornele de  alimentare a potentiometrelor .

 

Si acuma observ ca al 888-lea post l-ati folosit aici, mersi inca odata .

Edited by unuldinei
Link to comment

Pai ca sa citesti cursorul la 8 potentiometre deodata ai nevoie de alta logica de comutare care nu se poate cu 4051 , eventual cu 4066 care are comutatoare independente nu multiplexate

Pentru ce ai nevoie de hi-z pe alimentari ? E pentru audio montajul sau pentru altceva ?

Edited by Depanatoru
Link to comment

Cel mai simplu mod de a citi intrari ADC pe numai doua fire este I2C-bus. Foloseste PCF8591 care are 4 intrari ADC si vei pune doua bucati pentru a avea 8 intrari citite simultan. Toata "pierderea" in acest caz este ca PCF-ul face conversia doar pe 8 biti fata de microcontroller care face conversie pe 10 biti; in rest este avantaj. Iar ca si numar maxim de PCF-uri poti pune 8 bucati deodata adresate corespunzator.

Link to comment

Multumesc pentru idee, e cam exotica pentru mine dar de retinut pentru ca 255 de valori sunt suficiente  pentru aplicatia mea  . Ceea ce vreau sa semnalez aici, schema de legare de mai sus NU e buna deoarece pot aparea cai de curent intre grupele de potentiometre , deci cea mai sigura si corecta (cum era si normal , nu cum m-am scarpinat eu invers), ramane culegerea tensiunii de pe pinul  dedicat acestui lucru , iar mai departe de ales o varianta cu multiplexare sau citire individuala .

Pai ca sa citesti cursorul la 8 potentiometre deodata ai nevoie de alta logica de comutare care nu se poate cu 4051 , eventual cu 4066 care are comutatoare independente nu multiplexate

Pentru ce ai nevoie de hi-z pe alimentari ? E pentru audio montajul sau pentru altceva ?

Nu e pentru audio , e pentru a masura ADC-ul  si a-l transforma in numere de la 0-127 ... ("pentru ca" MIDI Control ). 

Link to comment

Uite ce simplu se poate face citirea unui PCF8591 cu 4 intrari ADC, conectat ca in imaginea de mai jos:

post-176683-0-99097600-1400498849_thumb.gif

'*******************************************************************************Sub Pcf8591'Rutina de citire a semnalelor analogice cu PCF8591'Citirea se face pe 8 biti'Rezolutia de citire la Uref=5V este de 19,6 mVConst Pcf8591write = &H90                                   'comanda de scriereConst Pcf8591read = &H91                                    'comanda de citire'Config byte PCF8591=> B0100_0101'                        |    |||_'                        |    ||__Selectie canal analogic(0,1,2,3)'                        |    |_Auto Increment Flag => (1)scanare automata intrari'                        |_Activare Iesire AnalogicaConst Pcf8591config = &B0100_0101                         Dim Analogic(4) As Byte                                     'defineste 4 variabile BYTEI2cstart                                                    'start I2C busI2cwbyte Pcf8591write                                       'cmd.WRITE I2CI2cwbyte Pcf8591config                                      'cmd.CONFIGI2cstart                                                    'start I2C againI2cwbyte Pcf8591read                                        'cmd.READ I2CI2crbyte Analogic(1) , Ack                                  'citeste valoarea pe intrarea 1I2crbyte Analogic(2) , Ack                                  'citeste valoarea pe intrarea 2I2crbyte Analogic(3) , Ack                                  'citeste valoarea pe intrarea 3I2crbyte Analogic(4) , Nack                                 'citeste valoarea pe intrarea 4I2cstop                                                     'stop I2CEnd Sub'*******************************************************************************

Variabilele rezultate Analogic(1)...Analogic(4), tin informatiile de pe intrarile ADC si pot fi utilizate ulterior in program.

Link to comment
  • 2 months later...

Nu prea inteleg de ce vrei sa pui 2 potentiometre pe o intrare, nu mai ai alte intrari? Poti folosi intrarile digitale sau comparatorul analogic, pui potentiometrul sa incarce un condensator si masori timpul de incarcare/descarcare....

 Sau faci un oscilator extern in care un potentiometru sa dea timpul cat impulsul sta in "zero" si celalalt sa dea timpul pentru "1", apoi masori cu timerele.... 

 

 

 Imi amintesc de multiplexarea semnalelor pentru telecomenzile de acum mai multi ani.... acum e o problema depasita.

 

 

In situatii din acestea se alege un controller cu mai multi pini.. e cel mai ieftin.

 

Eu de obicei folosesc un encoder rotativ, care iti da impulsuri stanga/dreapta si ar mai fi si un buton daca apesi pe el.

Astfel, software pot simula oricate potentiometre, daca actionez unul o data. Apas pe encoder, intru in meniul A, aleg sus/jos, apas a doua oara, meniul B, etc....

Edited by one
Link to comment
  • 1 month later...
  • 2 weeks later...

Am inteles,

 

voi experimenta si eu prima schema pe care ai postat-o, caci sunt curios de ce se influenteaza potentiometrele. Intr-adevar daca ai avea Hi-Z pinii unui potentiometru, ar trebui sa il poti citi corect pe celalalt.

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