duminică, 27 august 2017

Ceas cu ATTINY85 Digispark, RTC, afisare pe I2C 7 segmente HT16K33

Sosise de ceva vreme un display  de 1,2" (3cm) cu interfata I2C,  controlat de HT16K33 si i-am utilizarea pentru carea fost construit impreuna cu un DS3231 si un modul ATTINY85 Digispark..
Trebuia sa iasa doar un ceas foarte vizibil, si sa aiba posibilitatea de ajustare a orelor si minutelor.

Schema de conectare este aici  Pentru reglaj am folosit tot 2 butoane de data asta legate fiecare pe cite un pin.
Dupa un pic de documentare si adaptari am reusit sa-l aprind.
Codul folosit impreuna cu bibliotecile utilizate aici
Prototipul l-am facut tot pe o placa te test cu sirme la care i-am atasat si o sursa:
Ulterior s-a facut o caseta din doua placi fata-spate una transparenta si una opaca, cu gauri pentru butoanele de reglaj.


Ceas cu ATTINY85 Digispark pe TM1637

Vazind cum se lucreaza cu modulele celor de la Digispark, m-am hotarit sa fac un ceas cu afisare pe display cu TM1637. P e internet nu am gasit mare mi-a atras atentia proiectul de aici.
M-am oprit asupra lui si -am adaptat la situatia mea iesind schema de aici.

Am pus doar doua butoane pentru reglaj ora, respectiv minute. Nu am gasit rezistente adecvate ca sa fac divizorul, asa ca am pus un semireglabil din care reglez cca 1,8V. Am testat cu modul de RTC cu DS3231, si DS1307 fara nici o modicare la cod.

Initial facusem sa nu afiseze zero la orele<10 insa se aprinde aleator acel digit si nu m-am prins ce-l deranjeaza, asa ca am renuntat



 In final am folosit un diplay mai mare cu acelasi controler TM1637
 Aici am facut un prototip pe placa de test, cu display-ul cel mare, montajul iesind la dimensiunea acestuia.





Aici este un alt prototip




Termometru ATTINY85 Digispark

Aveam mai multe module cu ATTINY85 de la Digispark si m-am hotarit sa fac un termometru cu DHT11 si afisare pe un display cu TM1637
Dupa o scurta documentare descpre placa de dezvoltare am ajuns la tutorialul lor de aici . Am urmat pasii de acolo si am instalat driver-ul de aici .
La Arduino IDE a aparut urmatoarea situatie:
Aici a aparut un alt programator dupa instalarea driver-ului.
 Aici a aparut si placa mea

M-am jucat un pic cu aprins LED-uri ca sa ma obisnuies cu modul de progrmare. Aici ideea este ca dupa editarea codului, se compileaza de test, se da upload fara a conecta placa la USB
Doar dupa ce apare mesajul de mai sus se conecteaza si placa la USB, va apare mesajul de ok cind termina si se mai asteapta cca 10 secunde dupa care se poate deconecta.
Am incercat si programarea cu circuitul realizat, si din 4-5 incercari merge o data. Pinii PB4 si PB3 sint conectati la USB in timpul programarii, iar daca schema utilizata ii foloseste se pare ca ceva nu-i place. In aceasta situatie am preferat sa scot placa din breadboard, s-o programez si apoi s-o atasez la loc in breadboard.

Acum ca am vazut cum se lucreaza, am folosit biblioteca si codul lui Nicu la care am adaptat modul de conectare conform schemei de aici si a rezultat codul de aici. Pentru DHT11 am folosit biblioteca de aici
Am avut placuta surpriza de a se compila fara erori, asa ca am incarcat codul. Dupa conectarea placutei pe breadboard chiar a functionat:

Testat  si cu un simplu  ATTINY85


sâmbătă, 26 august 2017

Sursa reglabila adaptata din sursa PC cu TL494

Sursa reglabila adaptata din sursa PC cu TL494

Din discutiile cu Nicu Florica si citeva informatii furnizate m-am hotarit sa transform o sursa de pc in sursa de laborator.
Informatiile de baza le-am gasit aici si aici.
Am reusit sa gasesc o sursa defecta ce avea condensatori explodati si folosea TL494.
Am inceput prin a identifica si elimina componentele conform schemei:
La eliminare trebuie identificate cu atentie componentele aferente lui T3 pentru ca acesta furnizeaza 5 si 12V din acest 12V se va alimenta ventilatorul de racire iar din 5V se va alimenta si placuta cu Arduino
Initial am facut teste in "aer":


Nu am gasit valorile rezistentelor din divizorul ce furniza referinta de 1V pe pinul 2 al circuitului, si am folosit un semireglabil de 10k. 
La transformatorul T3 nu am eliminat decit condensatorii electrolitici si pe infasurarea de 12V am lipit un condensator de 4700/35V.
Astfel am observat ca reglind o referinta de 1,6V tensiunea de iesire variaza de la 1,3V-28V. In aceasta situatie nu am mai facut modificarea din schema, ci am lasat dioda dubla care deja era montata pe radiator. Situatia mi-a convenit de minune pentru ca nu aveam la indemina puntea sugerata de italian.
Spre final am mai pus inca un condensator de 4700 si bobina L2. Cu un singur condensator apare riplu la consum de peste 4A.
Fiind toate OK am finalizat modificarile facute.


Acum trebuia sa rezolv problema afisarii curentului si tensiunii, si termostatarea incintei. Sursa de inspiratie a fost tot materialul publicat de Nicu.
Din cauza carcasei nu am gasit loc de montaj pentru un LCD 16x2, si am folosit unul 8x2 care era luat mai demult de pe aliexpress. Trebuia sa gasesc loc si la cei 2 potentiometri de reglaj , placa de arduino ce o aveam disponibila, si loc de racire la cele 3 rezistente de 0.2Ohm  care dau informatiile despre curentul de iesire.
Si aici a trebuit sa adaptez informatiile de la Nicu la situatia mea. Am folosit partea de masuratoare utilizata de el:
Mai departe am folosit un LM35 pentru masurarea tensiunii, iar la comanda ventilatorului un 2N2222, care era suficient pentru ventilatorul existent pe carcasa sursei. Detaliile se pot vedea din codul de aici.
Spre final am decupat cutia si a iesit ca mai jos:






Sursa 0-20/3A, cu LCD16x2, MAX471, termostat cu LM35

Sursa 0-20/3A, cu LCD16x2, MAX471, termostat cu LM35

Am luat de pe aliexpress un kit de sursa ca cel de mai jos:

Dupa lipire si teste s-a prajit rezistenta R2 180 ohm, Am inlocuit-o cu una de 1W care tot se incalzeste dar nu mai scoate fum, condensatorul C1 l-am inlocuit cu unul de 10mii/50V deoarece aveam un riplu pe iesire de cca 100mV la un consum de 3A. 
In rest nimic senzational, totul a fost OK.
Tranzistorul Q4 necesita racire serioasa mai ales daca sursa va fi folosita la tensiuni de iesire mici si curent mare.
La teste am folosit un transformator 220/24/63W
Imagini din faza de testare:

Dupa ceva timp l-am incasetat si a trebuit sa fac ceva adaptari functie de cutia ce o aveam la indemina. Asa ca am folosit un transformator recuperat de la o sursa UPS care scotea in secundar 2x7Vsi ca marime s-a potrivit la mm cu cutia. Racirea tranzistorului am facut-o cu un cooler de AMD deorece are suprafata de contact mai generoasa..

A trebuit sa-i fac si un sistem de afisare si termostat la cooler. In acest scop am folosit un Arduino cu un LCD 20x2 recuperat si acesta. Avind un senzor cu MAX471 care are un domeniu de masura 3-25V 0-3A, m-am hotarit sa-l folosesc pe acesta. 

Pentru teste m-am folosit de informatiile de aici.
Insa valorile afisate oscilau fiind greu de citit, mai ales daca vrei sa setezi o anumita valoare pentru tensiunea de iesire. Problema a fost rezolvata de Nicu Florica , asa ca m-am folosit de solutia gasita de el. Nu dau detalii pentru ca Nicu a dat suficiente la el pe blog
Avind acum toate informatiile am trecut la scrierea codului si am afisat tensiunea, curentul, temperatura, si starea normal sau scurt.
Pentru masurarea temperaturii am folosit un LM35 care este suficient de bun pentru a afisa temperatura cooler-ului. Ventilatorul pleaca la 40 grade. Am setat aceasta valoare pentru ca la teste am observat ca timpul de racire este mai mic, desi ventlatorul porneste un pic mai des. Daca setez 45grade timpul de racire este destul de mare si implicit si zgomotul facut. Valorile sint setate direct in cod care se gaseste aici.  Schema de conectare reiese din cod.
La montaj LCD-ul 20x2 a cedat, si l-am inlocuit cu 16x2.
Imagini cu ce a iesit sint mai jos.
Initializare


 Valoarea maxima a tensiunii de iesire
 Scurt pe iesire sau tensiune < 0,3V

 Functionare cu sarcina bec auto


Stabilizator reglabil 14V/1A de la 50V-300V cu IR2153

 Cu mult timp în urma am testat un stabilizator în comutație, reglabil cu IR2153 conform notei de aplicație din datasheet. Am reluat din nou...