Fórum témák

» Több friss téma
Fórum » Arduino
A klónok CH340 Soros-USB illesztőjének drivere (Letöltés)
Lapozás: OK   63 / 854
(#) djsms hozzászólása Nov 17, 2014 /
 
Sziasztok!

Vettem két enc28j60-as vezérlőt. Az elsővel nincs semmi probléma, tudom használni. Viszont a nano-hoz valóval nem jutok egyről a kettőre. Nanoval használnám, tehát még csak elkötési hibáról sem lehet szó. Van valami trükkje a dolognak?
(#) tcsonka hozzászólása Nov 17, 2014 /
 
Sziasztok!

Hogyan lehet egy float változóban tárolt számot megadott tizedes jegyre kerekíteni?

Pl. a szám 15,75283
Ha a matematika szabályai szerin 3 tizedesre kerekítem 15,753 lesz.

Milyen utasítással lehet ezt arduinoval megcsinálni?
(#) csabeszq válasza tcsonka hozzászólására (») Nov 17, 2014 /
 
  1. uint32 egesz = float_szam * 1000.0f + 0.5f;
  2.   float_szam = egesz / 1000.0f;
A hozzászólás módosítva: Nov 17, 2014
(#) kapu48 válasza tcsonka hozzászólására (») Nov 17, 2014 / 1
 
Kerekítésre való függvények:
  1. #include <math.h>
  2.  
  3. float val = 37.777779;
  4.  
  5. void setup() {
  6. }
  7.  
  8. void loop(){
  9. float rounded_down = floor(val * 100) / 100;   /* Result: 37.77 */
  10. float nearest = round(val * 100) / 100;  /* Result: 37.78 */
  11. float rounded_up = ceil(val * 100) / 100;      /* Result: 37.78 */
  12. }
(#) csabeszq válasza kapu48 hozzászólására (») Nov 17, 2014 /
 
Ha közelebbről szemléljük a dolgot, mikrokontroller alatt teljesen felesleges a float, int-et kellene használni. Pláne ha kerekíteni is kell.

Beszorozza az értéket 1000-rel, úgy kezeli a tizedeseket. Eddigi programozó pályafutásom során egyszer nem kellett float-ot használni, pedig egy pár kódot már megírtam.

Vagyok annyira pimasz, hogy belenézek, hogy mit csinál a fordító a float-tal és a látott kód alapján arra az elhatározásra jutottam, hogy ha van más megoldás is, akkor nem használom.

Lassú, röpködnek a kilobájtok, mindez mikrokontroller alatt, ami egyébként sem gyors és kevés a memória.
A hozzászólás módosítva: Nov 17, 2014
(#) kapu48 válasza csabeszq hozzászólására (») Nov 17, 2014 /
 
Remélem ez nem az én hibám?

Ez van az Arduinoba beépítve!
Magára vessen, aki csak ezt ismeri (vagy ezt sem?)!
(#) kapu48 válasza kapu48 hozzászólására (») Nov 17, 2014 /
 
Közismert, hogy memória zabáló + veszet lassú, mégis használják, mert 1*űbb mint a Cpp.
(#) andykaaa válasza andykaaa hozzászólására (») Nov 17, 2014 /
 
Egyszer kertem
Idézet:
„Szeretnek egy olyan idozitot beepiteni amely egy logikai valtozot (boolean) kulombozo ideig tartana true es false allapotba.
Tehat az elsodleges fuggvenybe be kellene hogy keruljen egy valtozo, ami vegul kulombozo ido intervallumokat szamolna ugyanannak logikai erteknek es utana egy megfelelo idozito.
Szerintetek ezek kozul megtenne nekem ezt ?

Gyakorlatilag olyasmi kellene ami kepes lenne ugyanazt a labat kulombozo idointervallumokba kapcsolgatni high es low allapotba. Delay kivetelevel.
Koszonom.”


Idokozbe ratalaltam a vallaszra, ITT. Ha esetleg valakinek meg szuksege lenne ilyesmire.
A hozzászólás módosítva: Nov 17, 2014
(#) tcsonka válasza csabeszq hozzászólására (») Nov 17, 2014 /
 
Helló!

Ha nem titok elmondanád nekem hogyan kell csak int értékek használatával kjelezni a következőt:
Feszültségmérést szeretnék megvalósítani ADC segítségével. A feszültség mondjuk 3.1257V lesz. Ezt hogyan tárolom el int-ben?
(#) Kovidivi válasza tcsonka hozzászólására (») Nov 17, 2014 /
 
Szia. Eltárolod mondjuk az 1000-szeresét, kiíráskor meg az ezred részének az egészrészét írod ki (szam/1000), raksz egy pontot, utána meg a szam%1000-et használsz, ez pedig a maradék. Unsigned Int kb. 65000-ig jo (2 a tizenhatodikon, minusz 1), ha nem elég, akkor legyen unsigned long, az már 2 a 32-iken, maradjunk annyiban, hogy az már biztosan elég. És nem utolsó sorban, sokkal gyorsabban számol az AVR int-tel vagy long-gal, mint float vagy double-el.
(#) csabeszq válasza tcsonka hozzászólására (») Nov 18, 2014 /
 
A belső ADC pontossága 10 bit. Kíváncsi vagyok, hogy hogyan éred el a 3.1257V pontosságot.

Tegyük hozzá, hogy már ehhez a 10 bithez is normálisan megépített áramkör kell, stabil táppal, ami nem ugrál. Minthogy Arduino alatt nincs AVCC szűrés, ezért mondjuk 9 bit az, ami stabilan mérhető vele. 512 különféle fokozat.
(#) csabeszq válasza Kovidivi hozzászólására (») Nov 18, 2014 /
 
Mellesleg: fordítási időben számolsz float-tal, nem mikrokontroller alatt.

  1. #define ADC_MAX 1024
  2. #define AVCC_VOLTAGE 4.97
  3. #define ADC_VALUE(a) ((a) * ADC_MAX / AVCC_VOLTAGE)
  4.  
  5. if( ADC >= ADC_VALUE(3.13) ) // a 3.13V fordítási időben számolódik ki, végrehajtási időben fixen 644 kerül a kódba
  6. {
  7. }
  8.  
  9. // pontosan ugyanaz, mintha
  10. // if( ADC >= 644 ) {}
(#) boomerang hozzászólása Nov 18, 2014 /
 
Üdv!

Létezik olyan Arduino amelyen van FET ?
(#) vilmosd válasza boomerang hozzászólására (») Nov 18, 2014 /
 
Igen. Ugy altalaban veve a mai processszorok, kontrollerek MOSFET technologiaval keszulnek. Tehat az arduino kontrollerrel epult, igy a kontrollerben levo parezer FET biztosan benne van.
(#) tcsonka válasza csabeszq hozzászólására (») Nov 18, 2014 /
 
Jelenleg 12bit az ADC felbontása az arduinón, egy erre való könyvtár letöltése után. A kijelzett értékek pedig teljesen stabilak.
(#) vilmosd válasza tcsonka hozzászólására (») Nov 18, 2014 /
 
Az ATMega 10 bites AD-val rendelkezik, nem hiszem hogy ezt SW-vel uberelni lehet.
(#) tcsonka válasza vilmosd hozzászólására (») Nov 18, 2014 /
 
Akkor tanulmányozd a következő linket:

Link
(#) atus1981 válasza andykaaa hozzászólására (») Nov 18, 2014 /
 
Előzőekben nyújtott segítségekkel sikerült megoldani a számomra megfelelő működést.
Köszönöm a Te erőfeszítéseidet is.
(#) vilmosd válasza tcsonka hozzászólására (») Nov 18, 2014 /
 
En tanulmanyozhatom. Ez a kor negyszogesitese. Mennyivel bonyolultabb egy 1 1/2 $ ero 16 bites AD-t beepiteni. Mellesleg az eredeti leiras az Atmel doc8003.pdf .
(#) csabeszq válasza vilmosd hozzászólására (») Nov 18, 2014 / 1
 
Nézd, én vásároltam 12 bites AD-t, hogy növeljem a pontosságot. Végeredmény: 9 bites pontosság.

A helyzet az, hogy hiába 100 bites ADC, ha a tápfeszek, meg minden más nem olyan atom stabil, mint egy betonoszlop. A kérdésem arra vonatkozott, hogy megvan-e a háttér tudás arra, hogy hogyan lehet kialakítani olyan környezetet, ami képes 16/32/? bites ADC mintavételezésre.

Értelemszerűen ha Arduino-t használ, akkor nincs, mert az AVCC-t egy elegáns mozdulattal a VCC-re rákötötték, ergo digitális zajszűrés 0. Azért fontos az AVCC és a VCC kettéválasztása, hogy a mikrokontroller digitális zaja ne befolyásolja a mérést.

Ami meg a szoftveres 12 bites ADC-t illeti: abból indul ki, hogy ha 4-szer mintavételezel egy vonalat és 25%-ban 1 75%-ban 0, akkor az megfelel ADC érték + .25-nek.

Ez vagy igaz, vagy nem, úgysem fogja senki méréssel hitelesíteni, akkor meg miért ne csinálnád? Jó marketing, hogy 12 biten nyomod az ADC-t.
A hozzászólás módosítva: Nov 18, 2014
(#) boomerang válasza vilmosd hozzászólására (») Nov 18, 2014 /
 
Gondoltam hogy nem elektroncső van benne, plusz nem is ezt kérdeztem. ("amelyen")
Hanem olyan, az arduino panelen lévő, mondjuk PWM-mel vezérelt MOSFET-re amelyre rátehetek mondjuk egy kis motort, stb.
(#) kapu48 válasza boomerang hozzászólására (») Nov 18, 2014 /
 
Igen!
Bővebben pl. itt olvashatsz róla:
Motor shield
(#) kapu48 válasza (Felhasználó 15355) hozzászólására (») Nov 18, 2014 /
 
„az 1024 mintavételből állt” és ez menyi idő alatt futót le?

Szerintem semmi értelme a zajt jó hosszan átlagolni!
Az akkor is csak zajmérés marad, semmi köze a tényleges jelhez!
(#) csaba1229 hozzászólása Nov 18, 2014 /
 
Sziasztok!A témába hozzáértők segítségét szeretném kérni akiknek már van valami elképzelése,és építési tapasztalata Arduino androiddal való vezérléssel.Szeretnék építeni egy ilyen modulból felépülő vezérlést ami x csatornás relézett kimenete lenne,esetleg hőmérséklet kijelző csatorna is lenne benne.(ez már számomra ha lenne a tortán) itt a cikkek között is található pic_ es hálózati kártyás megoldás.. valami hasonlóra gondoltam!Segítségeteket előre is köszönöm
(#) csabeszq válasza (Felhasználó 15355) hozzászólására (») Nov 19, 2014 / 1
 
Ehhez alapvető szükséglet, hogy a vonalon egyenletes fehérzaj legyen.
Megfelelően zajos környezetben működik az oversampling.

Gondolj bele, hogy stabil tápfesz és vonal esetén 0.25-ös kvantálási érték mindig 0-ra van kerekítve. Az oversampling kizárólag akkor működhet, ha egy 1 egység körüli fehérzaj is hozzáadódik, így 25%-ban 1 lesz, 75%-ban 0.

És ezután jön az, hogy az Arduino-n a VCC-t és az AVCC-t összekötötték. Sokat szórakoztam már ADC-vel, felkapcsolsz egy LED-et és elmászik a tápfesz, vele együtt az ADC is! Nem véletlenül kötelező szűrni az AVCC-t az Atmel doksija szerint.

Két kérdés nyitva marad: valóban 12 biten mérsz-e, vagy csak 9-en és valami hihetőnek tűnő baromság hozzáadódik?
Valóban azt méred-e amit akarsz, vagy ha elmászik a külső hőmérséklet, vagy éppen felkapcsolsz egy LED-et, akkor meghibban minden.

Tegyük hozzá, hogy AVR ADC-n az optimális bemenő ellenállás 10k, tehát maga a mérés képes a mért értéket meghamisítani. Én MCP6024-es előerősítőt használtam, hogy ne másszon szanaszét az egész.

Lehet a vakvilágba szórni a biteket felfelé, de hidd el semmi értelme mindaddig, amíg nincs képben az ember arról, hogy hogyan is megy egy ADC-s mérés normális körülmények között.
A hozzászólás módosítva: Nov 19, 2014
(#) erdeidominik1999 hozzászólása Nov 20, 2014 /
 
Sziasztok! Azt hogyan lehetne megcsinálni, hogy egy int-ben lévő változót 1 tizedesjegyre kerekíteni?
(#) kisedison válasza erdeidominik1999 hozzászólására (») Nov 20, 2014 /
 
Véletlenül nem a float-ra gondolsz?
(#) erdeidominik1999 válasza kisedison hozzászólására (») Nov 20, 2014 /
 
Nekem az kéne, hogy adott egy int ben lévő változó, aminek mondjuk van 2 vagy 3 tizedesjegye és azt kerekítse, hogy csak 1 tizedesjegye legyen.
(#) arduinoforever hozzászólása Nov 20, 2014 /
 
Csak Float-nak lehet tizedes értéke!
(#) kisedison válasza erdeidominik1999 hozzászólására (») Nov 20, 2014 /
 
Az int csak egész szám lehet.
Következő: »»   63 / 854
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