Numarator cu Arduino si 4 digiti LED - 7 segmente.




Numarator cu Arduino si 4 digiti LED - 7 segmente.


    Fiind atras de Arduino si digiti LED cu 7 segmente si din dorinta de a invata mai multe lucruri sub mediul Arduino, dupa cateva cautari pe net am reusit sa gasesc un cod (sketch) care sa faca cat de cat ceea ce imi doream.

     Am testat sketch-ul ca sa vad cum se vad aprinsi digitii multiplexati, totul era ok, bineinteles toate astea dupa asignarea pinilor doriti de mine in codul arduino pentru cele 7 segmente si cei 4 anozi/catozi ai digitilor.


Schema digiti si segmente afisaje:



Asignarea pinilor in cod pentru segmente, digiti si doua butoane pentru numarare UP-DOWN:





       
    Asa arata schema numaratorului realizat cu Arduino Nano, afisaj 4 digiti LED si 2 butoane pentru numarare Plus (UP) - Minus (DOWN), numar maxim 9999.

    Afisajul cu 4 digiti LED folosit la testul numaratorului, este de tip Anod Comun (AC), dar se poate folosi si un afisaj de tip Catod Comun (CC), prin modificari minore in cod.

   


   Codul folosit de mine pentru schema de mai sus, poate fi descarcat de aici:


    Datorita faptului ca atat pinii care comanda segmentele afisajului, cat si pinii care comanda Anozii digitilor erau conectati direct pe pinii Arduino, lumina emisa de afisaj era destul de puternica si se putea observa la schimbarea cifrelor de pe afisaj si iluminarea slaba a unor segmente care NU trebuiau sa fie aprinse deloc. 

   De aceea am modificat schema numaratorului, prin adaugarea unor rezistente de limitare a curentului intre pinii Arduino si pinii segmentelor de la afisaj, rezistente ce au valoarea de 330 ohmi.

   Pentru afisaje cu Anod Comun (AC) comanda pinilor de la digiti am realizat-o cu ajutorul a patru tranzistori PNP de tip BC557, care au colectorul (C) conectat la + 5Vcc, emitorul (E) conectat la pinul AC al digitilor, iar tranzistorii erau comandati de pinii Arduino prin intermediul unor rezistente de 1k montate intre baza (B) tranzistorilor si pinii Arduino.

    Acum schema modificata arata asa pentru Anod Comun (AC):


    Pentru afisaje cu Catod Comun (CC) comanda pinilor de la digiti am realizat-o cu ajutorul a patru tranzistori NPN de tip BC547, care au colectorul (C) conectat la GND (masa), emitorul (E) conectat la pinul AC al digitilor, iar tranzistorii erau comandati de pinii Arduino prin intermediul unor rezistente de 1k montate intre baza (B) tranzistorilor si pinii Arduino.

Acum schema modificata arata asa pentru Catod Comun (CC):



    Urmeaza in functie de timpul liber, testarea pe breadboard a celor doua scheme de mai sus si postarea codurilor necesare daca necesita modificari soft

    Voi reveni cu noutati  ...

Sursa Reglabila 0-30V si 0-3 A (Conex)



Sursa Reglabila 0-30V si 0-3 A (Conex)



  Un coleg de forum, care dorea sa realizeze aceasta sursa, m-a intrebat daca am cablajul pentru ea.

  Asta m-a decis ca sa il redesenez.

  Deoarece in revista, cablajul avea si o mica greseala, lipsea un traseu, mi-am propus ca sa redesenez cablajul in programul Sprint Layout 5, asa avand posibilitatea modificarii cablajului in functie de componentele folosite de mine.

  Schema acestei Surse de 0-30V si 0-3A a fost publicata in revista Conex.:



   Cablajul desenat in Sprint Layout 5 la acel timp (2014) arata ca in poza:





  Cablajul a fost publicat la acel timp si in format pdf , in sectiunea dedicata pentru alimentatoare de pe forumul electronistilor -  Elforum.

  El poate fi descarcat in format PDF sc1:1 de aici :

Cablaj___Silk_Sursa_Conex_0-30v_0-3A__elforum_.pdf

 Avand de gand sa realizez si eu aceasta sursa, dar tot amanam acest proiect, m-am decis pana la urma sa o realizez (dar inca aman realizarea ei din lipsa timpului).

  Am inceput, iarasi, prin redesenarea cablajului.

  Am montat toate piesele care necesitau montarea pe radiator, pe o singura latura a cablajului, asa fiind mult mai usor de atasat un radiator comun mai mare pentru racire, atat pentru tranzistorii finali ai sursei, prefinal, punte redresoare cat si stabilizatorul de +5vcc

  Condensatorul de filtraj fiind destul de voluminos, ocupa destul spatiu pe cablajul sursei. M-am hotarat ca filtrajul sursei de putere, sa il atasez separat, asa nu mai eram conditionat de spatiul alocat pe cablaj si fiind montat extern cablajului, puteam folosi orice tip/model de condensator de filtraj de care dispuneam, eventual il puteam realiza din mai multe condensatoare de capacitate mai mica conectate in paralel, asa realizand o "baterie" de condensatoare.

  Dupa redesenare cablajul a ajuns la dimensiunile estimative de 100 / 58 mm, destul de compact pentru o sursa.

  Asa arata cablajul redesenat, versiunea V-2 - 2017, inca nefinalizat 100%:


  

   Urmeaza acum partea de realizare fizica a cablajului.

   Voi reveni cu noutati dupa realizarea fizica a sursei, eventual cu ceva cablaje realizate industrial.

Ceas cu Big Font si LCD 20x4




Ceas cu Big Font si LCD 20x4


    Daca tot au fost Sarbatorile Pascale si cumulate cu acest Covid 19, iar daca tot stam acasa (asa cum am indemnat pe toti cei care imi viziteaza blogul), am zis sa mai "cochetez" putin cu Arduino.

    Asa am testat un "mic" cod pentru Ceas cu Big Font si LCD 20x4, tot aveam cele necesare la indemana si ca sa testez/invat si afisarea cu Big Font pe un LCD 20x4.

    Despre Big Font am gasit informatii pe blogul lui Niq_ro, aici:  http://nicuflorica.blogspot.com/

    Am preluat din caracterele Big Font create de el, decat cateva care m-au interesat pentru afisare ceas, adica cifrele de la 0-9, semnele plus, minus, doua puncte pe care le-am mai bibilit/stricat eu ca sa arate cum vroiam eu sa fie afisate cifrele.

    Pentru partea de ceas am folosit un modul cu DS1307, modul achizitionat acum ceva timp de pe Aliexpress, afisarea informatiilor am realizat-o pe un LCD cu 20x4 caractere.

    Pe prima linie am afisat data (ziua, luna, anul) precum si ziua curenta.



      Pe linia 2 a afisajului am afisat :  lcd.print("--------------------");  ca sa fac o "separare" intre ce era afisat pe prima linie de la LCD si ceasul cu Big Font care este afisat pe liniile 3 si 4 ale LCD-ului.



       Ceasul cu Big Font care este afisat pe liniile 3 si 4 ale LCD-ului.



        Asa arata ceasul cu Big Font si afisare pe LCD 20x4:



Ceva mici imbunatatiri-modificari in cod , fata de codul postat, pentru alt aspect.





     Atasez si codul care se "ocupa" cu acest Ceas cu Big font si LCD 20x4 pentru cei interesati:


  //===============================================//
//                                               //
//      Ceas cu Big Font si LCD  V-1, 2o2o       //
//                                               //
//      https://hobby-geomar.blogspot.com/       //
//                                               //
//===============================================//

//---- Biblioteci necesare ----------------------------------
#include <LiquidCrystal.h>                   //Biblioteca LCD
#include "RTClib.h"                          //Biblioteca RTC-Ceas

//-- variabila pentru afisare luna ---------------------------------
const char* Months[] =
{"Dec", "Ian", "Feb", "Mar", "Apr", "Mai", "Iun", "Iul", "Aug", "Sep", "Oct", "Nov" };

// ---- Variabile pentru meniu Ceas -------------------------
int ora;
int minut;
int secunda;
int x = 0;

// cele 8 caractere care formează fiecare segment al numerelor personalizate
byte LT[8] = {B00111, B01111, B11111, B11111, B11111, B11111, B11111, B11111};
byte UB[8] = {B11111, B11111, B00000, B00000, B00000, B00000, B00000, B00000};
byte RT[8] = {B11100, B11110, B11111, B11111, B11111, B11111, B11111, B11111};
byte LL[8] = {B11111, B11111, B11111, B11111, B11111, B11111, B01111, B00111};
byte LB[8] = {B00000, B00000, B00000, B00000, B00000, B00000, B11111, B11111};
byte LR[8] = {B11111, B11111, B11111, B11111, B11111, B11111, B11110, B11100};
byte UMB[8] = {B00000, B00000, B11111, B11111, B11111, B00000, B00000, B00000};
byte LMB[8] = {B11111, B11111, B00000, B00000, B00000, B00000, B11111, B11111};

//---- Definire pini pentru conectare LCD ---------------------
LiquidCrystal lcd (7,  //RS no digital 7
                   6,  //EN no digital 6
                   5,  //D4 no digital 5
                   4,  //D5 no digital 4
                   3,  //D6 no digital 3
                   2); //D7 no digital 2

RTC_DS1307 RTC;        //Tip de DS folosit la RTC - ceas

//-----------------------------------------------------------
void setup()
{
  lcd.begin(20, 4);    // Initializare tip LCD 20x4
  RTC.begin();

  //---- Citire Valori din DS1307 pentru functionare ceas ------
  DateTime now = RTC.now();
  now = RTC.now();
  ora = now.hour();
  minut = now.minute();
  secunda = now.second();

  if ( !RTC.isrunning()) {
    // Sters ! RTC NU rulează
    // linia următoare stabilește RTC la data și ora la care a fost compilată această schiță
    // daca se sterge ! de la RTC.isrunning()
    RTC.adjust(DateTime(__DATE__, __TIME__));
  }
  //--- crearea celor 8 caractere personalizate
  lcd.createChar(1, UB);
  lcd.createChar(2, RT);
  lcd.createChar(3, LL);
  lcd.createChar(4, LB);
  lcd.createChar(5, LR);
  lcd.createChar(6, UMB);
  lcd.createChar(7, LMB);
  lcd.createChar(8, LT);
}

//-------------------------------------------
void loop()
{
  x = 0;
  afisare(ora / 10);
  x = x + 4;
  afisare(ora % 10);

  x = x + 4;
  custom2puncte();

  x = x + 2;
  afisare(minut / 10);
  x = x + 4;
  afisare(minut % 10);

  DateTime now = RTC.now();
  now = RTC.now();
  ora = now.hour();
  minut = now.minute();
  secunda = now.second();
  lcd.setCursor(0, 0);
  if (now.day() < 10)
    lcd.print(' ');
  lcd.print(now.day(), DEC);
  lcd.print('-');
  lcd.print(Months[now.month()]);
  lcd.print('-');
  lcd.print(now.year(), DEC);
  lcd.print(' ');
  lcd.setCursor(0, 1);
  lcd.print("--------------------");
  lcd.setCursor(18, 3);
  if (now.second() < 10)
    lcd.print('0');
  lcd.print(secunda);

  lcd.setCursor(12, 0);
  int dayofweek = now.dayOfTheWeek();
  switch (dayofweek) {
    case 1:
      lcd.print("  Luni  ");
      break;
    case 2:
      lcd.print("  Marti ");
      break;
    case 3:
      lcd.print("Miercuri");
      break;
    case 4:
      lcd.print("  Joi   ");
      break;
    case 5:
      lcd.print(" Vineri ");
      break;
    case 6:
      lcd.print(" Sambata");
      break;
    case 0:
      lcd.print("Duminica");
      break;
  }
}

//--------------------------------------------
//------ creare cifre personalizate ----------
void custom0O()
{ // uses segments to build the number 0
  lcd.setCursor(x, 2);
  lcd.write(8);
  lcd.write(1);
  lcd.write(2);
  lcd.setCursor(x, 3);
  lcd.write(3);
  lcd.write(4);
  lcd.write(5);
}
//---------------------------------------
void custom1()
{
  lcd.setCursor(x, 2);
  lcd.write(1);
  lcd.write(2);
  lcd.write(' ');
  lcd.setCursor(x , 3);
  lcd.write(4);
  lcd.write(255);
  lcd.write(4);
}
//---------------------------------------
void custom2()
{
  lcd.setCursor(x, 2);
  lcd.write(1);
  lcd.write(1);
  lcd.write(2);
  lcd.setCursor(x, 3);
  lcd.write(8);
  lcd.write(7);
  lcd.write(7);
}
//---------------------------------------
void custom3()
{
  lcd.setCursor(x, 2);
  lcd.write(1);
  lcd.write(1);
  lcd.write(2);
  lcd.setCursor(x, 3);
  lcd.write(7);
  lcd.write(7);
  lcd.write(5);
}
//---------------------------------------
void custom4()
{
  lcd.setCursor(x, 2);
  lcd.write(8);
  lcd.write(' ');
  lcd.write(255);
  lcd.setCursor(x, 3);
  lcd.write(1);
  lcd.write(1);
  lcd.write(255);
}
//---------------------------------------
void custom5()
{
  lcd.setCursor(x, 2);
  lcd.write(255);
  lcd.write(7);
  lcd.write(7);
  lcd.setCursor(x, 3);
  lcd.write(4);
  lcd.write(4);
  lcd.write(5);
}
//---------------------------------------
void custom6()
{
  lcd.setCursor(x, 2);
  lcd.write(8);
  lcd.write(1);
  lcd.write(1);
  lcd.setCursor(x, 3);
  lcd.write(3);
  lcd.write(7);
  lcd.write(5);
}
//---------------------------------------
void custom7()
{
  lcd.setCursor(x, 2);
  lcd.write(1);
  lcd.write(1);
  lcd.write(2);
  lcd.setCursor(x , 3);
  lcd.write(' ');
  lcd.write(8);
  lcd.write(' ');

}
//---------------------------------------
void custom8()
{
  lcd.setCursor(x, 2);
  lcd.write(8);
  lcd.write(1);
  lcd.write(2);
  lcd.setCursor(x, 3);
  lcd.write(3);
  lcd.write(7);
  lcd.write(5);
}
//---------------------------------------
void custom9()
{
  lcd.setCursor(x, 2);
  lcd.write(8);
  lcd.write(7);
  lcd.write(2);
  lcd.setCursor(x, 3);
  lcd.write(4);
  lcd.write(4);
  lcd.write(5);
}
//---------------------------------------
void customqm()
{
  lcd.setCursor(x, 2);
  lcd.write(1);
  lcd.write(6);
  lcd.write(2);
  lcd.setCursor(x, 3);
  lcd.write(254);
  lcd.write(7);
}
//---------------------------------------
void customsm()
{
  lcd.setCursor(x, 2);
  lcd.write(255);
  lcd.setCursor(x, 3);
  lcd.write(7);
}
//---------------------------------------
void customplus()  // made by niq_ro
{
  lcd.setCursor(x, 2);
  lcd.write(4);
  lcd.write(255);
  lcd.write(4);
  lcd.setCursor(x, 3);
  lcd.write(1);
  lcd.write(255);
  lcd.write(1);
}
//---------------------------------------
void customminus() // made by niq_ro
{
  //lcd.setCursor(x, 2);
  //lcd.write(4);
  //lcd.write(4);
  //lcd.write(4);
  lcd.setCursor(x, 3);
  lcd.write(1);
  lcd.write(1);
  lcd.write(1);
}
//---------------------------------------
void customgrad()
{
  lcd.setCursor(x, 2);
  lcd.write(1);
  lcd.write(8);
  lcd.write(1);
  // lcd.write(1);
  lcd.setCursor(x, 3);
  lcd.write(254);
  lcd.write(3);
  lcd.write(4);
  //lcd.write(4);
}
//---------------------------------------
void custom2puncte()
{
  lcd.setCursor(x, 2);
  lcd.write(6);
  lcd.setCursor(x, 3);
  lcd.write(6);
}
//---------------------------------------
void custom1punct()
{
  lcd.setCursor(x, 3);
  lcd.write(4);
}
//---------------------------------------
// subrutina de afisare a numerelor
void afisare(int numar)
{
  switch (numar)
  {
    case 0:
      custom0O();
      break;

    case 1:
      custom1();
      break;

    case 2:
      custom2();
      break;

    case 3:
      custom3();
      break;

    case 4:
      custom4();
      break;

    case 5:
      custom5();
      break;

    case 6:
      custom6();
      break;

    case 7:
      custom7();
      break;

    case 8:
      custom8();
      break;

    case 9:
      custom9();
      break;
  }
}

//--------------- Sfarsit Program ---------------




   Pentru a putea functiona si cu LCD cu 16x2 caractere, sunt necesare ceva modificari in cod, DAR nu vor mai afisate toate informatiile afisate pe un LCD 20x4, se poate afisa DOAR: data, ziua, luna, an, sau ora curenta, aceste modificari le voi posta dupa ce voi face modificarile necesare si dupa testarea codului.

Am sa testez afisarea informatiilor de pe LCD 16x2, prin doua meniuri (meniuri testate in alt proiect) care vor afisa ciclic informatiile utile, unul va afisa ziua, data, luna, anul si altul va afisa ceasul cu caracterele Big Font.

   Voi reveni cat de curand si cu un Ceas cu Big Font afisat pe un LCD 16x2 ...


Termometru simplu cu DS18B20 si afisare pe LCD 16x2 V-1




   Termometru simplu cu DS18B20 si afisare pe LCD 16x2  V-1


   Pentru cei ce doresc sa inceapa sa studieze Arduino, m-am decis ca sa vin in ajutorul lor cu un mic proiect de termometru care citeste temperatura de la un senzor digital Dallas tip DS18B20 si afiseaza temperatura citita pe un LCD alfanumeric de 16x2 caractere.

    Pentru acest mic proiect avem nevoie de un modul Arduino (UNO, NANO, Etc), un afisaj alfanumeric de 16x2 caractere, un senzor digital de tip DS18B20 si codul postat putin mai jos.

    Codul este foarte simplu, pentru inceput trebuiesc instalate in Arduino  librariile necesare pentru functionarea codului scris:
  • <OneWire.h>, 
  • <DallasTemperature.h>, 
  • <LiquidCrystal.h>


    Libraria: <OneWire.h>    se ocupa de comunicatia pe un singur fir.
    Libraria: <DallasTemperature.h>    se ocupa de apelarea/setarea/citirea senzorului digital DS18B20
    Libraria: <LiquidCrystal.h>  se ocupa de setarea/afisarea informatiilor pe afisajul alfanumeric 16X2




    Asa cum se vede in poza atasata mai sus, sunt incluse in cod librariile necesare bunei functionari a termometrului



   Urmatoarele linii din cod se ocupa cu asignarea pinilor de la LCD la pinii digitali Arduino la care este conectat LCD-ul 16x2.



    Urmeaza apoi in urmatoarele linii, setarile necesare pentru senzorul digital DS18B20, asignarea pinului digital Arduino la care este conectat senzorul (pin 2 in cazul nostru) si apoi declararea unei variabile tip float, intitulata "float tempC = 0" careia ii atribuim valoarea zero pentru inceput.
    In aceasta variabila v-a fi stocata ulterior temperatura citita de la senzorul digital DS18B20 pentru a putea fi afisata pe LCD-ul 16x2.

.


    In sectiunea Setup a codului Arduino, initializam senzorul digital si LCD-ul 16x2, a se vedea liniile necesare in poza atasata mai sus.




    Tot in sectiunea Setup, putem pune un mesaj personalizat ce v-a apare pe LCD la pornire.  Acest mesaj NU este necesar bunei functionarii a codului, este un mesaj informativ in care putem sa afisam ce cod rulam, ex "Termometru" si eventual daca codul este imbunatatit pe parcurs, putem afisa ce varianta folosim, ex " V-2b".

    In acest mesaj fiecare isi poate scrie ce informatie doreste sa fie afisata pe LCD,  intre ghilimele DAR sa nu depaseasca 16 caractere pe un rand.
    Daca nu se doreste afisarea mesajului, se pot sterge liniile din poza atasata mai sus, sau se pot "comenta", adica in fata fiecarei linii se pun cate doua slashuri: //

    tot la acest mesaj mai avem linia : Delay (2000);  aceasta linie adauga o intarziere de 2 secunde, timp in care este afisat mesajul personalizat.

    De retinut, functia: void setup ();  ruleaza O SINGURA DATA la alimentare si pornire modul Arduino cu tensiune,  SAU  dupa ce apasam butonul reset al placii Arduino.




    Acum in cod urmeaza functia :  void loop();   functie ce ruleaza continuu atat timp cat este alimentat Arduino, sau dupa un reset al modului.

  Aici este scris codul care trebuie executat de Arduino conform dorintelor noastre.  In cazul nostru,  primele doua linii se ocupa ce citirea senzorului digital DS18B20 si memorarea temperaturii citite de la senzor in variabila tip float tempC, variabila care memoreaza temperatura citita de la senzor pentru a putea fi afisata pe LCD-ul 16x2.


    Urmatoarele patru linii se ocupa cu afisarea temperaturii pe LCD-ul 16x2.

    Urmeaza apoi o linie de intarziere intre citirile senzorului de temperatura, un interval de o secunda cred ca este ok, asa temperatura afisata v-a fi mai "stabila", nu v-a fluctua zecimalele foarte repede, doar la 1 secunda.


    CODUL ARDUINO PENTRU TERMOMETRU


  //=========================================================//
  //=                   Codul  Arduino                                                                      =//
  //=                       pentru                                                                                =//
  //=              Termometru simplu cu DS18B20                                             =//
  //=                 si afisare pe LCD 16x2                                                           =//
  //=                           V-1                                                                                 =//
  //=          https://hobby-geomar.blogspot.com/                                          =//
  //=======================================================//
  
//--- Biblioteci necesare -------
#include <OneWire.h>
#include <DallasTemperature.h>
#include <LiquidCrystal.h>


// inițializează biblioteca prin asocierea pinilor de la LCD 
// cu pinii Arduino la care sunt conectati
LiquidCrystal lcd (8,  // pin RS LCD -> digital 8 Arduino
                   7,  // pin EN LCD -> digital 7 Arduino
                   6,  // pin D4 LCD -> digital 6 Arduino
                   5,  // pin D5 LCD -> digital 5 Arduino
                   4,  // pin D6 LCD -> digital 4 Arduino
                   3); // pin D7 LCD -> digital 3 Arduino
                   

#define ONE_WIRE_BUS 2              //----- Senzorul DS 18B20 este conectat pe pin D2 Arduino
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
float tempC = 0;                    //---- Variabilă care memoreaza temperatura


void setup() {

  sensors.begin();                 // --- Initializare LCD 
  lcd.begin(16, 2);                // --- Tip LCD, 16x2

// -----------------------------------------------------------------
// Cod opțional pentru mesajul introductiv
// Puneți-vă propriul mesaj între ghilimele, ex: "* Hobby-GeoMar *"
// intre ghilimele maxim 16 caractere cat are linia de la LCD 
// -----------------------------------------------------------------

  lcd.setCursor(0,0);            //---- Setare afisare mesaj 1, prima linie, pozitia 0
  lcd.print("* Hobby-GeoMar *"); //---- Mesaj 1 pentru afisare pe LCD 
  lcd.setCursor(0,1);            //---- Setare afisare mesaj 2, a doua linie, pozitia 0
  lcd.print("  blogspot.com  "); //---- Mesaj 2 pentru afisare pe LCD 
  delay(2000);                   //---- intarziere 2 secunde, timp cat este afisat mesajul
  lcd.clear();                   //---- Stergere LCD
//---------------------------------------
}

void loop() {

  sensors.requestTemperatures();      //------------------------------------------
  tempC = sensors.getTempCByIndex(0); //-- citire temperatura si memorare in tempC

  lcd.setCursor(0,0);                 //---- Setare afisare temperatura pe prima linie a LCD-ului de la pozitia 0
  lcd.print("TEMP: ");                //---- Afisare text "TEMP:" pe LCD
  lcd.print(tempC);                   //---- Afisare temperatura senzor pe LCD
  lcd.print("\337C");                 //---- Afisare simbol grad Celsius pe LCD

  delay(1000);                        //---- intarziere de 1 sec intre citire temperatura

}
//============== Terminare program ============================


   Am sa revin cat de curand si cu o schema pentru o intelegere mai usoara a codului.

   *****    Va doresc succes in invatare Arduino.    *****

Statie de Lipit simpla V.2 cu Letcon 24 V , 48-60 W



Statie de Lipit simpla V.2 cu Letcon 24 V , 48-60 W
   


       Asa cum am scris in articolul anterior Statie de Lipit simpla cu Letcon 24 V, 48-60 W dupa realizarea Statiei de Lipit, analizand cablajul proiectat, m-am decis ca sa il redesenez pentru realizarea unui cablaj mai mic si mai compact.

    Am urmarit amplasarea celor doua componente (stabilizatorul LM7812 si Triacul BT136) care disipa caldura si necesita montarea unui radiator, pe o latura a cablajului, asa se poate utiliza un singur radiator de dimensiuni adecvate disipatiei termice, comun pentru cele doua componente.

    Am grupat/montat conectorii pentru intrarea de la transformatorul care debiteaza 24Vac, rezistenta letconului si termocupla letconului, impreuna pe un lateral al cablajului, iar in partea opusa am montat conectorului pentru intrarea pentru potentiometrul din care se regleaza temperatura dorita a letconului.


     Cateva poze ale cablajului re-proiectat pentru Versiunea 2 (V.2) a Statiei de Lipit:






     Cablajul realizat in regim DIY prin metoda Transfer de Toner:



   Am incercat si am realizat un lot de cablaje profesionale, made in China (este mai ieftin ca in RO) pe care le-am pus la vanzare pentru cei care doresc realizarea acestei Statii de Lipit V.2 si nu isi pot realiza acasa cablajul imprimat.

  Cablajul realizat profesional:



   Pentru cei interesati, pretul unui cablaj realizat profesional este:

  1. pret cablaj = 20 ron + 10 ron transport, cu virare bani in cont bancar
  2. pret cablaj = 20 ron + 18 ron transport, cu plata ramburs la primire colet.
                                            LIPSA STOC CABLAJE

     Stocul este limitat in functie de cerere, se mai pot realiza cablaje profesionale/industriale, daca sunt cereri in acest sens.







   Atasez si fisierul cablajului Sc 1:1 pentru cei care isi pot realiza in regim DIY cablajul.

SUCCES

Statie de Lipit simpla cu Letcon 24 V , 48-60 W





Statie de Lipit simpla cu Letcon 24 V, 48-60 W


    Dorind ca sa-mi realizez o Statie de Lipit ce foloseste un letcon de 24V si 48-60W (ca sa scap de clasicul pistol de lipit Radioprogres), prin anul 2009 am cautat o schema si m-am oprit la schema Statiei de Lipit Wolf (Solomon), statie destul de discutata pe forumul electronistilor Elforum intr-un topic destul de vast.
   Topicul dedicat acestei statii de lipit, poate fi gasit aici:  Statie de lipit .

    Schema este destul de simpla, un amplificator operational dual LM358, un optotriac MOC3041, un triac BT138, un stabilizator de tensiune LM7812 si cateva componente discrete, toate piesele pot fi recuperate din diverse montaje, DAR testate inaintea plantarii pe cablaj.

   Schema statiei de lipit:


  
    Am achizionat letconul de la un magazin de electronice din Bucuresti de pe str Maica Domnului (nu cel cu nume de fosta retea telefonica) la un pret rezonabil la acel timp, circa 25 ron.

  Am cautat apoi prin cutiute si am strans toate componentele necesare realizarii statiei , dupa aceea m-am apucat de proiectarea/desenarea unui cablaj pentru aceasta statie in programul Sprint Layout.
   La acel timp (2009) nu eram asa de familiarizat/deprins cu acest program (eram incepator), dar am reusit sa desenez un cablaj pentru aceasta statie de lipit.

  Asa arata cablajul desenat la acel timp, avea o dimensiune de de aproximativ 65/60 mm:







    Dupa desenarea si realizarea fizica a cablajului (tot transfer de toner si la acea vreme) m-am apucat de realizarea Statiei.

   Toata Statia de Lipit (inclusiv realizarea fizica a cablajului) a fos realizata-testata intr-o singura zi, pe data de 31-12-2009.






   Dupa aceea, statia a fost montata intr-o carcasa de sursa PC recuperata/dezafectata, am lasat si coolerul fostei surse ca sa raceasca eventuala incalzire a radiatoarelor montate pe triac si stabilizatorul de tensiune.

La aceasta carcasa, am reusit sa-i realizez si un panou frontal din aluminiu (taiare, decupari, gauri, finisaje, etc), apoi am desenat aspectul panoului in programul Front Designer 3.
   




   Dupa realizarea lui in program, l-am printat pe o jumatate de folie pentru laminare documente (pe partea interna, cea mai "lipicioasa" sa o numesc asa) si apoi am "calcat" cu fierul de calcat (ca si la realizarea cablajelor) pana cand folia si inclusiv tonerul s-au lipit de panoul frontal realizat din aluminiu, panou care era deja pregatit in prealabil cu decupaje, gauri, finisat.

   Dupa calcare, eu unul, nu am indepartat folia, a ramas lipita pentru protectia scrisului de pe panou.







    Dupa ceve timp, studiind cablajul am remarcat ca la acel timp, fiind incepator in Sprint Layout,  nu am tinut cont de cateva reguli-conditii necesare la proiectarea/desenarea unui cablaj, asa m-am decis ca sa il redesenez.


   Voi reveni cat de curand, cu detalii despre aceasta statie de lipit si cu versiunea 2 a cablajului realizat industrial, oferit si spre vanzare celor interesati de realizarea Statiei de Lipit.
   

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




   




    .....