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   747 / 839
(#) asch válasza Régi motoros hozzászólására (») Okt 13, 2022 / 1
 
Adatlap szerint:
7.5 Low-frequency Crystal Oscillator ... 32.768kHz ...
7.6 Calibrated Internal RC Oscillator ... By default, the internal RC oscillator provides an approximate 8MHz clock. ...

Tehát több féle belső órát is választhatsz és ezekből külöböző osztó konfigurációkkal sokféle órajel ki tud jönni. A hátránya ennek annyi, hogy elvben nem lehet vele stabil UART kapcsolatot csinálni automatikus óra kalibráció nélkül, de a gyakorlatban ez is működni szokott, egyszer kell az adott példányt kalibrálni és ha nem lesz extrém hőmérséklet, akkor működni fog. (Hobbi szinten elég, ha nagyon megbízható dolgot kell csinálni akkor nem.)

Nem olvastam tovább, de hasonlóval már dolgoztam és általában PLL is van, plusz az internal RC hangolható is, és van amin fel lehet menni 20MHz-ig is. Erre a feladatra lehet, hogy elegendő a low freq oszcillátor és akkor nagyon keveset fog fogyasztani.

A 10 LED-hez nem feltétlenül kell 10 láb, például Charlieplexinggel sokkal kevesebb is elegendő, de vannak egyszerűbb kapcsolások is, amikkel legalább le lehet felezni a lábak számát.

Arra érdemes vigyázni, hogy a programozáshoz a MISO/MOSI/CLK és reset lábakat szabadon kell hagyni, de legalábbis olyan dolgot kell rákötni, ami nem zavarja a programozást. Például a LED kimenet szerintem jó, az nem zavarja, tehát így végülis használható az összes láb (RESET-et kivéve). A RESET is használhatóvá tehető, de akkor utána csak 12V-os programozóval hozható programozó módba úgy tudom. Ilyet még sosem csináltam, nyilván nem ördöngősség, de nekem eddig nem érte meg ennyire spórolni.

Idő alapon eltérő funkció helyett én meggondolnám hogy több gomb legyen. Ha ritkán használod az eszközt, akkor el fogod felejteni, hogy mire mit programoztál, a legjobb ha az eszköz lehetővé teszi, hogy felfedezd hogyan kell használni. Emiatt én akár OLED képernyőt is tennék rá, persze akkor már sokkal komplexebb lesz minden, de annak elég 2-4 láb attól függően hogy SPI vagy I2C és hogy akarod-e tudni áramtalanítani mikor nincs kijelzés.
A hozzászólás módosítva: Okt 13, 2022
(#) asch válasza Rober_4 hozzászólására (») Okt 13, 2022 / 1
 
Az I2C-t többnyire hardwerrel valósítjuk meg (AVR világvan TWI-nek hívják, ami _nagyjából_ megvalósítja a protokollt), ezért ott a visszajelzés adott, hogy megtörténik. A probléma megoldása az, hogy az I2C hardvernek az adatokat interruptból adjuk, így a főprogram futhat közben tovább, nem kell várakoznia (nyilván az interruptok kicsit lassítják, de nem nagyon és a kritikus részek alatt ki lehet kapcsolni az interruptokat). A main loop-ból pedig le lehet kérdezni hogy éppen hol tart a képernyő frissítés, befejeződött-e már, lehet-e az újat készíteni.

OLED kijelzőhöz csináltam ilyen megoldást, és ha jól emlékszem kb 20FPS-sel pörgő számlálót tudtam csinálni vele úgy, hogy alig használ erőforrást, közben real-time program is futhat. Van ilyenből SPI és I2C is, mindkettőhöz van megoldásom ezekhez: https://www.hestore.hu/search.php?q=D13-12864

Itt van egy példa projekt, ami ilyet tud SPI-vel: https://github.com/rizsi/playing_with_MCUs/blob/master/D13-12864-SP...PI.ino (Ugye papíron Arduino projekt, de csak AVR-rel működik. Van egy saját rajzolós libem, azt használja, hogy a memóriába rajzoljon, amit utána az OLED-nek kiküld.)
(#) Régi motoros válasza asch hozzászólására (») Okt 13, 2022 /
 
Itt nem is szükséges olyan pontos órajel, ha szükséges akkor meg lehet multiplexelve is.
A lényeg, hogy minél kisebb helyen, a legkevesebb alkatrészből megoldható legyen.
Ha jól rémlik, a RESET MOSI MISO láb az lehet ki vagy bemenet is, az SPI programozás az úgyis megy nem?
(#) Kera_Will válasza b_zoli hozzászólására (») Okt 13, 2022 /
 
Hát akkor neked lehet , hogy 1 REDPITAYA vagy hasonló SDR adóvevőpanelka kell.
(nem olcsó )
Azzal tudsz rögzíteni teljes RF spectrumot és azt elvileg ki is tudja sugározni.
Azt a kis szegmensét amit a távirányító adó sávszélességében.
+/- pár 10 kHz.
A hozzászólás módosítva: Okt 13, 2022
(#) asch válasza Régi motoros hozzászólására (») Okt 13, 2022 / 2
 
> A lényeg, hogy minél kisebb helyen, a legkevesebb alkatrészből megoldható legyen.
Itt például le van rajzolva egy kapcsolás, amiben 3 lábról meg lehet hajtani 6 LED-et: https://www.eeweb.com/more-leds-with-less-pins/ 3 lábat és 3 ellenállást is megspórolsz ezzel a módszerrel. A program egy kicsit komplexebb lesz, és nem tudod egyszerre égetni a LED-eket csak felváltva. Ez utóbbi direkt jó, hogy lekorlátozza a csipen átmenő áramot, ami sok LED-del könnyen túl sok lehet. A 10 LED még pont nem, mert lábanként 20mA és a csipre összesen 200mA szokott lenni a limit (emlékezetből mondom, lásd adatlap), de 11 LED-del már át lehet lépni a csipre adott limitet is.

Charlieplexing az általános neve, ezen a néven rengeteg kapcsolást lehet találni: https://en.wikipedia.org/wiki/Charlieplexing Van itt egy táblázat, ez mutatja, hogy elvben hány LED-et lehet meghajtani hány lábbal: n lábbal n2 − n LED-et.

> Ha jól rémlik, a RESET MOSI MISO láb az lehet ki vagy bemenet is, az SPI programozás az úgyis megy nem
Az SPI programozás úgy működik, hogy a programozó ad egy RESET-et és az után nagyon gyorsan a megfelelő jeleket az SPI-n, így hozza programozó módba a processzort (emlékezetből írom, tévedhetek). A lényeg, hogy a RESET-nek reszet módban kell lennie, hogy működhessen ez, tehát nem használhatod sem inputnak sem outputnak. Kivéve ha 12V-os programozód van, de akkor meg a RESET-re kötött áramkört kell 12V toleránsra megcsinálni.

A MISO MOSI CLK lábak esetén annyi az elvárás, hogy az áramkör ne rontsa el a kommunikációt (és a programozás se rontsa el az áramkört!), tehát ha bemenetnek használod ami meghajtaná rendes üzemmódban az ne hajtsa meg programozáskor. A LED-ek csak egy keveset ráterhelnek, nem zavarják a programozást. Egy nyomógomb szintén nem zavar, ha nem nyomásra zárná rövidre a lábat és nem nyomod meg miközben programozol.

Néhány tipikus hiba, ami el tudja rontani az áramkörben programozást (In Circuit Programming):
Csak 5V-os programozód van, de az áramkörödet 3.3V-ra tervezted ami nem 5V toleráns valami komponens miatt.
A nem használt lábakat tápra vagy 0-ra kötötted, és véletlenül a programozó lábakat is. Esetleg nagy értékű kondenzátor van az egyik SPI lábon.
Az SPI-re kötött slave hardver a programozás alatt felébred és ő is belebeszél.

Én egyébként nyomkövetés/debuggolás céljára szeretem az UART RX/TX lábakat is szabadon hagyni. Mindig megbánom ha későn kapok észbe és már le van foglalva más célra.
(#) b_zoli válasza Kera_Will hozzászólására (») Okt 14, 2022 /
 
Hű! Ez tényleg nem olcsó!
(#) Lamprologus válasza Régi motoros hozzászólására (») Okt 14, 2022 / 3
 
Idézet:

Ha már itt tartunk, a különböző hosszúságú gombnyomásra különböző funkciót megvalósító projektet tudtok nekem mutatni? Teszem fel rövid gombnyommás vált a vonal és pont kijelzés közt,
hosszabb gombnyomás pedig ki/be kapcsolja a kijelzőt?”


Ha lenyomsz és nyomva tartod a gombot, akkor x időnként ( pl 100ms) növelsz egy számlálót.
A gomb felengedésekor megnézed a válltozó értékét és aszerint eldöntöd mit csinálsz.

Vagy millis() függvénnyel megnézed mikor nyomtad le és mikor dengedted fel a gombot, a kettő különbsége alapján döntesz.
(#) Josi777 válasza Lamprologus hozzászólására (») Okt 14, 2022 / 1
 
Példaprogram 3 gombra, rövid és hosszú megnyomás megkülönböztetve, egymástól teljesen független működés.
Rövid/hosszú gombnyomás példa
(#) Kera_Will válasza b_zoli hozzászólására (») Okt 14, 2022 /
 
Másik opció esetleg, hogy bármilyen ,ócsó sdr vevővel 10-20$ vagy kölcsönkérve , rögzíteni a kiadott modulációt, audioban I/Q 2 csatornán, wavban avagy ez amolyan "RAW szerű nyers I/Q" audio jel lesz fájlba rakva.
Majd építeni adó oldalra egy ilyen I/Q modulátort pár mW azon a frekin ahol a vevők fülelnek.(SI5351 vagy hasonló PLL ).2 I/Q audio bemenete és 2 I/Q RF bemenete lesz kimeneten meg ott a előzőleg vett nagyfrekis spectrum amit kiadott a meglévő távirányító.
Ez töredéke a redpitaya és hasonló panelek árának.
A RAW audiót pl egy wav filet lejátszó is kitudja küldeni.
(#) Kera_Will válasza Kera_Will hozzászólására (») Okt 14, 2022 /
 
Vagy csak egy olyan saw rezonator kell ami az adott fix frekin dolgozik és a vett, demodulált , rögzített audio mintával meg modulálni jobb esetben csak OOK szerű , impulzusos AM moduláció történik
(#) Régi motoros válasza asch hozzászólására (») Okt 14, 2022 /
 
Igen már kerestem pár csárliplexinget, kettőt ellenőriztem is, és meg is eszi az Atiny44,
úgyhogy ezzel a módszerrel lesz elkészítve. Úgy marad pár láb akármire még...
(#) Régi motoros válasza Josi777 hozzászólására (») Okt 14, 2022 /
 
Az jó példa, sok sok sorral... Azt hiszem, ezt a megoldást csak végszükség esetén használom fel.
Ennél még egy sima analóg billentyűzet megvalósítása is sokkal könnyebb...
(#) Rober_4 válasza Josi777 hozzászólására (») Okt 14, 2022 /
 
Köszönöm a segítséget!
Viszont, ha nem minden karakternél lenne egy ilyen adok-kapok, akkor már nyerhetnék időt. Megpróbálok valahogy utánanézni ennek. Lehet a librarit kéne átírnom. Szétnézek a kódban...
A hozzászólás módosítva: Okt 14, 2022
(#) Rober_4 válasza asch hozzászólására (») Okt 14, 2022 /
 
Köszi megnézem! Lehet ez megoldja!
(#) asch válasza Rober_4 hozzászólására (») Okt 14, 2022 / 1
 
Itt van a TWI (I2C) megoldás formailag Arduino libként, ami annyiból nem teljesen Arduino, hogy csak ATMega328-on működik meg hasonló ATMega-ákon. https://github.com/rizsi/playing_with_MCUs/tree/master/libraries Már nem emlékszem minden részletre hogy hogyan működött, de van egy TWI lib, ami a TWI felett ad egy absztrakciót, és erre épül ez, ami az OLED-et meghajtja: https://github.com/rizsi/playing_with_MCUs/blob/master/libraries/ri...ED.cpp De sajnos ez egy rendkívül kaotikus lib, mert benne vannak a blokkoló függvények is, meg a nem blokkoló változat is egyetlen forrás fájlban. Az oledData függvény tölti fel a képet az OLED-re, és a TWI libet a twiBulkData(fillCommand); paranccsal használja, ami úgy működik, hogy a fillCommand-ot hívogatja, hogy adja a következő küldendő adatot, a fillCommand pedig végigmegy egy állapotgépen. Még a commentek sincsenek szinkronban a kóddal. Szóval nem a legjobban követhető példa, de legalább garantáltan működőképes kód, mert egy kütyümben ez ketyeg évek óta.

A fillCommand állapotgépes megvalósítást ki lehet koppintani ebből a példából, ha nem pont ilyen kijelződ van.
A hozzászólás módosítva: Okt 14, 2022
(#) Rober_4 válasza asch hozzászólására (») Okt 14, 2022 /
 
Hát, hogy ezt így meg tudom-e csinálni, az majd kiderül. Mindenesetre ezen a nyomvonalon indulok el, köszönöm a segítséget!
(#) Josi777 válasza Régi motoros hozzászólására (») Okt 14, 2022 /
 
Pedig tök egyszerű és könnyen áttekinthető, csupa egyszerű megoldás, hogy a kezdők is megértsék, kimenetek kezelésével egybekötve, hogy lehessen látni is, hogy mi történik. Gondoltam 1 gombhoz tartozó kódot csak sikerül kiemelni belőle. Megcsináljam neked?
(#) b_zoli válasza Kera_Will hozzászólására (») Okt 14, 2022 /
 
Utánajárok, köszi!
(#) berez hozzászólása Okt 15, 2022 /
 
Sziasztok ,régebben volt ez a kód, de ez 2 szegmenses kijelzőre van:
  1. #include "SevSeg.h"
  2.     SevSeg sevseg;
  3.      
  4.     byte numDigits = 2;
  5.     byte digitPins[] = {10, 11,};
  6.     byte segmentPins[] = {13, 8, 7, 6, 5, 2, 3, 9};// A,B,C,D,.....
  7.     bool resistorsOnSegments = true;
  8.     bool updateWithDelaysIn = false;
  9.     byte hardwareConfig = COMMON_ANODE;
  10.     bool updateWithDelays = false;
  11.     bool leadingZeros = true;
  12.     bool disableDecPoint = true;
  13.     byte button = 2;
  14.     unsigned long startTime;
  15.     unsigned long endTime;
  16.     unsigned long duration;
  17.     byte timerRunning;
  18.      
  19.         void setup() {
  20.       sevseg.begin(hardwareConfig, numDigits, digitPins, segmentPins, resistorsOnSegments);
  21.       sevseg.setBrightness(90);
  22.       pinMode (button, INPUT_PULLUP);
  23.       Serial.begin(9600);
  24.       }
  25.          void loop()
  26.      
  27.       {
  28.             if (timerRunning == 0 && digitalRead(button) == LOW) // button pressed & timer not running already
  29.             {
  30.             startTime = millis();
  31.             timerRunning = 1;
  32.             }
  33.       {
  34.             if (timerRunning == 1 && digitalRead(button) == HIGH) // timer running, button released
  35.             {
  36.              endTime = millis();
  37.              timerRunning = 0;
  38.      
  39.           duration = endTime - startTime;
  40.           int speed = (4000 / duration);
  41.           Serial.print ("sebesség: "); Serial.print(speed); Serial.print (" időtartam   "); Serial.println (duration);
  42.           sevseg.setNumber(speed );
  43.           }
  44.               if (millis() - startTime > 2000)
  45.       sevseg.setNumber(0);
  46.  
  47.           sevseg.refreshDisplay();
  48.           }
  49.         }

Működik is ,csak most u.ezzel TM1637 kijelzőre kéne átalakítani(amin csak 4 kivezetés van
Tudna valaki segíteni az átírásban?
Köszi
A hozzászólás módosítva: Okt 17, 2022
Moderátor által szerkesztve
(#) berez válasza berez hozzászólására (») Okt 15, 2022 /
 
Egész nap keresestem egy Arduino stoppert de csak 1602- kijelzőre találtam,ha tud valaki
1637-re kérem ossza meg
(#) b_zoli válasza Kera_Will hozzászólására (») Okt 16, 2022 /
 
Hát most ott járok egyenlőre, hogy oszcilloscop-on megmértem a kezdő (szinkronizáló) és logikai 1, és nullák alakját, majd egy kimenetet kapcsolgatok az ennek megfelelő időkkel. Nem a leg elegánsabb, de működik. Később megpróbálok valamivel szofisztikáltabb megoldást keresni.
(#) Kera_Will válasza b_zoli hozzászólására (») Okt 16, 2022 /
 
Amivel vetted és amiről szkópra varázsoltad a demodulált négyszögeket , ugyanúgy akár wav fájlba is rögzítheted, persze ha belefér a hangkari mintavételi sebességébe az impulzusok "alakhűbb" rögzítése. Azt lejátszhatod vissza,feltéve ha kényelmesen tudsz szkópról pulzusok hosszát saccolni akkor jó. De lehet egy audio dsp program többet tudna segíteni ebben is.(pl.:audacity)
(#) Elektro.on válasza berez hozzászólására (») Okt 17, 2022 /
 
Szia!
Itt nézz körül : https://github.com/bxparks/AceSegment
A hozzászólás módosítva: Okt 17, 2022
(#) Vacok hozzászólása Okt 17, 2022 / 1
 
Sziasztok!
Arra lenne szükségem, hogy egy mikrovezérlő érzékelje a 230V-os hálózati feszültség meglétét egy kapcsolt kábelen. Az egész kapcsolás hálózati feszültség alatt lesz, a tápot egy trafó nélküli tápból fogja kapni, így a 230V figyelését sem kell leválasztva megoldani. Az alább skiccelt kapcsolás megfelelő?

circuit.png
    
(#) Elektro.on válasza Vacok hozzászólására (») Okt 17, 2022 /
 
Ez a kapcsolás másodpercenként 50 szer húzza le a GPIO -t.
Én leginkább leválasztanám a hálózatról a bemenetet, mert ha valami baleset folytán elszáll a tranzisztor, viszi magával a vezérlőt is.
Ezenkívül én MOSFET-e használnék, és lezáráshoz egy nagyobb ellenállásal lehúznám a gate-t (vagy bázist).
De a leg egyszerűbb ha beteszel egy pici relét. Az garantáltan leválasztja a bemenetet a hálózatról és nem kell szoftveresen kikerülnöd a másodpercenkénti 50 GPIO lehúzást.
A hozzászólás módosítva: Okt 17, 2022
(#) Vacok válasza Elektro.on hozzászólására (») Okt 17, 2022 /
 
Akkor mondjuk ez?
(#) icserny válasza Vacok hozzászólására (») Okt 17, 2022 /
 
Van erre egy külön topik, s ott láttam egy optocsatolós megoldást, ami megoldja a galvanikus leválasztást is: Bővebben: Link
(#) mateatek válasza Vacok hozzászólására (») Okt 17, 2022 /
 
Én hasonló feladatot egy glimm lámpával és egy fotoellenállással oldottam meg. A fotoellenállás egy 22k-s ellenállással sorosan feszültség osztót alkot. Fényben a fotoellenállás 100 ohm nagyságrendű, sötétben megaohm nagyságrendű. Egy kondival meg van szűrve az osztó közös pontja, hogy az 50 hertzes jel ne jöjjön át. Digitális láb figyeli a fesz osztó állapotát.
Le is van választva és egyszerű is.
(#) Josi777 válasza Vacok hozzászólására (») Okt 17, 2022 /
 
Szerintem teljesen jó az a kapcsolás. Mutatok egy képet egy ipari elektronikáról, melyből a mai napig több mint 10.000 darab működik, élettartamuk pedig legalább 15 év és akkor is kizárólag a tápjuk megy tönkre. Ezen a panelen 230V-ot fogadó bemenetek vannak, és mint látható, kizárólag ellenállásokkal van illesztve a processzorhoz. Soha nem volt még meghibásodása ezeknek az áramköröknek, soha nem ment még tönkre a proci, pedig jópárat már javítottam és még több megfordult már a kezeim között. Nagyon egyszerű és stabil elektronika.

panel.jpg
    
(#) Massawa válasza Josi777 hozzászólására (») Okt 17, 2022 /
 
Szerintem a kolléga sem a kapcsolást joságát vonta kétségbe, hanem a megoldást, hogy az egész alacsonyfeszültségü elektronikát felkötik a hálozatra, annak minden veszélyével és hátrányával.
Következő: »»   747 / 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