miercuri, 27 noiembrie 2019

Sursa de laborator "hibrida" cu LM723 0-28V/7A

La solicitarea unui amic am pornit de la o sursă recuperată de la copiator vechi, modificată să scoată 36V /7A și am realizat o sursă cu LM723 (asta a fost cerința) cu reglaj din 0V. Partea de tensiune negativă am realizat-o cu MC34063 (pagina8). 
Schema finală a rezultat de forma:
Din  semireglabilul VR1 se reglează referință de 1V pe pinul 5 al lui LM723, VR3 reglează tensiunea de ieșire. 
VR4 reglează tensiunea negativă  (atenție să nu se depășească 40V care este Umax la LM723) ce va determina nivelul de 0V reglat cu VR3 (în situația de față pentru 1V sunt necesari -5V pentru a se porni din 0V cu reglajul tensiunii de ieșire, și rezultă o tensiune de 35V ce alimentează LM723). 
Cu VR2 am făcut un compromis pentru ajustarea curentului de scurt. La o valoare de 10K curentul de ieșire este ajustat între 1A ce este determinat de valoarea lui R2 și 6,8A maxim. (la 7,2A intră protecția SMPS-ului). 
În loc de 2N3055  și D3 s-a folosit un NJL0281D care are și o diodă inclusă în capsulă.
Imaginile primite din parcursul "procesul" de creație:



 Radiatorul este foarte generos și nu a mai necesitat ventilație (provine de la un convertizor de frecvență trifazic), care după  3 ore de test la un consum de 5,3A pe un bec de far auto alimentat 5V avea o temperatură foarte suportabilă la degete.
 Din lipsă de spațiu nu a mai încăput voltmetrul cu Attiny85 așa că s-a adoptat varianta mai simplă.
Aici este curentul maxim la care începe limitarea.
 Tensiunea minimă (în realitate este de +10mV)
 Tensiunea maximă


sâmbătă, 9 noiembrie 2019

Radio cu SI4703 pe TFT 1,44" ST7735

Zilele acestea a sosit un modul radio FM cu SI4703  ce este cumva similar la specificații cu RDA5807 ( este pregatit pentru RDS si RBDS) numai că se conectează diferit cu Arduino.  La fel ca RDA-ul are și acesta posibilitatea de reglaj a volumului. Arată ca în poza de mai jos:
Funcționează și acesta ca și TFT-ul tot la 3,3V însă intrările suportă nivel TTL, eu am testat  vreo două săptamâni pe un arduino nano, unde SI-ul și TFT-ul sunt alimentate la 3,3V iar intrările sunt legate direct la Arduino. Conexiunile sunt comentate în cod.
Modulul are antena conectată la firul de masă al jack-ului de căști, iar în link este dată schema placuței, și  modificarea pentru o eventuală antenă exterioară.
Pentru funcționarea cu arduino, am abuzat din nou de google, și m-am oprit pe un material al lui Matthias Hertel  care a studiat în amanunt aceste circuite având github lib-urile testate.
Dupa ce am verificat testele, am luat exemplul cu LCD și butoane și l-am adaptat pentru un TFT de 1,44" 128/128 cu ST7735.
În general s-a comportat foarte bine, ținând cont că zona de test nu este favorabilă recepției radio.
Teoretic codul ar fi funcțional și pentru RDA5807 și TEA5767 (acesta nu are RDS și volum - va trebui găsit atceva pentru a ocupa spațiul de pe TFT). Deocamdată nu am pentru un test rapid. Modificarea ar fi doar de aici:

// RDA5807M radio;    ///< Create an instance of a RDA5807 chip radio
          SI4703   radio;    ///< Create an instance of a SI4703 chip radio.
//SI4705   radio;    ///< Create an instance of a SI4705 chip radio.
// TEA5767  radio;    ///< Create an instance of a TEA5767 chip radio.

iar aici: 
  #include <SI4703.h>
trebuie înlocuit corepunzător.

Varianta testată a  ieșit ca mai jos:
 Deocamdată lipsesc butoanele, pentru test am simulat cu un conductor legat la masa. (Seek up/down, volum up/down, și un buton care apăsat aduce forțat un anume post radio ce este definit în cod)
 Pentru că mai aveam loc în arduino, am adaugat și un DHT11



Pe ondrive am pus un mic filmuleț cu funcționarea acestuia.

sâmbătă, 19 octombrie 2019

Miliohmetru cu arduino

Fiind nevoit să verific și să sortez niște rezistențe sub 1 Ohm, am realizat un miliohmetru  bazat pe arduino ca afișare și LM317 ca generator de curent constant. Sursa de inspirație este aici: cu schema de mai jos:
Eu am alimentat cu 5V în loc de 9V .
Cea mai mare provocare a fost reglarea curentului fix la 100mA, pentru că nu am gasit disponibil un multitură de 50-100Ohm.
Pentru afișare am folosit informațiile din articolul anterior.
Reglajul curentului la 100mA:

Valoarea rezistenței este afișată în mOhm.
U2 este tensiunea de la intrarea lui LM317.

Codul este pe github.

sâmbătă, 28 septembrie 2019

Voltmetru dual cu AD7705 pe OLED I2C

Am testat funcționarea pe arduino nano a unui modul convertor analog digital  pe 16 biți cu AD7705 cu interfață SPI ca cel din poza de mai jos:


Modul de conectare la arduino se găsește aici, către finalul fișierului: https://github.com/kerrydwong/AD770X/blob/master/AD770X.h  :

pinMOSI = 11; //MOSI
MISO = 12; //MISO
SPIClock = 13; //SCK
CS = 10; //CS
RST=RST arduino

După ce am verificat (pe serial monitor) exemplul din lib, am conectat un OLED I2C 128x32, am pus V- (de la modulul CAN) la GND și am aplicat tensiune pe ambele V+ dintr-o sursă dublă cu reglaj independent, a ieșit ca mai jos:
 Aici se poate vedea valoarea sursei de semnal ce am aplicat-o pe cele două intrări V+:
Precizia si liniaritatea (pe o plajă de 0-1,5V) par să fie destul de bune, cel puțin comparativ cu aparatul de măsură folosit.
Codul testat este pe github.

Update 25-apr-2022

L-am adaptat pentru afișare tensiune și curent.
Tensiunea măsurată

Și curentul măsurat:




vineri, 27 septembrie 2019

Radio with TEA5767 on ATTINY85 with 7 segments HT16K33

Pentru un viitor proiect  am testat un radio foarte simplu cu TEA5767 ce m-a inspirat de aici: http://forklg.ru/viewtopic.php?f=98&t=1173
Testat pe arduino uno nu am reușit (pe display-urile ce le aveam disponibile) să-l fac să aprindă virgula decât în situația când frecvența afițată era mai mare de 100. Având o rezervă de module cu HT16K33 (drive LED cu interfață I2C) am înlocuit afișorul  cu TM1637, cu acesta pe I2C. Astfel a început să funcționeze normal. În plus i-am pus limite la frecvența minimă și maximă.  Unul din butoane incrementeză frecvența pozitiv, celălalt negativ.

if(f_ini<87.5) f_ini=87.5;
if(f_ini>108) f_ini=108;

Văzând gradul mic de ocupare a codului  și numărul mic de legături, am portat codul pentru ATTINY85.
Mai jos este poza cu modulul folosit.

Acesta din urmă are logica intrărilor pe invers, asa ca am legat rezistentele la plus pentru a nu mai face modificari in cod .
Am pus pe onedrive și un filmuleț scurt: https://1drv.ms/v/s!Ag3156arz2JqlTUW6c5FQ5a7g244?e=4wTOje

Încă mai există loc pentru a implementa și memorarea ultimului post, însă deocamdată nu mă interesează.

luni, 23 septembrie 2019

Statie meteo cu Esp8266 pe TFT 2,8 240X320 ILI9341

Am testat funcționarea unei stații meteo pe display TFT cu rezoluția de 240x320 ce are ca driver ILI9341 legat la un  ESP8266. Sursa de inspirație a fost https://www.instructables.com/id/ESP8266-Colored-Weather-Station/ .
Mai multe detalii se găsesc pe site-ul de inspirație, iar mai departe fac doar un rezumat scurt.
TFT-ul la ESP8266 l-am legat astfel:
CS-GPIO5, RST-RST, DC-GPIO16, MOSI-GPIO13, SCK-GPIO14, LED-+3,3V, MISO-GPIO12
Partea de touch am lasat-o deocamdata în aer, iar LED-ul TFT-ului l-am legat direct la +3,3V 
Definițiile pentru DC și CS le-am pus direct aici în tab-ul principal:
ILI9341_SPI tft = ILI9341_SPI(5, 16); pentru că nu a vrut să le ia din settings.h.
Apoi mi-am facut un cont free pentru a obține un api_key pentru  meteo: https://docs.thingpulse.com/how-tos/openweathermap-key/ , iar aici am căutat ID-ul pentru Iași: https://openweathermap.org/city/675810. În linia 65 de la settings.h am modificat :
#define UTC_OFFSET +1
înlocuind 1 cu 2 pentru a obține ora României.
Tot aici, în liniile:
#define WIFI_SSID "your-ssid"
#define WIFI_PASS "your-wifi-password" 
am trecut setările mele de wifi.
Apoi am început să caut lib-urile necesare. Pe github am pus o arhiva ce contine folderul Arduino cu codul si lib-urile necesare, folosite de mine. Practic trebuie redenumit dosarul curent, și copiat conținutul arhivei în locul acestuia. În poza de mai jos este screen-ul de la macbook unde am testat din nou proiectul, verificând astfel daca nu mi-a scăpat ceva la arhivarea de pe Ubuntu.

După compilarea finală  a ieșit ca mai jos:

sâmbătă, 21 septembrie 2019

Ceas cu afisare pe TFt cu ILI7575 cu reglaj

La solicitarea unei cunoștințe, pornind de la materialul de aici: https://simple-circuit.com/arduino-ds3231-st7735r-color-tft/ , am adaptat codul pentru un shield TFT de 2,8" cu ILI7575.
Din nefericire acest display TFT nu a vrut să se aprindă decât cu lib-ul lui JoaoLopesF . La acest lib încă nu m-am prins cum să-i adaug alte fonturi.
Ca să pot folosi A4 si A5 de la Arduino UNO pentru I2C-ul lui DS3231, am eliminat pinul reset de la TFT și l-am legat la reset-ul lui Arduino,
In cod modificarea este: 

#define LCD_RESET 0 // Can alternately just connect to Arduino's reset pin

De la TFT am eliminat și cei 4 pini corespunzatori conectarii SD-ului, pentru a face loc la cele 2 butoane și pentru senzorul DHT11.
Modificările se pot vedea în imaginea de mai jos:
După adaptarea codului (conform "caietului de sarcini") a ieșit ca mai jos:
Funcționalitățile butoanelor au ramas aceleasi, adică la apasarea lungă a butonului 1 se intră in mod programare situație în care fileaza câmpul de reglat, din butonul 2 se incrementează pozitiv după care  este reluat de la 0. După reglarea minutelor, apăsarea butonului 1 resetează secundele și iese din mod programare.
Pun și un link către un filmuleț scurt ce arată modul de reglaj.
Codul adaptat este pe github.

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 ...