miercuri, 30 ianuarie 2019

Radio cu TEA5767 cu afisare pe TFT 1,44" si reglaj de volum

Am pornit de la un proiect mai vechi care a fost adaptat dupa informatiile gasite pe blogul unui neamt, la care am adaptat din nou afisarea pentru un TFT de 1,44", in plus am adaugat inca doua butoane care ajusteaza volumul (la iesirea D3 se obtin impulsuri cu factor de umplere variabil). Teoria este descrisa de Nicu Florica pe blogul lui. Pentru amplificare am folosit un TDA7496L care are un pin pentru  reglajul volumului  functie de tensiune. In plus am mai introdus o dioda la A1 care masoara si afiseaza si temperatura. A iesit ca mai jos:


Iesirea D3 este legat la rezistenta de 300K din pinul 6 al lui TDA7496L printr-un integrator compus dintr-un rezistor serie de 1K cu 2 condensatoare la GND unul de 4,7micro in paralel cu 100nF.
Schema se poate deduce foarte usor din codul postat pe github unde am lasat comentarii.
Impulsurile din pinul 3 care sint responsabile cu reglajul volumului se pot vedea mai jos:
Volum ridicat
 Volum scazut

O tentativa de realizare finala  (care nu-mi apartine, eu doar am scris codul in Atmega328) se poate vedea mai jos:

Sub display este un Atmega328, iar modulul cu TEA5767 este pe fata cu circuite. Cablajul urmeaza a fi refacut pentru s-a omis pozitionarea diodei sensor de temperatura (acum este pusa cu 2 sirme in aer) si s-au gresit gaurile pentru butoane (acestea fiind atipice cu tija foarte lunga). Cele din poza sint temporare pentru teste.


Aici e partea de alimentare cu 3,3V realizata cu MC34063 (pag.7), si amplificatorul cu TDA7496L (pag.4)


 Cele 2 placi deocamdata sint fixate spate in spate cu "pseudo" distantieri.



duminică, 13 ianuarie 2019

Radio cu TEA5767, afisare pe TFT 1,44", reglaj cu encoder

Am testat functionarea unui radio FM cu modul TEA5767 (proaspat sosite) cu un arduino pro-mini, cu afisare pe TFT 1,44" 128x128 (la fel proaspete) si reglaj cu encoder (urmeaza a fi casetat, iar utilizarea acestuia usureaza executia).
Am pornit de la un proiect testat de un rus, gasit pe internet unde link-ul original este aici, iar traducerea aici. Proiectulul lui este mai complex dar mie mi-a fost suficienta varianta simpla.
Fata de schema omului am facut urmatoarele modificari:
la encoder PIN_SW   8   l-am pus pe 7, iar TFT-ul este legat astfel:

CS -10
DC (A0)  - 9
RST - 8
SCK - 13
SDA - 11
LED - Vcc printr-o rezistenta de 100 Ohm
la encoder CLK-3, DT-2, SW-7

TFT-ul utilizat avind tensiunea de alimentare de 3,3V, am utilizat un arduino pro mini pe care l-am alimentat la 3,3V.
TFT-ul are la baza circuitul ILI9163, iar in lib-ul folosit am editat fisierul TFT_ILI9163C_settings.h cu rezolutia acestuia respectiv 128x128. Detalii sint si intr-un articol mai vechi, de unde am preluat afisarea nume post, pentru ca TEA5767 nu are functia de RDS.  Afisarea grafica a nivelului de semnal este adaptata dupa articolul lui Nicu Florica.
Dupa aceste modificari a iesit ca mai jos:
Pentru afisarea frecventei am utilizat un font pentru a face mai eleganta afisarea numerelor.


In mod TUNE (SEARCH)
Imaginea de ansamblu testata:

Functionarea este conform filmului postat de rus, adica la apasarea prelungita butonului encoder, se intra in mod tune, iar prin rotirea encoderului se fixeaza frecventa dupa care apasarea butonului realizeaza memorarea frecventei. Din cod sint programate 16 zone de memorie pentru 16 posturi. Pentru a memora un post, mai intii rotesc encoderul pina apare numarul memoriei dorite. Dupa ce s-au memorat posturile, este suficienta simpla rotire a encoderului, si frecventele vor fi citite din memorie.
Alocarea de nume la o anumita frecventa corespunde orasului Iasi. Se poate modifica editind liniile de forma:

if (frequency==963) { display.setCursor(25,85);
   display.setTextSize(1);
   display.setTextColor(YELLOW,BLACK);display.print("Radio Iasi  ");}

spre finalul codului in :

void printpost(float frequency)

Pe github am ridicat si lib-ul modificat pentru ILI9163.
Cind voi mai gasi o ferestra vreau sa-i fac si un reglaj de volum cu TDA7496.
Voi reveni cu detalii dupa casetare.

sâmbătă, 5 ianuarie 2019

Step-up cu UC3843

Avind nevoie de mai multe module step-up de la 12V la 40V circa 2A, am hotarit sa mi le fac singur pentru a reduce putin costul. 
M-am oprit asupra lui UC3843 pentru ca am suficiente, restul componentelor provenind din recuperari. Cu R8=0,47OHm protectia intra la cca 2,5A, cu R8=0,01Ohm incepe sa functioneze dupa 13A. Tensiunea maxima stabila la 3A a fost de 52V.
Schema finala este:

Schema este foarte apropiata de cea a modului chinezesc pe care l-am utilizat pina acum :
Realizarea de test arata ca mai jos:


Frecventa de oscilatie a rezultat 82KHz cu valorile date in schema. Bobina este nemodificata si provine de la o sursa ATX, de asemenea si dioda dubla. Tranzistorul si radiatorul sint de la un UPS defect. Oscilatiile din poza sint cele din grila tranzistorului.


Punind soclu pe placa de test am reusit sa verific su UC-urile ce le aveam recuperarte.
Cu o sarcina de aproape 2,3A simulata cu 3 becuri de semnalizare legate in serie radiatorul s-a mentinut rece, bobina s-a incalzit foarte usor.
Am desenat si o varianta de cablaj lejer pe care sa incapa radiatorul utilizat, si sa poata intra in cutie.


Varianta pentru transfer toner este cloud si imediat ce voi face un pic de ordine ma apuc de calcat.
Imagini cu varianta pe cablaj:





Update:
Daca vreti sa scoateti +/- schema se modifica ca mai jos:

si rezultatul de la test:

 Tensiunea negativa e mai mica pentru ca a treia sirma a fost mai scurta si lipseste 1 spira.




duminică, 30 decembrie 2018

Test indicator tensiune, curent, temperatura pe OLED folosind arduino

La sugestia lui George Dacin am testat un indicator pentru o sursa de laborator folosind un arduino cu afisare pe OLED I2C 128x64. Materialul de baza a constat in articolul lui Nicu Florica, la care am modificat afisarea pe OLED si am adaugat un pseudo termostat.
A iesit ca mai jos (clampmetrul din poza e folosit doar pentru fixare):
Rezultind o afisare patratoasa "patratoasa" am modificat codul initial introducind fonturi conform materialului prezentat de adafruit, iar dupa incarcarea codului a iesit ca mai jos: (prima poza e de la mine, cea de jos a alui George)


Asupra masurarii temperaturii parerile au fost diferite, George dorea sa foloseasca DS18B20 , iar eu doream o simpla dioda (metoda descrisa in detaliu de Nicu), tinind cont ca aceasta urma sa masoare temperatura unui radiator si actioneze un ventilator la depasirea unui anumit prag.
Ca sa nu fie discutii am realizat un test cu DS18B20 si un test cu dioda
Apoi a aparut un comentariu al lui Cristi Vasilache vis-a-vis de precizie, asa ca am luat o sursa de la un copiator defect ce scoate 35V/5A, si modul cu XL4016. Divizorul testat de mine e format dintr-o rezistenta de 100K si una de 470 Ohm, cu 0,1Ohm pentru curent. Valorile rezistentelor le-am masurat cu un AMPROBE 35XP-A, cel ce apare in poze, iar la rezistenta de 0,1Ohm am luat de buna valoare inscrisa pe ea. Referinta interna la mine arata 1,11V
Imagini de la teste sint mai jos:




Concluzia este (asa cum se poate vedea din imagini) ca precizia este cumva relativa, fiind afectata de rezolutia de 8 biti a lui Atmega328 si precizia masurarii rezistentelor din divizor si a tensiunii de referinta. 
Cind va finaliza si George cu testele de la el voi reveni cu detalii.

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:


duminică, 18 noiembrie 2018

Fake ATX cu WT7520

Zilele astea am fost solicitat sa repar si apoi sa modific sursa de mai jos la tensiunea maxima ce o poate scoate. Cred ca e cea mai "subnutrita" sursa pe care am desfacut-o.



Surpriza a fost sa constat ca din fabrica s-au omis foarte multe componente. Problema ei era de fapt ca nu tinea in sarcina, calculatorul oprindu-se brusc fiind nevoie de intreruperea alimentarii pentru a porni. Asa cum se poate vedea mai jos transformatorul principal si radiatoarele fiind foarte mici.


Am lipit un bec de 220V cu filament in locul sigurantei si dupa inlocuirea a doua condensatoare "bombate" de 10micro/25  a reusit sa porneasca. La testul cu becul de far pe bara de 5V intra protectia trebuind intrerupta alimentarea pentru a reporni (acest bec consuma cca 4,5A la alimentare de 5V). Circuitul de comanda de pe placa este WT7520. Am inceput sa studiez foaia de catalog ca sa ma prind ce-i cu el, in paralel masurind tensiunile de pe placa,si am vazut ca sint niste diferente mari fata de informatiile de la pagina 5. Asa ca am eliminat divizoarele de pe pinii 1,2,3 si am lipit 2 semireglabili intre masa si +5V (firul violet)  ajustind tensiunile din foaia de catalog. Surpiza nu a vrut sa porneasca deloc. Apoi am ajustat semireglabilii la valorile masurate initial (1,8V, 5V, 3,1V, corespunzator pinilor, 1, 2, 3) si astfel a pornit. De la pinul 16 (responsabil cu modificarea factorului de umplere a impulsurilor, implicit tensiunea de iesire), am eliminat rezistentele ce duceau la +3V,5V,12V si le-am lasat doar pe cele ce duc la masa (ca sa pot obtine valoarea maxima). Astfel am obtinut pe bara de 12V o tensiune de 24,13V.
In poza de mai sus se observa cei 2 semireglabili lipiti pe pinii circuitului integrat cu care am "pacalit" prezenta celor 3 tensiuni.


Am lipit un semireglabil de 50K intre masa si "bara de 12V" ca sa vad la ce tensiune minima se duce si am obtinut 5,79V  : 

La  testul cu becul auto a esuat. Apoi am pus in paralel becuri de semnalizare pina cind a inceput sa scada tensiunea de iesire, astfel am ajuns la un consum de 4,5A, peste aceasta valoare incepind sa scada tensiunea. Astfel am eliminat extraprotectiile circuitului, respectiv, pinul 4 si 12 le-am lasat in aer, si acelasi rezultat, la peste 5A scadea tensiunea de iesire (desi pe eticheta este scris altceva). Banuind circuitul integrat cu bube, l-am inlocuit cu altul de pe o placa ce functiona in parametri, acelasi rezultat. Am trecut la inlocuirea diodei duble, si rezultatul a fost acelasi. Asa ca  vinovat a ramas doar transformatorul care fizic este foarte mic.(Nu am mai avut rabdare sa incerc si inlocuirea acestuia, deoarece se dorea max. 4A cu protectie la scurt).
Am cuplat si ventilatorul pe care l-am alimentat din sursa permanenta de 5V care mai avea o infasurare aditionala de 12,8V pentru alimentarea celor 2 tranzistori de comanda, acesta fiind cu adevarat silentios.Se poate alimenta si de pe bara de +5V care are in jur de 11V la maxim), dar am vrut ca acesta sa raceasca radiatoarele si in cazul declansarii protectiei).
Lasata in sarcina cu cca 4A pe 24V a functionat relativ rece, singurul element evident mai cald fiind radiatorul cu cei 2 tranzistori de putere (cei alimentati la 400v) care comanda trensformatorul.
In conditii normale pinul 4 sta in cca 0.4V, si pe masura ce curentul creste tensiunea urca, iar cind depaseste 0,83V blocheaza oscilatorul. Testele finale le-am facut eliminind becul de balast pus in locul sigurantei.

Cel ce mi-a adus sursa la modificat urmeaza sa inlocuiasca dioda dubla cu o punte redresoare din diode schottky, dorind sa obtina 2x20V/3A pentru alimentarea unui amplificator. La 4A riplul era de 9mV cu 2x2200micro/35V.


sâmbătă, 20 octombrie 2018

Test display LCD 6 digiti, 7 segmente cu HT1621

Dupa o relativa ratacire mi-a sosit si mie display-ul. Lui Nicu Florica i-a sosit mai devreme, si a reusit sa faca munca cea mai grea de studiu si a pus o sinteza la el pe blog, asa ca nu am mai inventat o alta roata ci am preluat munca lui. 
Initial am realizat testul lui ca sa-l testez si pe cel ajuns la mine, dupa care am adaugat un senzor DHT11, si un DS1307 pentru a vedea cum se misca cu date reale. Am pastrat schema lui la care DHT-ul l-am legat la D3, la A4 si A5, SDA si SCL de la modulul cu DS1307. Am adaptat codul lui si a iesit ca in imaginile de mai jos (varianta mea de test este disponibila pe github):

Afisare ora si minut

 Afisare temperatura


 Afisare umiditate


 Imaginea cu montajul de test


Am vrut sa sting LED-ul de fundal si am descoperit ca acesta era legat direct la +5V, ca in imaginea urmatoare:

Am folosit o tresa de dezlipit pentru a scoate puntea de cositor din stinga si am facut-o in dreapta. Astfel pinul LED disponibil in dreapta display-ului a devenit functional.


Ca dimensiune se poate vedea mai jos:


In curind urmeaza ca in combinatie tot cu arduino si prescalerul M506 (descris foarte frumos de Nicu Florica aici) sa se transforme in frecventmetru.

Am folosit doar DHT11 cu attiny85 si functioneaza perfect. Codul modificat pe github.

Radio cu TEA5767 cu afisare pe TFT 1,44" si reglaj de volum

Am pornit de la un p roiect mai vechi  care a fost adaptat dupa informatiile gasite pe blogul unui neamt , la care am adaptat din nou afisa...