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   681 / 839
(#) kapu48 válasza sargarigo hozzászólására (») Feb 27, 2021 / 1
 
Én nem ajánlom, de írtam, hogy lehet kísérletezni.

Vagy lehet építeni átkapcsolóval és SN7400 kapukkal pergésmentesítést:
Bővebben: Link
Keresd a Címszót:
Switch De-Bounce Circuit
(#) Kera_Will válasza sargarigo hozzászólására (») Feb 28, 2021 / 1
 
Idézet:
„Ettől még az optó persze hogy jobb lenne, de a kérdező nem ipari berendezést épít,”

Ipari vagy nem ? Mindegy, a slendriánságot a uC portja nem fogja megköszönni ha netalán mégis több feszültség kerül rá.Azon kívül a hosszú lengedező drót se ideális mint antenna, zajt fog összeszedni. Ezért az optócsatolő a uC paneljére kerüljön ne a motorhoz.
Opto csatolónak a ledjén már áramnak is kell folynia , nem csak egy kósza indukált feszültség tüske billenti a portot. Mechanikai kopás sincs. 24V-ra előtét ellenállást kell számolni ,avagy SSR-ek bemenetét másolva akár 3-30 V közti áramgenerátoros meghajtást a led elé rakni.
(#) Lamprologus válasza BarnaPili hozzászólására (») Feb 28, 2021 / 1
 
Fogsz a kezedbe egy stoppert, és azzal megméred!
Nincs prellezés, nem kell programozni, Nem kell áramkört építeni ... !
(#) sargarigo válasza Kera_Will hozzászólására (») Feb 28, 2021 /
 
De most miért nem jó ha rátesz a motorra egy relét párhuzamosan, annak a kontaktja meg kapcsolja a uC portját a testjére? Szerintem ennél egyszerűbb nem létezik!
(#) Kera_Will válasza sargarigo hozzászólására (») Márc 1, 2021 /
 
Mechanikusan kopik ... optoban nincs mozgo alkatresz.
(#) sargarigo válasza Kera_Will hozzászólására (») Márc 1, 2021 /
 
Idézet:
„Egy 24V-os motor üzemidejét kellene megmérnem.”

Ebből nekem nem egy astabil multivibrátor jön le hogy legyen ideje elkopni. Ráadásul fiókból dolgozna. De részemről kiszálltam.
(#) usane válasza Kera_Will hozzászólására (») Márc 1, 2021 /
 
Már ne haragudj, de az én értelmezésem szerint hibakeresésről van szó.
Idézet:
„Mivel 2 gép van, és nem dolgoznak egyformán, de a munkahengerek egyformák, csak az időzítés lehet a gond. Ezt kellene kizárnom/bizonyítanom.”

Ehhez minek atomreaktort építeni? Ha mégis folyamatos üzemre szeretné megalkotni akkor nem fogalmazott érthetően és részben igazad van, de abban nincs, hogy lehurrogod a másikat a tények ismerete nélkül.
(#) bodgabo hozzászólása Márc 1, 2021 /
 
Sziasztok!
Viszonylag nagy sebességű (kb. 1000Hz-es) impulzus sorozatot kellene megszámolnom. Konkrétan az a feladat, hogy egy impulzus kimenetű áramlásmérővel kellene pontos mennyiségeket adagolni.
Az áramlásmérő (elvileg) frissen lett kalibrálva, 1000 imp/liter a kimenete. Az adagolást vezérő PLC-n beállított 5liter esetén a bemért adagok között véletlen szerűen 0...200ml közötti eltérések adódnak pozitív és negatív irányokba is.
Sajnos a PLC-be nem nyúlhatok bele, de az impulzus vezetéken ha meg tudnám számolni az impulzusokat, akkor kiderülne hogy az áramlásmérő vagy a PLC okozza-e a hibát.
(#) Josi777 válasza BarnaPili hozzászólására (») Márc 1, 2021 /
 
A Capture témakörben kutakodj. Létezik konkrét lib is ebben a témában Arduinora: https://github.com/SMFSW/CaptureTimer
(#) Josi777 válasza bodgabo hozzászólására (») Márc 1, 2021 /
 
Pulse Counter-t tudnál használni. Megszakítással egyszerűen megoldható, itt van rá egy példa, Google keresésből: https://gist.github.com/omsai/2363047 és egy videó, ami elmagyarázza a működését.
(#) KoblogPerGyok válasza Josi777 hozzászólására (») Márc 1, 2021 /
 
Szerintem hibás a kód.

Nem a legjobb szerintem. Volatile nincs az int előtt, illetve a delay() sem tetszik benne. Az if ...>0. minek?

De 2 percet néztem csak, lehet tévedek.
(#) wbt válasza bodgabo hozzászólására (») Márc 1, 2021 /
 
Igen, jól írják előttem szólók, csinálsz egy 10 vagy 1Hz-es megszakítást, Timert kiolvasod, utána nullázod és így tovább (vagy, ha pontos 5 litered van, akkor timer=0 és megszámolod, kiírod kijelzőre). ..és itt van egy kérdés, hogy folyamatosan tudsz etalon átfolyást adni neki, vagy "kancsóval öntözgeted" ? Mert ennyi eltérés gyorsulás-lassulás, minimális mérhető átfolyási mennyiség miatt lazán összejöhet!!! Ha jól számolom, ez 4% hiba.
(csak úgy kérdeztem...)
(#) sargarigo válasza bodgabo hozzászólására (») Márc 1, 2021 /
 
Hű! Ez jó feladat! Valamikor én is kínlódtam ilyennel, és nem lett jó!
Én úgy próbáltam ugyanezt, hogy egy konyhai mérlegből alakítottam át a mérőkét. Építettem hozzá egy kis vezérlőt, ami terveim szerint bolondbiztossá tette volna a működést. A terv az volt, hogy emberünk odateszi a tálcára az etalont, azt betárázza, és mehet az üres köcsög a helyére. Indító gombot megnyom, és amikor eléri a kívánt tömeget, akkor magától leáll. Az elmélet ez lett volna, de a gyakorlat az volt amit te is tapasztalsz. A rendszer tehetetlensége közbeszólt. Pedig én port szállítottam orsóval, amit meg léptetőmotor hajtott. Mégis, mivel nem volt egyenletes az anyag sűrűsége (levegő kerül bele, futóhomokká válik), a nyomása is ugrál, össze-vissza változott a kitöltött mennyiség. Ha valaki erre tud használható megoldást, az engem is érdekel


Esetleg a rendszer nyomását meg lehetne növelni egy elektromos szeleppel. Így a mérőkerék nem tud ide-oda imbolyogni, hiszen a folyadék megtartja.
(#) proba válasza sargarigo hozzászólására (») Márc 1, 2021 /
 
Valamely jobb mezőgazdasági mérlegen több szálon fut a töltő anyag. A pontos érték elérése előtt a még ki nem töltött anyag súlyát is méri minden szálon, és a hiányzó mennyiségnek megfelelő részből fejezi be a ládát. ( mondjuk ott a répa súlyában elég nagy szórás lehet, és mellékesen darabáru. )
(#) Kera_Will válasza usane hozzászólására (») Márc 1, 2021 /
 
Idézet:
„de abban nincs, hogy lehurrogod a másikat a tények ismerete nélkül.”

A tények magukért beszélnek.
24 Voltos villanymotor , max 5V-ot elviselő bemenet uC környezetben.
Alap bemeneti periféria szint illesztési probléma.
A uC portja ne haljon bele a külvilágból érkező jelszintbe, ezen kívül az állapot jelzést adó elem se legyen kopó alkatrész.
2-3 Optocsatolót akár egy döglött egérből is kitermelhetsz(na jó dobozolni is kell).
(#) sargarigo válasza proba hozzászólására (») Márc 1, 2021 /
 
Hát igen, de ez már jó nagy gép lesz! Amivel én szembesültem, az egy asztalon elférő masina volt (na jó, annyira nem volt kicsi asztal, hegeszteni kellett )
(#) Josi777 válasza KoblogPerGyok hozzászólására (») Márc 1, 2021 /
 
Nem próbáltam, csak mutattam, hogy milyen irányban kellene kutakodni.
(#) BarnaPili válasza Lamprologus hozzászólására (») Márc 1, 2021 /
 
Ezen túl vagyok. De sajnos nem ad megfelelő eredményt. De köszi a tippet!
(#) bodgabo válasza wbt hozzászólására (») Márc 1, 2021 /
 
Egyelőre annyi lenne a feladat, hogy 5000 impulzust meg kellene számolni, ami kb. 4-6mp alatt zajlik le. Ennyi idő, amíg feltölt egy 5L dobozos almalevet.
Szivattyú nyomja egy tartályból, és a töltő fejen van egy gyors működésű szelep, amit szintén a PLC vezérel.
Valamikor jól működött a készülék, 10ml (0,2%) megengedett hibát tudta tartani. Most azt kellene kiderítenem, hogy a PLC számolja-e rosszul az impulzusokat, vagy a nemrég kalibrált áramlásmérő mér rosszul. Sajnos a hiba sem konstans, random módon hol többet, hol kevesebbet adagol. Van amikor közel 200ml az eltérés, ami hatósági ellenőrzés során komoly büntetést jelent (főleg ha kevesebb, mint az elvárt mennyiség).
(#) sdrlab válasza bodgabo hozzászólására (») Márc 1, 2021 / 4
 
Fordítsd meg a dolgot! Generálj 5000 impulzust az arduinoval..., ez gyerekjáték. Ezt add be a PLC-nek, és máris kiderül, jól számol e?!
(#) GPeti1977 hozzászólása Márc 5, 2021 /
 
Van githubon egy félig sem megírt drájver A4963 IC-hez, SPI módban vezérelhető és brushless motort forgat.
Bővebben: GitHub
  1. // register run bits
  2. #define RUN 0
  3. #define DIR 1
  4. #define BRK 2
  5. #define RSC 3
  6. #define DI0 4
  7. #define DI1 5
  8. #define DI2 6
  9. #define DI3 7
  10. #define DI4 8
  11. #define ESF 9
  12. #define CM0 10
  13. #define CM1 11
  14.  
  15. // run mode constants
  16. #define RUN_ENABLE (1<<RUN)
  17. #define DIR_BACKWARD (1<<DIR)
  18. #define BRAKE_ENABLE (1<<BRK)
  19. #define RESTART_ENABLE (1<<RSC)
  20. #define STOP_ON_FAIL (1<<ESF)
  21. #define CONTROL_OPEN_SPEED_INDIRECT 0
  22. #define CONTROL_OPEN_SPEED_DIRECT (1<<CM0)
  23. #define CONTROL_CLOSED_CURRENT (1<<CM1)
  24. #define CONTROL_CLOSED_SPEED ((1<<CM1)|(1<<CM0))

Hogyan tudnám beírni hogy legyen
#define RUN_DISABLE (?)
#define DIR_FORWARD (?)
a kérdőjel helyére?
(#) mnyugger válasza GPeti1977 hozzászólására (») Márc 5, 2021 /
 
Szerintem:

#define RUN_DISABLE 1
#define DIR_FORWARD 1

majd használatkor

RUN_DISABLE 0
RUN_DISABLE 1
DIR_FORWARD 0
DIR_FORWARD 1

Amúgy melyik? Mert van 6 db.
A hozzászólás módosítva: Márc 5, 2021
(#) GPeti1977 válasza mnyugger hozzászólására (») Márc 5, 2021 /
 
Félig az is készen van de nem működik, nem változik a bit 0 ra:

  1. void loop(){
  2.   //A4963Conf.runningDirection(FORWARD);
  3.  
  4.   A4963Conf.run();
  5.   A4963.setPWM(pwm);
  6.   Serial.println(RUN_ENABLE);
  7.   delay(1000);
  8.   A4963Conf.stop();
  9.   A4963.write(REG_RUN, RUN_ENABLE );
  10.   Serial.println(RUN_ENABLE);
  11.   delay(1000);
  12.   }

A függvény:
  1. void A4963Config::run()
  2. {
  3.         reg_run |= RUN_ENABLE;
  4. }
  5.  
  6. void A4963Config::stop()
  7. {
  8.         reg_run &= ~RUN_ENABLE;
  9. }
  10.  
  11. // run mode constants
  12. #define RUN_ENABLE (1<<RUN)

Így biztos nem megy, csak akkor válaszolj ha tudod a választ.
A hozzászólás módosítva: Márc 5, 2021
(#) moltam válasza GPeti1977 hozzászólására (») Márc 5, 2021 / 1
 
  1. Serial.println(RUN_ENABLE);

Ennek így értelme nincs. Egy előre #define olt érték soha nem fog neked megváltozni, még a fordítási időben behelyettesíti a RUN_ENABLE helyére az 1<<RUN értéket, a RUN helyére meg nullát, így az 1<<0 értéket ami 1. Visszaolvasni azt a bitet így nem lehet.
  1. A4963.write(REG_RUN, RUN_ENABLE );

Itt pedig a REG_RUN regisztert egy az egyben felülírod egy darab egyessel, a nulladik bit egy lesz a többi nulla. Vagy összefűzöd bitműveletekkel amit ki akarsz löketni, vagy használod erre a már megírt függvényeket, de ez így nagyon nem jó.
(#) vargham válasza GPeti1977 hozzászólására (») Márc 5, 2021 /
 
Az eszköz adatlapját olvastad?
(#) sdrlab válasza GPeti1977 hozzászólására (») Márc 5, 2021 /
 
Pedig a run/stop függvények jól vannak megírva!
(#) GPeti1977 válasza sdrlab hozzászólására (») Márc 5, 2021 /
 
Mindegy majd folytatom, csak annyi működik eredetileg hogy egy motort tud forgatni egy irányba.
(#) kapu48 válasza GPeti1977 hozzászólására (») Márc 5, 2021 /
 
Esetleg:
  1. #define RUN_DISABLE (reg_run&=~(RUN_ENABLE))
  2. #define DIR_FORWARD (reg_run&=~(DIR_BACKWARD))
  3.  
  4. RUN_DISABLE;
  5.  
  6. vagy:
  7. #define RUN_DISABLE &=~(RUN_ENABLE)
  8. #define DIR_FORWARD &=~(DIR_BACKWARD)
  9.  
  10. reg_run RUN_DISABLE;

???
A hozzászólás módosítva: Márc 5, 2021
(#) matyas98 hozzászólása Márc 7, 2021 /
 
Sziasztok!

Valahogy létre szeretnék hozni egy alacsony frekvenciás PWM jelet arduino segítségével. Az alacsony azt jelentené, hogy kb 2-5s lenne egy periódusideje. Lenne valakinek bármi ötlete, hogy hogyan tudnám megoldani delayek használata nélkül? Olvastam valahol, hogy a Timer egyet valahogyan le lehetne lassítani, ennek köszönhetően nem kellene delayeket használnom és könnyebben megvalósíthatóak lennének a többi funkciók/kiolvasások futás közben. Hatalmas segítség lenne ha valaki elmagyarázná vagy esetleg lenne valami jó ötlete.
(#) sargarigo válasza matyas98 hozzászólására (») Márc 7, 2021 / 1
 
Szerintem legegyszerűbben úgy, hogy a timerrel egy számlálót léptetsz, és amikor elérted a kívánt értéket, akkor triggerelsz. A számláló gyakorlatilag a timer idejét szorozza.
Következő: »»   681 / 839
Bejelentkezés

Belépés

Hirdetés
Lapoda.hu     XDT.hu     HEStore.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