- AMD Ryzen 9 / 7 / 5 7***(X) "Zen 4" (AM5)
- AMD K6-III, és minden ami RETRO - Oldschool tuning
- Bluetooth hangszórók
- Azonnali fotós kérdések órája
- Raspberry Pi
- Milyen asztali (teljes vagy fél-) gépet vegyek?
- Szünetmentes tápegységek (UPS)
- Nem indul és mi a baja a gépemnek topik
- AMD Navi Radeon™ RX 9xxx sorozat
- Házi barkács, gányolás, tákolás, megdöbbentő gépek!
-
PROHARDVER!
Arduino hardverrel és szoftverrel foglakozó téma. Minden mikrovezérlő ami arduinoval programozható, és minden arduino program, board, és hardverrel kapcsolatos kérdések helye.
Új hozzászólás Aktív témák
-
.-..-.
tag
-
op9
aktív tag
Köszi!
Hát nekem csak tényleg pár dolog kellett ehhez a projekthez, nem sűrűn csinálok ilyesmit, szóval nem éri meg ilyeneket rendelnem, de kereséshez nagyon jó lesz nekem az oldal.A kérdésre a válasz, hogy miért nem NPN bipolárist vettem:
Először a boardra szerelt buzzer vezetett meg, ahol S8550-est használtak, így azt gondoltam, hogy jó lesz az nekem. Majd miután kiderült, hogy 3.3V-tal nem zár teljesen, hanem 1.X V-on még nyekeregtek a buzzerek, ezért utána olvastam, és azt láttam, hogy érdemesebb lenne nekem MOSFET-et használni, mert azzal is megoldható ez a kapcsolgatás, és csak váltásoknál fogyaszt valamennyit, a másik meg folyamatosan (amíg összezár). A cuccom akkuról működik, ezért jobb, ha nem fogyaszt annyit. De a MOSFET-tel együtt vettem egy BC337-est is, ha mégsem lenne jó nekem a MOSFET, de még 3.3V-on is van 100mA-em, és az 50 meg bőven alatta van, így nem akarom már piszkálni. -
op9
aktív tag
Áá, értem, köszi a felvilágosítást!
Akkor tényleg az arduino-s felhasználása jobb, mert ott 5V-ot kap, és azzal már maximálisan ki lehet használni a képességeit.
Sajna a TN0106-t nem találtam se a hestore, hqelektronika, kontel-nél, de a BSS138 van mindegyik helyen. Hol lehetne azt még beszerezni? Bár a BSS138 is jónak tűnik, ha arra is lehet vezetékeket forrasztani, még sohasem próbáltam. -
op9
aktív tag
Köszi a választ!
Sajnos nem vagyok azon a szinten, hogy megértsem.
Nagyobb feszültséggel kellene a gate-et piszkálnom?
Azt hittem, h itt a gate-source threshold voltage-et elég néznem, és a MAX érték (3V), amikor már teljesen nyit.Ö ezzel egy 0.2A-es ventit mozgat (arduino mondjuk nem 3.3V-ot, hanem 5V-ot ad ki), ami gondolom az induláskor sokkal magasabb.
Nekem 2db buzzer van rákötve ami összesen 50mA-t vesz fel.Melyik mosfet lenne sokkal jobb ehhez a 3.3V-os limitre?
-
-
#70211840
törölt tag
-
#70211840
törölt tag
Köszönöm a választ.
Csak maga a 230V hálózat meglétét lenne szükséges figyelnem. Annyit kellene tudnom, hogy a hálózat létezik-e vagy éppen áramszünet van. Semmi egyébre nincs szükségem. Egyszerű true vagy false a lekérdezéskor.
Jó volna nagy bemeneti impedancia az egyen feszültség mérésekor. Amolyan multimeter módon. Például egy CR2030 elem (backup battery rtc-hez) merülésekor tudjon szólni.
-
ReFleXx
addikt
várható fogyi nagyon alacsony lenne, napi 4 alkalommal ébredne fel deepsleepbol. deepsleepben 20uA alatt lenne a fogyi, kb 5-15mp-re ébredne fel amikor mér egyet es wifin elküldi a meresi eredmenyt, ezalatt meg olyan atlag 120mA a fogyi, nagyon rovid 5-600mA-s peakkel de azt egy kondival a tapon szerintem lehetne segiteni.
-
Tomika86
senior tag
Összeraktam egy módosított programot, a kijelzőt is módosítottam.
Ahol a kapcsolók alatti képek vannak, az oldalon létrehoztam va0, va1, va2 változókat. Ezeket esp32 programbetöltésnél meghatározom milyen értékűek, 0 vagy 1. Aztán elküldöm page1.va1.val=1 példáulA képernyő preinizcializálasába tettem azt hogy if(va0.val==1)
{ vis p19, 1}
Else {vis p19, 0}Csak hétfőn tudom kipróbálni.
Köszönöm a segítséget
-
Tomika86
senior tag
Igen a képek megjelenítése a kapcsolók alatt, globális a vscope.
Igen a vis, 1 el megjelenítem, vis, 0 elrejtem. Megpróbálom hogy első ciklusban elküldök minden adatot.Azt ki tudom deríteni valahogyan, hogy a nextion küld e vissza valami hibát? Vagy nextionban ki lehet iratni?
Ha esetleg hibás parancs, vagy bármi van a kommunikációban. -
Tomika86
senior tag
A legelején máshogy volt a z adatok küldésének a szervezése. Azóta optimalizáltam ezt. Azt megpróbáltam, hogy az adatokat küldöm amikor lapozok, de késleltetve váltok képernyőt, ekkor is megvolt a bevillanás.
Ahol a kapcsolók vannak ott 10 adat van kb amit küldök, az nem sok szerintem. Tehát nincs különbség a 10 adatos oldalnál és egy 25adatos oldalnál.
Azt is próbáltam, hogy első ciklusban elküldök minden adatot a kapcsolós oldalra, de ha nem azon vagyok akkor hiába küldöm el. (ez debugban is látszik, hogy nem jó) -
Tomika86
senior tag
Szia
Jelenleg minden változó globális a kijelzőben, így csak egyszer csinálja amikor belépünk.
Igen az esp32 küldi az adatokat, úgy hogy amikor a főoldalon megnyomom a nyilat akkor már elkezdi küldeni az adatokat arra az oldal változóira amik azon az oldalon lesznek.(erre gondoltál az utolsó bekezdésben? ).
Vajon megoldható így is, hogy esp32 küldi az adatokat?Köszönöm
-
Szerintem az analogWrite alatt a PWM-et értette (az Arduino legalábbis analogWrite használatakor PWM-et generál).
tonermagus
Csak hogy ne zavarjunk össze, a PWM tehát továbbra is jó neked arra a célra, amire szeretnéd. Csak a megfogalmazás volt nekünk félreérthető (ahogy ezt már kitárgyaltuk).
A low-side jelentését, és a gate-lehúzó ellenállást And kolléga megválaszolta. Ha van még kérdésed, tedd fel nyugodtan. -
Dißnäëß
nagyúr
Jól benne vagy ezekben, köszi a hosszú választ.
Akkor én sem álmodok nagyokat, veszek egy marék hatalmas méretű klasszik elko köcsögöt, táp vesztés esetén MINDENT lelövetek magáról az MCU-ról és gyorsan egy EEPROM-ba írás és jónapot.
Egy csöves erősítő lenne egyébként, és az üzemórák száma fontos, hogy melyik csőtípusba hány óra megy bele, ezt tervezem mérni vele, semmi különös. Jelezne nyilván, hogy ezt vagy az a párt akkor tessék cserélni lassan, mert elérte az 1000-2000-10000 órát mondjuk.
-
gyapo11
őstag
A tranzisztor állapotait egy szelephez hasonlíthatjuk: nyitva van, ha áram folyik rajta, és zárva, ha nem folyik az áram.
OK, én is így használtam mindig.
Így van. Még annyit magyarázatként, hogy amikor egy relé tekercsén áram folyik át, akkor felépül egy mágneses tér, pont ez húzza be a relé mágnesezhető részeit. Viszont ha megszűnik az áram, akkor a mágneses tér is megszűnik. A megszűnés változás, és változó mágneses térben a vezetékekben feszültség indukálódik. Mégpedig olyan irányú, ami ellentétes a létrehozó árammal, vagyis mivel az egyik pontja testen van, a másik pontja fog negatív irányba ugrani, így jön létre az induktív tüske. Ami ha elég nagy, akkor a kapcsoló tranyót olyan nagy feszültségnek teheti ki, amitől az tönkremegy, a C-E feszültség túllépheti a megengedettet, mivel az egyik láb a tápon van, ezt akadályozza meg a dióda, ami a testhez képest csak -0.7 V-ig engedi a tüskét.
-
Tomika86
senior tag
Működik
Ha valakinek kellene majd :#include <Wire.h>
#define ADS7828_ADDRESS 0x48 // ADS7828 Address byte: 0x48 0b10010000
// 1001 0 A1 A0 R /W
#define CH0 0x8C // Ch0: 0x8C
#define CH1 0x9C // Ch1: 0x9C
#define CH2 0xAC // Ch2: 0xAC
#define CH3 0xBC // Ch3: 0xBC
#define CH4 0xCC // Ch4: 0xCC
#define CH5 0xDC // Ch5: 0xDC
#define CH6 0xEC // Ch6: 0xEC
#define CH7 0xFC // Ch7: 0xFC
void setup()
{
Wire.begin(); // I2C kommunikáció inicializálása MASTER-ként
Serial.begin(115200); // Soros kommunikáció inicializálása, baud rate beállítása = 9600
delay(300);
}
void loop()
{
int kiolvasott = ADS7828_olvasas (ADS7828_ADDRESS, CH0); // 0x8C 0b1000 1100 SD, C2, C1, C0, PD1, PD0, x, x
// 1: Single-End, 000: Ch0, 11: Int ref és AD bekapcsolva
Serial.print("Ch0 értéke : ");
Serial.println(kiolvasott); // Nyers analóg érték kiiratása soros monitorra
}
int ADS7828_olvasas (int Addr_byte, byte Cmd_byte) {
byte data[2];
Wire.beginTransmission(Addr_byte); // I2C átvitel indítása, az adott címen
Wire.write(Cmd_byte); // Command byte küldése
Wire.endTransmission(); // I2C átvitel megállítása
Wire.requestFrom(Addr_byte, 2); // 2 byte adatra várakozás
// 2 byte adat olvasása
if (Wire.available() == 2) // Ha megérkezett a 2byte
{
data[0] = Wire.read(); // Első byte tömbbe írása
data[1] = Wire.read(); // Második byte tömbbe írása
delay(5);
int adc = ((data[0] & 0x0F) * 256) + data[1]; // Adat konvertálás 12bit-re
return adc;
}
}Nem a legszebb, de jól működik, semmi akadás az analóg mutatóban
Köszönöm a segítséget!
-
Tomika86
senior tag
Szia!
Ez így jó lehet?
#include <Wire.h>
#define Addr 0x48 // ADS7828 Address byte: Hex: 0x48 Bin: 10010000
// 10010 A1 A0 R /W
void setup()
{
Wire.begin(); // I2C kommunikáció inicializálása MASTER-ként
Serial.begin(9600); // Soros kommunikáció inicializálása, baud rate beállítása = 9600
delay(300);
}
void loop()
{
int kiolvasott = ADS7828_olvasas (Addr, 0x0C); // Hex: 0x0C Bin: 0000 1100 SD, C2, C1, C0, PD1, PD0, x, x
// 0: Single-End, 000: Ch0, 11: Int ref és AD bekapcsolva
Serial.print("Ch0 értéke : ");
Serial.println(kiolvasott); // Nyers analóg érték kiiratása soros monitorra
}
int ADS7828_olvasas (int Addr_byte, byte Cmd_byte) {
byte data[2];
Wire.beginTransmission(Addr_byte); // I2C átvitel indítása, az adott címen
Wire.write(Cmd_byte); // Command byte küldése
Wire.endTransmission(); // I2C átvitel megállítása
Wire.requestFrom(Addr_byte, 2); // 2 byte adatra várakozás
// 2 byte adat olvasása
if (Wire.available() == 2) // Ha megérkezett a 2byte
{
data[0] = Wire.read(); // Első byte tömbbe írása
data[1] = Wire.read(); // Második byte tömbbe írása
int adc = ((data[0] & 0x0F) * 256) + data[1]; // Adat konvertálás 12bit-re
return adc;
}
}A 0x0C módosításával lenne kiválasztva a csatorna száma
-
Tomika86
senior tag
Igen még mindig 🙂
Jelenleg már esp32-vel. Azért jött az i2c ad hogy ne használjak el lábat az esp32ből. Hosszú project lesz ez.
Tehát akkor vagy csökkentek az ad bemenetein lógó impedanciákon, vagy követő opampot rakok plusszba be, de akkor új panel kell.
Nem tudom, hogy kell e nekem ez a túlzott dupla szűrőtag. Mennyire kell szűrnöm a bemenetet. Milyen frekvenciára kell szűrnöm? Mert ez a 10kohm, 100nf 160hz törésponti frekvenciát ad. -
Tomika86
senior tag
50ksps a mintavételi sebesség, 1sec alatt 50000mintát tud? Az i2c kommunikáció standard, az 100khz ha jól tudom.
Az is elképzelhető hogy a library rossz nekem?Az ADS111x sorozat amit szoktak használni, de csak 4 csatornás, bár 2db jó lett volna.
Ez max 860sps sebességű szigma delta.
Ez jobb lett volna?Vagy az ads7828 is jó lesz, csak elötte a szűrés nagy impedanciás?
-
Tomika86
senior tag
A többit 5v-al és potenciometerrel kipróbáltam, 3,3kohm - 3,3kohm osztóval. Ezek jó értéket adtak.
Az akksihoz 8,2kohm - 1,6kohm(ez nincs) rakok akkor a 2,5v-max bemenethez és így skálázom be majd.Az i2c adatkiolvasás sebességét vagy az egész program futását láthatom abban, hogy olyan az értékkiolvás mintha 1s-ként lenne adat olvasva?
Ki kell próbálnom csak magát a kiolvasást -
PHM
addikt
A protokoll adott, jelenleg egy PC a master, és egy csomó ADAM modul ül a hálózaton.
Ezek nyomógombokat fogadnak, s mivel mostanra eléggé megnőtt a ciklusidő, minden bemeneten van 1-1 hardveres késleltető/jelhosszabbító áramkör. Mivel az ADAM
modulok kimenetei időközben fölöslegessé váltak, jött az ötlet, hogy ezeket és a
késleltető modulokat ki lehetne váltani AVR-rel, vagy Arduinoval, a késleltetést, ill.
jeltartást szoftveresen megoldva.
A nagy kérdés az, hogy van-e erre komplett, vagy összelegózható megoldás, vagy
érdemesebb mindjárt egyedi áramkört tervezni.
- Létezik-e pl az Arduinóhoz RS 485-ös shield?
- Tud-e fogadni kiegészítő áramkör(ök) nélkül 16 kontaktust?
(Sajnos e téren gyakorlatilag szűz vagyok, elnézést, ha ostobaságokat kérdezek.) -
Egy dolog szemet szúrt: a rajzon egy dióda vezet a bemenet felől a V+ irányába. Ha a V+ mondjuk 5V, és közös a mikrokontroller +5V tápjával (mert miért ne lenne), akkor ha érkezik a bemenet felől mondjuk egy 10V-os jel, az nem emeli meg a mikrokontroller tápját is, ezzel kinyírva azt?
-
Tomika86
senior tag
Köszönöm
A helyén a max 15Vból lenne 2db 7805 stab IC.
Egyik a Nextion kijelző.
Másik az arduino volt. De most esp32-re alakítottam át.
Ebből csinálnék TMS1117 stab icvel 3,3Vot.Lenne az SD kártya a 3,3V-on.
3db FET kimenet.
2db LM1815 ICs induktív érzékelős áramkör.
Illetve az ESP32
Nextion ha jól tudom tud 3,3Vos adatbusszal kommunikálni. -
tonermagus
aktív tag
Szuper! számomra ennyi elég.
A felhasználó akinek szánom képes arra hogy feltöltsön programokat, de azt viszont nem akarom hogy csak úgy nézegesse a forráskódot.
Ezekszerint a .hexben importálva, majd feltöltve a forráskód értelmezhetetlen lesz külső szemek számára. (ami nyilván nincs így, mert egy hozzáértő valószínűleg össze tudná rakni)
-
Tomika86
senior tag
Most egyenlőre mással küzdök, nem jövök rá miért nem működik ez:
// Soros portról olvasás képernyőszámhoz
if (Serial.available())
{
String indata = Serial.readStringUntil('#');
// Ha "page0" string érkezik
if (indata.indexOf("page0") > -1) {
kepernyo_szam = 0;
}
// Ha "page1" string érkezik
else if(indata.indexOf("page1") > -1) {
kepernyo_szam = 1;
}
// Ha "reset" string érkezik
// Üzemóra törlése
else if (indata.indexOf("reset") > -1)
{
Uzemora_perc = 0;
Uzemora_ora = 0;
EEPROM_writeLong(EEPROM_cim_ora, Uzemora_ora);
EEPROM_writeInt(EEPROM_cim_perc, Uzemora_perc);
}
// Soros portról olvasás értékek beállításához
// Ha "feszmin" string érkezik
else if (indata.indexOf("feszmin") > -1)
{
byte position1 = indata.indexOf("feszmin");
feszmin = indata.substring(0, position1);
alacsony_akkufesz_ertek = feszmin.toFloat();
EEPROM_writeFloat(EEPROM_cim_akkufeszmin, alacsony_akkufesz_ertek);
}
}
if (kepernyo_szam == 0)
{
// Fordulatszám kijelzés
Serial.print(fordulatszam);
}
if (kepernyo_szam == 1)
{
// Üzemóra óra kiírása
Serial.print(Uzemora_perc);
// Üzemóra perc kiírása
Serial.print(Uzemora_ora);
}
}
Igazából simulátorban működik, de a kijelzőn nem.
Nextion editorban, ha átváltok a page1 képernyőre akkor print "page1#" parancsot küld, page0 esetén print "page0#"
de a kepernyo_szam valtozo 0 értéken marad.
Az üzemóra nullázás se működik.
Most itt kiszedtem a felesleget, de az elvet rontom el gondolom.Ha kiszedem a képernyő szám feltételt akkor működik, de feleslegesen nem akarok adatot küldeni a kijelzőre, csak azokat ami azon a képernyőn van.
Köszönöm a segítséget!
-
Tomika86
senior tag
Hát ez a bajom. Egy oldalon van 3 mutatós műszer, aminek a mutatói nem szeretném, ha akadoznának. Illetve még van mellette 4 text mező és 3 szám mező. Text mezőkben float szám van megjelenítve.
Ezek érdekelnének, hogy mennyi időt kell hagynom a küldések között, hogy kell ütemezni.
Ha az értékek lassabban frissülnek nem gond, de a 3 mutató ne akadozzon.
-
Tomika86
senior tag
Ha gombot rakok a mentésre akkor ezzel megtudom oldani?
Nextion mentés gomb megnyomási eseménynél:
print t0.txt
print "mentes#"Arduinoban pedig ez:
if (Serial.available())
{
String indata = Serial.readStringUntil('#');
if (indata.indexOf("mentes") > -1)
{
byte position_ = indata.indexOf("mentes");
arduino_adat = indata.substring(0, position_).toInt();
}
}
Annyi, hogy nem szám típusú a beviteli mező, hanem szöveg. De numerikus billentyűzet lenne megjelenítve.
Köszönöm!
-
-
gyapo11
őstag
Lehet hogy nem, attól függ mekkora áramot képes felvenni az a valami. Lehet, hogy 5 A-t, lehet hogy 10-et, és akkor a stabilizátor mégsem tudja tartani a feszültséget, de egy megfelelően kis belső ellenállású elkó meg igen.
Az elkó megfekteti bekapcsoláskor, ez igaz. Azonban ez még mindig jobb, ha fél másodperccel később indul az arduino, mint ha menet közben resetel. De ha nincs ilyen nagy áramimpulzust előállító fogyasztó az arduino tápján, akkor nem kell az elkó, elviszi a cuccot a stabkocka. -
Áhá, értem, köszönöm a részletes leírást!
Mindig tanul az ember.Tehát a fenti célra feleslegesen nagy tudású ez a kijelző, bár úgy látom, hogy 7"-os méretben nemigen van "buta" kijelző, vagy ez van, vagy HDMI, vagy telefonba/tabletbe való nemtommilyen csatolós.
Én a magam részéről mindig a "bare minimum" hardverre törekszem, tehát mi az a legkisebb hardver, ami el tudja végezni a feladatot. Rosszul érezném magam, ha olyan alkatrészt használnék fel egy projektben, ami nemcsak drága, de az 1%-át használom ki annak, amire képes.
-
Én eddig nem tudtam, hogy mi ez a HMI, szóval ha jól értem, ez egy intelligens kijelző, aminek soros porton lehet azt mondani, hogy "rajzolj egy gauge-ot" és emiatt kerül 6x többe, mint egy mezei SPI vagy i²c kijelző?
Biztos kényelmes használni, de én biztos egy olcsó i²c oled kijelzőt használnék ilyen mérési célra. -
-
-
Igen, igazad van, ezt tudom, akartam is írni, hogy a folyamatos PWM jelet időnként szaggatni kell: most fejből nem emlékszem pontosan, talán 40-100ms-onként 20ms szünet, és nem nyomja el a jelet. Valahol egyszer olvastam egy ilyen projektről, instructables vagy hasonló oldalon, futópályán így oldották meg az áthaladás érzékelését, különben nem javasoltam volna.
A TSSP sorozatot nem ismerem egyáltalán, tudsz konkrét darabot javasolni? -
atesss
addikt
No már elkezdtem írni hogy mi lehet ennek az "anomáliának" az oka.
Aztán miközben írtam, esett le hogy mi is van:
Mivel a --változásokat-- figyeli a PCF8574, akkor is van ugyanúgy interrupt, amikor elengedem a gombot (az INT pin akkor is 0-ba megy).
És a gombot jelző sárga jel ugye így pont az inverze. De amúgy semmi más különbség nincs, most teszteltem.
Valószínűleg csak annyi történt, hogy a 3. képnél még nyomva tartottam a gombot, amikor csináltam a képet. Vagy esetleg STOP-oltam a triggerelést a szkópon.
A sárga mérőfej magán az input porton volt (illetve egy 20cm-es hozzáforrasztott kábel végén).
A kék mérőfej pedig magán az INT porton (szintén egy 20cm kábelen).
A felhúzó ellenállás még nem került fel. Írtam, hogy direkt úgy tesztelem most a szkóppal, hogy még nem forrasztom fel őket.
Az I2C-s mérés is egy jó ötlet lenne. De közben még tesztelgettem, és egyértelműen programkód-oka van a dolognak.
Ámde azon belül valami nagyon is fura oka...
Direkt kiszedtem a GPIO interruptot. Illetve a PCF8574 beolvasását is közvetlenül a MAIN-be raktam (kiszedtem még a MAIN-ből meghívott függvényből is). De erre nem lett változás.
Eddig amit találtam hogy "megoldja" a problémát, ha kiprintelem a tömböt, amibe előtte már beolvastam a PCF8574-nek a portját.
Próbáltam, hogy kiprintelek egy másik, teljesen ugyanilyen adat-szerkezetű tömböt, de arra meg nem.
Szóval egyelőre tiszta X-akták...if GPIO.input(I2C_IO_INTERRUPT_GPIO) == 0:
# i2c_io_readed_array = i2c_io_reader()
print("------")
io_interrupt_flag = GPIO.input(I2C_IO_INTERRUPT_GPIO)
print("Interrupt pin állapota - olvasás előtt: ", io_interrupt_flag)
print("--")
i2c_io_readed_array = i2c_io.port
if len(i2c_io_readed_array) == 8:
# pass
print("az előző kiolvasás megfelelően megfordított értéke: ", i2c_io_readed_array_reversed)
teszt = i2c_io_readed_array
# print("A beolvasott port tömbje egy külön [teszt] nevű változóba átmásolva: ", teszt)
# print("PCF8574 Port beolvasva. A beolvasott port tömbje:", i2c_io_readed_array)
time.sleep(0.125)
io_interrupt_flag = GPIO.input(I2C_IO_INTERRUPT_GPIO)
print("Interrupt pin állapota - 0.125 sec-el olvasás után: ", io_interrupt_flag)
print("------")
i2c_io_readed_array_reversed = i2c_io_reverser(i2c_io_readed_array)
i2c_io_state = i2c_io_namer(i2c_io_readed_array_reversed)
i2c_io_evaluator(i2c_io_readed_array_reversed, i2c_io_state)
i2c_io_printer(i2c_io_readed_array_reversed, i2c_io_state)
A legbelső if-ben láthatóak a tesztelt "feltételeim".
Csak az utolsó két, most #-el kikommentezett print() bármelyike oldja meg a problémát (természetesen a teszt változós csak akkor ha előtte megvan az értékadása is).
Ez valami eléggé érdekes bug lesz... -
atesss
addikt
No a szkópos mérés alapján úgy néz ki hogy mégiscsak valahogy a programkód okozza a problémát.
Az 1. ábrán nem volt sleep a python scriptben a kiolvasú függvényemben a PCF8574 kiolvasása után: [kép]
A 2. ábrán 35 ms sleep() volt: [kép]
A 3. ábrán pedig 125 ms sleep() volt: [kép]A kék az INT pin.
A sárga pedig a nyomógomb amit megnyomtam, és a PCF8574 egyik bemenetét húzza földre egy ellenálláson keresztül. -
Nem kell külső felhúzó ellenállás, az MCP23017-ben például van belső felhúzó (asszem 100k).
atesss:
"Amikor változás van, rendben 1-be vált az INT pin. Utána kiolvasom az összes bemenetet, rendben látszik is hogy a PCF8574-nek melyik bemeneti pinje változott meg.
De az INT 0-ban marad ez után is, nagyon sokáig.
Direkt beraktam sleep-et, hogy teszteljem ezt, és még 0.1s után is maradt."Elolvastam vagy 5x, de nem értem.
Amikor változás van, miért vált 1-be az INT pin? A PCF8574 INT kimenete active low, vagyis az alaphelyzet az 1, és akkor vált 0-ra, ha van interrupt.
Szerintem fordítva ültél fel a lóra. -
atesss
addikt
Ahha, látom, igazad van.
100kOhm-ot ajánl felhúzónak. Most csak 10kOhm van itthon (már ha egyáltalán megvan az a maradékom még 8db), az esetleg jó lehet ?
A bemenetek közül 4db mikrokapcsoló, 2db meg mikronyomógomb. Ezek most egy-egy 2,2kOhm-os ellenálláson keresztül húzzák földre a pineket, amikor átkapcsolom a kapcsolót/lenyomom a gombot.
Így is jó lehet még a 10k ?Mondjuk azt még mindig nem annyira értem, ez hogyan okoz ilyen hibát. A - felhúzóellenállás hiányában - ha pl. a mosfet feltöltődik, akkor hogyhogy pont ilyen tizedmásodperc nagyságrendű idő lesz mire visszaáll ?
Illetve nem is. Ha az Interrupt Pin 1-es, akkor ez azt jelenti, hogy változott a bemenet.
Vagyis akkor lebeg a Pin, azaz 0 és 1 között ugrál folyamatosan ?Hát hozzávetőleges támpontnak jó az IC ára.
De igazából az a kérdés, a kínaiak mennyiért építettek rá kész modult.
Azt meg nem mindig lehet ilyen egyszerűen magyarázni. Pl. volt hogy néztem, hogy egy teljes modul ára a nagy(1000+) db-os tételben kapható IC áránál is jelentősen olcsóbb volt...MCP230xx-ból amúgy van 16 portos, vagy akár még annál is nagyobb kivitel ?
-
atesss
addikt
Hát igazából felhúzó ellenállást nem raktam fixen a Raspberry GPIO pinekre, csak egy soros 330 Ohm-os ellenállást.
Mondjuk belegondolva ez - ha a GPIO bemenet Mosfet-es, amire jó esély van - akár okozhatna is problémát. Bár eddig még sehol nem fordult elő ebből problémám.
De ha pont ez okozná a gondot, akkor miért lesz a "GPIO-nullázódás" ideje pont ilyen "emberi léptékű" tized-másodperces időtartományban ?
Igen, mind a 8 pin bemenetként van használva.
Illetve pontosabban a 8-ból 2 nincs is használva, azt én nem is kötöttem be sehova.
Ugyan nem tudom a modulon belül van-e bárhova kötve, de igazából nem nagyon kellene. Főleg nem VCC-re.
Igen, azt néztem is hogy ezt "quasi-bidirectional" -nak írták. De eddig még nem mentem bele, hogy ez pontosan mit is jelent elektronikai szempontból.
"maszkolni a megszakítást (adott input eredményezzen-e olyat)" - Ez is hasznos mondjuk.
Hát ezek tényleg nagy előnynek hangzanak azért így együtt már. Utánanézek részletesen akkor ennek az MCP230xx-nek is.
Csak persze az is kérdés, hogy mennyivel drágább ez a modul...
Meg mennyivel nagyobb a modul nyákja, stb.
Új hozzászólás Aktív témák
Hirdetés
- AMD Ryzen 9 / 7 / 5 7***(X) "Zen 4" (AM5)
- Eredeti játékok OFF topik
- exHWSW - Értünk mindenhez IS
- CMF Phone 2 Pro - a százezer forintos kérdés
- Le Mans Ultimate
- AMD K6-III, és minden ami RETRO - Oldschool tuning
- bitpork: MOD Júni 13 Augusztus 2- szombat jelen állás szerint.
- Autós topik
- Nyaralás topik
- EAFC 25
- További aktív témák...
- Apple iPhone 13Pro 128GB Kártyafüggetlen 1Év Garanciával
- Garmin Fenix 8 Amoled 51mm Sapphire Carbon Gray DLC - Használt, karcmentes
- Nitro ANV15-51 15.6" FHD IPS i5-13420H RTX 4050 16GB 512GB NVMe magyar vbill ujjlolv gar
- Apple iPhone SE 2020 64GB Kártyafüggetlen 1Év Garanciával
- iPad Pro 11 gen 2 + magic keyboard magyar makulátlan új állapot
- Telefon felvásárlás!! iPhone 15/iPhone 15 Plus/iPhone 15 Pro/iPhone 15 Pro Max
- BESZÁMÍTÁS! ASRock B85M Pro4 B85 chipset alaplap garanciával hibátlan működéssel
- AKCIÓ! Gigabyte B650M R7 7700X 32GB DDR5 1TB SSD RTX 3080Ti 12GB Cooler Master H500P WHITE 750W
- Ultimate előfizetés új fiókra akár 2105 Ft/hó áron! Azonnali, automatizált aktiválással, csak Nálam!
- Apple iPhone 13 128GB, Kártyafüggetlen, 1 Év Garanciával
Állásajánlatok
Cég: Liszt Ferenc Zeneművészeti Egyetem
Város: Budapest
Cég: CAMERA-PRO Hungary Kft
Város: Budapest