Fórum témák

» Több friss téma
Fórum » Arduino
A klónok CH340 Soros-USB illesztőjének drivere (Letöltés)
Lapozás: OK   107 / 848
(#) teglascs válasza Kovidivi hozzászólására (») Ápr 29, 2015 /
 
Az lenne a kérdésem, hogy az általad linket oldalon szereplő kódban/leírásba a
" // The offset of 324.31 could be wrong. It is just an indication.
t = (wADC - 324.31 ) / 1.22;"
ill. a
"Use this to start with for the ATmega328 types (temperature in degrees Celcius): temperature = (ADCW - 324.31) / 1.22"

megjegyzéseket úgy kell érteni, hogy ezek a kivonandók (324.31)/osztók (1.22) fix, processzortól függő állandók?
(#) Jama hozzászólása Ápr 29, 2015 /
 
Sziasztok

Segítségre lenne szükségem.
Egy hdd motort hajtok meg arduino-val, és tip122 tranzisztorral.

kapcsolás

Ez így működik is, viszont marhára melegszik a tranzisztor.
Van valami ötletetek hogy mi lehet a probléma?
(#) szikorapéter hozzászólása Ápr 29, 2015 /
 
Üdv. Olyan kérdésem volna hogy a PIC-re megírt programot valamilyen módon át lehet alakítani arduino uno-ra? Gondolom van rá valami lehetőség csak nem tudom hogyan. Készíteni akarok egy egy csöves nixie órát és ahhoz kéne a program.
(#) varttina válasza szikorapéter hozzászólására (») Ápr 29, 2015 /
 
Szia!
Szerintem egyszerűbb,ha írsz rá egy saját programot.
Rengeteg óraprogram létezik Arduino-hoz, csak egy függvényt kell hozzá tenned, ami a nixie csövet kezeli.
(#) csatti2 válasza teglascs hozzászólására (») Ápr 29, 2015 / 1
 
Igen, úgy kell érteni. Arra a részre is figyeltél gondolom, hogy hidegen kell kalibrálni (legalább fél óra pihentetés után). A cikk nem tér ki ár, de egy dologra nagyon ügyelj. Az AREF pin-re ne legyen kötve semmi, különben pukk a mikrokontrollerednek.
(#) csatti2 válasza Jama hozzászólására (») Ápr 29, 2015 /
 
Mekkora tekercs áramot mértél? Milyen gyorsan hajtod a motort? Miért nem MOSFET-et használsz?

A Uce-d legalább 0,8V induláskor, ez esetleg eshet a hőmérséklettel (de az árammal nő). Az eldisszipált hő tehát P=Uce*Ic, ez elég magas lehet (akár wattok is erősebb motornál, a te esetben mondjuk legyen egy watt. Borda nélkül ez 62,5°C/W melegedést okoz TO-220 tokozásnál [plusz környezeti hőmérséklet]). Tehát a tranzisztor lehet akár közel 90°C meleg is.

Számít az is milyen sebességgel kapcsolgatod a tranzisztort. Nagy frekvenciás kapcsolgatásnál okozhat plusz melegedést. Mondjuk szerintem inkább a motor áram a ludas.

Ha zavar a melegedés, akkor nem értem miért sima tranzisztort használsz (az akkor jó, ha a motor áramát is szabályozni akarod). Jobb féle MOSFET esetén (itt most a kicsi Rdson-t értem jó alatt) gyakorlatilag hideg maradna a tranzisztorod (a MOSFET is tranzisztor) és minimális volna a tranyón eső feszültség is. A jó öreg IRL540 ugyanilyen körülmények között 10°C-t se melegedne (és ennél sokkal jobb MOSFET-ek is vannak). Itt ugye P=I^2 * Rds(on).
(#) csatti2 válasza szikorapéter hozzászólására (») Ápr 29, 2015 /
 
Hát a hardver független logikát talán át tudod ültetni (függ persze attól milyen nyelven íródott). De az I/O kezelést akkor is újra kell írni. A működési elv alapján azonban biztosan újra lehet írni Arduino-ra.

Mindenképpen tennék hozzá viszont valamilyen RTC áramkört. Sajnos az Arduino kiépitése miatt nem lehet külső 32.768kHz kristályt használni direktbe (maga a uC támogatja, én már csináltam ilyet ATMEGA328P-vel, viszont nem arduino alapon).
(#) teglascs válasza csatti2 hozzászólására (») Ápr 29, 2015 /
 
Köszi a választ és a figyelmeztetést.
Azt nem értem (kezdő vagyok, értetlenkedtem már ugyanitt, hasonló a témában...), hogy ha a 324,31 ill. a 1,22 processzor függő fixek, akkor mit (és hogy) kalibrálunk?
A képletben a "wADC" mi tulajdonképpen?
(Mihamarabb át fogom rágni magam az ATMEL belső hőmérőre vonatkozó leírásain. Láttam ott különféle grafikonokat: gondolom, azok mesélnek a hőmérséklet-feszültség összefüggésekről.)

Mértem már LM35-tel (meg van valahol a fiókomban DS18B20-am is), de hogy mennyire pontos adatot jelenítek meg nagy büszkén az LCD kijelzőn, azt szeretném tudni. Tudom, pár oldallal ezelőtt ugyanez már volt téma, de nem sikerül kivennem a lényeget az információáradatból.
(#) csatti2 válasza teglascs hozzászólására (») Ápr 29, 2015 / 1
 
Processzor függés azt jelenti, hogy processzorról processzorra más. Tehát két ATMEGA328P (ami az UNO-ban van) nem fogja ugyanazt mérni. Ennek az oka a gyártástechnológiából adódik. Épp ezért ha viszonylag precízen akarod a uC hőmérsékletét mérni, akkor kalibrálnod kell. Viszont mi szükséged van a uC hőmérsékletére nagy pontossággal? A külső hőmérséklet mérésére (főleg Arduino-s kiszerelésben) tökéletesen alkalmatlan, mert melegedik. Arduino nélkül mondjuk használható ez a uC energiatakarékos módban és akkor nem melegszik (uA-es fogyasztása is lehet ilyenkor, jó kis uC).
Tehát arra, hogy ellenőrizd a dedikált hőmérőid, alkalmatlan.

A wADC egyébként a cikkben később jövő példaprogram egyik változónevére utal.
(#) saua hozzászólása Ápr 29, 2015 /
 
Sziasztok

Még mindíg a tegnapi hozzászólásomban említett termosztáttal Bővebben: Link
kapcsolatban szeretnék kérdezni.
Mikor bekapcsolom
1. egy pillanatra a kimenetre logikai „1” kerül
2. kis idő mulva a kijelzőn megjelenik 85 fok ugyancsak egy pillanatra, ami miatt szintén a kimenetre logikai „1” kerül

hogy lehetne ezektől megtisztítani a programot?
(#) Kovidivi válasza saua hozzászólására (») Ápr 29, 2015 /
 
A 85 az alapértelmezett értéke a szenzornak. Amikor tápot kap, de még nincs elindítva a hőmérséklet konvertálás, ezt az értéket fogja visszaadni.
Ennek mi értelme a setup részben: EEPROM.read (1); // make the eeprom or atmega328 memory address 1
Egy változóban kellene tárolni az értéket.
(#) saua válasza Kovidivi hozzászólására (») Ápr 29, 2015 /
 
a 38. sorban a "settemp" a változó
(#) Kovidivi válasza saua hozzászólására (») Ápr 29, 2015 /
 
De a setup részben nincs értelme.
(#) saua válasza Kovidivi hozzászólására (») Ápr 29, 2015 /
 
töröltem , sajnos a tünetek maradtak.
A hozzászólás módosítva: Ápr 29, 2015
(#) teglascs válasza csatti2 hozzászólására (») Ápr 29, 2015 /
 
Ez teljesen tiszta, köszi, értem.
Inkább szeretnék valami "rávezetést", irodalmat, stb-t kérni, aminek segítségével (a középkorú gépész agyammal) fel tudom fogni, amikor az Aref méréséről, az internal1V1-ről, és a kapcsolódó dolgokról beszélgettetek, hőmérés kalibrálása témakörben. Mert -ahogy fentebb írtam- az oké, hogy valamit mérek, majd logolok vagy kijelzek, de az egésznek a pontossága ismeretlen (pl., ahogy említetted, a gyártástechnológia miatt).
Szeretném ezt legalább olyan mélységig megérteni, hogy a saját szintemen (ami elég sekély ) tudjam alkalmazni.
Tudom-tudom, gugli és a www.arduino.cc a barátom, de hátha máshogy is kicsit tisztábbá lehetne tenni a képet a fejemben.
Minden segítséget köszönök.
(#) TavIR-AVR válasza Kovidivi hozzászólására (») Ápr 30, 2015 / 1
 
Először konverzió, utána hőfokkiolvasás....
A 85 az az alapérték (hőmérőellenőrzés).
(#) csatti2 válasza teglascs hozzászólására (») Ápr 30, 2015 / 1
 
Én is gépészmérnök vagyok. (Meg elkövettem még egy mérnök-informatikusit is)

Irodalomnak bőven elég a kézikönyv.

(Most végig az UNO-ról beszélek majd.)

Röviden arról van szó, hogy az analóg konverzióhoz egyszer szükség van egy referenciára (ez a feszültség lesz amit az ADC rész 100%-nak tekint, 10 bites ADC-nél tehát 2^10-1 = 1023) és egy vizsgált feszültségszintre.

Referenciaként választható:
1, Az AREF pin-re kötött feszültség, általában valamilyen pontos külső referenciáról származik (pl. TL431 vagy jobb)
2, AVCC (az analóg áramkör tápfeszültsége, ez az alapértelmezett arduino-nál) feszültsége egy kondival megtámogatva. Ilyenkor összeköti a uC belül az AVCC és az AREF lábakat. AREF-re tilos bármilyen feszt kötni ennél a módnál.
3, 1V1 belső referenciafeszültség. Ilyenkor összeköti a uC belül az 1V1 belső ref-t és az AREF lábat. AREF-re tilos bármilyen feszt kötni ennél a módnál. (ezért mérhető ki az AREF lábán ilyenkor pontosan a belső 1V1 valódi feszültsége)

Vizsgált feszültség lehet:
1, analóg bemeneti lábak
2, belső hőmérő
3, föld
4, 1V1 belső ref.

Az arduino alapból csak az analóg lábak mérését támogatja, de ez nem jelenti azt, hogy a regiszterek közvetlen írásával ne lehetne arduino alatt is hozzáférni minden máshoz is. Az arduino is ugyanezeket a regisztereket használja.

A multiplexer regiszter (ADMUX) tárolja milyen referenciát akarunk használni és melyik bemenetet akarjuk olvasni. A kézikönyv 23.9.1 fejezete tárgyalja ennek a regiszternek a felépítését, illetve pár táblázatot is a lehetséges referencia, illetve multiplexer választásokról.
pl.:
Az alábbi sor kiválasztja az 1V1 referenciát és az ADC8 (hőmérő) bemenetet.
  1. ADMUX = _BV(REFS1) | _BV(REFS0) | _BV(MUX3);


Az ADCSRA regiszterrel konfiguráljuk az analóg-digitális átalakító áramkört magát. Itt adhatjuk meg milyen módban mintavételezzen, milyen gyorsan mintavételezzen, itt kapcsolhatjuk be a konverzió vége megszakítást, indíthatjuk el a konverziót, illetve ellenőrizhetjük kész-e már a konverzió.
Ez a 23.9.2 fejezetben található.

pl.:
Engedélyezzük az ADC áramkört, 16-os prescalert választunk (a CPU órajelhez képest lassított mintavételezési órajel) és elindítunk egy konverziót.
  1. ADCSRA = _BV(ADEN) | _BV(ADSC) | _BV(ADPS2);


Amikor kész a konverzió kiolvashatjuk a kész értéket az ADCL és ADCH regiszterekkel (vagy az ADC-vel, ami a kettő kombinációja).

  1. int val = ADC;


Meg.: iktass be rövid várakozásokat a három sor közé (normálisan persze inkább a regisztert kellene figyelni vagy a megszakításban kezelni az olvasást de most nem akartam túlbonyolítani). Ennek okai a következő: időbe telik, míg az AREF pin kondenzátora kisül/feltöltődik a referenicafesz változtatásakor; időbe telik átállítani a multiplexert és a belső "hold and sample" áramkörnek felvennie az új fesz-szintet; időbe telik az ADC konverzió is.

Az ADC ennél persze sokkal többre képes. Olvasd át a fejezeteket alaposan. Pl.: csinálhatsz folyamatos mintavételezést akár sok ezer mintával másodpercenként (arduino-val ez nem megy). Nem kell várnod a mintavételezés végére, majd meghívódik egy megszakítás és ott elintézed. Hozzákötheted a mérést különböző eseményekhez (időzítők / számlálók, analóg komparátor, külső megszakítás [lábra érkező jel]).

A _BV makró a bit value rövidítése. Egyszerű bitshiftelést valósit meg. pl. _BV(0) = 1; _BV(1) = 2; _BV(2) = 4; _BV(3) = 8; stb.
A hozzászólás módosítva: Ápr 30, 2015
(#) teglascs válasza csatti2 hozzászólására (») Ápr 30, 2015 /
 
Húúú, köszi, ezt alaposan áttanulmányozom.
(#) saua válasza TavIR-AVR hozzászólására (») Ápr 30, 2015 /
 
köszi a választ
(#) erdeidominik1999 hozzászólása Máj 1, 2015 /
 
Sziasztok! Van egy 30A-es áramerősség mérő modulom (amilyen a linkelt képen is van). Az alábbi kóddal használom:
  1. float amps=0;
  2.     for(int i=0;i<1000;i++){
  3.     float currentValue(analogRead(A8));
  4.     amps=amps+((.0049 * currentValue) - 2.5)/.066;
  5.     }
  6.     amps=amps/1000;

De nem túl pontos értéket ad (nagyobb terhelésnél modhatjuk semmi köze a valóshoz). Az lenne a kérdésem, hogy a kód nem jó, vagy a modul a rossz alapon? Előre is köszi!
A hozzászólás módosítva: Máj 1, 2015
(#) icserny válasza erdeidominik1999 hozzászólására (») Máj 1, 2015 /
 
Azt nem tudom, hogy a modul minősége milyen, de az biztos, hogy az 1000 mérés összegzését nem float változóban kellene csinálni, és az átszámítást is csak egyszer kellene elvégezni, a for ciklus lejárta után.
(#) rmis válasza erdeidominik1999 hozzászólására (») Máj 1, 2015 /
 
Úgy tudom, hogy ez a modul csak nagyjábóli árammérésre használható, és a hirtelen változások lekövetésének nem éppen a nagymestere.

Valamint írtak róla valami olyasmit is talán, hogy a mágneses tér is befolyásolja a mérést.

Ha jutottál valamire megoszthatnád
(#) csatti2 válasza icserny hozzászólására (») Máj 1, 2015 /
 
A kolléga egyértelműen nem ismeri a numerikus analízis alapjait sem. Nagyon is igazad van az összegzés borzalmas módját illetően. Annál rosszabbat nem is lehet csinálni, mint sokszor összegezni egymáshoz képest nagyságrendileg különböző lebegőpontos számokat.
Lehet, hogy rossz vagy pontatlan a modul. Egy azonban biztos, a programkódod használhatatlan.
(#) atus1981 válasza saua hozzászólására (») Máj 1, 2015 /
 
Sziasztok!
Engem az érdekelne, hogy meg lehet-e oldani, hogy 5 tized fokonként lehessen léptetni a settemp értékét?
(#) erdeidominik1999 válasza csatti2 hozzászólására (») Máj 1, 2015 /
 
Az átlagolást azért csináltam, mert ahányszor mértem, 2-3 amperekkel különböző értéket mértem, így most az érték nem ingadozik annyira. És esetleg nem tudtok valami megbízhatóbb modult, de kb 20A-t kellene tudnia.
(#) icserny válasza erdeidominik1999 hozzászólására (») Máj 1, 2015 /
 
Az átlagolás okos gondolat volt, csak másképp csináld! Én valami ilyesmivel próbálkoznék:

  1. uint32_t sum = 0;
  2. for(int i=0;i<1000;i++) {
  3.   sum += analogRead(A8);
  4. }
  5. float amps = (0.0049*sum - 2.5)/66.0;
(#) Kovidivi válasza erdeidominik1999 hozzászólására (») Máj 1, 2015 /
 
Neked nem a konvertált érték ingadozott, hanem már az analogRead értéke. Tehát teljesen feleslegesen konvertáltad át 1000x az analogread-ot Amper-rá, főleg, hogy minden konvertálásnál float műveleteket kellett használnod! Ez rengeteg időbe telik, pazarlás. E helyett inkább 1000x (ha már ilyen nagy átlagolást választottál) olvasd be az analogread-et, ne konvertálj semmit, ha kész az 1000 beolvasás, oszd el 1000-rel, így lesz egy átlagod, és ezt konvertáld át, csak EGYSZER árammá.
szerk:lekéstem.
A hozzászólás módosítva: Máj 1, 2015
(#) zmucha hozzászólása Máj 1, 2015 /
 
Sziasztok!

Új vagyok itt, pár hete olvasgatom a fórumot. Kezdő vagyok az elektronikában.
Elkezdtem építeni egy Arduinos macskariasztó készüléket mert állandóan összecsinálják a kertünket.
A lényege hogy 16000 hz és 27000 hz között, (vagy esetleg még magasabban) véletlenszerűen, vagy potméterrel beállított hang szólal meg 5, 10 másodpercig. Kettő ultra fényes kék LED villogása kíséretében, amit egy mozgásérzékelő aktivál.
A potméteres állíthatóság, a frekvencia kísérletezésére szolgál. Ami tényleg zavarja a cicusokat.
Két problémába ütköztem idáig, ebben szeretném segítségeteket kérni. Az első:
- vettem egy PCT-G5100-K6318 Piezo hangszorót. Az adatlapját csatoltam. De 8-10 kHz felett csak recseg meg furcsa hangokat ad ki. Közben olvasgattam hogy az ilyen magas frekis hangszóróknak magasabb feszültség kell. (ha jól értettem) tehát nem elég neki az Arduino PWM kivezetéséből érkező 5 V-os négyzet hullám. Kell valami külső kis áramkör a hangszórónak?
Találtam egy rajzot, de nem tudom hogy pontosan erre való-e.
Szóval hogy tudok 8-10 kHz feletti hangokat kicsikarni a hangszóróból?
A második problémám a tápellátással van, de arról majd később.

Köszi a segítséget előre is !!!
A hozzászólás módosítva: Máj 1, 2015
(#) Kera_Will válasza zmucha hozzászólására (») Máj 1, 2015 /
 
Ha ellen fázisú vezérléssel hajtod meg a hangszórót akkor már közel dupla feszültség kerül rá.
De ha csak alap 5 voltról járatod akkor érdemes lenne tekerni hozzá egy trafót ami megemeli a kimeneti feszültséget 30V körülre. 1:5 , 1:6 áttételű trafót kell tekerni.
Piezzo leginkább kapacitív terhelésként fog viselkedni.Bármilyen kis trafó megteszi.
Leginkább ferrit fazékmagosra gondolok.
Hagyományos vasmagoknak nincs akkora átviteli frekvenciájuk.
Potit felesleges erre berakni.
Érdemlegesebb lenne egy random zajgenerátort alkalmazni.Amivel változó idejű , változó frekvenciájú ultrahang csomagokat generálsz. X-Y frekik között, Z-U ideig, T-S gyakorisággal, R-P darabot.
Majd a következő eseménykor másik hasonló véletlen szám csoportot generálsz és küldöd a piezzóra.
Így kevésbé fogják megszokni a zörgést amit okozol.
Ekkor tekergetni se kell a potit se.Programból meg kb.: 4 random értéket generáló sort kell beírni.
Ellen ütemű vezérlést pedig inverterekkel vagy 2 db tranzisztorral tudsz előállítani.
Ha még ennél is "brutálisabb" meghajtást akarsz akkor meg H-hídba helyezed a piezzot avagy előtte a piezzot meghajtó trafót.
(#) Kera_Will válasza zmucha hozzászólására (») Máj 1, 2015 /
 
Adatlapja alapján nem lesz hatásos teljesítménye azon a frekvencián ahol járatni szeretnéd.
Ennek 8KHz a teteje.Erre kifejezetten Ultrahang sugárzókat keressél.
Vannak UH adó/vevő párok ... ezek UH adóit érdemes kipróbálni.
Következő: »»   107 / 848
Bejelentkezés

Belépés

Hirdetés
XDT.hu
Az oldalon sütiket használunk a helyes működéshez. Bővebb információt az adatvédelmi szabályzatban olvashatsz. Megértettem