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

duminică, 28 martie 2021

PWM cu Attiny85 si encoder

 Am testat un generator PWM cu Attiny85 și encoder rotativ de ale cărui rezultate sunt mulțumit. Scopul final este de a obține tensiune variabilă între 0V si 5V maxim pentru reglajul sursei prezentată într-un articol anterior, unde acum am niște potentiometri multitură care fac necazuri. De fapt poate fi utlizat în orice schema de sursă care are feedback fix și face reglajul dintr-o tensiune de referință. 

Eu am folosit un Attiny85 cu bootloader de 8MHz programat cu arduino, însă la preference am adăugat linia de mai jos, iar rezultatul este ca în poză:

https://raw.githubusercontent.com/damellis/attiny/ide-1.6.x-boards-manager/package_damellis_attiny_index.json



Materialul de inspirație este de pe http://www.technoblogy.com/ unde în loc de LED am pus un dublu integrator ca în schema de mai jos:


Pornirea se face din zero ceea ce nu mă deranjează, iar la apăsarea butonului revine la zero.

Montajul de test pe breadboard:

Aici cu galben sunt impulsurile din PB0 iar cu albastru ieșirea din integrator.



Codul se găsește și pe pagina de inspirație și este urcat și pe github.
Urmează să desenez un cablaj care să se potrivească și în cutia sursei.

Pe placa am mai pus un stabilizator cu MC34063 care alimenteaza separat cele doua circuite Attiny85.
Si o imagine de ansamblu cu reglajul sursei cu TL494 pusa pe sarcina electronica.





 

vineri, 27 septembrie 2019

Radio with TEA5767 on ATTINY85 with 7 segments HT16K33

Pentru un viitor proiect  am testat un radio foarte simplu cu TEA5767 ce m-a inspirat de aici: http://forklg.ru/viewtopic.php?f=98&t=1173
Testat pe arduino uno nu am reușit (pe display-urile ce le aveam disponibile) să-l fac să aprindă virgula decât în situația când frecvența afițată era mai mare de 100. Având o rezervă de module cu HT16K33 (drive LED cu interfață I2C) am înlocuit afișorul  cu TM1637, cu acesta pe I2C. Astfel a început să funcționeze normal. În plus i-am pus limite la frecvența minimă și maximă.  Unul din butoane incrementeză frecvența pozitiv, celălalt negativ.

if(f_ini<87.5) f_ini=87.5;
if(f_ini>108) f_ini=108;

Văzând gradul mic de ocupare a codului  și numărul mic de legături, am portat codul pentru ATTINY85.
Mai jos este poza cu modulul folosit.

Acesta din urmă are logica intrărilor pe invers, asa ca am legat rezistentele la plus pentru a nu mai face modificari in cod .
Am pus pe onedrive și un filmuleț scurt: https://1drv.ms/v/s!Ag3156arz2JqlTUW6c5FQ5a7g244?e=4wTOje

Încă mai există loc pentru a implementa și memorarea ultimului post, însă deocamdată nu mă interesează.

duminică, 30 iunie 2019

Indicator V-A cu ATTINY85 si ADS1015 pe LCD 8X2

La sursa din articolul anterior, am facut upgrade indicatorului de tensiune și curent. Indicatorul utilizat a fost descris tot anterior însa marele neajuns era viteza de masurare și precizia scăzută.
Astfel i-am adaugat un convertor analog digital pe I2C de tip ADS1015  . Link-ul duce către un modul  identic unde este foarte bine documentat
La schema de conectare anterioară aveam ocupați pinii pentru I2C asa că i-am relocat ca să pot conecta ADS-ul.
Schema de baza îi aparține lui Nicu Florica eu doar am modificat-o.

Din cod se deduce ușor noua configurație. La ADS1015 am pus  pinul ADR la GND  pentru a obține adresa 0x48 . La A0 am legat un divizor cu 100K si 0,47K. iar A1 l-am legat direct la ieșirea rezistenței de 0,1Ohm care e folosită ca senzor de curent pentru TL494.
În cod la linia
tensiune=(0.0043*Voltage);

0,43 este factorul de divizare rezultat dupa ce am masurat rezistențele.

Testat off-line precizia a fost super bună, însă după ca l-am introdus în cutia sursei am constatat în sarcina o abatere a indicației tensiunii de iesire datorată căderii de tensiune pe rezistența de 0,1Ohm. Indicatorul are masa comuna cu circuitul lui TL494, așa că urmează ori să înlocuiesc rezistența de 0,1Ohm cu una mai mică (aceasta "manâncă" 1V la 10A), și să recalculez protecția lui TL494, ori să pun un șunt separat indicatorului cu modificarea codului.
Codul ocupă relativ puțin, așa că dacă voi folosi un LCD16X2 voi putea să dau o utilitate și celorlalte două intrari ale lui ADA1015 care acum au ramas nefolosite.

Mai jos câteva imagini de la teste.






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:

Update 28-IUL-2019
Semnale in antifaza obtinute cu ajutorul a trei inversoare (3/4 MMC4011)



marți, 9 octombrie 2018

Termometru cu DS18B20 cu ATTINY85-digispark pe 7segmente 2 digiti cu74HC595 programat pe MACOS

Am reluat proiectul anterior de data asta cu scopul de a testa programarea unui modul digispark cu Attiny85 pe MACOS (pe windows10  nu a mai vrut sa munceasca driverul micronucleus).
Am folosit acelasi display cu 7segmente si 2 digiti cu 74HC595, iar ca senzor de temperatura am folosit un DS18B20 (tocmai au sosit mai multe).
Testul pe breadboard arata ca mai jos:


Modulul cu Attiny85 este ca in figura:
Din codul postat pe github se deduce foarte usor schema, P0, P1, P2 se duc la display, iar la PB3 senzorul cu o rezistenta de 4k7 la +5V.

Pe MACOS instalarea si programarea acestui modul a fost foarte simpla, trebuie doar scris in arduino IDE la Preferences:
http://digistump.com/package_digistump_index.json

 Apoi din Board Manager se instaleaza pachetul cu drivere (cel corespunzator cursorului de la mouse).


Astfel am reusit sa vad modulul meu:


Si programatorul micronucleus:

Diferenta fata de programarea modulelor arduino este ca modulul digispark nu trebuie sa fie conectat pe USB in momentul cind se da UPLOAD, acesta se va conecta in momentul cind apare mesajul generat de arduino IDE, in partea de jos unde este scris cu portocaliu. De asemenea apare mesaj cind se termina incarcarea. In acest moment se deconecteaza de la USB si se pune pe breadboard.

marți, 25 septembrie 2018

Termometru cu LM335 cu ATTINY85 pe 7segmente 2 digiti cu74HC595

A  aparut necesitatea unui teremometru foarte simplu cu afisare pe 7 segmente cu 2 digiti. Dupa un pic de documentare m-am oprit asupra display-ului de mai jos care are inaltimea de 1,8mm, este compact, si comandat de catre 2x74HC595.

Abuzind de google am gasit un tutorial pentru arduino. Dupa ce m-am imprietenit cu modul de lucru, i-am atasat un LM335, acesta avind si posibilitatea de corectie ( de fapt era singurul tip disponibil acum).
Dupa ce l-am testat pe arduino, am considerat ca e prea puternic pentru un lucru simplu, si am decis sa folosesc un ATTINY85. Codul rezultat este pe github.
O poza din faza de test mai jos:

La partea de masurare cu LM335 m-am inspirat din articolul lui Nicu Florica.
Pentru partea de corectie am folosit schema de mai jos: ( eu folosit un semireglabil de 100K in locul celui de 10K)
Dispunerea pinilor la ATTINY85 se pot observa din figura urmatoare:

Schema de conexiuni (se poate deduce foarte usor si din cod) este:





Update: am adaptat codul si pentru senzor DS18B20:

Cel de jos este realizat cu acelasi senzor in jurul lui arduino nano pe un display 3x7 segmente

sâmbătă, 12 mai 2018

Radio cu TEA5767 comandat de ATTINY85 afisare pe OLED

Am testat un radio foarte simplu, cu TEA5767, comandat de ATTINY85 cu afisarea frecventei pe un OLED. Pentru cautarea posturilor am folosit o singura intrare cu 2 butoane.
Schema este urmatoarea:
Iar modulul cu TEA5767 este:

Deorece resursele lui ATTINY85 sint reduse am abuzat de google pentru a cauta ceva similar. Astfel am gasit aici un library minimal pentru TEA5767,  si aici pentru OLED.
Codul testat este pe github.
Initial am testat cu un OLED 128x64 apoi amgasit un 128x32.
Viteza de reactie este destul de buna, insa afisarea frecventei este putin intirziiata, refresh-ul se face la cca 2-3 secunde.
Imagini de la teste:
 In poza apar trei butoane pentru ca initial am vrut sa-i pun un buton pentru MUTE, insa codul actual ocupa 99%


duminică, 4 martie 2018

Modul cu HT16K33

Pentru un viitor proiect cu ATTNY85 am testat doua module cu circuitul HT16K33 adaptor I2C catre 4x7 segmente cu catod comun. Cele  doua module arata ca mai jos:
Precum se vede nu exista prea multe informatii scrise pe el. Ca sa-l pot folosi am abuzat din nou de google si am descoperit ca sint clone ale acestuia de mai jos:


Insa nici aici nu am gasit o schema concreta de conexiuni. Am folosit datasheet-ul circuitului si am identificat cei 4 pini care ma interesau +5V, GND, SCL, SDA.
Implicit modulele au circuitele A0,1,2 deschise pentru  0X70 adresa I2C.


 Inchizind circuitul A0 adresa devine 0x71


Am incarcat pe arduino nano un scaner I2C pentru a verifica daca este corect:


In urma studierii materialului de aici, concluzia  este ca pinii 7 si 8 sint folositi pentru cele 2 puncte ce clipesc la secunda, (nefolositori in ceea ma intereseaza) in rest ceilalti corespund cu afisajul de mai jos:


Se observa ca display-ul are doar 6 pini pe linie, care corespund  modulului de mai sus  montat de la stinga spre dreapta, lasind in aer gaurile 7 si 8.

Testele le-am facut cu display-ul de mai sus care este ceva mai mic, dar cu pinii suficient de lungi ca sa-i pot modela, avind doar 0,36" fata de 0,56" .
Am modificat exemplul de aici pentru a afisa pe 2 display-uri, unul incrementeaza cu o unitate, al doilea aduna 1000 la unitatea incrementata.


 Am urcat pe google drive si un filmulet scurt.



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