Ceas cu Arduino Nano V.3, modul DS1307, 2 senzori DS18B20 si afisaj LCD




  Ca sa mai invat cateva lucruri despre Arduino si despre crearea unui cod in mediul Arduino, am creat-testat un Ceas cu modul DS1307, doi senzori de temperatura DS18B20 (care citesc temperaturile din interior si exterior) iar afisarea informatiilor este realizata pe un afisaj LCD 20x4, momentan am folosit un LCD 20x4 pentru ca doresc si implementarea unui "Big Font" in cod, dar se poate folosi si un LCD 16x2, prin cateva modificari minore in soft (cod).


  Am realizat afisarea informatiilor pe LCD, prin folosirea unor meniuri, asa am invatat cate ceva si despre creare - functionare meniuri in Arduino.

  Meniul 1 afiseaza informatiile despre Ceas, Data, Zi, Luna, An.



  Meniul 2 afiseaza informatia despre temperatura interior citita de senzorul DS-interior.



  Meniul 2 afiseaza informatia despre temperatura exterior citita de senzorul DS-exterior.



   Eu folosind un LCD 20x4, puteam afisa toate informatiile pe un singur ecran (meniu). Am folosit functia de schimbare-afisare ciclica a celor 3 meniuri de afisare pentru a putea fi folosit in viitor si un "Big Font" pentru afisare ora si temperaturi, dar poate fi folosit foarte usor si un afisaj LCD 16x2.

   Intervalul de schimbare a celor trei meniuri, se poate seta din soft, initial eu am folosit un interval de 3 secunde, considerand ca este suficient.

   Codul folosit de mine:



   Codul este disponibil aici:

 Ceas_DS1307_si_2_senzori_DS18B20.ino


   Atasez si o schema a ceasului




  Am realizat si un clip cu functionarea ceasului cu afisare  pe LCD si 2 temperaturi (interior si exterior) :





 SUCCES

Termostat Reglabil pentru Pompa Centrala





       In urma unei discutii cu cineva care dorea un termostat reglabil pentru pompa de centrala, am inceput sa pun pe breadboard cele necesare si sa incropesc un cod (sketch) lucrand sub mediul Arduino.

   Termostatul are la baza un modul arduino (in teste) care urmeaza a fi inlocuit cu un Atmega328P in care este scris HEX-ul termostaului, un afisaj cu 7 segmente LED, Anod Comun (se poate folosi si Catod Comun), un senzor de temperatura digital DS18B20, doua LED-uri care indica starea functionarii pompei, 3 switchuri (push butoane).

   In varianta realizarii finale, mai sunt necesare un releu pentru actionarea pompei, un tranzistor care comanda releul (sau se poate folosi un optocuplor).


   Asa arata cele necesare insirate pe breadboard:





    Pentru testare "Live", direct in montajul fizic si FARA modulul Arduino, am desenat - realizat repede si un cablaj, cablaj realizat prin metoda transfer de toner, metoda pe care am prezentat-o in detaliu si pe blog pentru cei care vor sa isi realizeze personal cablajele.








   A urmat realizarea cablajului fizic.






Adaugare silkscreen si acoperire trasee cu sacaz diluat





Dua aceea popularea cu piesele necesare










   A urmat apoi  testarea functionarii corecte a termostatului, afisarea temperaturei, functionarea meniurilor pentru setari, etc.



 Atasez un mic clip cu functionarea termostatului in teste:





Testarea pe montajul fizic




   




    .....






Realizare cablaj prin metoda transfer de toner la "rece"



    Vreau ca sa prezint in acest post, realizarea unui cablaj imprimat realizat prin metoda transfer de toner la "rece", metoda ce este la indemana oricarui doreste sa isi realizeze singur, acasa, un cablaj imprimat pentru proiectele lui.

   Transferul tonerului pe cablaj, in aceasta metoda, NU este realizat prin metoda clasica si arhicunoscuta, la"cald", cu fier de calcat sau laminator dedicat, este realizat prin metoda transferului la "rece", adica fara sursa de caldura.

   Acum ceva timp in urma,am gasit pe YouTube un clip in care transferul tonerului pe cablaj era facut la "rece", cu acetona diluata cu alcool izopropilic.





 Reusind la acel timp sa imi procur circa 500 ml de acetona pura, nu ceea ce se gaseste in comert, am testat aceasta metoda.  Dupa cateva teste de concentratie, rezultatul a fost destul de bun, in comparatie cu transferul tonerului la cald, cu fier de calcat.

   Pentru ca aveam putina acetona pura, realizam dacat cateva cablaje, pe care le doream sa iasa ok, acetona pura este destul de greu de procurat totusi.  Restul cablajelor, pentru teste, le realizam cu metoda de transfer la cald, fier de calcat apoi cateva treceri prin laminator.

   Ca si inlocuitor pentru acetona, am testat cateva "modele" de diluant pentru vopsele, in prealabil il foloseam pentru curatarea tonerului de pe cablaj, dupa ce corodam cablajul.

  Asa am ajuns sa folosec un diluant cumparat de la un magazin de piese auto, diluat cu alcool etilic.

Diluantul folosit de mine:





Alcoolul etilic folosit pentru diluarea nitrodiluantului:


 
   Dupa cateva teste am ajuns la o concentratie de circa 2 ml nitrodiluant la 8 ml de alcool etilic.
   Aceasta concentratie poate diferi in functie de imprimanta si de tonerul din imprimanta fiecaruia, la mine aceasta concentratie a fost optima pentru un transfer de calitate.

   Pentru imprimarea cablajului, am folosit o hartie subtire-lucioasa, din ceva catalog IKEA.  Si aici puteti testa diferite tipuri de hartii pentru a realiza un transfer de calitate.  Recomandate sunt hartiile subtiri si lucioase, oarecum ceva cretate, NU conteaza ca are ceva imprimat pe ea.


    Hartia folosita de mine:









   Dupa decuparea cablajului la dimensiunile necesare (eventual cu cate 4-5 mm pe ambele laturi, mai lat decat cablajul original pe care dorim sa il realizam) finisam laturile cablajului cu smirghel,apoi il curatam in apa cu TIX, PUR, etc pentru indepartarea urmelor de grasime, pete, praf, frecand usor cu partea aspra de la un burete clasic de bucatarie.

   Dupa stergerea-uscarea cablajului, eu personal mai il degresez inca odata cu aceeasi solutie folosita la transferul tonerului, apoi sterg usor cu un servetel de hartie sau o carpa uscata.

   Intre timp trebuie printat cablajul pe hartie, folosin setarile imprimantei pentru calitate maxima si toner maxim depus pe hartie.

  Cu ajutorul unei seringi, eu intind solutia de nitrodiluant dizolvat in alcool peste cablaj pe o suprafata care sa cuprinda marimea cablajului care trebuie realizat.  Apoi pun hartia care contine cablajul imprimat peste cablaj, bineinteles cu traseele cablajului imprimat pe ea spre cablajul umezit cu solutia preparata din nitrodiluant si alcool.

   Asez atent hartia "din prima" fara sa o mai misc si apoi trec usor cu degetul peste ea pentru a o lipi de cablaj, eventual mai "torn" cu seringa ceva solutie din nitrodiluant si alcool, ca sa o umezesc bine.

   Apoi pun cablajul impreuna cu hartia lipita de el, intr-o coala de hartie indoita in doua, pun cablajul intre cele "doua" coli si apoi il trec prin laminator la "rece" o data, maxim de doua ori.

  Pentru cei care NU au laminator, pot incerca sa preseze dupa ce au pus hartia pe cablajul umed, cu o placa dreapta, o bucata de parchet laminat, o bucatica de scandura, etc.  Inainte sa folosec/am laminator, apasam peste cablaj cu o rola din cauciuc siliconat, recuperata dintr-o imprimanta laser defecta, treceam de vreo 2-3-4 ori roluind-apasand usor peste hartia pusa pe cablajul umed.

   Dupa ce am trecut cablajul de 1-2 ori prin laminator il las cateva minute (3-4) la uscat apoi il introduc intr-o tavita cu apa, de preferat apa calduta.  Cel mai bun rezultat cu hartia indicata mai sus, l-am avut dupa circa 1-2 minute de umezire, trag incet-usor de o latura a hartiei si se dezlipeste destul de bine-usor si totodata intacta, pur si simplu nu mai trebuie decat sa mai trec usor cu degetul ca sa "rup" hartia ramasa peste gaura unui pad, eventual intre doua trasee prea apropiate. 

   Incet cu rabdare se pot obtine performante superbune,comparabile cu metoda foto, este posibil ca sa nu va iasa aceste lucruri prezentate de mine mai sus, decat dupa cateva experimente, depinde de fiecare in parte.

   Laminatorul folosit de mine, este unul ieftin, cumparat de la LIDL:





Cablajul de test folosit de mine:



Rezultatele obtinute cu aceasta metoda de transfer toner la "rece".

Primul cablaj, de test, cu greseli de transfer:



Dupa cateva experimente-formare mana, gasire concentratie solutie optima pentru transfer, transferul este ok:






   Ca sa pot vede acuratetea transferului de toner prin aceasta metoda, am facut si cateva poze mai detaliate (cu zoom):



Distanta dintre traseu si cele doua pad-uri este de 0,2 mm:









   In ultima poza se vede ca am reusit sa transfer si linia de contur a cablajului generata de Sprint Layout la selectarea "Board Outline" la imprimarea cablajului, linie ce nu depaseste 0,1 mm cu siguranta.

   Inscriptiile din poze: "Ampermetru", "Max 9,99A", "V 1.0-2o15  SMD" au o dimensiune a textului de 1,5 mm, iar la sigla reciclare avem trasee de 0,2 mm

   Acestea fiind spuse, nu pot decat sa va urez succes si sa va bucurati de cablajele realizate de voi prin aceasta metoda.


   Atasez si un clip video despre cum se realizeaza un cablaj prin transfer de toner la rece:




Ceas - Data - Termometru cu DS18B20, DS1307, 4 Digiti LED si animatii





   Acum ceva timp, mi-am dorit sa-mi realizez un ceas care sa poata afisa ora, data si temperatura de la 1-2 senzori DS 18B20. Ceasul trebuia conceput in mediul Arduino si afisare pe 4 digiti LED multiplexati, asa mai invatam si eu cate ceva despre Arduino, senzori, multiplexare, etc.

   Asa ca am inceput cautari pe Google ca sa caut informatii despre ceasuri realizate cu modul RTC bazat pe DS1307 si afisare multiplexata pe 4 digiti LED.  Am gasit diverse proiecte, unele mai simple,altele mai complicate.

   Am asezat pe breadboard un afisaj 4 digiti (anod comun), un modul RTC cu DS1307 si am inceput creearea si testarea unor mici coduri (sketch-uri) inspirate din modele gasite.  Rezultatele au fost multumitoare pentru mine pentru partea de afisare-citire ceas-data de la DS1307.

  Dupa aceasta etapa, am inceput cautari pentru citire-afisare si implementare in cod a unui senzor de temperatura DS 18B20.  Dupa cateva esecuri, ba lipsea o librarie din cod, ba nu scriam o linie bine, etc, am reusit cu brio implementarea in cod (sketch) si a partii de citire-afisare a senzorului DS 18B20.

   Ce nu am reusit eu si era suparator, era prezenta acelui fliker al afisajului la citirea-afisarea temperaturei de la senzorul DS 18B20.  Dupa ceva cautari, intrebari pe la prieteni care se pricep la Arduino, am ajuns la concluzia ca NU se poate fara acel fliker, deoarece senzorul DS necesita un mic timp de vreo 750 ms necesar pentru citire temperatura.

   Parca tot nu eram eu linistit cu acel fliker si am inceput iar cautari pe Google pentru eliminarea, sau reducerea lui. Am ajuns pe forumul Arduino si acolo am gasit o chestie frumoasa, pentru a reusi sa nu mai existe acel fliker, cineva implementase in cod o tranzitie animata intre afisare ora, data si temperatura.  Asa ca senzorul DS avea "timp" sa trimita informatiile, acel timp (fliker) fiind acum camuflat de acea animatie, care arata si frumos pe afisaj.

    Am reusit sa implementez si acea animatie intre ora, data, temperatura si m-am gandit sa implementez si un al doilea senzor DS 18B20,care trebuie sa citeasca temperatura din exterior (afara), primului senzor ii revenea sarcina citirii unei temperaturi din interior (camera). Din teste,dupa implementarea lui in cod,am remarcat ca NU afisa OK pe afisaj temperaturile negative.

   La partea de convertire-citire temperatura negativa, m-am impotmolit putin, fiind incepator, asa ca l-am rugat pe prietenul Niq_ro, in functie de timpul lui liber, daca poate sa ma ajute sa rezolv si afisare temperaturilor negative. El m-a indrumat ce modificari sa fac, dar fiind mai greu sa comunicam, s-a decis ca sa aseze si el pe breadboard modelul de ceas care il realizasem eu.

   Cautand prin cutiute, a ajuns la concluzia ca NU are afisaj cu Anod Comun, modul RTC cu DS 1307 si senzor DS 18B20, asa ca a pus pe breadboard un afisaj cu Catod Comun, un senzor DHT11 si pentru inceput-teste, in loc de modul RTC, scria in cod de"mana" ora,minut, zi, luna.

   Asa ca am ajuns amandoi, ca sa testam acelasi model de ceas, dar pentru doua situatii-modele diferite. 
  Vreau sa ii multumesc lui Niq_ro pe aceasta cale pentru sprijinul acordat.

   Detalii despre proiectul lui, le puteti gasi aici : Ceas animat cu termometru şi higrometru pe afisaj multiplexat cu 4 cifre led


  Ceasul meu nu arata prea grozav in poze, deh, este pe breadboard, multe fire, aglomeratie, etc, dar atasez cateva poze din timpul testelor, dupa care urmeaza trecerea lui pe "curat" pe un cablaj dedicat.


    Afisarea orei pe digiti:


  Asa cum am scris mai sus,pentru a identifica cele doua temperaturi de la cei doi senzori, daca tot aveam in cod acea animatie, am folosit posibilitatea afisarii (inaintea afisarii temperaturei) a unui scris, Int pentru interior si Out pentru exterior, litere care le puteam afisa pe digitii cu 7 segmente

   Afisare Int inainte de temperatura interior:



Afisarea temperaturei din interior:



Afisare data pe digiti:




   Codul ceasului realizat de mine il puteti gasi aici:



  Un clip cu functionarea ceasului: