Pin sayısını artırma üsulları

Salam. Bu yazıda giriş-çıxış pinlərinin (GPIO) sayısını artırma üsullarından danışacam. Mən burda işin məntiqini izah edəcəm, məntiqi qavradıqdan sonra bu metodları istənilən platformaya tətbiq edə bilərsiz. Aşağıdakı metodlarla tanış olaq:
- Multiplexing/demultiplexing
- Charlieplexing
- Shift register
Multiplexing/demultiplexing

Multiplekser sxemi aşağıdakı kimi bir elektron formada idarə olunan, bir girişə və çoxlu sayda çıxışa malik olan açar kimi təsəvvür etmək olar.

Gördüyümüz kimi açar (oxla göstərilən) indi 2-ci pinə qoşulub. Bəs açarı necə idarə edək? Açarı da idarə etmək üçün əlavə bir neçə pinə ehtiyac olur.




Açarın hansı pinə qoşulu olması üçün bizə adres pinləri olaraq adlandırdığımız idarə pinlərinə də ehtiyac var. Açarın neçənci pinə qoşulu olduğu ikilik say sitemində göstərilir. 0 olan hissələri GND-a, 1 olan hissələri isə 5V/3.3V-a qoşaraq açarı istənilən vəziyyətə gətirə bilirik. Belə bir açarın mexaniki yolla deyil, elektron yolla idarə olunması üçün ən məntiqli üsul da yəqin ki, budur.

Bəs, açar eyni zamanda bir neçə pinə qoşulu ola bilmir yalnız birinə qoşulu olur bu necə pin artırma oldu?
-Bizdən fərqli olaraq, mikrokontroller açarın vəziyyətini elə sürətlə (saniyənin 100-də biri, 1000-də biri kimi) sıra ilə dəyişər ki biz bütün pinlərin qoşulu olduğunu zənn edərik.


Bəs, bu multiplekser özü necə işləyir? Əlbəttə, multiplekser yuxarıdakı diaqramdakı kimi izah olunan içində bir açar olan bir dövrə deyil. Əslində, o məntiq elementlərindən qurulur. Mən burda əsas konsepti izah etmək istədiyimdən, o mövzulara girişməyəcəm.
Charlieplexing( Bu metodu yaradan Charlie Allen`in adı ilə bağlıdır)
İlk dəfə bunu öyrənəndə niyə belə sadə şey daha əvvəl ağlıma gəlməyib deyə fikirləşdim.Üstəlik bunun üçün heç bir əlavə modula falan ehtiyac yoxdur.
Bu sxemə baxaq:


Burdan hər şey aydındır ki,
- 1ci vəziyyətdə 1-ci led yanlı olacaq 2-ci sönülü olacaq
- 2-ci vəziyyətdə 2ci led yanlı olacaq 1-ci led sönülü olacaq.
Hə nolsun? 2 pinlə 2 led işlətdik də…
Bəs həmin məntiqlə 3 pin qoşulsa necə?

Burda 3 terminal (pin) var. Belə nümunələrə baxaq
- 1+, 2-, 3 qoşulu deyil -yalnız L1 yanacaq.
- 1-, 2+, 3 qoşulu deyil -yalnız L2 yanacaq.
- 1 qoşulu deyil, 2-, 3+ -yalnız L3 yanacaq.
- 1 qoşulu deyil, 2+, 3- -yalnız L4 yanacaq.
- Davamını siz gətirin…
Gördüyümüz kimi, əlavə bir modula ehtiyac olmadan 3 pinlə 6 pinimiz oldu.Charlieplexing ilə neçə pini artıracağımızı hesablamaq üçün düstur da var:
p=n(n-1)
p-artırılmış(charlieplexed), pinlərin sayı n- işlətməli olduğumuz pinlərin sayı.Məsələn, bayaqkı nümunədə 3pin işlətmiştik 6 artırılmış(charlieplexed) pin əldə etmişdik:
p=3(3-1)=6
Bunu arduino ilə etməyiniz üçün 3) vəziyyətindəki dövrəni qurub, terminalları istənilən arduino giriş-çıxış pininə birləşdirin.3 terminaldan birində;
Həmin 3 seçılmiş pini pinmode(seçilmişPin,OUTPUT) etdikdən sonra:
- + üçün digitalWrite(seçilmişPin,HIGH)
- – üçün digitalWrite(seçilmişPin,LOW)
- qoşulu deyil üçün pinmode(seçilmişPin,INPUT), sonra digitalWrite(seçilmişPin,HIGH)
Shift register
İngliscə shifting-sürüşdürmə, register-qeydə almaq deməkdir. Bu komponent də eynən bunu edir. Ona verilən 1 və ya 0-ı (bitləri) sürüşdürür, yadında saxlayır və çıxışa verir.
Shift registerlərin bir neçə növləri olsa da, bizim pin artırma məqsədimizə ən çox uyğun Serial Input Parallel Output SIPO tipli olanından bəhs edəcəm.

1)rəsimindəki shift registerin necə işlədiyini anlamaq üçün hələlik Clock pinini də kənara qoyaq və aşağıdakı rəsimlərə baxaq.



Bəs Clock pini nəyə lazımdır?-Shift registerdə hər biti qəbul etməsi üçün clock siqnalına ehtiyac olur.Clock siqnalında dəyişiklik olmasa, shift registerdə heç bir dəyişiklik olmur.Bizim shift registerimizin clock pininə 0 verildiyi zaman heç nə etmir və 1 verildiyi zaman “Data” pininə uyğun dəyişiklik edir.Onda, shift registerin yuxarıdakı hər bir addımı yerinə yetirməsi üçün 010 siqnalına(qrafik olaraq yuxarıdakı kimi) ehtiyac var.
0-0V,1 isə, 5V olduğunu bayaq da demişdim deyəsən.Hər addım üçün “Data” pininə bu siqnal verilməsi lazımdısa, yuxarıdakı 10100110 ədədini çıxışa vermək üçün “Data” pininə bu siqnalı verməliyik.

Növbəti yazılarda görüşərik.Hələlik…..