joi, 11 iunie 2015

USB Converter

De multe ori când cumpărați diverse "gadget-uri" pentru microcontrolere aveți nevoie de o sursa externa de alimentare. Va propun o schema-un convertor USB-care transforma 5v de la mufa USB in 6V, 12V, 15V in funcție de cat cere "gadget-ul" respectiv. Curentul maxim este de 150mA. Schema are in componenta circuitul integrat LM3578, pentru detalii despre acest circuit folosiți Google.com.

Schema:

 Daca studiați puțin schema interna a circuitului integrat LM3578 veți observa ca acesta conține un tranzistor la ieșire care se ocupa de conversia tensiunii atâta timp cat este deschis. Curentul de colector ( pin 6 ) circula prin L1, care înmagazinează energie sub forma de câmp magnetic. Când tranzistorul este închis ( blocat ) curentul continua sa circule prin L1, D1 către sarcina.
Tensiunea de ieșire consta din suma dintre tensiunea de intrare si tensiunea indusa prin bobina.
Tensiunea de ieșire depinde de curentul cerut de sarcina si "duty cycle-ul" tranzistorului intern.
R5 si R6 =  divizor de tensiune care "cedează" o parte din tensiune comparatorului din LM3578 pentru a putea regla tensiunea de ieșire.
C5 = determina frecventa de ceas = aproximativ 55kHz
L2,C1,C9 si C10 = se comporta ca un filtru de intrare.

Pentru a obţine la ieșire o tensiune de 6V : R5= 47K si R6=9K1
Pentru a obţine la ieșire o tensiune de 12V : R5=110K si R6=10K
Pentru a obţine la ieșire o tensiune de 15V : R5=130K si R6=9k1

Pentru o mai buna înțelegere puteți simula schema utilizând PROTEUS unde veți putea modifica R5 si R6 si veți vedea ce obțineți la ieșire.

Pentru un cablaj mai mic puteți utiliza numai componente SMD.

duminică, 7 iunie 2015

Programator serial uC AVR ( gama 20 pini )


Programatorul este o interfata siProg compatibila cu programul PonyProg ce se poate descarca de la www.lancos.com .

Alimentarea acestui programator se realizeaza direct din portul serial al calculatorului. Aceasta tensiune este redresata de diodele D1, D2 si D3, filtrate cu C1 si C2 si stabilizata la +5V cu un regulator din seria 78L05.

Condensatoarele C4 si C5 au valoarea cuprinsa intre 22p si 33pF iar diodele zenner D4 si D5 sunt de valori 5V1 sau 4V7.

Schema:

 
1.       Dupa descarcarea programului PonyProg ----- il instalati ------- il deschideti --------- SETUP ------- aici se allege tipul de programator si portul de comunicatii COM ( tip programator: SiProgAPI ).

2.       Se intra in meniul DEVICE ----- AVR micro ------ se selecteaza tipul de uC. Acest programator suporta urmatoarele tipuri de uC : AT90S1200, AT90S2313, ATTiny2313.

3.       Se incarca fisierul .HEX ce trebuie scris in uC accesand meniul FILE ----- Open Device File

4.       Se intra in meniul COMMAND ------- Security and Control ---------- aici se selecteaza bitii de configuratie ( protejare la citire,..etc ).

5.       Scrierea se face accesand meniul COMMAND ------ Write All

In continuare va atasez cablajul PCB pentru aceasta schema:
Cablaj partea cu cupru:

SISTEMUL DE NUMERATIE


1.      Sistemul zecimal

Este sistemul de numeratie pe care il utilizam din copilarie dar putin stiu ca acest system foloseste o numeratie cu 10 cifre si este un system in baza 10.

Pozitia cifrelor are o foarte mare importanta.

Citirea numerelor se face de la stanga la dreapta iar numararea pozitiei se face de la dreapta la stanga.

Ex:                 504                                        citirea se face de la stanga la dreapta: cinci, zero, patru

                                                                      Pozitia de la dreapta la stanga : 4 – pozitia 0
                                                                                                                                     0 – pozitia 1
                                                                                                                                     5 – pozitia 2

Reprezentarea numarului in baza 10 :
      504 = 4 * 100 + 0 * 101 + 5 * 102

504 = 5 * 102 + 0 * 101 + 4 * 100

10x                             10 = baza

                       X = pozitia cifrei respective

Ex:  1982 = 2 * 100 + 8 * 101 + 9 * 102 + 1 * 103

Daca intelegem acest system de numeratie va fi foarte usor pentru celelalte sisteme de numeratie pentru ca sunt asemanatoare.

2.      Sistemul binar

Daca sistemul zecimal foloseste o numeratie cu 10 cifre, sistemul binar foloseste o numeratie pe 2 cifre sau este un system in baza 2. Cele 2 cifre sunt 0 si 1 numite biti, 8 biti (8 cifre de 1 si 0 ) se numeste octet sau byte.

Luam la intamplare numarul binary 10110010. Daca ne uitam la el nu intelegem nimic, este o insiruire de 0 si 1 iar noi stim doar sistemul zecimal. Stiind doar sistemul zecimal vom transforma numarul binar in numar zecimal.

10110010 = 0 * 20 + 1 * 21 + 0 *22 + 0 * 23 + 1 * 24 + 1 * 25 + 0 * 26 + 1 * 27

                       = 0 + 2 + 0 + 0 + 16 + 32 + 0 + 128

                  = 2 + 16 + 32 + 128

                  = 178

Este acelasi principiu de calcul ca si in cazul sistemului zecimal diferenta fiind doar baza ( aici este 2 iar la zecimal este 10 ).

Concluzia este : numarul binar 100110010 = 178 in sistem zecimal.

Acum sa transformam numarul zecimal 178 in sistem binar. Vom aplica metoda restului impartirii la 2 a numarului, adica: daca restul impartirii la 2 0 scriem 1 in caz contrar scriem 0 si continuam impartirea cu catul.

Exemplificare:

178 :2 = 89,0 rest 0 scriem 0

89 : 2 = 44,5 rest 5 scriem 1

44 : 2 = 22,0 rest 0 scriem 0

22 : 2 = 11,0 rest 0 scriem 0

11 : 2 = 5,5 rest 5 scriem 1

5 : 2 = 2,5 rest 5 scriem 1

2 : 2 = 1,0 rest 0 scriem 0

1 : 2 = 0,5 rest 5 scriem 1 , catul a ajuns 0 si ne oprim. Citirea se face de jos in sus 10110010 ceea ce este adevarat.

 3.      Sistemul Hexazecimal

Sistemul binar este un sistem putin mai greu in cazul in care se folosesc succesiuni lungi de 1 si 0. Acest lucru a dus la cautarea unei solutii mai practice pentru reprezentarea numerelor binare si s-a gasit urmatoarea solutie : se taie jumatate de octet (byte) si se reprezinta fiecare jumatate printr-o cifra.

Valoarea maxima a unei jumatati de octet ( byte ) este 15, in binar 1111, iar pentru ca cele 10 cifre ale sistemului zecimal nu sunt de ajuns s-a decis sa se foloseasca si primele 6 litere ale alfabetului pe post de cifre si asa s-a nascut sistemul hexazecimal.

In continuare va prezint tabelul de conversie pentru jumatati de octet

 

Binar

Hexazecimal

Zecimal

0000

0

0

0001

1

1

0100

2

2

0011

3

3

0100

4

4

0101

5

5

0110

6

6

0111

7

7

1000

8

8

1001

9

9

1010

A

10

1011

B

11

1100

C

12

1101

D

13

1110

E

14

1111

F

15


Pentru a reprezenta un octet (byte) ne vor trebui 2 cifre hexazecimale. 
Exemplu:
10010101 : prima jumatate = 1001                 
                   a doua jumatate = 0101
-dupa injumatatire vom lua fiecare jumatate si o vom transforma in hexazecimal.
       1001 ------ conform tabelului ------  = 0x9
       0101 ------ conform tabelului ------  = 0x5

 Acestea fiind spuse observam ca 10010101 = 0x95 

Conversia din hexazecimal in zecimal
-          Luam ca exemplu numarul hexazecimal 0xB1
0xB1  =  0xB ------- conform tabelului  ------- = 11        
            = 0x1 -------- conform tabelului -------- = 1

 rezulta 11 * 161 + 1 * 160 = 177  0xB1 = 17
 
-          Convertim numarul zecimal 177 in binar pentru a demonstra ca este acelasi numar binar din exemplul de mai sus:
177 : 2 = 88,5 = rest 5 scriem 1
88 : 2 = 44 = rest 0 scriem 0
44 : 2 = 22,0 = rest 0 scriem 0
22 : 2 = 11,0 = rest 0 scriem 0
11 : 2 = 5,5 = rest 5 scriem 1
5 : 2 = 2,5 = rest 5 scriem 1
2 : 2 = 1,0 = rest 0 scriem 0
1 : 2 = 0,5 = rest 5 scriem 1
 
Daca citim de jos in sus  10110001

Conversia din hexazecimal in binar
0xB1 = 0xB ------- conform tabelului ------ =11    ------ in binar ----- = 1011         
          = 0x1 -------- conform tabelului ----- = 1   -------- in binar ----- = 0001

 rezulta ca 0xB1 = 10110001


PROTEUS V8 si ARDUINO

Proteus este un software foarte util pentru pasionatii de electronica si nu numai, oferind posibilitatea desenarii schemelor,proiectarea cablajelor ( PCB-uri ) si simularea schemelor. In versiunea PROTEUS v8 dezvoltatorii au introdus si optiunea de simulare a placilor de dezvoltare ARDUINO dar si a altor placi de dezvoltare.
Placile ARDUINO suportate de PROTEUS sunt cele dotate cu microcontroller ATmega168, ATmega328P si ATmega2560 ( ARDUINO MEGA 2560 ) ; personal detin o placa ARDUINO MEGA2560.
In continuare va voi prezenta cum puteti simula schemele bazate pe placa de dezvoltare ARDUINO MEGA2560 .
  1. Deschideti PROTEUS

  • Accesati meniul FILE - - - - New Project

  • In fereastra ce se deschide bifam, binenteles dupa ce dam un nume proiectului si ii specificam locul unde trebuie salvat, "From Development Board" iar mai jos in sectiunea "Micro-controller Family" lasam selectat 'ALL" si in sectiunea "Development Board" selectam placa de dezvoltare sau ce microcontroller are in componenta. In cazul meu am ales "ARDUINO MEGA2560"

  • Click pe butonul "FINISH"
  • Dupa ce ati apasat "FINISH" va aparea urmatoarea fereastra sau dupa caz in functie de ce a-ti selectat

  • Observati ca s-a deschis o fereastra ce contine doua tab-uri ( Schematic Capture si Source Code)
                             - Schematic Capture: unde este microcontroller-ul aferent placii de dezvoltare si unde voi veti desena schema.
                             - Source Code: unde trebuie sa scrieti codul sursa pentru microcontroller-ul respectiv. Veti observa ca are aceiasi structura ca si softul de dezvoltare original ARDUINO de aceea puteti scrie codul in IDE-ul ARDUINO si apoi cu Copy-Paste il transferati in PROTEUS.



In continuare va voi arata un exemplu si anume vom aprinde doua leduri:
  • desenam schema

Atentie la desenarea schemei !!!, va trebui sa va duceti cu mouse-ul pe pinul la care doriti sa conectati led-urile click ----- click dreapta ---- copy apo faceti click in afara zonei punctate cu rosu  ----- click dreapta ------- Paste si acum puteti conecta led-urile la pinul sau pinii respectivi.

  • scriem codul sursa

  • click pe butonul "PLAY" din stanga - jos - colt


GATA!!!!!!!!.......a fost greu????????.