Sari la conținut

Ltc 2418 si arduinoMega


Postări Recomandate

 

Buna ziua,

Am achizitionat de curand un convertor analog numeric si anume LTC2418 si o referinta de tensiune LT1236.

As dori sa il folosesc impreuna cu o placa de dezvoltare arduino mega cu care m-am mai jucat pana acum dar am facut doar aplicatii simple.

Am ales acest ADC deoarece are rezolutie mare (24 biti) si am gasit ceva documentatie pentru el plus ceva cod pentru arduino dar care 

nu functioneaza si pe care nu il inteleg.

Acum sa o luam cu inceputul (cu cateva specificatii):

-Tensiune de alimentare (2.7v-5.5v) eu il alimentez la 5v

-Are un oscilator intern dar se poate folosi si unul extern (eu aleg sa folosesc clock-ul furnizat de acesta)

Note 7: FO = 0V (internal oscillator) or fEOSC = 153600Hz ?2% (external oscillator).
Note 8: FO = VCC (internal oscillator) or fEOSC = 128000Hz ?2% (external oscillator).

-Poate matura in intervalul (-vref/2 - +vref/2) in cazul meu -2.5v si 2.5v deoare ce am ales o referinta de 5v

Mai jos am atasat diagrama de timming :

289y1yv.png

 

Tot ce am facut pana acum sunt urmatoarele .

Am alimentat circuitul si am atasat referinta de tensiune, am pus in 0 pinul FO si am observat ca daca trec simultan si pinul cs in low am o secventa de clock pe pinul SCK de 32 de biti conform diagramei de mai sus. 

Eu trebuie sa ma sincronizez cu acest clock generat de adc si trebuie sa ii dau urmatoarele secvente de biti :

  a26xcg.png

Pn mine nu ma intereseaza deocamdata sa citesc tensiuni flotante. Ma intereseaza sa citesc tensiuni fata de pinul com asa ca mai jos am pus secventele de biti pt toate cele 16 canale in parte (valorile sunt duplicate deoare ce trebuie sa dureze o perioada de clock e o prostie de a mea) :

 

int    ch0[]={1,1, 0,0, 1,1, 1,1, 0,0, 0,0, 0,0, 0,0,     };
int    ch1[]={1,1, 0,0, 1,1, 1,1, 1,1, 0,0, 0,0, 0,0,     };
int    ch2[]={1,1, 0,0, 1,1, 1,1, 0,0, 0,0, 0,0, 1,1,     };
int    ch3[]={1,1, 0,0, 1,1, 1,1, 1,1, 0,0, 0,0, 1,1,     };
int    ch4[]={1,1, 0,0, 1,1, 1,1, 0,0, 0,0, 1,1, 0,0,     };
int    ch5[]={1,1, 0,0, 1,1, 1,1, 1,1, 0,0, 1,1, 0,0,     };
int    ch6[]={1,1, 0,0, 1,1, 1,1, 0,0, 0,0, 1,1, 1,1,     };
int    ch7[]={1,1, 0,0, 1,1, 1,1, 1,1, 0,0, 1,1, 1,1,     };
int    ch8[]={1,1, 0,0, 1,1, 1,1, 0,0, 1,1, 0,0, 0,0,     };
int    ch9[]={1,1, 0,0, 1,1, 1,1, 1,1, 1,1, 0,0, 0,0,     };
int   ch10[]={1,1, 0,0, 1,1, 1,1, 0,0, 1,1, 0,0, 1,1,    };
int   ch11[]={1,1, 0,0, 1,1, 1,1, 1,1, 1,1, 0,0, 1,1,    };
int   ch12[]={1,1, 0,0, 1,1, 1,1, 0,0, 1,1, 1,1, 0,0,    };
int   ch13[]={1,1, 0,0, 1,1, 1,1, 1,1, 1,1, 1,1, 0,0,    };
int   ch14[]={1,1, 0,0, 1,1, 1,1, 0,0, 1,1, 1,1, 1,1,    };
int   ch15[]={1,1, 0,0, 1,1, 1,1, 1,1, 1,1, 1,1, 1,1,    };
 
Acum trebuie sa sransmit prin SPI si sa citesc totodata sincronizat cu clockul ei. Nu am folosit pana acum aceasta comunicatie si am nevoie de ajutor.
Bine inteles ca am citit pe internet tot felul de exemple dar in cazul meu ADC este master si arduino ar trebui sa fie Slave.

Am atasat mai jos linkul cu librariile gasite dar pe care nu stiu sa le folosesc.

https://github.com/JQIamo/LTC2418-arduino

 

 

 

Editat de ionutz992
Link spre comentariu
https://www.tehnium-azi.ro/forums/topic/6371-ltc-2418-si-arduinomega/
Distribuie pe alte site-uri

  • 4 weeks later...

Ionut,

 

LTC2414 poate functiona ca master pe busul SPI sau ca slave. Dupa cele descrise de tine mai sus il folosesti in modul master (adica LTC2414 genereaza SCK si ATmega328 il receptioneaza) - in cazul asta ATmega328 trebuie programat ca slave la portul SPI.

In modul SPI master al LTC2414 ai doua cazuri cand tu initiezi conversia sau te bazezi pe LTC2414 sa faca conversii continue iar ATmega328 va receptiona conversia si va genera o intrerupere cand un nou octet a fost receptionat. (evident necesita programarea sistemului de intreruperi al SPI daca folosesti modul slave ald ATmega328)

La pagina 19 in datasheet este un tabel care descrie modurile http://cds.linear.com/docs/en/datasheet/241418fb.pdf

 

Eu iti recomand sa folosesti LTC2414 in modul slave si sa controlezi tu busul de SPI din ATmega328 (pentru ca e mai simplu) - pentru a forta LTC2414 in modul slave trebuie sa tii SCK low cand CS face tranzitia din HIGH in LOW (asta e si modul default la Arduino) - starea pinului F0 conteaza numai la filtrele digitale de rejectie a modului comun pentru 60 respectiv 50Hz - in cazul tau tine-l la Vcc (pentru 50Hz)

 

In modul slave trebuie sa te asiguri ca s-a terminat conversia inainte sa citesti rezultatul si asta o faci coborand CS in LOW si cititind starea lui SDO (daca SDO e low atunci conversia e terminata si poti citi rezultatul)

 

 

Legat de tipul de intrari ca sa citesti tensiuni pozitive fata de com - conecteraza Ref- (referinta negativa) la GND. si intrarile analogice negative la fel. (din pacate irosesti bitul de semn si obtii rezolutie de 23 de biti (probabil suficienta)

 

PS - acum am realizat ca ai ArduinoMega - dar la nivel de port SPI cele doua sunt la fel - deci tot ce ma scris mai sus e valabil si pentru Mega.

Spor la treaba,

RR

Editat de roadrunner
Link spre comentariu
https://www.tehnium-azi.ro/forums/topic/6371-ltc-2418-si-arduinomega/#findComment-69408
Distribuie pe alte site-uri

Creează un cont sau autentifică-te pentru a adăuga comentariu

Trebuie să fi un membru pentru a putea lăsa un comentariu.

Creează un cont

Înregistrează-te pentru un nou cont în comunitatea nostră. Este simplu!

Înregistrează un nou cont

Autentificare

Ai deja un cont? Autentifică-te aici.

Autentifică-te acum
  • Navigare recentă   0 membri

    • Nici un utilizator înregistrat nu vede această pagină.
×
×
  • Creează nouă...

Informații Importante

Folosim cookie-uri și tehnologii asemănătoare pentru a-ți îmbunătăți experiența pe acest website, pentru a-ți oferi conținut și reclame personalizate și pentru a analiza traficul și audiența website-ului. Înainte de a continua navigarea pe www.tehnium-azi.ro te rugăm să fii de acord cu: Termeni de Utilizare.

ATENTIE !!! Functionarea Tehnium Azi depinde de afisarea de reclame.

Pentru a putea accesa in continuoare site-ul web www.tehnium-azi.ro, va rugam sa dezactivati extensia ad block din browser-ul web al vostru. Dupa ce ati dezactivat extensia ad block din browser dati clic pe butonul de mai jos.

Multumim.

Apasa acest buton dupa dezactivarea extensiei Adblock