Fórum témák

» Több friss téma
Fórum » AVR - Miértek hogyanok
 
Témaindító: pakibec, idő: Márc 11, 2006
Témakörök:
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
Lapozás: OK   437 / 840
(#) blackdog válasza TavIR-AVR hozzászólására (») Ápr 11, 2012 /
 
Hú. Amit javasolt az horror áron van. Milyen távolságra vihető el ez a DS szenzor? Nekem, 2-3m kellene.
Amúgy az iparban legalábbis ahol én tevékenykedem hűtés/fűtés-ben szinte mindenhol NTC/PTC érzékelőket használnak 1m és 12m távolságok között.
(#) tursaba válasza tursaba hozzászólására (») Ápr 11, 2012 /
 
A Mikroc a ludas. A fordítást debuggolva, csak az analóg csatorna számát viszi át paraméterként az ADMUX regiszterbe és tölti rá.
Nem állítja a két biten a referenciát, ill. rosszul állítja be.
tursaba
(#) blackdog válasza (Felhasználó 15355) hozzászólására (») Ápr 11, 2012 /
 
Visszatérve az utolsó kérdésemhez, ha inkább DS érzékelőt választok vagy lm35 (ez van is otthon) ezeket milyen messze lehet vinni a paneltől?
(#) blackdog válasza blackdog hozzászólására (») Ápr 11, 2012 /
 
Nos sikerült összehozni a hőmérséklet mérést NTC -vel. A lényegi részek a kódból:
  1. ...
  2. #include <avr/pgmspace.h>
  3. #include <math.h>
  4.  
  5. volatile int NTCin = 0;
  6.  
  7. ...
  8.  
  9. int main(void) {
  10.  
  11.    int Homers;
  12.    double NTCin_v;
  13.    double NTC_r;
  14.    double NTC_cal;
  15.  
  16. ...
  17.  
  18.    NTCin   = Beolvas10bitADC(3);
  19.    NTCin_v = NTCin*(5000/1024.0);
  20.    NTC_r   = 10000/((5000/NTCin_v)-1);
  21.    Homers  = (1.0/(log(NTC_r/10000.0)/3300.0+(1.0/(25.0+273.0))) - 273)*10;
  22.  
  23. ...


A Homers változót már csak formázni kell és 0,1°C pontossággal kíírja a hőmérsékletet.
Persze ez a pontosság az NTC pontossága. Több mérést is végeztem és feszültségeket ellenőriztem minden stimmelt.
Az ADC-t fizikus irása alapján 'tanultam meg. Bővebben: Link
Ezúton is nagyon köszönöm!
A fordítással először bajba voltam, de megoldottam. Kell az -lm paraméter és a libm.a is.
Szóval tudásomhoz képest egyenlőre elégedett vagyok.
(#) TavIR-AVR válasza blackdog hozzászólására (») Ápr 11, 2012 /
 
A NTC/PTC inkább hőérzékelésre és nem hőmérőre való. A Pt100/Pt1000 sem olyan, hogy elviszem x méterre és ellenállást mérek Bár a Pt100/Pt1000 egész használható...

A DS18x20 elvihető 30 méterre is akár... Digitális a jelfolyam, így a bekötés hibái nem kavarnak be (ha nagyon elbénázod, a CRC úgyis kimutatja )
Az analog LMxx chip esetén a mérési pontosság jobb, de a mérővezeték hibája bejátszhat (a 0.5 fok esetén elhanyagolható).

Csak tipp: A DS18x20 chip esetén folyamatos mérés, 5V táp esetén a saját hőtermelése is torzítja a mérést 0.1...0.7 fok közt volt, elrendezéstől, környezettől függően...

Keresztkérdés: mit szeretnél mérni és a kapott eredményt mire használni? (abszolut vagy relativ hofok kell?)
(#) blackdog válasza TavIR-AVR hozzászólására (») Ápr 11, 2012 /
 
Keresztválasz:
A fűtésem előremenő és visszatérő hőmérsékletét szeretném mérni. Arra használnám, hogy ha az előremenő 35 °C alá vagy 45°C főlé emelkedik akkor leállítom a szivattyút és riasztást küldök. Valamint mérem a dT hőmérsékletet.
Tudom, hogy NTC-vel nem váltom meg a világot, de nem életmentő felszerelést felügyelek vele és eddigi próbák alkalmával teljesen jónak bizonyul. Egyébként kíváncsiságból szétszedtem egy nem éppen olcsó szobatermosztátot és abban is NTC fityeg.
De mivel fecsigáztál összefogom hasonlítani LM35 és DS18xx elemmel is. Kíváncsi vagyok az eltérésekre.
Szerk.:
Ja igen, ugye fontos a mérési taromány is. Nos ez nálam 5-60 °C.
(#) blackdog válasza TavIR-AVR hozzászólására (») Ápr 11, 2012 /
 
[off]Közben nagynehezen szétvágtam az egyik vezérlőm érzékelőjét. KTY81-121 van benne jó alaposan kiöntve műanyaggal. A KTY érzékelőről mi a véleményetek?
(#) vilmosd válasza blackdog hozzászólására (») Ápr 11, 2012 /
 
A linearis (feszultseg kimenetu) erzekelokkel egyszeru homeroket lehet csinalni. Ilyen a LM35, MCP9700A, TC1047A. Olcsok es megbizhatoak. A kimenetuk 10 mV/C meredeksegu, tehat barmely 10 bites AD-val rendelkezo uC-vel feldolgozhato a jeluk. En 2.56 V Vref mellett hasznalom (PIC), nem tudom az AVR ezt hogyan tudja csinalni. Ezzel a Vref-el 10 bites AD-nal 1/4 C felbontast ad a meres. Lenyeges, hogy az erzekelo taplabaira egy 100 nF kondit ra kell kotni, es a kimenettel sorba kell kotni egy 1k ellenellast, mert kulonben gerjedekeny lesz a vezetek kapacitasa miatt. igy el lehet vinni akar tobb 100 meterre a jelet, mert a vezetek ellenallasa nem fogja befojasolni a merest. Persze ajanlatos arnyekolt kabelt alkalmazni, es a uC bemeneten egy RC alulatereszto szurot tenni (1k-100nF). En sokat hasznalok ilyen erzekeloket ( MCP, TC) es teljesen korrekt merest lehet vele csinalni. Ja es mellette meg olcso is. Annyit esetleg meg lehet csinalni, ha pontosabb merest akarsz, akkor csinalni kell egy linearizalo algoritmust (MCHP AN1001).
(#) blackdog válasza vilmosd hozzászólására (») Ápr 11, 2012 /
 
Köszönöm a korrekt választ. AVR is hasonlóan működik mint az általad írt PIC. Gondolom azért használsz MCP, TC érzékelőt mert nálatok az inkább elérhető. Az, hogy olcsó érdekes kérdés. Sajnos nekem most drága még a 400 forintos LM35 is.
NTC talán ott rossz, ha gyors hőmérséklet változásokat kell lekövetni. 17 °C-ról 60 °C-ra gyorsan felment viszont vissza csak lassan áll be.
LM35-el a másik bajom a 3 vezeték. Ezért is kérdeztem a KTY érzékelőket mert azoknak elég kettő.
[off]
Egy kis fogalmi kérdés. Hőmérséklet esetén mit neveztek érzékelőnek és mit mérőnek? Ahogy látom az analóg eszközöket érzékelőnek hívják míg a digitális eszközöket mérőnek. De mi a fogalmi határ? MCU esetén szerintem nagyon nem mindegy.
(#) TavIR-AVR válasza blackdog hozzászólására (») Ápr 11, 2012 /
 
KTY adatlapot lesd meg. Elég vacak a görbéje...+abszolut ertekben pontatlan.

erzekeles: jelet ad vissza. Meres: szamszerusitheto eredmény szuletik
Szerintem....
(#) zombee válasza TavIR-AVR hozzászólására (») Ápr 11, 2012 /
 
A méregdrága ERSA pákák hidegpontját KTY diódával mérik. Ennyire gagyi lenne?
Na jó, ahol 450°C-os pákahőmérsékletek vannak ott mit számít az a 2-3 foknyi hiba...
(#) vilmosd válasza blackdog hozzászólására (») Ápr 11, 2012 /
 
Idézet:
„Hőmérséklet esetén mit neveztek érzékelőnek és mit mérőnek?”

"Sensor" anglisul, amit magyarra erzekelonek lehet forditani. A mero a muszaki metodusban altalaban valamilyen mero eszkozt takar, de nem erzekelot. A MCP9700A ara azert nem olyan nagy a CHPCD listaar kb 70 magyar forint plusz ifa. En azert hasznalom ezt, mert: 1.: legutobb vettem egy marekkal, 2.: sokkal olcsobb mint az ajnarozott LM35 es a DS18B20, 3.: egyszeru a feldolgozasa. Amint irtam, 2,56 V Vref eseten a feldolgozas C-ben
  1. V_t1=V_t1-200;// temp = VAD-50 C for MCP9700A or TC1047A.
  2.  // For LM35 comment this line
  3.  t1=V_t1*25;// AD value to temperature conversion
Ez a homersekletet a 2675 formaban adja vissza. Helyes kijelzeshez osztani kell 100-al. De nekem a kijelzo rutinom ilyen, es jol jelzi ki a homersekletet. Ja a Vref egy TL431 es 2 ellenallas + egy poti. Stabil referenciat ad, es szinten olcso.

temp676.pdf
    
(#) atika911 hozzászólása Ápr 12, 2012 /
 
Ezzel kapcsolatban tud valaki segíteni?
(#) TavIR-AVR válasza zombee hozzászólására (») Ápr 12, 2012 /
 
A pákánál a 360+/- 2 fok nem számottevő. Ha 0,1 fok kellene, akkor Pt 100 lenne és a páka ára meg magasabb (elektronika miatt).
(#) vzoole válasza TavIR-AVR hozzászólására (») Ápr 12, 2012 /
 
Hát igen... főleg hogyha nagyobb felülethez teszed a pákát, akkor a hegy akár 100 fokot is esik, néhányban ezért még hideg pontot sem kompenzálnak.
(#) kiborg hozzászólása Ápr 12, 2012 /
 
Hali Mindenkinek!
Végképp elakadtam a vezeték-nélküli kommunikációval. 2db RFM70-el szeretnék kapcsolatot létrehozni. A regisztereket, írom és olvasom, de mégse jön össze a dolog.ASM-ben programozok.
Aki veszi a fáradságot és segít megoldani a fennálló problémámat, annak felajánlok 2 db modult/illetve a rajta levő chippel szerelt modult.(nRF24L01).
Visszajelzéseket privátban kérném.
Üdv Kiborg
(#) sikolymester válasza atika911 hozzászólására (») Ápr 12, 2012 /
 
Ránézésre nem látok hibát, az órajelet a projekt settingsben beállítottad? Netán a makefileban?
(#) AMD hozzászólása Ápr 12, 2012 /
 
Sziasztok!
Normális jelenség az, hogy egy Atmega8-16PU VCC lábán 100mA, AVCC lábán meg 170mA-es áramfelvételt mérek?
(#) zombee válasza AMD hozzászólására (») Ápr 12, 2012 /
 
Persze, ha a PORTC lábait jobban terheled mint a többit. Normálisnak normális, max. nem egészséges...
(#) zombee válasza zombee hozzászólására (») Ápr 12, 2012 /
 
És még mielőtt a tanult kolléga bemásolná az idevonatkozó szabványt, lábanként 15-20mA,
portonként 100mA lehet a max. terhelés. Azaz ha a a PORTC-n ennél nagyobb akkor valami nagyon leszívja...
(#) enree válasza zombee hozzászólására (») Ápr 12, 2012 /
 
Már fölvettem egy fórumtársunkkal a kapcsolatot ezügyben, neki van nagyfesz programozója.
Üdv. E.
(#) atika911 válasza sikolymester hozzászólására (») Ápr 13, 2012 /
 
Igen, a projekt settings-ben be van állítva.
8 Mhz-es belső kvarc.
(#) AMD válasza zombee hozzászólására (») Ápr 13, 2012 /
 
Terhelés nélkül ekkora az áramfelvétele.
(#) zombee válasza AMD hozzászólására (») Ápr 13, 2012 /
 
És lehet programozni? Mekkora feszről megy?
(#) AMD válasza zombee hozzászólására (») Ápr 13, 2012 /
 
Lehet programozni. 5 voltról megy. Baleset történhetett vele addíg próbálgattam. Felforr a stabil ic.
(#) blackdog hozzászólása Ápr 13, 2012 /
 
Sziasztok!

Kezdőként az ember számtalan problémába belefut.
Egyenlőre NTC érzékelőt használva kapcsolok egy relét. Egy bizonyos hőmérséklet alatt bekapcsol a relé felette pedig kikapcsol. Ez működik is.
Viszont néha-néha gyorsan következik be a hőmérsékletváltozás (1-2 perc) és a relé ki be kapcsolgat.
Erre írtam egy függvényt ami nem engedi, hogy 5 percen belül visszakapcsoljon a relé. Ezt a főprogramba tettem.
Viszont míg várok erre az 5 percre addig megáll a program így egyéb események kezelése sem következik be. Pl.: gombnyomás vagy hőmérséklet folyamatos kijelzése.
Ha jól sejtem ezt a késleltetést egy megszakításba kellene tennem. De nem tudom, hogy hogyan és melyikbe. Ebben tudnátok segíteni?
(#) blackdog válasza blackdog hozzászólására (») Ápr 13, 2012 /
 
Csak, hogy ne érezzétek, hogy csak kérdezek, de nem gondolkodom:
Arra gondoltam, hogy létrehozok egy RLY_wason vátozót. Alap értéke 0. Mikor az ADC értéke a beállított szint fölé megy akkor ugye bekapcsolom a relét. De mielőtt bekapcsolnám megkellene hívnom egy ?megszakítást? ami megnézi az RLY_wason értékét. Ha 0 akkor azonnal engedi bekapcsoli a relét, ha 1 akkor elindít egy várakozást 5 percig majd indul a relé és RLY_wason visszaáll 0 értékre.
Én valahol itt látom a megoldást. Vagy rossz nyomon járok?
(#) adamtui_93 hozzászólása Ápr 13, 2012 /
 
Sziasztok egy ATmega32-őt szeretnék usb-én a számítógéphez kötni ehhez a v-usb-t szeretném használni de van egy olyan gondom hogy a mintaprogramokat sem tudom lefordítani mert mindig ezt írja ki :
Idézet:
„Build started 13.4.2012 at 20:01:13
avr-gcc -mmcu=atmega32 -Wl,-Map=USBhidmouse.map main.o -o USBhidmouse.elf
main.o: In function `usbFunctionSetup':
C:\Documents and Settings\Bubuka\Dokumentumok\Downloads\Compressed\vusb-20120109\examples\hid-mouse\default/../firmware/main.c:111: undefined reference to `usbMsgPtr'
C:\Documents and Settings\Bubuka\Dokumentumok\Downloads\Compressed\vusb-20120109\examples\hid-mouse\default/../firmware/main.c:111: undefined reference to `usbMsgPtr'
C:\Documents and Settings\Bubuka\Dokumentumok\Downloads\Compressed\vusb-20120109\examples\hid-mouse\default/../firmware/main.c:114: undefined reference to `usbMsgPtr'
C:\Documents and Settings\Bubuka\Dokumentumok\Downloads\Compressed\vusb-20120109\examples\hid-mouse\default/../firmware/main.c:114: undefined reference to `usbMsgPtr'
main.o: In function `main':
C:\Documents and Settings\Bubuka\Dokumentumok\Downloads\Compressed\vusb-20120109\examples\hid-mouse\default/../firmware/main.c:141: undefined reference to `usbInit'
C:\Documents and Settings\Bubuka\Dokumentumok\Downloads\Compressed\vusb-20120109\examples\hid-mouse\default/../firmware/main.c:154: undefined reference to `usbPoll'
C:\Documents and Settings\Bubuka\Dokumentumok\Downloads\Compressed\vusb-20120109\examples\hid-mouse\default/../firmware/main.c:155: undefined reference to `usbTxStatus1'
C:\Documents and Settings\Bubuka\Dokumentumok\Downloads\Compressed\vusb-20120109\examples\hid-mouse\default/../firmware/main.c:159: undefined reference to `usbSetInterrupt'
make: *** [USBhidmouse.elf] Error 1
Build failed with 8 errors and 0 warnings...
mit tudnék ezzel kezdeni? ( Beírtam keresőbe, dobott is rá ki pár példát. Meg szerintem megoldást is, de nem tudtam értelmezni silány angol tudásom miatt.)
(#) zombee válasza adamtui_93 hozzászólására (») Ápr 13, 2012 /
 
A probléma itt kezdődik:
Idézet:
„C:\Documents and Settings\Bub”

Az elérési útban nem lehet szóköz...
(#) adamtui_93 válasza zombee hozzászólására (») Ápr 13, 2012 /
 
Áttettem máshová ott is ugyan ez a helyzet nem ez volt a probléma.
Következő: »»   437 / 840
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