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   437 / 852
(#) kapu48 válasza RoliNyh hozzászólására (») Márc 14, 2018 /
 
Emeld a motor tápfeszét 12V-ra, 30V-ig birja.
És használj körbeforgó vezérlést:
  1. int motorPin1 = 8;
  2. int motorPin2 = 9;
  3. int motorPin3 = 10;
  4. int motorPin4 = 11;
  5. int delayTime = 10;
  6.  
  7. void setup() {
  8.   pinMode(motorPin1, OUTPUT);
  9.   pinMode(motorPin2, OUTPUT);
  10.   pinMode(motorPin3, OUTPUT);
  11.   pinMode(motorPin4, OUTPUT);
  12. }
  13.  
  14. void loop() {
  15.   digitalWrite(motorPin1, HIGH);
  16.   digitalWrite(motorPin2, LOW);
  17.   digitalWrite(motorPin3, LOW);
  18.   digitalWrite(motorPin4, LOW);
  19.   delay(delayTime);
  20.   digitalWrite(motorPin1, LOW);
  21.   digitalWrite(motorPin2, HIGH);
  22.   digitalWrite(motorPin3, LOW);
  23.   digitalWrite(motorPin4, LOW);
  24.   delay(delayTime);
  25.   digitalWrite(motorPin1, LOW);
  26.   digitalWrite(motorPin2, LOW);
  27.   digitalWrite(motorPin3, HIGH);
  28.   digitalWrite(motorPin4, LOW);
  29.   delay(delayTime);
  30.   digitalWrite(motorPin1, LOW);
  31.   digitalWrite(motorPin2, LOW);
  32.   digitalWrite(motorPin3, LOW);
  33.   digitalWrite(motorPin4, HIGH);
  34.   delay(delayTime);
  35. }


Bővebben: Link
(#) Kovidivi válasza RoliNyh hozzászólására (») Márc 14, 2018 /
 
A delay(1) és delay(2) között ott a delayMicroseconds(xxx). 1000uS az 1mS.
(#) RoliNyh válasza kapu48 hozzászólására (») Márc 15, 2018 /
 
Tulajdonképpen az én programom is "körbeforgó" vezérlés, csak nem egy, hanem két tekercses üzemmód anagyobb nyomaték miatt. Egyébként a tekercsfeszültség eleve 12V, de úgy vettem észre, a tekercsfeszültség a sebességet egyáltalán nem befolyásolja, legfeljebb a nyomatékot csak.

A mutatott kódodban, amúgy annyi probléma van, hogy ha a negyedik lépésről az első lépésre ugrik a program, akkor minimális ideig a négyes és az egyes tekercs is be van kapcsolva. Én épp ezért cseréltem fel az első lépésnél a z első lépésnél a 4-es és 1-es tekercsek vezérlésének helyét, Tehát előbb kikapcsolja a négyest, csak aztán kapcsolja be az egyest...
De most hogy így belegondolok, a kettes és hármas vezérlésnek is helyet kéne cserélni, hogy azok is egymás után vezérlődjenek...
(#) RoliNyh válasza Kovidivi hozzászólására (») Márc 15, 2018 /
 
Közben faragtam egy kicsit, és ebben a kódban már csak a szükséges változásokat "írom" a kimenetre.
  1. void loop()
  2. {
  3.       //1 lépés: 1,2 Coil H / 3,4 Coil L
  4.  
  5.       digitalWrite(Coil4, LOW);
  6.       digitalWrite(Coil2, HIGH);
  7.       delay(DelayTime);
  8.  
  9.       //2 lépés: 2,3 Coil H / 1,4 Coil L
  10.  
  11.       digitalWrite(Coil1, LOW);
  12.       digitalWrite(Coil3, HIGH);
  13.       delay(DelayTime);
  14.  
  15.       //3 lépés: 3,4 Coil H / 1,2 Coil L
  16.  
  17.       digitalWrite(Coil2, LOW);
  18.       digitalWrite(Coil4, HIGH);
  19.       delay(DelayTime);
  20.  
  21.       //4 lépés: 1,4 Coil H / 2,3 Coil L
  22.  
  23.       digitalWrite(Coil3, LOW);
  24.       digitalWrite(Coil1, HIGH);
  25.       delay(DelayTime);
  26. }


Szóval úgy néz ki, a motor valóban nem bír nagyobb fordulatot,
mert a 2 -es DelayTime értéknél még megy szépen, de az 1-es DelayTimenél már nem...

Arra jutottam, hogy a kéttekercses üzemmódban kb 150RPM a max fordulatszám.
(#) kegyetlen19 válasza kapu48 hozzászólására (») Márc 15, 2018 /
 
Hello. Sajnos nincs itthon LM239. De van LM324 és LM358.
LM324 adatlapja Figure 31. és LM358 adatlapja Figure 31.
Ezek jó lennének? Kiegészítve a kapcsolást, ahogy írtad, és ahogy a Figure 3-on van.
(#) kegyetlen19 válasza kegyetlen19 hozzászólására (») Márc 15, 2018 /
 
Most látom, hogy a Vin és a Vref nem ugyanazon a bemeneten (+/-) van.
(#) Kovidivi válasza RoliNyh hozzászólására (») Márc 15, 2018 /
 
Szia.
Arra utaltam, hogy a delay(1) és delay(2) között van ezer érték még. Tehát lehet, hogy tudnál tovább gyorsítani, ha mondjuk a delay(1.5) lenne a leggyorsabb, vagy mondjuk a delay(1.7). Ezeket a tizedes delay értékeket ne próbáld ki, nem fog működni, de delay(1.5) helyett írhatsz delayMicrosecond(1500)-at, az 1.5mS-ig várakoztat. Magyarán: finomíthatsz a várakozás felbontásán.
A hozzászólás módosítva: Márc 15, 2018
(#) RoliNyh válasza Kovidivi hozzászólására (») Márc 15, 2018 /
 
Igen próbáltam úgy is, azért volt bent a delayMicrosecond() is. De már 1750-es értéknél se megy...
(#) tbarath válasza kegyetlen19 hozzászólására (») Márc 15, 2018 /
 
Használhatsz opamp-ot komparátorként, szerintem nem lesz vele baj.
(#) kapu48 válasza kegyetlen19 hozzászólására (») Márc 15, 2018 / 1
 
Igen használhatod a 31. ábra szerinti kapcsolást is.
Annyi a különbség, hogy invertált lesz a kimenő jel a bemenethez képest.
De ez programból kezelhető.

Még a kapásjelző csúnya tüskéit kellene levágni a kimenete és a GND közé kötött pár nanos kondival.
Úgy méretezd, hogy csak a tüskéket vágja, az impulzusok maradjanak.

Mivel a vezérlőjel feszültség szintjeit nem ismerjük, Vref bemeneten ellenállás osztóval beállítod a komparálási szintet. Hogy szép négyszögjeleket kapjál a kimeneten.
Még fontos a 100n-es kerámia kondi a tápfesz lábakra.
(#) kegyetlen19 válasza kapu48 hozzászólására (») Márc 15, 2018 /
 
Oké. Akkor kipróbálom a LM324 –es verziót, a megfelelő kiegészítésekkel. Ezt így, hogy tudom grafikusan megjeleníteni, (hangkártya)?
Azért nem ültem tétlenül délelőtt és kísérletezgettem, hangkártyás mérésekkel. Érdekes az eredmény.
A képeken, az én kapásjelzőm RF jelei látható. Ha folyamatosam húzom a damilt, akkor az adó a képen látható kis időmegszakításokkal, egy dupla (51db + 50db-os) jelcsomagot ad. Ez a dupla jelcsomag addig ismétlődik, míg húzom a damilt. Ha megállok, egy 14-szer ismétlődő jelcsomaggal fejezi be az adást, (ebből az első 51db-os, a többi 50db-os de az utolsó 49db-os (az legutolsó 0 midig elmarad)). Ha csak egy kicsit húzom meg a damilt, akkor csak a 14db-os jelcsomagot adja le az adó.
A jelcsomag: 0 (egy kis szünet) 10101010101010100101100110011001010101010110011000.
Mivel én, világítást akarnék felkapcsoltatni a kapásjelző jelzéséré, (legyen az rövid vagy hosszabb damil húzású is) így egy dupla, 50+50db-os jelcsomagot kéne valahogy RF jelként elcsípni.
(#) kegyetlen19 válasza kegyetlen19 hozzászólására (») Márc 15, 2018 /
 
Hogy mihamarébb „normális” jelalakot lássunk és mérni is lehessen, megpróbálok a hétvégén, egy arduino-val összehozni, egy logikai analizátort.
(#) elektro95 hozzászólása Márc 15, 2018 /
 
Hali mindenkinek abba szeretném a segítségetek kérni hogy adott egy reed kapcsoló aminek kellene a kapcsolásait számolni és mikor elért egy számot akkor kapcsoljon az arduino egy kimeneten lévő relé kártyát egy adott ideig. Mikor ez megtörtént kezdje az egészet elölről. Valaki esetleg megtudná nekem ezt írni mert még kezdő vagyok az ilyen összetettebb programom írásában és eddig nem nagyon jött össze sajnos.
(#) kegyetlen19 válasza elektro95 hozzászólására (») Márc 15, 2018 / 1
 
Ez azért még nem annyira összetett:
  1. int valtozo = 0;
  2. int szam = 0;
  3. const int reed = 10;
  4. const int rele = 11;
  5.  
  6. void setup() {
  7. pinMode(reed, INPUT);
  8. pinMode(rele, OUTPUT);
  9.  
  10. }
  11.  
  12. void loop() {
  13.  
  14. if (digitalRead(reed) == HIGH && valtozo == 0) {       // reed zárva
  15.       valtozo = 1;
  16.       szam++;                     // szám + 1  
  17.      if (szam == 55) {            // általad megadott érték
  18.         digitalWrite(rele, HIGH);
  19.         delay (5000);             // 5 másodperc - relé behuzási ideje
  20.         digitalWrite(rele, LOW);
  21.         szam = 0;
  22.         }
  23.      }
  24.  
  25.  if (digitalRead(reed) == LOW && valtozo == 1) {     //reed nyitva
  26.     valtozo = 0;
  27.  }
  28. }
(#) elektro95 válasza kegyetlen19 hozzászólására (») Márc 15, 2018 /
 
köszi szépen
még csak 2 hete foglalkozom a programozással vagyis még ismerkedem vele így még nehéz
(#) tbarath válasza elektro95 hozzászólására (») Márc 15, 2018 / 1
 
Azt javaslom, hogy ha foglalkozni akarsz ilyesmivel, akkor iratkozz fel a tavir.hu 60 napos arduino tanfolyamára, és persze kezdj is el foglalkozni ilyesmikkel. A feladat amit kértél kb. ujjgyakorlat, ha az alapokkal tisztában vagy.
És ha elakadsz, akkor kérdezz, megpróbálunk segíteni
(#) jeges hozzászólása Márc 16, 2018 /
 
kegyetlen19

240 oldaltol....
Bővebben: Link
(#) jeges hozzászólása Márc 16, 2018 / 1
 
elektro95

Keres rá!
Harsanyi_Reka_Juhasz_Marton_Andras--Fizikai_szamitastechnika__elektronikai_alapok_es_Arduino_programozas....
(#) jeges válasza jeges hozzászólására (») Márc 16, 2018 / 1
 
Tanitható modulok.....

433mhz RF Receiver Learning Code Decoder Module 433 mhz Wireless 4 Channel output Diy kit For Remote Control 1527 encoding
Bővebben: Link

Bővebben: Link
(#) kegyetlen19 válasza jeges hozzászólására (») Márc 16, 2018 /
 
Köszi, belenézek.
(#) mechanika hozzászólása Márc 16, 2018 /
 
Sziasztok!

Arduino eepromját használom. (328P-PU)
Ha minden igaz 100.000 írást garantál az adatlap.
Ezt hogyan kell értelmezni címenként külön, vagy ahányszor kiadom írás parancsot?

Segítségeteket előre is köszi!
(#) HiMen hozzászólása Márc 16, 2018 /
 
Egy arduino mega 2560 panel az alábbi programmal ha az 1 láb 0-ra áll mennyi idő alatt reagál és állítja a 2 lábat 1 -re? pl.:

do {
if ( digitalRead(1) == LOW)
digitalWrite(2, HIGH);
} while(digitalRead(3));

Elvileg a processzor 15477 utasítást hajt végre másodpercenkét. De nem tudom a magasszintű utasítások mögött hány gépikódu áll. Ezért kérdezném okosabbaktól.
(#) Feri007 válasza HiMen hozzászólására (») Márc 16, 2018 / 1
 
A egy digitalWrite 54 gépi utasítás. Lusta vagyok kiszámolni, hogy az mennyi órajelciklus.
Részletek: https://www.peterbeard.co/blog/post/why-is-arduino-digit...-slow/
(#) kapu48 válasza HiMen hozzászólására (») Márc 16, 2018 / 1
 
404. oldaltól megtalálod:
Bővebben: Link

De kb. 3us-onként beesik 1 timer megszakítás!
(#) tbarath válasza HiMen hozzászólására (») Márc 16, 2018 / 1
 
Akassz rá egy szkópot és mérd meg, az a biztos.
Ha a kódra vagy kiváncsi, akkor megnézheted a fordított .hex file-t is, valahova a TEMP-ne rakja az IDE. Egyébként nem csak az utasítások száma számít, néha várni kell egy mérés eredményére (az analogRead biztosan ilyen, a digitet nem tudom).
Ha gyors kódot akarsz, akkor felejtsd el a digitalRead/Write utasítást, és direkt portmanipulációval dolgozz. Olvasnivalók:
Bővebben: Link
Bővebben: Link
Bővebben: Link
A hozzászólás módosítva: Márc 16, 2018
(#) mateatek válasza HiMen hozzászólására (») Márc 16, 2018 / 1
 
Régebben kipróbáltam azt, hogy regiszter szinten magasra állítottam egy lábat, majd alacsonyra, és így tovább. 2 MHz fölött mértem a lábon a frekit.
(#) HiMen válasza mateatek hozzászólására (») Márc 16, 2018 /
 
Az igen.... 2 millió 1/0 másodpercenként. Most már értem miért kellett áttérnem arduinora parallax Basic Stamp -ről...
(#) vargham válasza Feri007 hozzászólására (») Márc 17, 2018 /
 
Ez a link nem jó.
(#) nedudgi válasza vargham hozzászólására (») Márc 17, 2018 /
 
(#) vargham válasza HiMen hozzászólására (») Márc 17, 2018 /
 
Írtam egy rövid tesztet.
Ha sok egyéb tevékenység mellett kell reagálni, akkor biztosan a megszakítás a leggyorsabb. Ha viszont csak ezzel kell foglalkozni, akkor a pollozás a jobb. Az is biztos, hogy Arduino kódot használva lassabb lesz.
  1. // AVR pin toggle:    0.44 us
  2. //
  3. // Arduino Polling:   6-11 us
  4. // Arduino Interrupt: 11.7 us
  5. // AVR Polling:       0.4 - 0.8 us
  6. // AVR Interrupt:     1.4 us


Az eredmények úgy jöttek ki, hogy logikai analizátorral mértem 5-5 db idő különbséget a két esemény, vagyis a bemenő jel változása és a kimenő jel változása között.
Interrupt esetén annyira kicsi volt a különbség a mérések között, hogy átlagoltam. Polling esetén annyira nagy volt a szórás, hogy inkább ide írtam a minimumot és a maximumot.
A hozzászólás módosítva: Márc 17, 2018
Következő: »»   437 / 852
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