duminică, 8 octombrie 2017

Ceas cu reglaj, temperatura si umiditate cu attiny85

Am reluat proiectul de aici cu Attiny85 DIGISPARK si i-am adaugat si un senzor DHT11.
 Pentru reglaj am folosit pinul reset care este utilizabil ca analogRead pentru tensiuni mai mari de 2,5V. Fiindu-mi lene sa calculez un divizor cu rezistente, am pus 2 semireglabili de 1K intre +5V si masa iar pe mijlocul lor am reglat 3V (valoarea citita este 647), respectiv 4,5V (valoare citita 968).
Ca RTC in acest caz am folosit un DS1307, functioneaza si cu DS3231 fara nici o modificare la cod.
Codul este aici si sint comentate legaturile.
Avind bucla de afisare :
for (int pp=20; pp>0; pp--)
este un pic enervant  inceputul reglajului orei si minutelor, deoarece la fiecare 20 secunde va afisa temperatura si umiditatea, dar in felul acesta am folosit la maxim dotarea hard/soft a lui Attiny 85.
Reglajul odata efectuat teoretic nu mai este necesar decit la schimbarea orei de iarna sau primavara.
Am incercat initial sa blochez bucla pe perioada reglajului, insa codul depaseste memoria lui Attiny.
Schema este aici
citeva poze mai jos:
Temperatura
Umiditatea




TEST STM32F103C DS3231 TM1637

Am adaptat proiectul de aici inlocuind ATTINY85 cu STM32, si a iesit ca mai jos:
Legaturile sint comentate in cod.
Functioneaza si cu DS1307 fara modificari la cod, dar cu adaptor de nivel.( STM-ul merge la 3,3V, iar DS1307 vrea neaparat 5V).


Am conectat si senzorul DHT11 astfel incit 20 secunde se afiseaza ora apoi 2 secunde se afiseaza temperatura si 2 secunde umiditatea.codul rezultat este aici.

TEST STM32F103C DHT11 TM1637

Am testat cu STM32F103C afisarea temperaturii si umiditatii pe un display 7 segmente cu controler TM1637. Am folosit tot Arduino IDE pentru programare.
Aici treaba a fost foarte simpla, am luat exemplul lui Nicu si am modificat  in cod descrierea pinilor si a functionat fara probleme. Codul adaptat de mine este aici.


STM32F103C test cu Nokia 5110 si DHT11

Am testat afisajul Nokia 5110 cu DHT11 cu STM32F103C, utilizind Arduino IDE
Am folosit informatiile de aici pentru Nokia, si de aici pentru DHT11.
Codul si bibliotecile sint aici.
Ce a iesit vedeti mai jos:





marți, 3 octombrie 2017

Ceas cu afisare pe Nokia si reglaj

Am revenit la un proiect mai vechi  ce mi-a placut la acea vreme, inspirat de aici, si i-am adaptat reglaj manual pentru data si ora dupa modelul lui Nicu, folosind un encoder pentru a fi mai usor de bagat intr-o cutie. Cutia va fi de la un ceas cu lcd defect similar cu cel de aici.
Arata ca in imaginile de mai jos:
Modul de conectare se poate deduce din cod .
 La o apasare lunga pe butonul encoderului se trece in modul reglare, apoi rotind dreapta stinga se ajusteaza valorile. Ca sa iesiti de modul reglare trebuie parcursi toti pasii dupa care revine in display-ul principal.


Codul din faza aceasta este pe github. I-am mai adugat niste zerouri la minutele si secundele <10 pentru ca era cuidata afisarea.

Deoarece nu era vizibil pe timp de noapte i-am adaugat un fotorezistor pe A2 legat la Vcc, A2 este legat la masa printr-un rezistor de 470ohm. pe pinul D5 (PWM)  am conectat led-ul lui Nokia(pinul BL), si l-am facut ca la intuneric sa aprinda un pic acest led cit sa faca vizibil display-ul.
Intuneric simulat cu capacul de la stilou:


In plus am mai adaugat o functie astfel ca la o apasare scurta pe encoder sa afiseze timp de 2 secunde doar temperatura si umiditatea, cu caractere mari pe ecran iluminat. La apasare lunga va intra in modul reglaj.

Codul este tot pe github.

sâmbătă, 23 septembrie 2017

Sursa 0-20V/3A comandata de arduino cu afisare pe OLED 128x32

Am refacut sursa din articolul anterior adaugind un al doilea AO, pentru ca in varianta initila reactia negativa nu functiona corespunzator, producind mici variatii ale tensiunii de iesire functie de consum. 
Asa ca primul AO se ocupa de furnizarea referintei, iar al doilea AO de stabilizare si reglaj tensiune.
Am gasit prin sertar un display OLEd cu rezolutie de 128/32 si am adaptat codul pentru a afisa pe acesta. 
Deocamdata am pastrat afisarea pasilor ca sa pot regla amplificarea primului AO. (La final voi afisa cind este scurt pe iesire, mai este A2 liber si voi monitoriza starea colectorului lui BC107 care se ocupa de preotectia la scurt.)
Reglajul porneste din 0V pina la 20V, iar pina la 3A tensiunea de iesire este constanta, dupa care BC107 blocheaza comanda.
Reglajul curentului de iesire nu m-a interesat in acest moment. (mai sint necesare inca 2 AO, si e posibil sa nu-mi incapa cablajul in cutia ce urmeaza sa soseasca).
Schema a devenit:
Mai jos sint citeva imagini de la teste:

 Temperatura radiatorului fara ventilatie nu a depasit 40 grade la 2,5A, si 3,2V cu 28V pe intrarea in colectorul lui 2N3055 (IPRS Baneasa).


In curind si cablajul imprimat, dar astept carcasa ca sa-l pot adapta la gaurile de fixare ale cutiei.

miercuri, 20 septembrie 2017

Sursa LM317 cu controlul digital al tensiunii

Dupa testele din articolele anterioare  am finalizat primul pas (reglajul digital al tensiunii de iesire) conform schemei de mai jos ( teoretic functioneaza pe orice varianta de sursa de laborator cu LM317): ceva similar cu modulul chinezesc

Pentru a se misca mai repede am mai adaugat 2 butoane pentru incrementare cu pas de 10, era foarte lung timpul de parcurgere de la minim la maxim. Pe display am mai afisat in partea de jos numarul de pasi pentru a regla reactia negativa de pe primul AO (detalii experimentate sint in link). Din semireglabilul de 10K de pe pinul ADJ al lui LM317 reglam tensiunea minima, in cazul meu am reusit s-o duc la 1,82V fara a suprasolicita tranzistorul de comanda  caruia nu i-am mai pus protectie. (Am incins 2 bucati si am topit 2 semiglabili multitur de 10K).
Tensiunea de -5V am facut-o conform schemei:
Asa cum am scris in articolul anterior rolul celui de-al doile AO este descris de Nicu Florica la el pe blog.
Im plus am adaugat 3 regulatoare: 7824 pentru AO, 7812 pentru ventilator, si 7805 pentru Arduino.
Transformatorul folosit este destul de generos si nu simte consumul suplimentar la  iesirea de 18Vca.
Eu am folosit un AO rusesc dublu K157YD2 care era disponibil in sertar, dar se poate folosi orice AO.
Codul este pe github.
Ca traductor de temperatura am folosit tot LM35.
Imagini din timpul testelor finale mai jos:
Aici am reglat reactia negativa
Radiatorul tranzistorului regulator este temporar ca sa nu se incinga accidental  la reglajul tensiunii minime.


 Aici are si consumator un bec auto de frina. Din cele 5 butoane (recuperate e la un copiator) sint folosite momentan doar 4. primele 2 + - din 10 in 10 pasi si urmatoarele + - cu pas ce 1. (Avem 8biti iar plaja de reglaj este de la 0 la 256, cu pas ce 60mV)
Tensiune minima. 
Pe radiatorul de AMD am lipit puntea redresoare (recuperata de la o sursa PC), cele trei stabilizatoare, si LM-ul 317. Aici am facut montajul in aer pentru erau prea multe fire de tras la placuta. In acest moment ventilatorul nu este alimentat pentru ca nu a fost nevoie desi aveam un consum de cca 12W pe becul de sarcina.
Diferenta de afisaj de TFT e din cauza tensiunii de 5V a lui Arduino, in cod este setata valoarea ce mi-o furniza  USB-ul laptopului.
 Tensiune maxima

SMPS cu TNY279

 Am meșterit o sursă de 12V/1,5A cu TNY279 /278. Cu TNY278 duce 1A, testat pe același transformator capsulat căruia nu i-am găsit datasheet...