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   440 / 840
(#) kiborg válasza huba hozzászólására (») Ápr 19, 2012 /
 
Osztó aránya 1,2k és 2,2k.
Az a furcsa, hogy semmit nem változtatok, csak a 3,3V stabot kicserélem 5V-ra és nem megy. SW, HW ezenkívül ugyanaz. Innentől fogva nem épül fel a két BT modul között a kapcsolat. A vezérlő látom, hogy működik,mert a gombokat lekezeli és a ledeket vezérli. BT modul 3,3V-t kap,mert mértem.
A modult nem kell konfigurálnom szerencsére, úgy állítottam be, hogy automatikus megkeressék egymást és csatlakozzanak.
(#) zombee válasza kiborg hozzászólására (») Ápr 19, 2012 /
 
Lehet az lenne a legegyszerűbb ha az AVR-t is 3.3V-ról járatnád, a kijelzőt(HD44780) pedig 5V-ról.
Esetleg az AVR-t a kijelzővel összekötő vezetékekre sorba bekötsz 1-1 100 Ohm-os ellenállást.

Magyarázat: a kijelző csak fogadja az adatokat, nem hajtja meg a vezetékeket. Csak digitális jeleket fogad
ami Hi vagy Lo lehet. A Hi szint 5V tápfesznél kb. 2.9V-tól kezdődik, ezt pedig az AVR feszültsége bőven eléri.
(#) lehello10 hozzászólása Ápr 19, 2012 /
 
Sziasztok!

Egy nagyon erdekes kerdesre keresek valaszt.

Van egy felig automatizalt himzesre kifejlesztett varrogepem, amin talalhato 3 encoderes leptetomotor. A gep X es Y tengelyen kepes mozgatni az asztalt, mig a 3 ik motor az anyag behuzasara van kitallava.
En az anyagot 3-5mm es oltesekkel varrom. A problemam az hogy a gep korigal. Tehat ha vhol kihagy egy oltest akkor azt a gep eszre veszi es a kovetkezonel korigalja, igy megtortenhet az hogy nagyobb oltesek jelennek meg mint az kivant hosszusag. Ez ugy van megoldva hogy a gep a control unitbol kikuld egy impulzust az encoderes leptetomotor fele, mig a motor is kuld egy impulzust a CU fele, majd ezt softosan osszehasonlitja a gep. Ha a ket impulzus megegyezik a gep nem korigal hisz nem eszlelt hibat, ha elterest eszlel akkor a kovetkezo oltest mar hosszabra csinalja.

Nekem az lenne a fontos hogy tartsa a gep a kivant oltes hosszusagot es valami elektronikai megoldassal becsapni a gep softjat.
Ugyanazt az impluzust kellene eloalitani a motortol mint amit kikuld a CU es igy a gep nem latna kulonbseget.

Szoval azt szeretnem toletek kerdezni, hogy van valakinek otlete hogy hogyan tudnam atverni a gepet?
Egy elmeletet keresek egy jo otletet!

Kerlek ha valakinek barmilyen otlete van irja meg nekem, nagyon sokat segitene.

Elore is koszonok minden hozzaszolast!
(#) zombee válasza lehello10 hozzászólására (») Ápr 19, 2012 /
 
Hát, ha engem kérdezel akkor azt mondom hogy nem véletlenül/szórakozásból találták ki ezt a rendszert.
Nekem az a tippem hogy ha lenne is valami ami mindig visszajelezne hogy sikerült lépni, akkor egy
hibás lépés után(amit ugye nem korrigál) el fog szállni a pozíciód!
Pár ilyen hiba és összevissza fog neked hímezni. Javaslom, hogy inkább a hibás lépések valószínűségét
kellene megszüntetni. Pl. az orsók jobb kenésével, motorok hűtésével, kipucolással.
Esetleg a hímzendő "képben" megkeresni azokat a részeket aminél hibázhat és optimalizálni.
(#) kiborg válasza zombee hozzászólására (») Ápr 19, 2012 /
 
Egyet értek zombee-val.
Ha a te verziódat megcsinálnád, előfordulna olyan eset, hogy egy 5cm vonalt egyszer 5cm, máskor meg 5,5cm-re hímezne. Szerintem ez nem volna jó
(#) blaci hozzászólása Ápr 19, 2012 /
 
Üdv!

Egy mikroszervót szeretnék vezérélni, de közel se úgy működik, ahogy szeretném. Korábban megépítettem Fizikus kolléga robotját, abban atmega8 van, és a szervo jobbra, ballra illetve középre áll be. Ugyanezt a programot átültettem atmega16a-ra, és a szervó folyamatosan forog egy irányba. (Van egy félig halott példányom, ami képes körbe forogni, ezt használom a tesztelésre, mert a jót nem szeretném tönkretenni. Természetesen kipróbáltam a tökéletessel is és az is pont így viselkedik.)
Már egy napja hasonlítom a két cpu leírást, és nem jövök rá, mi a hiba..

A kód:

[code=c]
#define jobbra 16 // Szervo jobb szelso pozicio
#define kozepre 23 // Szervo kozepso (Neutral) pozicio
#define balra 31 // Szervo bal szelso pozicio
..
..
..
void KonfigSzervo() // Szervo konfiguralas (beallitas)
{
DDRB = _BV(DDB3); // PORTB 3. lab kimenet (Szervo PWM)

TCCR0 = _BV(WGM00) // Timer0 8bites gyors PWM mod
| _BV(WGM01) // Timer0 8bites gyors PWM mod
| _BV(COM01) // nem-invertalt PWM
| _BV(CS00)
| _BV(CS01); // Timer0 eloosztas: 1/64 (61 Hz-es PWM impulzus frekvencia)

OCR2 = 23; // 1.5ms-os kezdeti PWM impulzus (Szervo kozepso (Neutral) pozicio)
}

void Szervo(unsigned char pozicio) // Szervo pozicionalo utasitas
{
OCR2 = pozicio;
}
(#) Fizikus válasza blaci hozzászólására (») Ápr 20, 2012 /
 
Szia!

A kod lehet hogy hibatlan, de szerintem a Timer idozitesek kavarnak be.
Milyen sebessegen megy az AVR? Melyik Timert akarod hasznalni a szervovezerlesre (8 bites vagy 16 bites)? Mert ezek fuggvenyeben at kell szamolni az idoziteseket. A Will-i robotjaimnal az ATMega a belso oszcillatorrol ment 1MHz-en, es az egyik 8 bites Timert hasznaltam a szervohoz. Ezert 64-es Timer eloosztast es Fast PWM modot kellett hasznaljak.
Jani-6-nal viszont az AVR 7.3728MHz-es kulso kvarcrol ment. Itt is 8 bites Timert hasznaltam. Ennel 256-os Timer eloosztast es fazishelyes PWM-et (ennek a frekvenciaja fele a Fast PWM-enek) kellett beallitani, hogy megfelelo szervovezerlo jelet kapjak.
8 bites Timerrel csak durva szervovezerlest tudsz vegrehajtani (kb 15 poziciot tudsz beallitani).
Ha nem foglalt, akkor hasznald inkabb a 16 bites Timert.
(#) sinkog hozzászólása Ápr 20, 2012 /
 
Van egy AT90CAN32 procim nyákot csináltam programozó lábakat annak rendje módja szerint ellenőriztem sőt már más is megnézte de valahogy az istennek nem sikerül életet lehelni bele a programozó kapcsolódása valahol itt elakad:

ubuntu alatt:
  1. ~/atmel$ sudo avrdude -v -c stk500v2 -p c32 -P avrdoper

  1. Programmer Type : STK500V2
  2.          Description     : Atmel STK500 Version 2.x firmware
  3.          Programmer Model: STK500
  4.          Hardware Version: 1
  5.          Firmware Version Master : 2.10
  6.          Topcard         : STK501
  7.          Vtarget         : 5.0 V
  8.          SCK period      : 4.4 us
  9.          Varef           : 0.0 V
  10.          Oscillator      : 1.229 MHz
  11.  
  12. avrdude: stk500v2_command(): command failed
  13. avrdude: stk500v2_command(): command failed
  14. avrdude: stk500v2_program_enable(): cannot get connection status
  15. avrdude: initialization failed, rc=-1
  16.          Double check connections and try again, or use -F to override
  17.          this check.
  18.  
  19.  
  20. avrdude done.  Thank you.
(#) blaci válasza Fizikus hozzászólására (») Ápr 20, 2012 /
 
Szia!

A kód hibás, így fázishelyes PWM-et kapcsol, de próbáltam már a helyes verzióval is. Sajnos a félig halott szervo nem igazán alkalmas a tesztelésre, de most elővettem az oszcilloszkópot, és egyből meglett a megoldás. A 0-ás timert használom, ami ennél a procinál is 8 bites. Az órajel 1MHz volt, tehát működnie kellett volna az általad számolt értékekkel is. A 16 bites timereket már elhasználtam, itt is két motort vezérelnek.
Pozitívuma a hibának, hogy most már értem is, mit csinálok.
(#) janikukac hozzászólása Ápr 22, 2012 /
 
Sziasztok!
Készítettem egy szép kis műszert AVR-el, de van egy kis gond. A kapcsolás Voltage Sense-je nem oszt le A/D szintre, 1/10-re, és így ha 3Voltot adok, a műszer 30V-nak méri. Nem tudom miért. A kapcsolás itt találhatóBővebben: Link és mellékeltem a nyákrajzot.

rajz.GIF
    
(#) kendre256 válasza janikukac hozzászólására (») Ápr 22, 2012 /
 
Az R4-es, 1,2 kOhm-os ellenállás rossz helyre van bekötve. A panelen a 10 kOhm-os ellenállás másik vége és a föld közé kell tenni.
(#) janikukac válasza kendre256 hozzászólására (») Ápr 22, 2012 /
 
Szóval gyorsan egy móriczka ábrával megmutatnád mit forrasszak le, és másik vissza?
Üdv!
(#) janikukac válasza janikukac hozzászólására (») Ápr 22, 2012 /
 
Asszem' értem: az 1,2k mondjuk azt jól van bekötve, csak a mérőfej nem jó helyre megy, így a mikrovezérlő lábára se jó alkatrész.. :S Szóval Usense, Uprobe-t felcseréltem..
(#) janikukac válasza janikukac hozzászólására (») Ápr 22, 2012 /
 
Közben megoldottam, rakom fel lassan a videot majd a Kimit-be. Köszi!
(#) blackdog hozzászólása Ápr 22, 2012 /
 
Sziasztok!

Valós állapotvisszajelzésen godolkodom. Adott a kapcsolásom ami reléket kapcsolgat. Egy LED 'jelzi', hogy az adott relé behúzott. De valójában ez ugye csak azt jelzi, hogy behúva kellene lennie a relének.
Hogyan lehetne erről valós visszajelzést adni? Hogy a relé valóban zárt vagy bontott állapotban van.
(#) zombee válasza blackdog hozzászólására (») Ápr 23, 2012 /
 
Többmorzés relé esetleg? De lehet hogy bennem van a hiba és én nem értem a kérdést...
(#) gydanee válasza blackdog hozzászólására (») Ápr 23, 2012 /
 
Nem vagyok benne biztos, hogy mire gondolsz. Viszont én úgy csinálnám, hogy a relé tekercsére kötnék egy tranzisztort, és ha tápfeszt kapott a relé, akkor a tranzisztoron keresztül ezt feltudod dolgozni a mikrokontrollerrel.
(#) blackdog válasza zombee hozzászólására (») Ápr 23, 2012 /
 
Közben átgondoltam a dolgot és hely szempontjából (nyák méret) a többmorzés relé lehet a megoldás. Igaz gyári nyákoknál még sosem láttam erre megoldást. Ez lehet megint az én túlbiztosítási mániám. Amúgy jól értetted a kérdést. :yes:
Persze aggályom ekkor is van. Az egyik szerunder oldal vezérel egy 230VAC fogyasztót a másik visszajelzét ad. De mi van, ha a 230VAC-t kapcsoló oldal összesült? Akkor a másik sec. kör nem biztos, hogy pontos infót ad vissza. Vagy tévedek?
(#) vilmosd válasza blackdog hozzászólására (») Ápr 23, 2012 /
 
Rateszel a kimenetre egy 4N35 optot, es azt figyeled a uC-vel. Az opto elmegy 1-2 mA arammal. A soros ellenallas 270k/0.6W ellenallas, es az opto bemenetevel antiparalel egy dioda. A kimenetet viheted direktbe valamelyik uC bemenetre.Egyszeru, olcso, es nem foglal el nagy helyet.
(#) blackdog válasza vilmosd hozzászólására (») Ápr 23, 2012 /
 
Igen így dolgozom fel jelenleg a 24VAC bemenetet.
Gondoltam ne legyen opto temető, de úgy látom vagy ez vagy bízom benne, hogy a relé lesz az utolsó ami elhalálozik.
(#) Reggie válasza blackdog hozzászólására (») Ápr 23, 2012 /
 
Vagy opto, vagy semmi. Tobbmorzesnak tul sok ertelme nincsen.
(#) vilmosd válasza blackdog hozzászólására (») Ápr 23, 2012 /
 
A rele meghalas bizony lehet problema. Mivel elektromechanikus eszkoz, igy az elettartama bizony veges. Persze attol fugg hogy a feladatnal egy ilyen hiba milyen galibat okoz, ugy kell megcsinalni a biztositast. Vannak olyan felhasznalasok, ahol a biztonsag nagyon nagy szazalekban meghatarozza a tervezesi alapelveket. Pl egy vasuti biztositoberendezesnel igen fontos ez a szempont, de egy egyszeru szobatermosztatnal feleslegesen noveli a koltseget, es a tervezo o"sz hajszalait.
(#) zombee válasza blackdog hozzászólására (») Ápr 23, 2012 /
 
Ez esetben sajnos nincs 100.000 %-os megoldás, ha tényleg nem bízol a relében és emberélet múlik rajta
akkor csak a relé által kapcsolt fogyasztóra hagyatkozhatsz, például ha vasúti jelzőlámpát kapcsolsz
vele akkor fényérzékelő, ha váltót akkor a váltók végálláskapcsolói(többszörözve), stb.
(#) blackdog válasza vilmosd hozzászólására (») Ápr 23, 2012 /
 
Jogos az észrevételed, de úgy vélem az én gondom is. Ez egy hőszivattyú vezérlés ahol sokat számít a pontos és hibamentes működés.
Nyilván relé kapcsolja a gépet, motorokat stb...
Nem szeretném, ha egy 1000 forintos relé hiba miatt leége a szivattyú mert mert nem húzott be, de a szivattyú elindult. (Nem a hőszivattyú hanem a sec. szivattyúk)
Szeretnék minnél biztosabb hibakezelést megvalósítani és persze a jó magyar szlogen szerint: "Olcsón"
Úgy látom itt is az opto az én barátom.
[off]Szerk.:
Oké nem vasúti jelzőberendezés, de életbevágó. Ha egy rossz vezérlés tönkreteszi az általam eladott hőszivattyút én leszek a hibás. Rossz híremet keltik... Kesevebb lesz a munkám... Több lesz a magyarázkodás... Stb...
Én jót szeretnék eladni és elégedett vevőt szeretnék! Marad a saját vezérlő. Remélem ezt megértitek. Természetesem megfelelő tesztelés nélkül nem adom ki a kezemő, de erre megvannak a lehetőségeim.
(#) vilmosd válasza blackdog hozzászólására (») Ápr 23, 2012 /
 
Pl ilyen esetekre talaltak ki a biztositekokat. Motorokra hokioldo, es esetleg errol visszajelzes az agynak. A motor nem tud leegni, ha nem kap aramot. Olyan pedig, hogy a rele kicsit vagy nagyon kapcsol nem igen letezik. Olyan szokott lenni, hogy tularam hatasara megeg a rele erintkezoje, de ez altalaban azt fogja okozni, hogy a motor el sem indul. En terveztem olyan rendszert (ipari, nem haztartasi), ahol tobbszaz rele, 70-80 magneskapcsolo, 100 feletti pneumatikus szelep, 30-40 motor dolgozott 24 oraban. Na ilyenkor hulyulne meg az ember, ha minden aramkort figyelne hibara. Nagyon fontos ilyen rendszereknel az alkatreszek minosege, erre jobban oda kell figyelni. De ez gondolom mar nem AVR tema.
(#) proksa1 hozzászólása Ápr 24, 2012 /
 
Sziasztok!

A problémám a következő lenne,USB-s PC - PIC kapcsolatot csináltam FT232-es ICvel de nem működik. Ha az FT232 RX és TX lábát összekötöm nullmodemként akkor a PC-s programon látom hogy amit kiküldök vissza is jön, a kontroller oldalon megcsinálom ugyanezt annál is működik de a kettő együtt mégsem akar. Valakinek van erre valami ötlete? 9600 baudos kapcsolatot állítottam be.

Sőt próbáltam azt is, hogy az FT232-re tettem egy rs232-t és egy másik PC soros portját figyeltem, de oda sem érkezik meg az adat. (sőt ha az RS232 kimenetén csinálok nullmodemet úgy sem érkezik vissza semmi, olyan mintha a jelszintek különbözőek lennének pedig nem azok, ugyanarról a tápról táplálom őket, 5V).

Érthetetlen számomra
(#) mrkevin hozzászólása Ápr 24, 2012 /
 
Sziasztok!

Egyelőre nem akartam új témát nyitni, első körben itt kérdezek, hátha valaki tud nekem segíteni.

Van egy hestore-os AVR programozóm, amivel már programoztam sikeresen avrdude-al. A napokban összeraktam egy fordulatszámmérőt ATtiny24-el, de sehogy sem tudom felprogramozni.
Bővebben: Link A Device ID össze vissza ugrál. A fuse biteket is össze vissza olvassa. Ha megpróbálom felprogramozni, akkor megcsinálja, de a verify-nál hibázik. Próbáltam AVR Studio-ból 4-es és 5.1-es verzióval, AVRDude-al, de egyikkel sem megy. Már a mikrokontrollert is kicseréltem, mert azt hittem, hogy azzal van a baj, de semmi változás.

Valakinek valami ötlet?
Előre is köszi.
(#) zombee válasza mrkevin hozzászólására (») Ápr 24, 2012 /
 
CKDIV8-at kikapcsoltad az ATTiny24-en? A HEStore-s cuccnál szerintem még mindig bugos a firmware...
(#) mrkevin válasza zombee hozzászólására (») Ápr 24, 2012 /
 
Nem kapcsoltam ki, mivel az írás nem igazán úgy megy, ahogy kéne. De kipróbálom, hátha. Egy kontrollert már kinyírtam így. Lekérdezni se mindig jól kérdezi. Van amikor jó, van amikor teljesen hülyeségeket olvas be. De kezdem azt hinni, hogy itt valami kompatibilitási gond lesz, mivel az ATmega8-at meg simán viszi minden gond nélkül.

----

Kipróbáltam, kivettem a div8-at és most jó. Hát erre az életbe nem gondoltam volna. Köszi a segítséget!
(#) kiborg hozzászólása Ápr 24, 2012 /
 
Hali!

Egy Mega16 Vref-pinje mennyire terheli meg a referencia feszültségforrást?
Ez a referenciafeszültségem egy 3,3k-s felhúzó ellenállással. 30-60 mV-t változik a referenciám, amit én soknak találok. Monjduj az is igaz, hogy stabilizálatlan(értsd: egyenirányítás után pufferet) tápra csatlakozik az ellenállással. Az egyenirányított feszültség értéke 8-9 V. Megfelelő ez referencia? Túl nagy az ellenállás?
Következő: »»   440 / 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