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   712 / 845
(#) vargham válasza pipi hozzászólására (») Nov 11, 2021 /
 
Az eredeti kérdező megírta: Ez egy 32 bites ARM MCU... A legtöbb matematikai művelet egy-két órajel alatt megvan 32 bites számokon. FPU nincs benne, érdemes egész számokkal dolgozni.
(#) sdrlab válasza Rober_4 hozzászólására (») Nov 12, 2021 / 1
 
Mielőtt feltöltöd értékkel a puffert, minden egyes mintát átengedsz egy olyan méretű változón, ami nem csordul túl. Ezen if-el eldöntöd előjelesen, hogy nagyobb e a megengedett tartománynál a konkrét minta értéke. Ha igen, úgy a max értékre korlátozod azt és azt töltöd eredményként a pufferbe. Ha nem érte el a max értéket, akkor értelemszerűen az eredeti értéket adod tovább... Így sosem lesz túlcsordulásod, max a túl nagy amplitúdóknál torzítás keletkezik, mint az analóg rendszerekben is....
(#) Rober_4 válasza sdrlab hozzászólására (») Nov 12, 2021 /
 
Lehet valami ilyesmi lesz a vége. Viszont nem vizsgálom, csak ledobom a biteket vagy összeéselem 0x00001111-el vagy valami ilyesmivel attól függően, hogy hány bites a változóm. Mert nem a túlvezérlés zavar, hanem a túlcsordulás miatti ellentétes előjel. Köszönöm a segítséget mindenkinek!
Sajnos a DAC-nál az audio library eleve eltol 4 bitet, hogy 12-bites legyen a kimenet. Ha valakinek van ötlete, hogyan tudok egyszerűen 16bites DAC-ot rákötni az Arduino Duéra, az ne kíméljen, pláne, hogy már csak az egyik megy a kettőből, így eleve monó kimenetre kell számolnom mindent...
(#) sdrlab válasza Rober_4 hozzászólására (») Nov 12, 2021 / 2
 
ÉS-elés vagy hasonló bitművelet itt nem a barátod! Csak csináld úgy, ahogy leírtam, és működni fog....
(#) matyas98 hozzászólása Nov 13, 2021 /
 
Sziasztok!

Vásároltam pár darab ATMEGA328P U chipet és a arduino segítségével szerettem volna rá feltölteni a bootloadert. Összeraktam egy panelen a programozni kívánt chip órajel áramkörét és a szükséges bekötéseket az arduinoUNO-hoz. Azonban az égetés közben ezt a hibát kapom:
Arduino: 1.8.16 (Windows Store 1.8.51.0) (Windows 10), Alaplap:"Arduino Nano, ATmega328P (Old Bootloader)"
avrdude: Yikes! Invalid device signature.
Double check connections and try again, or use -F to override
this check.
Hiba a bootloader égetésekor.
Ennek a jelentésnek több információja lehetne
a "Bővebb kimenet mutatása fordításkor"
opció engedélyezésével a Fájl -> Beállítások-ban.

Kipróbáltam nano-val is és szintén ugyan ez a hiba. Valaki tapasztalt már hasonlót? A bekötési képet csatoltam.
Köszi!

23 final.jpg
    
(#) Rober_4 válasza matyas98 hozzászólására (») Nov 13, 2021 /
 
Egyrészt az Arduino ide-ben, ha azt használsz, állítsd be az eszközök menüben az alaplap típusát! Majd a processzor menüben a processzort. Ott lesz old bootloaderes opció. Próbálgasd melyik a jó!
(Ez még csak azért kell, hogy elérd az Uno-t)
A hozzászólás módosítva: Nov 13, 2021
(#) Kovidivi válasza matyas98 hozzászólására (») Nov 13, 2021 /
 
Az Atmega328p az smd tokozás, a normál tok az Atmega328 (tehát már a csatolt rajz is hibás). A tokozásra is figyelned kell, normál tokhoz Arduino Uno tartozik, nem pedig Nano!
A hozzászólás módosítva: Nov 13, 2021
(#) vargaf válasza Kovidivi hozzászólására (») Nov 13, 2021 /
 
Atmega 328P PU
Ez bizony nem SMD tokozás.
A hozzászólás módosítva: Nov 13, 2021
(#) Kovidivi válasza vargaf hozzászólására (») Nov 13, 2021 /
 
Igaz, bocsi. Tehát pu végű az normál tok, au pedig smd. Viszont az igaz, hogy nornál tokhoz nem Nano-t kell választani, hanem Uno-t.
(#) matyas98 válasza Rober_4 hozzászólására (») Nov 13, 2021 /
 
Félreértés ne essék UNO-t használtam a programozásra csak azt a hibaüzenetet másoltam be amit a NANO-nál írt. Pontosan így próbáltam:
1. Összeraktam az áramkört a rajz alapján majd arduinoIDE és ott beállítottam az UNO boardot.
2. Eszközöknél beállítottam, hogy Programozó: ArduinoISP
3. A páldáknál megnyitottam az arduinoISP kódot és feltöltöttem a boardra
4. Átálítottam a Programert Arduino as ISP-re majd az eszközöknél rámentem a bootloader égetésére és ez után jött a hiba
(#) matyas98 válasza Kovidivi hozzászólására (») Nov 13, 2021 /
 
UNO-val próbálkoztam és miután azzal sem sikerült megpróbáltam a Nano-t. Ott ugyan ezt a hibaüzenetet kaptam. Ha nem akarok ezzel az összekötögetéssel bajlódni akkor tudnátok valamilyen más programozót ajánlani?
(#) vargham válasza matyas98 hozzászólására (») Nov 13, 2021 / 1
 
Nekem az Atmel ICE vált be.
(#) mateatek válasza matyas98 hozzászólására (») Nov 13, 2021 / 1
 
Ránéznék arra az "Invalid device signature"-ra és összehasonlítanám az avrdude.conf-ban szereplővel.
(#) matyas98 hozzászólása Nov 14, 2021 / 2
 
Nem tudom mi volt a probléma, de összeraktam az áramkört egy másik próbapanelen és egyből működött. Valószínűleg valmi kontakt hiba lehetett ahogyan azt a hibaüzenet is írta. De eddig még nem volt ilyen problémám sosem azzal a panellal. Na mindegy azért köszi a segítséget
(#) Szikra Lacika hozzászólása Nov 15, 2021 /
 
Sziasztok. Egy kis segítséget szeretnék kérni. Még új vagyok az Arduino világában. Egy olyat szeretnék megvalósítási ha lehetséges hogy adott 3 nyomógomb és 3 db led. Mindegyik led gombnyomásra be kapcsol. Ez eddig meg is van működik viszont a 2es és 3as lednek villognia kellene míg újabb gombnyomásra ki nem kapcsolom. Próbáltam ötvözni több verziót is de sajnos nem jött össze. Valaki tudna ebben segíteni előre is köszönöm.
(#) Massawa válasza Szikra Lacika hozzászólására (») Nov 15, 2021 / 1
 
A youtubon készen megtalálod a programot is ( angolul meg németül is).
Csinalj egy villogo változot - kimenet ( interrupt timer vagy valami hasonlo.
A 2. meg a 3. LED erröl a villogo kimentröl kap tápot és nem 5V-rol. A kapcsolok müködése meg ugyanaz, ha megnyomod a megfelelö kimenet LOWra vált és a hozzákötött LED világit vagy villog.
A hozzászólás módosítva: Nov 15, 2021
(#) Szikra Lacika válasza Massawa hozzászólására (») Nov 16, 2021 /
 
Köszi a gyors választ. Milyen néven keressem youtubon?
(#) Massawa válasza Szikra Lacika hozzászólására (») Nov 16, 2021 / 2
 
Azt hiszem a Tavir kurzusában is van egy ilyen feladat.
Ha tudsz németül akkor keresd akkor itt van
Arduino tanfolyam
egy 57 részes nagyon részletes és nagyon jol elmagyarázott kurzus. Kb a 10. rész után vannak ilyen feladatok.
Az Arduino honlapján is rengeted link van a villogo LEDek kezelésére ( angolul). Csak egy kis türelem meg kitartás kell hozzá, söt magában az Arduino IDE-ben is van egy sereg mintaprogram ilyen témára. ( keress blinking LEDs stb ).
(#) Szikra Lacika válasza Massawa hozzászólására (») Nov 16, 2021 /
 
Igen már keresgetem köszönöm a segítséged
(#) mnyugger hozzászólása Nov 17, 2021 /
 
Akadt egy problémám amihez ötletet szeretnék kérni tőletek.
1kOhmot távadni.
Ez egy kazán kültéri hőmérséklet távadója lenne.
A gyári kialakításnál a távadót kábellel kötik össze a kazánnal.

A távadó működése egyszerű.
1 kOhmos PTK értékét méri az Arduino. Jellemzően 1°C-os lépésekben.
Ezt az értéket elküldi rádiós kapcsolaton a vevőnek.
De csak óránként 1-2-3-4 alkalommal.
Közben csak, ha változik az érték.

A vevő az indítójel hatására megszakítást generál. A vevő Arduinójánál.
Átveszi az elküldött értéket és várakozó állapotba kerül.
A kimenetén a hőmérsékletnek megfelelő ellenállást produkál, amit vezetéken ad át a kazánnak.

Kb. ez a gondolatom. Jobbító ötleteket kérnék tőletek.
Köszönöm.
(#) asch válasza mnyugger hozzászólására (») Nov 17, 2021 /
 
A kültéri egység akkus volna, gondolom azért akarsz spórolni a küldések számával, igaz?

A legtöbb Arduino nem éppen alacsony fogyasztásra van tervezve, ezért akkuról én egyedi áramkört építenék, ami két küldés között sleep módban van. Nemrég csináltam is ilyet, magvan, hogy mikre kell figyelni, ha érdekel. (ATTiny/ATMegával pl: 18650-ről direkt táplálás, vagy low drop, low "Quiescent current" regulátor, PIN-ek definit logikai szintre húzva, AREF bekötve amin van ilyen, sleep mód aktiválva úgy, hogy minden periféria le van kapcsolva, és a watchdog ébreszt fel, minden külső áramkör áramtalanítva legyen.)

A másik oldalon az ellenállás szimulálása nem egyszerű feladat, ismerni kellene hozzá a pontos paramétereket, hogy hogyan működik az érzékelő áramköre ami a kazánban van.

Itt találtam egy leírást, hogy _általában_, hogyan működnek ezek, és egy megoldást, hogy hogyan lehet szimulálni a pt100, pt500, pt1000 szenzorokat: https://electronics.stackexchange.com/questions/225298/how-to-make-...sistor

Van benne kihívás, az biztos

Én egyébként úgy raktam össze a fűtést, hogy a víz hőmérsékletét kézzel szabályzom, és 2-3x szoktam a tél folyamán átállítani ahogy hűl az idő, vagy melegszik, teljesen komfortos a külső érzékelők nélkül is.
A hozzászólás módosítva: Nov 17, 2021
(#) majkimester válasza asch hozzászólására (») Nov 17, 2021 /
 
A kis arduinokon is ATmega van, ott ugyanúgy elérhető a Sleep mód. Ehhez nem kell egyedi áramkör.

A 1k szimulálása esetleg digitális potméterrel is lehetséges, csak meg kellene nézni, hogy miként méri a kazán, mert a tápfesz tartományon belül kell maradni vele.
(#) vargham válasza majkimester hozzászólására (») Nov 17, 2021 / 1
 
De van rajtuk LED, meg LDO, némelyiken pedig USB soros IC is, ami mind fogyaszt.
(#) majkimester válasza vargham hozzászólására (») Nov 17, 2021 /
 
Igaz, ezek is ott vannak, meg az USB csatoló is, bár ezektől elég könnyű megszabadulni.
(#) asch válasza majkimester hozzászólására (») Nov 18, 2021 /
 
Az UNO biztosan nem alacsony fogyasztásra lett tervezve, a processzoron kívül is sokat fogyaszt, hiába állítjuk le a processzort pihenni. (Valamikor olvasgattam cikkeket ezekről, úgy rémlik, hogy egyik Arduino sem volt igazán akksi-barát. De régen volt, azóta változhatott a helyzet, rengeteg Arduino board jelenik meg.) Nyilván ha leműtünk róla mindent, akkor a maradék előbb utóbb keveset fog fogyasztani. A regulátor kulcskérdés még, a legtöbb akkor is fogyaszt, ha nincsen rajta terhelés. Az AVR csip működhetne regulátor nélkül is, de rádióból olyat használtam, aminek fix 3V kellett. Viszont a kommunikáció miatt akkor már az AVR-t is 3V-ra tettem, így viszont sleep módban is üzemelni kellett a regulátornak. De ez nem gond, csak olyat kell választani, ami nagyon keveset fogyaszt saját magára, létezik ilyen, és ezekkel lehet hatékony elemes rendszert építeni.

Az elemről üzemelésre tervezéssel az is probléma, hogy nehéz mérni, speciálisan kis áram mérésre készült eszköz kellene hozzá, ami nekem nincsen. A sima multiméteremmel a méréshatár alá lehet vinni a processzor fogyasztását. Egyszer mértem ATMega328p-t, itt leírtama tapasztalataimat, a sleep mode fogyasztás 0,1uA körülre ment le: https://hup.hu/node/166252
(#) proli007 válasza asch hozzászólására (») Nov 18, 2021 / 1
 
Hello! " speciálisan kis áram mérésre készült eszköz kellene hozzá, ami nekem nincsen."
Dehogy nincs, csak nem annak hívod. Ha van egy multimétered, aminek bemeneti ellenállása csak 1Mohm, az a 200mV-os méréshatárban ha 100mV-ot mutat, az áram 100nA..
(#) szikorapéter hozzászólása Nov 18, 2021 /
 
Sziasztok.
Segítséget szeretnék kérni, bagatel dolog de lehet elsiklok a részlet felett.
Egy Dallas hőmérős kazánvezérlő lesz készítve és az volna a lényeg hogy az LCD első sorának végében a felirat változzon annak függvényében hogy a D13-as láb magas-e vagy alacsony szinten áll.
Lehet elsiklok a részlet felett ezért kérek segítséget.
  1. void loop()
  2. {
  3.   sensors.requestTemperatures();             // send the command to get temperatures
  4.   tempCelsius = sensors.getTempCByIndex(0);  // read temperature in Celsius
  5.   tempFahrenheit = tempCelsius * 9 / 5 + 32; // convert Celsius to Fahrenheit
  6.    if (tempCelsius <29)
  7.   digitalWrite(rel,HIGH);
  8.   lcd.setCursor(13, 0);
  9.   lcd.print(" FUT");
  10.    if (tempCelsius >30)
  11.   digitalWrite(rel,LOW);
  12.   lcd.setCursor(13, 0);
  13.   lcd.print("NEM FUT");
  14.    
  15.   lcd.setCursor(0, 0);       // start to print at the second row
  16.   lcd.print("Kazan Futes:");
  17.   lcd.setCursor(0, 1);       // start to print at the second row
  18.   lcd.print("Celhomer.: 75 fok");
  19.   lcd.setCursor(0, 2);
  20.   lcd.print("Elmeno:");
  21.   lcd.setCursor(11, 2);       // start to print at the first row
  22.   lcd.print(tempCelsius);    // print the temperature in Celsius
  23.   lcd.print("fok");      // print ° character
  24.   lcd.print("");
  25.   lcd.setCursor(0, 3);       // start to print at the second row
  26.   lcd.print("Minimum:   50 fok");
  27.  
  28.  
  29.   delay(700);
  30. }
(#) GPeti1977 válasza szikorapéter hozzászólására (») Nov 18, 2021 /
 
Hány karakteres kijelződ van?

lcd.print(" FUT");
lcd.print("NEM FUT");

A fut előtt 4 üres karakter kell
A hozzászólás módosítva: Nov 18, 2021
(#) szikorapéter válasza GPeti1977 hozzászólására (») Nov 18, 2021 /
 
4x20-as LCD.
Felteszem az egész programot az a biztos.
  1. #include <OneWire.h>
  2. #include <DallasTemperature.h>
  3. #include <LiquidCrystal_I2C.h>
  4.  
  5. const int SENSOR_PIN = 12;
  6.  
  7. OneWire oneWire(SENSOR_PIN);        
  8. DallasTemperature sensors(&oneWire);
  9. LiquidCrystal_I2C lcd(0x27, 20, 4);  
  10.  
  11. int rel = 13;  
  12. float tempCelsius;  
  13. float tempFahrenheit;
  14.  
  15. void setup()
  16. {
  17.   pinMode(rel, OUTPUT);
  18.   sensors.begin();  
  19.   lcd.init();        
  20.   lcd.backlight();  
  21.   lcd.setCursor(0, 0);      
  22.   lcd.print("Kazan Futes:");
  23.   lcd.setCursor(0, 1);      
  24.   lcd.print("Celho:     75 fok");
  25.   lcd.setCursor(0, 2);
  26.   lcd.print("Elmeno:");
  27.   lcd.setCursor(0, 3);      
  28.   lcd.print("Minimum:   50 fok");
  29. }
  30.  
  31. void loop()
  32. {
  33.   sensors.requestTemperatures();          
  34.   tempCelsius = sensors.getTempCByIndex(0);
  35.   tempFahrenheit = tempCelsius * 9 / 5 + 32;
  36.    if (tempCelsius <=29)
  37.   digitalWrite(rel,HIGH);
  38.   lcd.setCursor(13, 0);
  39.   lcd.print(" FUT   ");
  40.    if (tempCelsius >=30)
  41.   digitalWrite(rel,LOW);
  42.   lcd.setCursor(13, 0);
  43.   lcd.print("NEM FUT");  
  44.   lcd.setCursor(11, 2);  
  45.   lcd.print(tempCelsius);  
  46.   lcd.print("fok");  
  47.   lcd.print("");
  48.  
  49.   delay(700);
  50. }
(#) sargarigo válasza szikorapéter hozzászólására (») Nov 18, 2021 / 1
 
Szerintem az if-et lezáró pontosvessző helyén blokkot akartál indítani nem?
  1. if (tempCelsius >=30)
  2.   digitalWrite(rel,LOW);

  1. if (tempCelsius >=30)
  2. {
  3.   digitalWrite(rel,LOW)
  4. //...
  5. }
Következő: »»   712 / 845
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