Se afișează postările cu eticheta reglaj. Afișați toate postările
Se afișează postările cu eticheta reglaj. Afișați toate postările

joi, 27 ianuarie 2022

Ceas cu VFD bazat pe arduino

 De curând am primit cadou de la Baricz János un afișaj VFD cu care am construit un ceas bazat pe arduino.



Baza de pornire constă în munca lui Nicu Florică la care am adăugat doar partea de comandă specifică VFD-urilor. Un alt material cu acelasi afișaj mai este aici cu mai multe detalii specifice.

În cazul meu schema de pornire este cea de mai jos:


Comanda este similară cu cea folosită într-un articol precedent unde am utilizat un VFD cu 8 digiți.

Pentru comanda VFD-ului am înseriat pe conexiunile către afișaj doua circuite ULN2003 ale cărui ieșiri le-am închis la +24V prin câte un rezistor de 22K . Pentru alimentarea grilelor am folosit un step-up cu UC3843,

 iar pentru alimentarea filamentului un banal oscilator cu LM555:

Impulsurile în drena lui MOS alimentând filamentul

Inițial am făcut cablajul utilizând un 7805 care s-a dovedit a funcționa foarte fierbinte. În final l-am scos și am adaptat un step-down chinezesc reglat pentru 5V.
Cîteva imagini de pe parcursul testării:
Cablajul l-am gândit pentru dublu placat deoarece avea câteva treceri foarte lungi și care mă încurcau la realizare trebuind blocate în final cu adeziv.

Cablajul este dimensionat să încapă în cutia din poză:
Legăturile între placa afișaj și comanda le-am făcut cu fire flexibile.
Tot pe placă am pus și RTC-ul cu DS1307

Prima versiune pentru afișare umiditate:

Versiunea finală de afișare pentru umiditate:



Codul adaptat pentru VFD este pe github. Sunt urcate ambele variante cu afișarea umidității. 



sâmbătă, 22 ianuarie 2022

Un alt ceas pe vfd Samsung 16LF01

 Am primit de la Baricz János un display Samsung 16LF01 pentru a încerca să-l aprind.

Din fericire am găsit pe github și un lib pentru el.
Un prim test a ieșit așa:

Apoi am folosit un material muncit de Nicu Florica pe care l-am adaptat pentru acest display:
Și a ieșit un ceas deosebit:
Ceea ce am făcut eu este pe github.



marți, 24 iulie 2018

Ceas cu reglaj pe lcd Nokia

Inspirat de articolul lui Nicu Florica am adaptat codul lui pentru un display Nokia. Am renuntat la ceasul analogic pentru ca rezolutia acestuia este doar de 64x64, si am adaugat un DHT11 pentru afisarea temperaturii si umiditatii. In plus am adaugat si o fotorezistenta care controleaza lumina de fundal pentru a-l face vizibil si pe timp de noapte. Cod pe github.
Si in aceasta situatie am cautat sa-l fac cit mai vizibil. Celelalte functionalitati sint cele descrise de Nicu Florica pe blog, partea de reglaj fiind identica.


I-am facut si o alimentare de back-up cu un acumulator de tip 18650
Schema de legaturi se poate deduce foarte usor din codul publicat pe github.
Display-ul Nokia e conectat conform:
//U8GLIB_PCD8544 u8g(13, 11, 10, 9, 8);// SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, Reset = 8
In cazul meu: U8GLIB_PCD8544 u8g(8, 9, 12, 10, 11);
Senzorul DHT11 pe A0 si pe A2 fotorezistenta

marți, 12 septembrie 2017

Ceas cu alarma si reglaj cu arduino micro, DS3231, UTFT

Am gasit un alt proiect mai vechi adaptat dupa articolul lui Nicu Florica.
La acea vreme aveam mai multe display-uri cu ILI9225-240/320, la care nu am gasit un library finalizat. Asa ca am folosit UTFT, care e cumva universala, avind o gama variata de display-uri ce le poate adresa, dar are un mod diferit de programare. Asa ca am adaptat codul la aceasta biblioteca. 

Cerinta era ca orele sa fie afisate cu un font de tipul 7 segmente. Singurele poze din faza de teste sint mai jos.

Acesta foloseste  senzorul intern al lui DS3231, pentru afisarea  temperaturii. 
A  fost casetat intre 2 placi de plastic transparent si avea suficient spatiu de ventilatie pentru a lua o temperatura corecta.
La "caseta" m-am inspirat de aici, dar nu mai am pozele respective.


Codul si biblioteca se afla pe github, iar ideea este ca trebuie copiat fontul SevenSegNumFontPlusPlus.c in acealasi folder cu _9225-alarm-ds3132-nicu-utft.ino si apoi se compileaza. Pe github am arhivat si biblioteca utilizata de mine  fiind singura care a mers cu ILI9225. Ulterior am testat si cu alte display-uri SPI ( cele ce au 5 pini de conectare, DC, CS, RST, MOSI, SCK) si au functionat si cu un UTFT mai nou.

vineri, 8 septembrie 2017

Ceas cu alarma si termometru cu Arduino ProMini TFT 2,2"-ILI9163 , DS3231, DS18B20

In articolul anterior am adaptat codul lui Nicu Florica pentru un display de 2" cu ILI9163 care functiona pe STM32. 
M-am gindit sa fac un test si pe un Arduino ProMini avind ca scop sa folosesc un font elegant pentru afisarea orei (fara utilizarea fontului afisarea este foarte "patratoasa" si deranjanta la dimensiuni mari afisate de display mare). Problema e ca aceste fonturi ocupa foarte multa memorie.
Pinul LED al display-ului l-am legat la Vcc printr-o rezistenta de 470Ohm, pentru ca Arduino este alimentat in cazul meu la 5V. Biblioteca este cea folosita in cazul lui STM .
Dupa mai multe teste de fonturi m-am oprit la ceea ce se vede mai jos:
S-au pastrat toate functionalitatile descrise de Nicu la el pe blog, numai ca s-au micsorat dimensiunile proportional cu acest display care are rezolutia de 128/160
Pe viitor intentionez sa-i fac si un cablaj imprimat. Aceste display-uri au un pret decent pentru 1,8", 2", 2,2" si sint suficient de vizibile (mai putin pentru mine care imi trebuie 4").
Schema este aici.




Schema de legaturi se poate deduce foarte usor din cod care este curatat de modificarile anterioare.
Codul ocupa aproape toata memoria disponibila

Deasemenea se poate folosi si display cu ILI9143 cu alimentare la 3,3V cu definirea in cod a noii biblioteci, Arduino alimentindu-se la 3,3V in acest caz.

I-am minimizat costurile inlocuind DS3231 CU DS1307, si am mai facut mici corectii la cod. Am inlocuit LED-ul de la alarma cu un difuzor piezo, si am scos fontul de la afisarea datei care depasea ecranul.
Pregatit de o caseta eleganta.




Update 19-mar-2023
Am refăcut proiectul de mai sus pe un arduino uno și un TFT shield HX8347G. Acestuia i-am izolat pinii pentru SD card, pinul CS pe care l-am conectat la GND și pinul RST pe care l-am legat la RST-ul lui arduino uno. Astfel am eliberat 6 pini, A5 pentru I2C, 4 pini pentru butoane și unul pentru buzer.
Pentru temperatură și umiditate am folosit un senzor GY21 pe interfață I2C, iar pentru clock un DS3231.
Definirea lor se vede foarte ușor în cod care este pe github.
TFT-ul cu pinii îndoiți:
Alarmă oprită:
Alarmă activă:
Alarmă activată:
Datorită utilizării celor două font-uri codul a ocupat aproape toată memoria.








marți, 5 septembrie 2017

Ceas cu alarma si termometru cu STM32, TFT 2,8-ILI9341" , DS3231, DS18B20

Ca sa eliberez placuta de Arduino Mega ce o aveam blocata am adaptat codul lui Nicu de aici (el a folosit un Arduino Due) pentru functionare cu STM32, si desi am folosit citeva fonturi a incaput codul pe placuta cu STM32:




Legaturile se pot vedea si din cod care este aici impreuna cu bibliotecile folosite
Schema este aici.
#define ONE_WIRE_BUS PB1 senzorul de temperatura DS18B20

#define TFT_CS     PB13
#define TFT_RST    PB14                    
#define TFT_DC     PB12
//SCK   PA5
//SDI/MOSI    PA7

Butoanele le-am legat la plus 3,3V prin cite o rezistenta de 470 Ohm.

meniu= PA0;
 minus=PA1;
 plus=PA4;
 alarma=PB0;

buzzer PC13 --acum doar aprinde led-ul de pe placa de dezvoltare.

In mare parte am pastrat codul original unde am comentat ce nu se potrivea si am aplicat modificarile mele.
S-au pastrat toate functionalitatile descrise de Nicu la el pe blog.

Codul ocupa 87%, asa ca mai este loc si pentru alte idei.


joi, 31 august 2017

Ceas pe LCD ST7920 CU REGLAJ

Am pornit de la articolul de aici unde mi-a placut realizarea acestuia. Initial am testat codul omului, a functionat insa cercul in realitate arata rau de tot, mai ales daca e privit de aproape, asa ca am renuntat la el. Asta datorita rezolutiei ecranului.
Ulterior m-am hotarit sa fac un ceas mai serios cu cifre cit mai mari si reglaj manual ca sa nu depind de calculator la trecerile ora vara/iarna, eventual alarma daca mai raminea memorie disponibila, si din pacate nu a mai ramas.
Pentru display este folosita o biblioteca U8glib cu care m-am "imprietenit" mai greu (pe link este cea folosita de mine.).
Modul de conectare al display-ului la arduino este descris cu foarte multe detalii de Nicu Florica la el pe blog , si nu voi repeta aici.
I-am adaugat un DS1307, un DS18B20 si trei butoane :
#define meniu 9 
#define minus 10
#define plus 11 
#define ONE_WIRE_BUS 8
La scrierea codului m-am inspirat de aici pentru ca foloseste tot U8GLIB si a iesit ca mai jos:
Am marit atit cit a fost posibil fontul orei iar restul informatiilor le-am incadrat la dimensiunea maxima acceptata de rezolutia ecranului.

 Aici se poate vedea modul de reglaj imediat dupa Duminica  . Am vrut sa sterg ecranul in modul reglaj insa codul depasea marimea maxima a lui Arduino micro (pe asta l-am folosit spre final), si astfel singurul loc liber era cel imediat dupa afisarea zilei.
La rutina de reglaj m-am inspirat tot de la Nicu, ca mi s-a parut foarte simpla de implementat.

(Sketch uses 29814 bytes (97%) of program storage space. Maximum is 30720 bytes.)



Codul final si bibliotecile folosite sint aici:
Consumul este sub 100mA


 Modelul de senzor e temporar pina soseste unul in capsula TO-92
update:34-iul-2018
Dupa varianta lui Nicu realizata cu encoder, am adaptat codul pentru 3 butoane (nu am avut disponibil nici un encoder):
Functionalitatile in mare au ramas cele descrise de Nicu Florica pe blog-ul lui.
Codul pentru poza din stinga este pe github iar pentru cel din dreapta tot pe github. La varianta din dreapta am corectat afisarea secundelor analogice pentru ca era o mica abatere fata de cele numerice.
In plus fata de ce a testat Nicu Florica am adaugat un senzor DS18B20. Fonturile utilizate ocupa foarte multa memorie si am incercat sa fac un compromis pentru o afisare cit mai vizibila.

update 11-aug-2019
A sosit zilele astea display-ul de mai jos pe care am facut citeva teste:


Pentru a functiona a trebuit sa fac upgrade la u8glib, iar driverul a functionat cu:
U8GLIB_DOGM128 u8g(8, 9, 5, 7); // SPI Com: SCK , MOSI, CS, A0
RST-ul LCD-ului l-am legat la pinul reset al lui arduino.
Neajunsul este ca are un offset pe x de -4 puncte.
Codul de test aferent pozelor de mai jos este pe github.
Ecran luminat
Neajunsul cu offset-ul se poate distine usor in partea dreapta unde aprinde pixeli in mod aleatoriu. Mai exact, zona de lucru este de la 4(x=0) la 124, diferenta de 4 pixeli apare aleatoriu in dreapta la pornirea tensiunii de alimentare
Fara lumina de fundal
O alta clona modificata, cod pe github
Update: 22-ian-2022
Cam acelasi cod dar de data asta cu arduino mega si un display 240x64 DG24064 cu T6963




Legaturile se deduc foarte usor din codul postat pe github pentru prima varianta si tot pe github si pentru a doua.

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