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
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.
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.
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!
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.
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ó
Ü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; }
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.
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:
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.
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.
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.
Szóval gyorsan egy móriczka ábrával megmutatnád mit forrasszak le, és másik vissza?
Üdv!
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..
Közben megoldottam, rakom fel lassan a videot majd a Kimit-be. Köszi!
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.
Többmorzés relé esetleg? De lehet hogy bennem van a hiba és én nem értem a kérdést...
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.
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?
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.
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.
Vagy opto, vagy semmi. Tobbmorzesnak tul sok ertelme nincsen.
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.
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.
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.
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.
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
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.
CKDIV8-at kikapcsoltad az ATTiny24-en? A HEStore-s cuccnál szerintem még mindig bugos a firmware...
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!
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? |
Bejelentkezés
Hirdetés |