sâmbătă, 5 octombrie 2024

Tester porti logice SAU (OR) 7432/74LS32

     Pentru proiectul la care lucrez de ceva timp, cu cablaje comandate la JLCPCB,  

adica asamblarea si punerea in functiune a unui calculator Cobra2 (Turbo Spectrum) despre care puteti citi la cobrasov.org

am avut nevoie sa verific 3 integrate 74LS32 (4 porti SAU) pentru a depista de ce anumite semnale de pe placa de Cobra2 nu sunt corecte.

   Am zis sa fac un tester cu Arduino pe o placa de breadboard sa pot testa repede, dar am realizat programul incat am modificat repede pentru 74LS86 (4 porti SAU EXCLUSIV) sar si pentru 74LS00 (4 porti SI-NU).

  In articolul 7400 Series Guide: 74HC32/74LS32 (OR gates) este o prezentare frumoasa, inclusiv tabelul de adevar

   Am gasit un breadboard, o placa Arduino Nano, niste fire, 2 leduri si 2 resistente si am asamblat un montaj de test
   Corespondenta dintre 74LS32 / 7432 si placa Arduino este urmatoarea
iar la D11 este conectat ledul rosu inseriat cu o rezistenta de 220-470Ω ir la D12 este ledul verde inseriat de asementea cu o rezistenta de aceeasi valoare.
   La alimentarea montajului, ledurile rosu si verde se aprind intermitent pentru ceva timp, apoi daca integratul este bun, ledul verde palpaie lent,
 iar daca nu este bun (cel putin o poarta defecta) ledul rosu palapie rapid, la fel si daca nu este niciun integrat conectat sau este un alt integrat (ca aici, un 7486).
   Folosind programul OR_tester_v2.ino montajul se comporta ca in filmuletele:
    In ecranul de monitorizare seriala se gasesc informatii detaliate legate de starile semnalelor

duminică, 22 septembrie 2024

Folosire interfata "standard" i2c cu PCF8574 pentru LCD1602 ca multiplicator de intrari/iesiri digitale (2)

    Fata de testele din articolul anterior, cand iesirile "urmareau" starile butoanelor (ledurile era aprinse cand butoanele erau neapasate si stinse cand erau apasate butoanele), de data asta am modificat ca starea iesirii corespunzatoare butonului fara retinere sa se schimbe la fiecare apasare.

   Schema de conectare este aceeasi

doar programul este diferit, acum fiind PCF_IO_test3.ino 

    Am facut 2 filmulete:

folosire interfata i2c cu PCF8574 pentru LCD1602 ca multiplicator de intrari/iesiri digitale (3)

PCF8574 interface for LCD display used as expander for digital inputs/outputs (3)


23.09.2024
   Pentru a putea integra montajul intr-unul mai complex, am schimbat adresa interfetei in 0x25 prin lipirea "puntii" (strapului) A1 de pe modul.
   Incarcand in Arduino programul i2c_scanner, gasim in ecranul de monitorizare seriala
asa ca am inlocui si in programul PCF_IO_test3.ino adresa din 0x27 in 0x25
si montajul functioneaza normal.

Folosire interfata "standard" i2c cu PCF8574 pentru LCD1602 ca multiplicator de intrari/iesiri digitale

    In continuarea articolului anterior, unde PCF8574 era folosit doar ca multiplicator de iesiri (comanda un afisaj led cu 7-segmente), acum va fi folosit si pentru a avea mai multe intrari si/sau iesiri digitale.

   Am gasit mai multe materiale, doar ca am folosit biblioteca PCF8574_library pentru ca are un articol cu explicatii foarte bune: PCF8574 i2c digital I/O expander: Arduino, esp8266 and esp32, basic I/O and interrupt – Part 1

dar eu am mai folosit si informatiile de la Practical Guide to PCF8574: Adding Extra Pins for Arduino
   Ca de obicei, am verificat adresa interfetei i2c utilizand programul i2c_scanner, rezultand 0x27 (alta adresa uzuala este 0x3F)
   Primul test a fost realizat conectand P0 (RS de pe interfata) la butonul fara retinere, iar P7 (DB7 de pe interfata) la un led inseriat cu o rezistenta de 220-470Ω.

   Am facut si 2 filmulete folosind programul PCF_IO_test1.ino:
   Apoi am am adaugat al doilea buton fara retinere la P1 (RW de pe interfata) si un led cu rezistenta la P6 (PB6).

   Am realizat si cu acest montaj 2 filmulete:, in care am folosit programul modificat PCF_IO_test2.ino:

vineri, 20 septembrie 2024

Comanda afisaj led din 7 segmente cu modul i2c cu PCF8574 pentru afisaj alfanumeric LCD 1602/2004

    Pentru un anumit proiect, am vrut sa controlez un afisaj cu un singur digit de 7-segmente folosind comunicatia i2c si am avut la indemana doar un modul folosit, in mod obisnuit, la afisajele alfanumerice LCD 1602 sau 2004.

   Cautand pe internet, am gasit schema modulului la protosupplies.com:

din care se observa ca P3 nu este conectata direct, ci la comanda prin tranzistor a ledului de fundal, asa ca am testat pe un breadboard (2 de fapt) un mic montaj cu niste leduri
   Am facut un test folosind informatiile din articolul 7-Segment LED Display PCF8574 I2C Arduino
 doar ca eu am conectat singurul afisaj led gasit, unul de 1.2" cu catod comun direct, inseriind ledurile cu rezistente de 470Ω tinand cont si de informatiile de aici


  Pentru afisajul cu catod comun, ledurile se aprind cand pe iesirea PCF-ului sunt 5V (iesire in HIGH), asa ca am transformat informatia in numar hexazecimal, folosind un calculator online, pentru a putea transmite informatia cu Arduino:

   Pentru afisaje cu anod comun, alimentat din +5V, ledurile din segmente inseriate cu rezistente de limitare curent se conecteaza la iesirile PCF-ului si se aprind cand iesire corespunzatoare sunt in 0V (iesire in LOW), iar informatia in hexazecimal este
   Dupa cum se constata, am pus iesirea P3 mereu in LOW (0), deoarece nu am acces direct fara o interventie pe placuta si programelul meu de test, este countdown_test1.ino
   Am facut si 2 filmulete:

21.09.2024
   Pentru a depista adresa i2c a intefetei cu PCF8574 am folosit programiorul numit i2c_scanner (puteti gasi mai multe informatii in articolul de pe arduino.cc), gasind adresa 0x27.

   Am facut "punte" (strap) la A0 si acum adresa este 0x26.

si am modificat programul, acesta devenind, countdown_test2.ino in care se defineste adresa la inceput si apoi este ca variabila.
22.09.2024
   Am desenat schema de conectare pentru un afisaj
- cu catod comun (cum am testat eu)
- cu anod comun

Verificare memorii RAM de tip 4164

    Deoarece vreau sa asamblez un calculator Cobra2 (Turbo Spectrum), pe cablaj realizat la JLCPCB 

am achizitionat de la chinezi un pachet de 10 memorii 4164, doar ca erau ambalate intr-o punga de plastic, deci neprotejate ESD, asa ca am construit repede un tester cu Arduino, depistand una defecta.

   Am folosit informatiile de la github.com/randyrossi/arduino_dram4164_tester ce foloseste 2 leduri, unul verde si unul rosu, in timpul testelor clipesc ambele, daca memoria e buna, la final clipeste lent ledul verde, daca memoria e defecta sau apar erori de citire ramane cel putin ledul rosu aprins,

dupa cum se vede in filmuletele urmatoare:

tester memorie RAM 4164

4164 RAM tester

   Schema este ca cea din articolul 4164 Dynamic RAM with Arduino doar ca are ledul verde la pinul D12, nefigurat in schema, si cel rosu la D7.
asa ca l-am adaugat eu

PS: In 2019, am publicat articolul Verificare memorii RAM de tip 4116, util pentru posesorii de calculatoare ZX Spectrum: