- Microsoft Excel topic
- Crypto Trade
- Súlyos adatvédelmi botrányba kerülhet a ChatGPT az EU-ban
- MinDig TV
- Telekom otthoni szolgáltatások (TV, internet, telefon)
- Rendszergazda topic
- Mindenki AI-t akar, már 2025-re is eladták a HBM chipeket
- Proxmox VE
- Kapnak egy rakás reklámot a Roblox játékosai
- ArchiCAD és Artlantis topik
-
IT café
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
-
nagyúr
válasz gyapo11 #15100 üzenetére
A kondenzátor viszont annál kisebb ellenállású minél gyorsabb az impulzus, szóval mindenképpen jobb mint a zéner. Együtt a kettő jó csapat.
Azon gondolkodom, hogy ha egy zener és egy kondenzátor párhuzamosan van kötve, mindenképpen lesz olyan tüske, ami átjut: a rövid impulzusokat a kondenzátor elvezeti, de ezalatt a feszültség sem emelkedik, tehát a zenerben a lavina effektus így is csak akkor kezd el kialakulni, amikor már a kondenzátor fel van töltve.
-
Tomika86
senior tag
A következő gondolatom az 5v előállítására, javítsatok ha valami máshogy kellene:
Akkufeszültség - biztosíték - dióda nyitóirányban - 47uH 3A induktivitás - 4700uF elektrolit kondenzátor - 100nF kerámia kondenzátor - 7808 stab - 100nF kerámia kondenzátor - 7805 stabilizátor - 100nF kerámia kondenzátor - 4700uF elektrolit kondenzátor - 5v kimenetRemélem rajz nélkül is érthető
Köszönöm
-
And
veterán
válasz Tomika86 #15104 üzenetére
Erős túlbiztosításnak tűnik. A kétlépcsős stabilizálás a hőtermelés szempontjából sokat nem segít, valószínűleg nem lesznek túlságosan távol egymástól a stabok. A 4700 μF-os puffer a bemeneten is soknak tűnik (elvégre nem egy trafó a forrás), a második stabkocka kimenetén pedig egyenesen ellenjavallt, egy stabilizátor vagy LDO eleve nem szereti az ilyesmit. Stabilabb nem lesz tőle, a bekapcsolási áramlökés pedig nem kívánatos. Oda bőven elegendő egy 0,1 / 1 μF-os kerámia, elvégre a 78xx-ek hullámosság elnyomása - bár nyilván frekvenciafüggő - nem annyira rossz érték.
-
And
veterán
válasz Tomika86 #15106 üzenetére
Függ a várható terhelőáramtól, amúgy annál is jóval - egy nagyságrenddel - kisebb kapacitásértéket szoktak használni. Viszont egy autóban a feszültségtüskék csúcsértéke szélsőséges esetben akár sokszor 10V is lehet, úgyhogy a bemeneti kapacitás tűrési feszültsége is ennek megfelelően választandó, illetve az induktivitás helyétől függően be lehet tenni a körbe szupresszort is. Ötletek: [link], [link].
-
gyapo11
őstag
válasz Tomika86 #15104 üzenetére
Ha a stabilizátor közel van az arduinohoz, akkor csak előtte kell az impulzusokat szűrni, és utána a nagy elkóval minél közelebb az arduino betáp pontjához. Rövid vezetéken nem tud tüske keletkezni, mert nincs induktivitása mint egy antennának. Az akkufesztől lesz egy vezeték az első stabilizátorhoz, ha az hosszabb, akkor ott már lehet tüske, a stab előttre kell a 100 nF és a puffer. A stab után már ne tegyél elkót, vagy ha mégis, akkor kell egy dióda párhuzamosan a stabbal fordított irányban, hogy ha a stab betápja megszűnik, akkor a kimenete ne kerüljön magasabb szintre mint a bemenete, azt nem szereti. Ha az arduino szed össze impulzusokat, akkor fémdobozba kell tenni és testelni, a táp maradhat kívül, hogy ne fűtse.
menyország -> mennyország, akadáj -> akadály, jótálás -> jótállás, Iphoneal > Iphone-nal, kisuly > kisujj, csővet > csövet
-
gyapo11
őstag
a bekapcsolási áramlökés pedig nem kívánatos
A stabkocka rövidzárvédett, viszont ha valami relé, izzó vagy ilyesmi kerül az 5 V-ra, akkor ezek bekapcsolásakor megroggyanhat az 5 V, erre jó a pufferkondi.
[ Szerkesztve ]
menyország -> mennyország, akadáj -> akadály, jótálás -> jótállás, Iphoneal > Iphone-nal, kisuly > kisujj, csővet > csövet
-
And
veterán
válasz gyapo11 #15109 üzenetére
Csakhogy nem fog megroggyanni. Az LM78xx adatlapok szerint a Load regulation paraméter értéke teljes (1,5 A-es) impulzusszerű terhelésnél tipikusan 9 mV (!), ami azért nem jelentős. Ennek az adatlapnak a 11. oldalán grafikusan is látható (fig. 13, bár tévesen Line regulation a neve, egyértelműen a terheléstől való függést ábrázolja): [link]. Amitől - bekapcsoláskor - a stabkocka kimenete fulladhat, az épp a túlzottan nagy kapacitású elkó lehet. Nem véletlenül nem ajánlanak ilyesmiket egyik alkalmazási példán / adatlapon sem. Kifejezetten low esr kapacokat (kerámia, esetleg tantál) javasolnak a kimenetre, legfeljebb 1...10 μF-os nagyságrendben.
[ Szerkesztve ]
-
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.menyország -> mennyország, akadáj -> akadály, jótálás -> jótállás, Iphoneal > Iphone-nal, kisuly > kisujj, csővet > csövet
-
gyapo11
őstag
válasz Tomika86 #15112 üzenetére
Akkor OK, nem kell pufferkondi, 3 A-es kocka 3 A alatti fogyasztás, elvileg rendben. Ha 8 V-ból állít elő 5-öt, akkor 9 W-ot el fog fűteni, valami borda kell rá.
menyország -> mennyország, akadáj -> akadály, jótálás -> jótállás, Iphoneal > Iphone-nal, kisuly > kisujj, csővet > csövet
-
And
veterán
válasz Tomika86 #15112 üzenetére
Rosszul tudom, hogy a 'hagyományos' 7805-ösökből - ezzel a típusmegnevezéssel - csak 1 vagy 1,5 A terhelhetőségű létezik?
"Nextion 7" kijelző (erre 2A áramfelvételt írnak)."
Mindegyik 7"-os típusra (basic, enhanced, intelligent) 430..530 mA-es fogyasztást írnak. Javasolt tápellátás címén említenek lehetőleg minimum 2A terhelhetőségű tápot, de a valós fogyasztás annak a negyede lesz még maximális háttérfényerőnél is.
Ha valóban 3A-t közelítené az áramfelvétel - a valóságban az összes említett csingilingivel együtt sem fogja -, akkor a 20W-ot meghaladó disszipáció miatt sokkal jobban járnál egy kapcsolóüzemű megoldással (mellesleg azt is meg lehet toldani szűréssel).[ Szerkesztve ]
-
-
And
veterán
válasz Tomika86 #15119 üzenetére
Persze. Az adatlap 21. oldalán láthatsz is egy példát (Fig. 34) az opcionális szűrésre, ami egy plusz aluláteresztő LC-tagból áll. Amúgy a tervezett konfigurációhoz nagy valószínűséggel 1A-es terhelhetőség is bőven elegendő lesz, én olyan 6-700 mA körüli fogyasztásra tippelnék.
-
stopperos
senior tag
válasz Tomika86 #15119 üzenetére
Az arduinohoz nem kell 7805, mert ha azt megtáplálod 7V-15V között, akkor az előállítja magának az 5V feszültséget és nem táplál vissza USB-n. Ez elég a megának és a szenzoroknak amit írtál. A kijelzőt külön kell megoldanod.
Az előállított 5V feszültségre és a bemenő feszültségre raknék esetleg egy-egy 10-100uF mérettartományból kondenzátort."What is Linux? I only joined because of the the penguin..." - meanwhile in the linux community. http://9gag.com/gag/arpZGOy
-
stopperos
senior tag
válasz Tomika86 #15124 üzenetére
Igen. Én egy ideig a projektemet számítógép tápegységről tápláltam meg (5V és 12V), de utána átálltam egy egyszerűbb 12V-os led tápegységre. Nálam egy kétsoros lcd kijelző, 2 relé, 4 pwm csatorna + szűrés megy az aruinoról meg annak 5V-jéről. A 12V a műveleti erősítőnek és a tranzisztoroknak kell.
[ Szerkesztve ]
"What is Linux? I only joined because of the the penguin..." - meanwhile in the linux community. http://9gag.com/gag/arpZGOy
-
nagyúr
válasz stopperos #15123 üzenetére
Ez csak az eredeti arduino lapokra igaz, a kínai másolatokra nem! Korábban volt róla szó, hogy a gagyibb lapokon elég gyenge a regulátor, 9V tápfeszültség fölött hajlamos megsülni. Egy kínai UNO lapot én is megsütöttem így (a uC maga működik azóta is, USB-ről és 5V tápról, csak a regulátor sült meg rajta).
-
nagyúr
válasz Tomika86 #15129 üzenetére
Az árkülönbségből ítélve nagyjából ugyanez lehet. 5500+haszon+magyar áfa.
A tápot illetően szerintem tehetsz vele egy próbát, esetleg a regulátorra tegyél hűtőbordát, ha érezhetően melegszik.
Ha mégis megsülne: semmit nem veszítesz, úgyis kívülről akartad adni neki az 5V-ot.[ Szerkesztve ]
-
Janos250
őstag
Kijött az Arduino 2 beta. A szerkesztője más, a többit még nem próbáltam.
Az amerikaiak $ milliókért fejlesztettek golyóstollat űrbéli használatra. Az oroszok ceruzát használnak. Én meg arduinot.
-
Janos250
őstag
Kösz megnéztem, de ezt egyelőre hanyagolom.
Nincs benne a portable lehetőség, legalábbis nem úgy, mint a korábbiakban.
Valahonnan a tartalékból előszedett egy archivált programom, és egyből el is rontotta.
Bemásoltam egy másik működő programot, de rengeteg hibajelzés. Még a Serial.print-et is hibának jelezte. Nyilván aktiválni kéne a könyvtárakat, de az macera lenne, meg azt se tudni, hogyan kell.
Fordítási hiba:
"Compilation error: Error: 2 UNKNOWN: exit status 1"
Hát, ez egy "sokatmondó" hibajelzés.
Leírást a linkelt videón kívül nem találtam róla. Arra is alig jöttem rá, hogy a kihalványított OK gomb nem vált világosabbra, hanem így halványan kell megnyomni. Szóval egyelőre maradok a réginél.Az amerikaiak $ milliókért fejlesztettek golyóstollat űrbéli használatra. Az oroszok ceruzát használnak. Én meg arduinot.
-
Tomika86
senior tag
Sziasztok!
EEPROM írás és olvasásos kérdésem lenne.
Mega2560 esetén van 4096 byte beépített, nem ezt szeretném használni, hanem külső 24LCxx EEPROM-ot I2C buszon.
Kerestem, de nem igazán találtam(vagy nem tudtam hogy az) olyan példaprogramot ahol több változó van elmentve a megadott címre (int változók).Ha egy memória címen volt adat akkor újabb írással teljesen felülíródik, vagy törölni kell elötte?
Köszönöm![ Szerkesztve ]
-
Tomika86
senior tag
Ezt a példaprogramot kommenteztem be:
#include <Wire.h>
#define xAddr 0x50 //külső EEPROM cím definiálása
byte i;
char buffer[10];
char newStr[10];
unsigned int eepromAdd = 0;
float adat = 123.321;
void setup()
{
Serial.begin(9600);
Wire.begin();
}
void loop()
{
//Float konvertálása stringbe és EEPROM-ba írása
char chrFloat[] = "";; // string létrehozása
char buffer[10]; // character tömb létrehozása
dtostrf(adat, 6, 4, buffer); // 6 szélesség, 4 a precizitás; adat float átalakítása a buffer változóba
strcat( chrFloat, buffer); // buffer character tömb összefűzése stringbe?
// Átalakított string írása:
for(byte i=0; i<=strlen(chrFloat); i++) // i ciklusváltozó a string hosszáig
writeEEPROM(xAddr, eepromAdd+i, chrFloat[i]); // 1 byte írása a
// Adat kiolvasása és átalakítása float-ra:
for(i=0; i<=strlen(chrFloat); i++)
newStr[i] = readEEPROM(xAddr, eepromAdd + i); // 1 byte olvasása
newStr[i] = 0;
Serial.println(atof(newStr),2); // ASCII konvertálása float-ba 2 tizedessel
}
// Egy byte írása
void writeEEPROM(int devAddr, unsigned int eeAddr, byte data )
{
Wire.beginTransmission(devAddr);
Wire.write((byte)eeAddr >> 8); // Legnagyobb helyiértékű byte írása, LSB-t jobbra shifteljük, hogy megszabaduljunk tőle
Wire.write((byte)eeAddr & 0xFF); // Legkisebb helyiértékű byte írása, LSB kimaszkolása bitekkel ÉS 0-kkal
Wire.write(data);
Wire.endTransmission();
delay(5); //5ms várakozás
}
// Egy byte olvasása
byte readEEPROM(int devAddr, unsigned int eeAddr )
{
byte readByte = 0;
Wire.beginTransmission(devAddr);
Wire.write((byte)eeAddr >> 8); // A legnagyobb helyiértékű byte írása
Wire.write((byte)eeAddr & 0xFF); // A legkisebb helyiértékű byte írása
Wire.endTransmission();
Wire.requestFrom(devAddr,1);
if (Wire.available())
readByte = Wire.read();
return readByte;
}
[ Szerkesztve ]
-
Tomika86
senior tag
válasz Tomika86 #15141 üzenetére
Ha jól gondolom akkor
- a float értéket átalakítja character tömbre
- összefűzi stringbe
- megnézi a hosszát és ez alapján byte-onként írjaKiolvasásnál
- azt nem értem, hogy amikor kiolvasok akkor miért a "chrFloat" hossza alapján ?
ez alapján tudjuk, hogy mennyit írtunk, ugyanennyit olvasunk vissza, de mi van akkor ha nem tudjuk mennyi byte-ot kell visszaolvasni (tehát mitől meddig tart egy összetartozó érték) -
nagyúr
válasz Tomika86 #15142 üzenetére
Én azt nem értem, hogy
1. minek astrcat( chrFloat, buffer); //
a kódba, felesleges művelet.
2. minek kell egyáltalán az EEPROM-ba kiírás előtt a float-ot string-gé alakítani és úgy kiírni? A float minden esetben 4 byte, nem kell gondolkodni, hogy mennyit kell visszaolvasni, ráadásul ha két számjegy+tizedespont+két tizedes esetén már kevesebb írásmennyiséggel is jár (4byte vs. 5byte).[ Szerkesztve ]
-
Tomika86
senior tag
Még én se, de ez valahogy számomra megfogható volt, hogy string, ami i darab characterből áll, amik pont byte-ok és ezeket tudom írni.
strcat nem tudom miért kell.
Annyira nagy gyakorlatom nincs még a C programozásban, 2 hete kezdtem el az arduinot
Igazából int és float számokat kellene megadott címre menteni, nem kell automata címzéssel.Köszönöm!
-
Tomika86
senior tag
Ez így?
#include <Wire.h>
#define xAddr 0x50 // külső EEPROM címe
unsigned int eepromAdd = 0; // Adatmentés címe az EEPROM-ban
float adat = 123456; // Adat próbaként
String ertek_1; // Adat átalakítva
int Mentes_gomb = 5; // Mentés gombnyomásra
void setup()
{
pinMode(Mentes_gomb, INPUT);
Serial.begin(9600);
Wire.begin();
}
void loop()
{
// Int konvertálása stringbe és EEPROM-ba írása
if(digitalRead(Mentes_gomb))
{
ertek_1 = String(adat, 0);
int hossz_1 = ertek_1.length();
// Átalakított string írása:
for(byte i = 0; i <= hossz_1; i++) // i ciklusváltozó a string hosszáig lépteti a címet
writeEEPROM(xAddr, eepromAdd+i, ertek_1[i]); // xAddr: Eszköz címe, eepromAdd+i: Írási cím + kezdőcím, ertek_1[i]: sztringnek a karakterei sorban
}
}
// Egy byte írása
void writeEEPROM(int devAddr, unsigned int eeAddr, byte data )
{
Wire.beginTransmission(devAddr);
Wire.write((byte)eeAddr >> 8); // Legnagyobb helyiértékű byte írása, LSB-t jobbra shifteljük, hogy megszabaduljunk tőle
Wire.write((byte)eeAddr & 0xFF); // Legkisebb helyiértékű byte írása, LSB kimaszkolása bitekkel ÉS 0-kkal
Wire.write(data);
Wire.endTransmission();
delay(5); //5ms várakozás
}
[ Szerkesztve ]
-
nagyúr
válasz Tomika86 #15146 üzenetére
Ha esetleg meggondolnád magad, ezzel az erről az oldalról vett példával így is ki lehetne íratni a float értékeket:
void EEPROM_writeFloat(int ee, float value)
{
byte* p = (byte*)(void*)&value;
for (int i = 0; i < sizeof(value); i++)
writeEEPROM(xAddr, ee++, *p++);
}
float EEPROM_readFloat(int ee)
{
float value = 0.0;
byte* p = (byte*)(void*)&value;
for (int i = 0; i < sizeof(value); i++)
*p++ = readEEPROM(xAddr,ee++);
return value;
}[ Szerkesztve ]
-
nagyúr
válasz Tomika86 #15147 üzenetére
Most jöttem rá, hogy a kód az egész "hatalmas" EEPROM-ba csak ugyanarra az egyetlen címre írja ki az értéket, aztán azt írja felül újra és újra. Így végülis mindegy, hogy milyen hosszú a szám. Azt hittem, hogy folyamatosan írja egymás után, log-ba.
Megjegyzem, hogy ez a módszer elég gyorsan el fogja használni azt az egy memóriacellát a folyamatos írással. Ha a cella élettartama során 1000000 írási műveletet bír elviselni, 10ms-onkénti írással durván 3 óra alatt ez be is fog következni.[ Szerkesztve ]
-
Tomika86
senior tag
Üzemórát és percet szeretnék menteni, de nem 10ms-onként. 5perces intervallum van jelenleg megadva a blokkra, csak még nincs benne a megfelelő függvény.
Olyan lehetőség van esetleg, hogy kikapcsoláskor mentsen? (Ami nálam a Mentes_gomb, az igazából az esemény lenne amire ment, ez csak próba)Jelenleg ez a kettő adat van, de lenne még pár érték amit HMI-ről módosíthatóra szeretnék tenni, ezeket is menteni kellene. De csak akkor lenne mentve ha változtatom az értékét.
ui.: Jó lenne itt is egy kis retentív memória terület mint PLC-k esetében, ami nem felejt
[ Szerkesztve ]
Új hozzászólás Aktív témák
- Anglia - élmények, tapasztalatok
- Konzolokról KULTURÁLT módon
- BestBuy ruhás topik
- Milyen billentyűzetet vegyek?
- 3D nyomtatás
- D1Rect: Nagy "hülyétkapokazapróktól" topik
- Kihívás a középkategóriában: teszten a Radeon RX 7600 XT
- NVIDIA GeForce RTX 4080 /4080S / 4090 (AD103 / 102)
- Microsoft Excel topic
- Fujifilm X
- További aktív témák...
- 1151 V2 CPU-k / I5-8500 / I5-8400 / BESZÁMÍTOK!
- Intel i5-10400 hatmagos processzor + doboz + gyári új hűtő
- Nintendo Switch játékok (ง '-' )ง Budapest Nyugatinál
- Fekete Sony PlayStation 5 Cover (Lemezes változat)
- Samsung Galaxy S23 Ultra 5G 256GB Dual SIM Phantom Black Gyárilag független Csere/beszámítás is!