Fórum témák
» Több friss téma |
WinAVR / GCC alapszabályok: 1. Ha ISR-ben használsz globális változót, az legyen "volatile" 2. Soha ne érjen véget a main() függvény 3. UART/USART hibák 99,9% a rossz órajel miatt van 4. Kerüld el a -O0 optimalizációs beállítást minden áron 5. Ha nem jó a _delay időzítése, akkor túllépted a 65ms-et, vagy rossz az optimalizációs beállítás 6. Ha a PORTC-n nem működik valami, kapcsold ki a JTAG-et Bővebben: AVR-libc FAQ
Nem ragaszkodom a 12 biteshez csak ez van kéznél. 2db 6-8 bites összeadva 1/0.01 arányban is elég jó eredményt adna. 10mV-nál labortáphoz valóban nem kell több, de ehhez nem jó ha a DAC 10mV lépésben ugrik mert az nem lesz pontos.
Tehát nem használnám a 12-bites DAC-ot 12 biten. Ha találok 8 bitest olcsón 4 csatornásban akkor az is elég lesz.
A hozzászólás módosítva: Ápr 15, 2016
Esetleg 16bites PWM jel RC szűrővel? Mivel feszültség referencia, így nem kell gyorsan változnia, és ha a beállási idő mondjuk 100mS, talán nem akkora baj. Csak elég nagy órajelű mikrovezérlő kell hozzá. Nem tudom, Te hány MHz-en gondolkodtál. A pwm kimenetre kell egy NPN PNP páros, ami egy elég pontos referencia feszültséget kapcsolgat, így nem az uC tápjának kell pontosnak lennie, hanem ennek a referenciának. Én így fogom megoldani, mert nem találtam rendes 16bites DAC-ot olcsón, könnyen beszerezhető helyről.
Gondoltam rá. 48Mhz-en az kb 700Hz-es frekit jelent amit sajnos nem fogsz tudni szépen szűrni csak nagyon alacsony törési frekivel. Gondolom neked sem lenne időd másodperceket várni mire beáll a kimenet. Talán még azt lehetne hogy a PWM-ek csak 8 biten mennek és akkor a kapcsolási freki 180kHz lenne amit már elég szépen lehet szűrni és azokat összeadni.
De mire tranyók vagy inkább logikai kapu a PWM-nek + R-C szűrő.. már majdnem ott lennék mintha vennék egy ilyen 4 csatornás DAC-ot.
Azért ennél jobb a helyzet, csak nem árt tisztában lenni némi szűrőelmélettel. Senki sem kényszerít, hogy csak elsőrendű szűrőt használj. Több Sallen-Key (vagy más) szűrő összekapcsolásával (egy ide sztem is kevés lest) a kívánt átviteli függvény ismeretében (itt szerintem Butterworth lenne jó) viszonylag magas fc-re is (itt kell pici kompromisszumot kötni ha nem akarunk 40-ed rendű szűrőt ) elég jó DAC-ot lehet összehozni akár 700Hz-ből is. Csak ki kell számolni a tagokat (gyök 2 / 2-es jósági tényezőre komplett táblázatok vannak a neten, arra már elég könnyű felírni az egyes sallen-key fokok saját átviteli függvényét, abból meg jönnek az R és C értékek).
A hozzászólás módosítva: Ápr 16, 2016
Lehet 16bit sem kell, mert 40V esetén 0.6mV lenne egy lépés...
Csak úgy találomra ránéztem, a 14-bites DAC (AD5641) 1000Ft alatt van darabos tételben, nem hiszem, hogy ennyiért érdemes összeadásokkal szenvedni. (és biztos nem találtam meg a legolcsóbbat) Ebből 2db méretben/árban szerintem ugyan annyiból fog kijönni. (különben keresgélés közben azért meglepődtem, a precíz sokcsatornások árai azért igen szépek...) Azt nem tudom, hogy a szabályozásnál a SW mennyire lesz jó, én eddig mindig analógra bíztam magát a szabályozást, igaz én nem vagyok egy programíró zseni, könnyebb is volt méricskélni 2 OPA-t mint SW bug-ot keresni. Ha PWM mellett döntesz, mint beállítófeszültség, akkor olyan uC-t válassz, ami tudja a pattern PWM-et, akkor 4x gyorsabb is lehet a beállási időd fele akkora zajnál.
Sziasztok!
A következő problémával kapcsolatban szeretnék segítséget kérni: Van egy T-Bird 2 nevű fejlesztő áramköröm. A következő történt: JTAG üzemmódban használtam, Timer 0 regisztert állítottam be. AVR studio hibára leállt (AVR4.19.). AVR studiot ismét elindítottam, JTAG üzemmód működik, de letölteni már nem tudtam programot. Amikor próbálok csatlakozni STK500 - as platformként, CONNECTION FAILED hibát dobál... Mit tudok tenni? (Illesztő drivert már cserélgettem, de nem segített. AVR studio újratelepítés is meg volt) Minden féle segítséget köszönök! Üdv. Tamás!
Egy igen érdekes modellezési feladatot találtam, nevezetesen egy vontatható terelőtábla elkészítését. Ezeken a táblákon van több LED villogó és egy nagy tábla, amit kézzel vagy motorral lehet forgatni.
Itt egy példa A tábla képes bal nyilat, jobb nyilat és "X"-et villogtatni, kb 1 másodpercenként, miközben a szünetekben a felső két nagyobb LED lámpa villan fel. A kérdésem elsőként az lenne, kb. hány 2 mm-es diffúz LED-et bírna el egy ATmel egyetlen lába? A nyilakban villan fel egyszerre a legtöbb LED, 13 db. De természetesen, mivel vannak olyan LED-ek, melyek több jelzésképben is felvillannak, ezeket külön lábról üzemeltetném. Így pl. egy nyílban van 7 db olyan LED, ami csak az adott nyílra jellemző. A többi 6 valamilyen más jelzésképpel közös. Az elv egy kicsit talán a dobókockára hasonlít. Köszönöm előre is. Attiny ehhez már kevés lesz szerintem, pláne, ha még a táblaforgatást is meg szeretném oldani motorosra.
Az attól függ milyen fényesen szeretnéd ha világítanának... Mérd meg mekkora a ledjeid árama, amikor már szerinted elég fényesek. Egy lábbal kb. 20mA-rel hajthatsz meg dolgokat (nézd meg a kiválasztott uC adatlapját, gyakran további megkötések is vannak). Ha ez tehát nem elég, akkor használj tranzisztort és azon keresztül hajtsd meg a LED-eket.
Szia
Gondolom DC jelet kell előállítani. Miért nem használsz PWM + low pass filtert. Akármelyik mikró tud 16 bites PWM jelet. Visszacsatolásnak meg egy másik 16 bit ADC. Vagy a mikró analog komparátorát használod, amire az egyik bemenetére rákötöd a PWM csatorna egy tetszőleges csatornáját, a másik bemenetére a mérendő jelet. Majd 0-tól emeled a PWM jelet. Amikor komparál a komparátor, meg lesz a hozzá tartozó PWM érték. Így össz vissz 1db AVR eltudja látni mind a 16 bit DA és a 16 bit AD konverter szerepét is. Hiba források lehet a komparátor pontossága (akár használj külső komparátort) illetve az 5V pontossága. Külső referencia használatával az AVR meg tudja mérni a saját 5V és szoftverből tudod kompenzálni a PWM értékét. Bár megjegyezném, hogy PWM előállított DC jel nagyon nagyon pontos értéket tud visszaadni, csak jól kell méretezni a low-pass filtert. Szerintem az ADC el is lehetne hagyni, főleg hogy egy külső műszerrel akarod egyszer bekalibrálni.
Sziasztok!
Megépítettem ezt a kapcsolást, amivel érzékelni lehet az érintéseket. A kapcsolás Attiny45-tel tökéletesen működik, de valami miatt Attiny2313 esetén a kimenet vibrál. A kérdésem, hogy ez miért van illetve, hogyan lehetne jaítani.
Jaja, első körben kipróbálom a PWM-es megoldást.
Sziasztok!
Ne haragudjatok, de egy kicsit értetlenkedni fogok: pár hónapja írtátok itt nekem, hogy Arduino-val hogyan tudnék beégetni egy AVR-t. Én őszintén több angol videót is megnéztem, meg most már magyarul is rákerestem a dolgokra, de nem sikerül kivitelezni a dolgokat. Egy ATmega8A-t szeretnék beprogramozni. A kontrollert szépen összedrótoztam a megfelelő vezetékekkel, meg az Arduinoval, letöltöttem az Arduino programot is, beállítottam ISP-ként a fejlesztőt, aztán elméletileg valahogy a WinAVR-el valami makefilet kéne csinálni és aztán a fusebiteket beállítani és beégetni, de ez a rész már nem ment. Elsősorban már ott elakadtam, hogy hogyan kellene a WinAVR-t megnyitni, aztán ott minden beállítani (makefile vagy mi a csodát, frekvenciát, stb ??? ). Ha valaki magyarul, lépésről lépésre mindent leírna nekem, azt megköszönném. "Tavir" leírása - ami magyarul van - szintén nem volt érthető. A hozzászólás módosítva: Ápr 20, 2016
A Robert pedig igazán tökéletesen fordít angolból magyarra!
Ha azt nem érted? Jobban senki nem fogja neked leírni! Mert legtöbben tőle tanultuk meg az alapokat. Tessék belefogni és csinálni! Ha elsőre nem sikerül? Újra kezdeni! Ez már csak ilyen a gyakorlás hozza a sikert! És különben is te írd le mit hogyan csináltál? Meddig jutottál? Legalább érezzük, hogy próbálkozol! Ez elején mindenki ront el pár Megát, mire bele tanul!
Mit szeretnél? Neten talált programot lefordítani és beégetni?
Igen, van egy hex-em egy digitális labortáphoz, ATmega8-at kellene beégetni.
Ha megvan a hex nem kell a winavr/makefile-al foglalkoznod, az ajánlott fuse bit beállításokról kéne tudni valamit. Itt is van egy jó leírás,igaz nem magyar.
Köszönöm. Szerintem ezek alapján holnap neki tudok esni, és megpróbálok valamit alkotni. Ha elakadok, akkor írok, ide!
Üdv!
Na, az a baj, hogy a leírás alapján dolgozok, de a Detect során nem az ATmega8-at, hanem az Arudino 328-asát találja meg... Miért?
Mert gondolom rossz bitrátát használsz. Az ArduinoISP és az Arduino bootloader-e kísértetiesen hasonlítanak egymásra.
Ha 115200 (uno), vagy 57600 (nano) bitrátán kezdesz adni (avrdude), akkor ArduinoISP helyett a bootloaderrel kezdesz dumálni arról, hogy az Arduino szoftverét felülírja-e. ArduinoISP-hez úgy emlékszem valami 19200 baud kell, vagy hasonló. Nézd meg a kódot. Ha ilyen bitrátával adsz, akkor nem a bootloader fog 328P-vel válaszolni. A hozzászólás módosítva: Ápr 21, 2016
Kaptál egy nagy like-ot. Beírtam az adott "baud" értéket, azonnal fel is ismerte az ATmega8-at. Beraktam a .hex-et, beégettem, azt írta sikeres. Köszönöm szépen nagyon, Rolanddal ketten nagy segítségek voltatok!!!
Led-et szeretnék használni, de előtét ellenállás nélkül.
Készítettem egy eredmény kijelzőt és úgy szeretném megcsinálni, hogy minél kevesebb alkatrészből kelljen megcsinálni. Inkább a szoftver legyen bonyolultabb (PWM akármi). Az ok prózai: forrasztás nélkül szeretném úgy, hogy stabil legyen. Ha nem kellene ellenállás akkor 350 Ft-ot tudnék spórolni vele (nem kell próbapanel)
Kicsit bővebben kifejtenéd!
Milyen LED kijelzőre gondolsz? Mert a választék elég nagy: Bővebben: Link
Egyszerű piros 3mm-es normál ledekre.
Led 3mm piros Mindig elfelejtem, hogy már mindenre ledeket használnak
Léteznek olyan LED-ek, amikbe gyárilag beépítették az áramkorlátozó ellenállást (ezek viszont drágábbak), példa: link. Hagyományos LED-eknél nem fogod megúszni az áramkorlátozást (nem lehet mindent szoftverből megoldani).
Válogas:
áramgenerátor led hez
Ha nagyon pontosan be tudod állítani a feszültséget nem kell előtét ellenállás, de számolni kell a vezérlő belső ellenállásával is. Ha 20 mA-t bír a LED, akkor úgy számolj, hogy maximum 15 mA jusson egy LED-re.
Így elég nehéz válaszolni, mert nem mindegy, hogy 5 vagy 500 LED-et használsz.
Éppen ezért pár megoldás: - 16 csatornás PWM, csak rákötöd a LED-eket, I2C-n programozol (Link) - vagy 3 vezetéken RGB színes LED szalag (30 LED-del) (Link) - vagy TLC 5940 LED vezérlő (a 10 IC-vel 160 LED fényereje állítható külön) (Link) Miért jó egyébként ha 350 Ft-ot spórolsz? Ránézésre 100 előtét ellenállást kapsz érte. Bocs a kérdésért, de 1000-2000 LED-ről van szó, amit vezérelni akarsz és ezért probléma az ellenállás ára? Ha pedig pepecselni utálsz, vehetsz 220 ohmos SIL-9 hálóellenállást is. Ez egy 9 lábú izé, amelyiknek egyik lába össze van kötve 8 ellenállással. Drágább, mintha 8 ellenállást vennél, de legalább pepecselni nem kell. (Link) A hozzászólás módosítva: Ápr 24, 2016
|
Bejelentkezés
Hirdetés |