Fórum témák
» Több friss téma |
A klónok CH340 Soros-USB illesztőjének drivere (Letöltés)
Még nem írtam programot gcc-ben. Azt tudom, hogy sokkal jobb, de az már biztos, hogy el kell kezdenem. Tehát akkor első lépésként le kell töltenem az avr gcc-t. Ezt honnan érdemes (win7)?
Idézet: Nem kell letölteni, mivel benne van az Arduino keretrendszerben. Az Arduino vázlatokat (sketch) is az fordítja... „Tehát akkor első lépésként le kell töltenem az avr gcc-t. Ezt honnan érdemes (win7)?”
No ezt sem tudtam. Köszönöm!
Akkor most szeretnék nagy segítséget kérni. Össze kellene dobni egy "egyszerű" kódot a következő képpen: adott pin 50us-ig magas, 10ms-ig alacsony állapotban. Sajnos a legelejéről kell kezdenem kezdve az avr gcc beállításokkal. Itt most a bootloader stb.-re gondolok.
Van 2 függvény az egyik a :
delayMicroseconds() : Ez 8MHz órajel esetén 8usec vagy 16MHz órajel esetén 4usec lépésköz esetén pontos, köztes értékekben bizonytalan . (max 65535) (tehát 48 vagy 56 usec jobb lenne neked talán) delay() : milli sec időzítést végez (max 65535)
Ha ez kevés a pulzáid pontosságához akkor a uC ASM vagy C programozása szükséges. A hozzászólás módosítva: Jún 15, 2014
Hát az arduino-s környezeten már túl vagyok. Tulajdonképpen a projekt nagy része abból állna, hogy előállítok egy impulzust ami jelen esetben egy tekercsre kapcsol feszültséget. Az impulzus hossza a tekercs induktivitásától függ majd kezdeti értéknek 50 us, de a lényeg az lenne hogy az impulzus hossza nem változhat. Az impulzus megszűnése után 20 és 100us között valamikor meg kell mérnem a tekercsen lecsengő feszültséget. Ez az idő sem változhat. Mintahogy említetted 4us-os bizonytalanság adódott az arduinos környezetben. Ez már olyannyira sok, hogy az arduino adc bemenetén óriási különbségek voltak állandó jelalaknál. Szkópon nézve vettem észre, hogy az impulzuso hossza is változik 4us-ot, tehát gondolom az analóg mérés időzítése is ugyanígy változik.
Ezért kell a gcc-t megtanulnom. De azt a legelejéről. Elsőnek az impulzust kell előállítani. A hozzászólás módosítva: Jún 15, 2014
A kezdeti érték lehet 56 is. Az nem olyan fontos, hogy milyen hosszú, csak ne változzon.
Próba , cseresznye .... szkóppal meglesed a végeredményt ...
A hozzászólás módosítva: Jún 16, 2014
Ez Arduino alatt kizárt, hogy pontosan menjen.
A timer0 interrupttól a Serial.println-ig az égvilágon mindenki beakaszt a processzornak, aztán meg csodálkozol, hogy nincs megfelelő pontosság. A delay 10-en a várakozás mértéke teljesen kiszámíthatatlan, attól függ, hogy éppen hogyan esik a timer interrupt be (millis() függvényt hasonlítgatja). icserny írta le helyesen a választ (Secrets of Arduino PWM): - AVR specifikációt elővenni - timer1-et beállítani Fast PWM-re - OCR1A-t beállítani olyan értékre, hogy 10.05 ms legyen a teteje (10.05 ms / 1000ms * 16MHz = 160800, ami sok a 16 bites timernek, ezért 8-as előosztás kell: 20100). - OCR1B-t beállítod 50us-re, ami a fenti képlet alapján 100 lesz. - A kimeneted az OCR1B kimenete lesz, amit engedélyezned kell Ezzel a megoldással 1/16MHz-es pontosságú hardver négyszögjelet kapsz. Mindent a hardver fog csinálni, szóval ezalatt azt csinálhatsz, amit akarsz, akár végtelenciklussal is kiakaszthatod a processzort, akkor is kint lesz a négyszögjeled. A hozzászólás módosítva: Jún 16, 2014
Most akkor kezdeném a legelejéről.
hogyan indítom el a gcct? Hol van?
Amiket már vettem az ebay-ről és nem volt /nincs velük semmi probléma:
- Nano - UNO - Leonardo - Mega1280 - Mega2560 - Due - GPRS modul - WiFi modul - Ethernet shield - LCD-k (Karakteresek - 16x2-től 20x4-esig, Grafikusak - monokróm és színes, érintőfelületes TFT 2,5"-ostól az 5"-osig) - MP3-as modul - Gyorsulásmérő és egyéb szenzorok - Motorvezérlők - és még sok mindent. Problémám egyetlen esetben volt: Más lábkiosztással kaptam pár 3,2"-os LCD-t, mint ami a fotóján szerepelt - de az eladó korrekt volt és részleges visszatérítésben kiegyeztünk. Az itthoni elszállt árakat nézve, ha csak minden második lenne jó, még akkor is bőven megérné az ebay-en vásárolni!! (Pl. GPRS modul: itthon 40 ezer, ebay: 12-13 ezer. Ultrahangos távolságmérő modul itthon 9000 Ft, ebay: 400-500 Ft....) Úgyhogy a kérdés csak az lehet: Ki az, aki NEM az ebay-ről vásárol???
A legelejéről:
- Arduino programnyelv nincs, a nyelv, amit az Arduino használ az C++ - A sketch-eket az Arduino avr-gcc-vel fordítja le Ahogy föntebb írták, az Arduino tartalmazza az avr-gcc-t, ugyebár azzal készíti el a mikrokontrollerre feltöltendő fájlokat. Ahogy nézem az Arduino Timer1 library-je lehet, hogy megfelelő lenne neked. http://playground.arduino.cc/Code/Timer1
Éppen ezt nézegetem. Közvetlenül a regiszterbe ír. De hogyan lehet várakozni pontos ideig? Szerintem a pwm nem lenne jó, mert az impulzus végétől is pontos időre kellene megnézni az analóg bemeneten a feszültséget. A pwm-nél meg folyton nézegetni kellene, hogy éppen milyen állapotban van a pwm pin. Vagy rosszul gondolom?
Azért nem pontos az Arduino, mert interruptok vannak (Serial, timer), amik megbolygatnak mindent. Az alábbi kód (nem próbáltam ki) pontossága kb. 1us lehet 16MHz-n.
A hozzászólás módosítva: Jún 17, 2014
Bocs, elfelejtettem a PIN 0-t kimenetre állítani.
A hozzászólás módosítva: Jún 17, 2014
Sziasztok!
Ma elkezdtem kísérletezni egy Arduino UNO panelen: a 10-es PWM-es lábára kötöttem egy 22k-s ellenállást, ami egy MOSFET drain-jéhez csatlakozik. Ez a MOSFET az 5V-os tápfeszen keresztül vezérel egy egyenáramú motort. Az AO-ás lábához rendeltem egy potmétert is, ami az állásától függően kiküld egy PWM jelet a 10-es lábra, amivel a MOSFET-et vezérli. A számomra fura dolog az volt, hogy amikor csatlakoztattam egy harmadik lábához egy nyomógombot, aminek a motort ki/be kéne kapcsolnia (úgy, hogy a belső felhúzó ellenállást engedélyeztem rajta), majd hozzárendeltem ehhez a lábhoz egy megszakítás programot, ez a program addig amíg kevés áramot vett fel a motor, működött, de amikor nőtt az áramfelvétele/jobban kinyittattam a MOSFET-et, a motor leállt. Mi lehet a gond?
Ha mutatnád a kódot, többet tudnánk. Mérted a fet gate-jén a jelet?
Nos ezt nem igazán eszi meg az arduino. Nem tetszik neki a PD0. De némi utánnaolvasással és kísérletezéssel sikerült elérnem 4Mhz-ez frekvenciát. Inkább órajelekben próbálok gondolkodni. Most a késleltetést for ciklussal és nop-pal próbálom megoldani. Sajnos lassan haladok, mert kevés az időm rá, de véleményeket szívesen várok! Lassan lesz szkópábra is.
Elég gyenge motor lehet, ha képes 30 mA-ről működni (annyit ad le maximálisan az IC lába).
Mindenesetre a legtöbb esetben a MOSFET gate lábára kötik az IC PWM kimenetét, nem a drainre. A hozzászólás módosítva: Jún 23, 2014
Ezen még én is átsiklottam. Azért írtam, hogy a gate lábon mérje a feszültséget.
Igen, ez egy egyszerű egyenáramú kismotor a HEstore-ból
Én a gate lábára kötöttem a PWM kimenetet. A Drain-en a panel 5V-ja van (ami USB 2.0 lévén 0.5A-t is le tud adni). Rosszul magyaráztam esetleg? Egyébként azóta kicsit árírtam a progit, kitöröltem belőle a megszakítás programot, és azóta tökéletesen működik.
Igen, mert azt írtad a mosfet drain-jére kötötted a pwm kimenetet. Mi volt a hiba? Merthogy a hibákból tanulunk!
Az a baj, hogy én se tudom biztosan. Volt egy előző "projektem", amin egy stopper óra megállítására használtam megszakítást. Ezt a mostanit gyakorlatilag erre építettem volna. Nem változtattam semmit az áramkörön, a megszakítás programot egy az egyben bemásoltam az új programba, és mégis, amikor feljebb tekerem a potmétert, hogy növeljem a motor fordulatszámát és áramfelvételét, a motor egyszercsak megáll, és csak akkor indul el újra ezután, ha nyomva tartom a gombot, és akkor működik újból nyomógombként, ha visszatekerem a potit.
Méregettem is, amit tudtam, az előző, stopperes projektnél 4,85V-ig esett le a tápfesz, itt viszont, amikor a mikrokontroller megkergült, 4,7V volt csak a tápfeszültség. Nem tudom hogy ez lehet-e a hiba forrása. A megszakítás lefutó élre aktiválódik.
Lehetséges az is, hogy mivel pwm-mel kapcsolgatod a motort, (ami persze induktív fogyasztó) csúnya zavart tesz rá a mikrokontroller tápjára, és akkor bármi történhet. Jó lett volna látni szkópon.
Végre sikerült kijavítanom a gondot. Lehet tényleg a zajokkal lehetett a gond, mert egy szintérzékelést betéve a megszakításba már jól működik a progi.
Szkópom sajnos nincs itt (a többi komolyabb eszközzel együtt nem hoztam el a nyaralónkba).
Tegyél a tápra egy 100nF ost.
Sziasztok!
Jó az Ebay-ről vett Arduino is? Bővebben: Link Arra gondolok, hogy túl olcsó, esetleg nincs benne a bootloader? Szerintem a linkeltre benevezek! A 60napos tanfolyamot csinálom éppen, már van is ötletem, hogyan tudnám lemérni a Lithium Ion celláim kapacitását, és gépen log-olni közben! Van egy másik fajta, ha jól látom, egy csip-ben különböznek (USB kommunikáció?) Bővebben: Link. Mindegy, melyiket veszem? A hozzászólás módosítva: Jún 25, 2014
Szia!
Nem tudom, hogy milyenek az ebay-en található arduinok. Az biztos, hogy a második linken lévőt venném meg, mert abba ki tudod cserélni a mikrovezérlőt! Én az arduino mini vásárláson gondolkozok. 600-700Ft-ért már beszerezhető. Igaz kell hozzá egy USB-TTL átalakító, de ennyiért még a mikrovezérlőt se kapom meg Magyarországon. Bővebben: LinkBővebben: Link
Tehát amit Te linkeltél, az ugyan az, mint amit én, csak külön-külön van az USB és az Arduino rész? Nekem szimpatikusabb, ha egyben van, meg a méret sem számít. A cserélhetőség jó ötlet! Azt hiszem, van olyan verzió is 8$ körül is. Neked miért a mini kell? Elég annak a tudása? Kimenetei?
Az még fontos lenne, hogy van-e benne bootloader. Nem nagyon találom a leírásban, csak hogy "Arduino-compatible Board. New." - ez nem sokat mond. Én már csak azért is bootloader-eset szeretnék, hogy az első lépés ne kudarc legyen, hogy még be kell programozni, utána kell járni, hogyan, mivel lehet. Első lépés legyen a LED villogtató program! A hozzászólás módosítva: Jún 25, 2014
Szia.
A mini nem különbözik a nagytól, csak a méretében. Igen az usb része külön van. Ha jól látom szegedi vagy. Nekem van gyári arduinom. Ha netalán nem lenne benne a bootloader abban amit rendelsz, akkor fel tudom neked rá tölteni. A hozzászólás módosítva: Jún 25, 2014
|
Bejelentkezés
Hirdetés |