Fórum témák
» Több friss téma |
A klónok CH340 Soros-USB illesztőjének drivere (Letöltés)
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?
Ü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.
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.
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.
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).
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).
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.
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.
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?
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.
töröltem , sajnos a tünetek maradtak.
A hozzászólás módosítva: Á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.
Először konverzió, utána hőfokkiolvasás....
A 85 az az alapérték (hőmérőellenőrzés).
É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.
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.
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).
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
Húúú, köszi, ezt alaposan áttanulmányozom.
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:
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
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.
Ú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
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.
Sziasztok!
Engem az érdekelne, hogy meg lehet-e oldani, hogy 5 tized fokonként lehessen léptetni a settemp értékét?
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.
Az átlagolás okos gondolat volt, csak másképp csináld! Én valami ilyesmivel próbálkoznék:
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
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
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.
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. |
Bejelentkezés
Hirdetés |