Se afișează postările cu eticheta DDS. Afișați toate postările
Se afișează postările cu eticheta DDS. Afișați toate postările

marți, 28 ianuarie 2020

DDS cu AD9833 si Arduno mini pe TFT 0.98" cu ST7735

Zilele trecute mi-a sosit un modul cu AD9833. La sugestia lui Nicu Florică l-am testat cu succes după modelul de aici, și m-am hotărât să-l finalizez într-o casetă, pentru a fi ușor de utilizat.
Modulul arată ca mai jos:

Deoarece nu aveam display-ul folosit de cel de la care m-am inspirat, am făcut câteva teste cu ce aveam în sertar: Codurile testate sunt pe github.
TFT 1,44" ST7735
TFT 1,7"  ST7735
Oled 0.98" I2C
Între timp a sosit și un TFT de 0,99" mult mai drăguț decât OLED-ul, pe care l-am și folosit spre final.

Formele de undă direct pe ieșirea modulului arată astfel:



Ca să-l pot finaliza aveam nevoie de un circuit de ieșire pe care l-am preluat de aici cu schema de mai jos:
În locul lui LM318, am folosit  un LM675 alimentat la +/- 12V stabilizat cu  două LM7x12 iar pe ieșire am înseriat preventiv un rezistor de 100OHm. Partea de 3,3V  pentru Arduino, TFT și AD9833 am făcut-o cu un AMS1117-3,3 înseriat cu 220OHm/2W. Consumul total nu depășește 50mA pe bara de plus și 10mA pe minus.
Deși am testat cu un arduino nano, am finalizat cu un arduino mini alimentat la 3,3V ca să nu mai trebuiască un MMC4050 ca adaptor de nivel. Varianta cu rezistențele de 1KOhm serie cu pinii TFT-ului la mine nu a dat rezultate pe display-urile testate.

Cablajul a suferit destule variante până am reușit să-l conving să intre în caseta mea. Radiatoarele sunt montate preventiv. Singurul element călduț este AO-ul la frecvențe de peste 50KHz. Transformatorul  are 2x12V și este recuperat dintr-un utilaj casat. Ieșirea am făcut-o printr-o mufa RCA deoarece va fi folosit preponderent pe parte de audio.




Ca să nu pun TFT-ul pe capac am folosit niște potențiometri chinezesti minuscului, iar TFT-ul a încăput la limită pe partea din față.
Deși poza nu a ieșit foarte clară  din cauza obiectivului și a luminii, afișarea pe el este foarte bună. Din potențiometri se reglează offset-ul și nivelul de ieșire. Pentru encodere nu am găsit deocamdată butoane potrivite datorită geometriei atipice a axului.
Oscilogramele de la ieșirea AO-ului:




marți, 25 decembrie 2018

DDS cu Attiny85

Zilele trecute, cautind un generator sinusoidal la 50Hz cit mai simplu si stabil, am dat de articolul de aici cu update aici. Parea sa fie ceea ce cautam si i-am facut un test rapid. Omul prezinta un generator de functii in gama 1Hz- 5KHz cu reglajul frecventei din encoder. Formele de unda se aleg printr-o apasare scurta.
Schema preluata mai jos este foarte simpla:
Atentie la pinii lui Attiny85:

La iesire eu am folosit rezistente de 3K3 in locul celor de 4K7, si condensatori de 1nF in locul celor de 4,7nF
Terminalele encoderul traduse pentru encoderul meu arata astfel:

x = GND
Y = SW
C = +5V
A = DT
B = CLK (inversarea lui A cu B afecteaza doar sensul)

Codul pentru varianta finala in care exista si semnalul sinusoidal este aici. Eu nu am facut decit sa dau copy/paste si apoi sa incarc codul in ATTINY85. Initial am pus pe pe Attiny85 bootloaderul cu clock intern 8MHz.

A iesit ca mai jos:
Frecventa si forma de unda implicita se seteaza ca mai jos:
void setup() {
  Wire.begin();
  // Is it a power-on reset?
  if (MCUSR & 1) {
    Wave = 0; Freq = 100;     // Start with 100Hz Sine

Eu am ales sa porneasca cu 50Hz pentru ca voi renunta la encoder si oled. Urmeaza sa fie adaptat intr-un invertor sinusoidal caruia i-a explodat circuitul original. Partea de defazare este pe placa invertorului si este functionala, fiind anterior testata cu semnal de pe un generatorul de mai jos:

Update 28-IUL-2019
Semnale in antifaza obtinute cu ajutorul a trei inversoare (3/4 MMC4011)



Amplificator ultra simplu cu MOS 40W/8Ohm la 2x30V

 Am început construcția unui amplificator cu tranzistori MOS după o schemă proiectată de Ionel Epure , care se împacă foarte bine cu boxele ...