duminică, 30 decembrie 2018

Test indicator tensiune, curent, temperatura pe OLED folosind arduino

La sugestia lui George Dacin am testat un indicator pentru o sursa de laborator folosind un arduino cu afisare pe OLED I2C 128x64. Materialul de baza a constat in articolul lui Nicu Florica, la care am modificat afisarea pe OLED si am adaugat un pseudo termostat.
A iesit ca mai jos (clampmetrul din poza e folosit doar pentru fixare):
Rezultind o afisare patratoasa "patratoasa" am modificat codul initial introducind fonturi conform materialului prezentat de adafruit, iar dupa incarcarea codului a iesit ca mai jos: (prima poza e de la mine, cea de jos a alui George)


Asupra masurarii temperaturii parerile au fost diferite, George dorea sa foloseasca DS18B20 , iar eu doream o simpla dioda (metoda descrisa in detaliu de Nicu), tinind cont ca aceasta urma sa masoare temperatura unui radiator si actioneze un ventilator la depasirea unui anumit prag.
Ca sa nu fie discutii am realizat un test cu DS18B20 si un test cu dioda
Apoi a aparut un comentariu al lui Cristi Vasilache vis-a-vis de precizie, asa ca am luat o sursa de la un copiator defect ce scoate 35V/5A, si modul cu XL4016. Divizorul testat de mine e format dintr-o rezistenta de 100K si una de 470 Ohm, cu 0,1Ohm pentru curent. Valorile rezistentelor le-am masurat cu un AMPROBE 35XP-A, cel ce apare in poze, iar la rezistenta de 0,1Ohm am luat de buna valoare inscrisa pe ea. Referinta interna la mine arata 1,11V
Imagini de la teste sint mai jos:




Concluzia este (asa cum se poate vedea din imagini) ca precizia este cumva relativa, fiind afectata de rezolutia de 8 biti a lui Atmega328 si precizia masurarii rezistentelor din divizor si a tensiunii de referinta. 
Cind va finaliza si George cu testele de la el voi reveni cu detalii.

marți, 25 decembrie 2018

DDS cu Attiny85

Zilele trecute, cautind un generator sinusoidal la 50Hz cit mai simplu si stabil, am dat de articolul de aici cu update aici. Parea sa fie ceea ce cautam si i-am facut un test rapid. Omul prezinta un generator de functii in gama 1Hz- 5KHz cu reglajul frecventei din encoder. Formele de unda se aleg printr-o apasare scurta.
Schema preluata mai jos este foarte simpla:
Atentie la pinii lui Attiny85:

La iesire eu am folosit rezistente de 3K3 in locul celor de 4K7, si condensatori de 1nF in locul celor de 4,7nF
Terminalele encoderul traduse pentru encoderul meu arata astfel:

x = GND
Y = SW
C = +5V
A = DT
B = CLK (inversarea lui A cu B afecteaza doar sensul)

Codul pentru varianta finala in care exista si semnalul sinusoidal este aici. Eu nu am facut decit sa dau copy/paste si apoi sa incarc codul in ATTINY85. Initial am pus pe pe Attiny85 bootloaderul cu clock intern 8MHz.

A iesit ca mai jos:
Frecventa si forma de unda implicita se seteaza ca mai jos:
void setup() {
  Wire.begin();
  // Is it a power-on reset?
  if (MCUSR & 1) {
    Wave = 0; Freq = 100;     // Start with 100Hz Sine

Eu am ales sa porneasca cu 50Hz pentru ca voi renunta la encoder si oled. Urmeaza sa fie adaptat intr-un invertor sinusoidal caruia i-a explodat circuitul original. Partea de defazare este pe placa invertorului si este functionala, fiind anterior testata cu semnal de pe un generatorul de mai jos:


Radio cu TEA5767, afisare pe TFT 1,44", reglaj cu encoder

Am testat functionarea unui radio FM cu modul TEA5767 (proaspat sosite) cu un arduino pro-mini, cu afisare pe TFT 1,44" 128x128 (la fe...